Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
98 changes: 98 additions & 0 deletions .EditorConfig
Original file line number Diff line number Diff line change
@@ -0,0 +1,98 @@
[*]
# All files
dotnet_style_qualification_for_field = false
dotnet_style_qualification_for_property = false
dotnet_style_qualification_for_method = false
dotnet_style_qualification_for_event = false
dotnet_diagnostic.IDE0003.severity = warning
dotnet_style_predefined_type_for_locals_parameters_members = true
dotnet_style_predefined_type_for_member_access = true
dotnet_diagnostic.IDE0049.severity = suggestion
csharp_preferred_modifier_order = public,private,protected,internal,file,static,extern,new,virtual,abstract,sealed,override,readonly,unsafe,required,volatile,async
dotnet_diagnostic.IDE0036.severity = error
dotnet_style_require_accessibility_modifiers = always
dotnet_diagnostic.IDE0040.severity = warning
dotnet_style_readonly_field = true
dotnet_diagnostic.IDE0044.severity = error
csharp_prefer_static_local_function = true
dotnet_diagnostic.IDE0062.severity = warning
dotnet_style_parentheses_in_arithmetic_binary_operators = always_for_clarity
dotnet_diagnostic.IDE0047.severity = warning
dotnet_diagnostic.IDE0048.severity = warning
dotnet_diagnostic.IDE0010.severity = error
dotnet_style_object_initializer = true
dotnet_diagnostic.IDE0017.severity = suggestion
csharp_style_inlined_variable_declaration = true
dotnet_diagnostic.IDE0018.severity = suggestion
dotnet_style_collection_initializer = true
dotnet_diagnostic.IDE0028.severity = warning
dotnet_style_prefer_auto_properties = true
dotnet_diagnostic.IDE0032.severity = suggestion
dotnet_style_explicit_tuple_names = true
dotnet_diagnostic.IDE0033.severity = warning
csharp_prefer_simple_default_expression = false
dotnet_diagnostic.IDE0034.severity = warning
dotnet_style_prefer_inferred_tuple_names = true
dotnet_style_prefer_inferred_anonymous_type_member_names = true
dotnet_diagnostic.IDE0037.severity = suggestion
csharp_style_prefer_local_over_anonymous_function = true
dotnet_diagnostic.IDE0039.severity = warning
csharp_style_deconstructed_variable_declaration = true
dotnet_diagnostic.IDE0042.severity = suggestion
dotnet_style_prefer_conditional_expression_over_assignment = true
dotnet_diagnostic.IDE0045.severity = warning
dotnet_style_prefer_conditional_expression_over_return = true
dotnet_diagnostic.IDE0046.severity = warning
dotnet_style_prefer_compound_assignment = true
dotnet_diagnostic.IDE0054.severity = warning
dotnet_diagnostic.IDE0074.severity = warning
csharp_style_prefer_index_operator = true
dotnet_diagnostic.IDE0056.severity = warning
csharp_style_prefer_range_operator = true
dotnet_diagnostic.IDE0057.severity = warning
dotnet_diagnostic.IDE0070.severity = error
dotnet_style_prefer_simplified_interpolation = true
dotnet_diagnostic.IDE0071.severity = warning
dotnet_diagnostic.IDE0072.severity = error
dotnet_style_prefer_simplified_boolean_expressions = true
dotnet_diagnostic.IDE0075.severity = warning
dotnet_diagnostic.IDE0082.severity = error
csharp_style_implicit_object_creation_when_type_is_apparent = true
dotnet_diagnostic.IDE0090.severity = error
dotnet_diagnostic.IDE0180.severity = warning
csharp_style_namespace_declarations = file_scoped
dotnet_diagnostic.IDE0160.severity = error
dotnet_diagnostic.IDE0161.severity = error
csharp_style_throw_expression = true
dotnet_diagnostic.IDE0016.severity = warning
dotnet_style_coalesce_expression = true
dotnet_diagnostic.IDE0029.severity = warning
dotnet_diagnostic.IDE0030.severity = warning
dotnet_style_null_propagation = true
dotnet_diagnostic.IDE0031.severity = warning
dotnet_style_prefer_is_null_check_over_reference_equality_method = true
dotnet_diagnostic.IDE0041.severity = warning
csharp_style_prefer_null_check_over_type_check = true
dotnet_diagnostic.IDE0150.severity = warning
csharp_style_conditional_delegate_call = false
dotnet_diagnostic.IDE1005.severity = warning
csharp_style_var_for_built_in_types = false
csharp_style_var_when_type_is_apparent = true
csharp_style_var_elsewhere = false
dotnet_diagnostic.IDE0007.severity = warning
dotnet_diagnostic.IDE0008.severity = warning
dotnet_diagnostic.IDE0001.severity = error
dotnet_diagnostic.IDE0002.severity = error
dotnet_diagnostic.IDE0004.severity = error
dotnet_diagnostic.IDE0005.severity = error
dotnet_diagnostic.IDE0035.severity = warning
dotnet_diagnostic.IDE0051.severity = warning
dotnet_diagnostic.IDE0052.severity = warning
csharp_style_unused_value_expression_statement_preference = discard_variable
dotnet_diagnostic.IDE0058.severity = warning
csharp_style_unused_value_assignment_preference = discard_variable
dotnet_diagnostic.IDE0059.severity = warning
# Ignore namespace mismatch as this is a library
dotnet_diagnostic.IDE0130.severity = none
# We don't want to adopt primary constructors yet
dotnet_diagnostic.IDE0290.severity = none
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,13 @@

<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net7.0</TargetFramework>
<TargetFramework>net8.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>

<ItemGroup>
<PackageReference Include="BenchmarkDotNet" Version="0.13.4" />

<PackageReference Include="KristofferStrube.ActivityStreams" Version="0.1.0" />
</ItemGroup>

<ItemGroup>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,17 +1,17 @@
<Project Sdk="Microsoft.NET.Sdk.BlazorWebAssembly">

<PropertyGroup>
<TargetFramework>net7.0</TargetFramework>
<TargetFramework>net8.0</TargetFramework>
<Nullable>enable</Nullable>
<ImplicitUsings>enable</ImplicitUsings>
</PropertyGroup>

<ItemGroup>
<PackageReference Include="HtmlAgilityPack" Version="1.11.46" />
<PackageReference Include="KristofferStrube.ActivityStreams" Version="0.1.0" />
<PackageReference Include="MessagePack" Version="2.5.64-alpha" />
<PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly" Version="7.0.2" />
<PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly.DevServer" Version="7.0.0" PrivateAssets="all" />
<PackageReference Include="HtmlAgilityPack" Version="1.12.2" />
<PackageReference Include="KristofferStrube.ActivityStreams" Version="0.2.4" />
<PackageReference Include="MessagePack" Version="3.1.4" />
<PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly" Version="8.0.20" />
<PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly.DevServer" Version="8.0.20" PrivateAssets="all" />
<PackageReference Include="TG.Blazor.IndexedDB" Version="1.5.0-preview" />
<PackageReference Include="System.Reactive.Linq" Version="5.0.0" />
</ItemGroup>
Expand All @@ -20,15 +20,4 @@
<ProjectReference Include="..\..\src\KristofferStrube.Blazor.FileSystem\KristofferStrube.Blazor.FileSystem.csproj" />
</ItemGroup>

<ItemGroup>
<Content Update="wwwroot\css\app.css">
<ExcludeFromSingleFile>true</ExcludeFromSingleFile>
<CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
</Content>
<Content Update="wwwroot\index.html">
<ExcludeFromSingleFile>true</ExcludeFromSingleFile>
<CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
</Content>
</ItemGroup>

</Project>
Original file line number Diff line number Diff line change
Expand Up @@ -103,7 +103,7 @@ dictionary FileSystemRemoveOptions {

[Exposed=(Window,Worker), SecureContext, Serializable]
interface FileSystemDirectoryHandle : FileSystemHandle {
async iterable<USVString, FileSystemHandle>;
async_iterable<USVString, FileSystemHandle>;

Promise<FileSystemFileHandle> getFileHandle(USVString name, optional FileSystemGetFileOptions options = {});
Promise<FileSystemDirectoryHandle> getDirectoryHandle(USVString name, optional FileSystemGetDirectoryOptions options = {});
Expand Down
49 changes: 37 additions & 12 deletions src/KristofferStrube.Blazor.FileSystem/BaseJSWrapper.cs
Original file line number Diff line number Diff line change
@@ -1,36 +1,61 @@
using KristofferStrube.Blazor.FileSystem.Extensions;
using KristofferStrube.Blazor.WebIDL;
using Microsoft.JSInterop;

namespace KristofferStrube.Blazor.FileSystem;

public abstract class BaseJSWrapper : IAsyncDisposable
/// <summary>
/// Base class for wrapping objects in the Blazor.FileSystem library.
/// </summary>
public abstract class BaseJSWrapper : IAsyncDisposable, IJSWrapper
{
/// <summary>
/// A lazily evaluated JS module that gives access to helper methods for the File System API.
/// </summary>
protected readonly Lazy<Task<IJSObjectReference>> helperTask;
protected readonly IJSRuntime jSRuntime;
protected readonly FileSystemOptions options;

/// <summary>
/// Constructs a wrapper instance for an equivalent JS instance.
/// Options for where the helper JS module is located.
/// </summary>
/// <param name="jSRuntime">An <see cref="IJSRuntime"/> instance.</param>
/// <param name="jSReference">A JS reference to an existing JS instance that should be wrapped.</param>
internal BaseJSWrapper(IJSRuntime jSRuntime, IJSObjectReference jSReference, FileSystemOptions options)
protected readonly FileSystemOptions fileSystemOptions;

/// <summary>
/// Options for where the helper JS module is located.
/// </summary>
[Obsolete("This is here for backwards compatibility. It was replaced by 'fileSystemOptions' as 'options' was ambiguous.")]
protected readonly FileSystemOptions options;

/// <inheritdoc/>
public IJSRuntime JSRuntime { get; }

/// <inheritdoc/>
public IJSObjectReference JSReference { get; }

/// <inheritdoc/>
public bool DisposesJSReference { get; }

/// <inheritdoc cref="IJSCreatable{T}.CreateAsync(IJSRuntime, IJSObjectReference, CreationOptions)"/>
internal BaseJSWrapper(IJSRuntime jSRuntime, IJSObjectReference jSReference, FileSystemOptions fileSystemOptions, CreationOptions options)
{
this.options = options;
helperTask = new(async () => await jSRuntime.GetHelperAsync(options));
this.fileSystemOptions = fileSystemOptions;
#pragma warning disable CS0618 // Type or member is obsolete
this.options = fileSystemOptions;
#pragma warning restore CS0618 // Type or member is obsolete
helperTask = new(async () => await jSRuntime.GetHelperAsync(fileSystemOptions));
JSReference = jSReference;
this.jSRuntime = jSRuntime;
JSRuntime = jSRuntime;
DisposesJSReference = options.DisposesJSReference;
}

public IJSObjectReference JSReference { get; }

/// <inheritdoc/>
public async ValueTask DisposeAsync()
{
if (helperTask.IsValueCreated)
{
IJSObjectReference module = await helperTask.Value;
await module.DisposeAsync();
}
await IJSWrapper.DisposeJSReference(this);
GC.SuppressFinalize(this);
}
}
18 changes: 0 additions & 18 deletions src/KristofferStrube.Blazor.FileSystem/Converters/BlobConverter.cs

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
using System.Text.Json;
using System.Text.Json.Serialization;

namespace KristofferStrube.Blazor.FileSystem.Converters;

internal class FileSystemHandleKindConverter : JsonConverter<FileSystemHandleKind>
{
public override FileSystemHandleKind Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
{
return reader.GetString() switch
{
"file" => FileSystemHandleKind.File,
"directory" => FileSystemHandleKind.Directory,
var value => throw new ArgumentException($"Value '{value}' was not a valid {nameof(FileSystemHandleKind)}."),
};
}

public override void Write(Utf8JsonWriter writer, FileSystemHandleKind value, JsonSerializerOptions options)
{
writer.WriteStringValue(value switch
{
FileSystemHandleKind.File => "file",
FileSystemHandleKind.Directory => "directory",
_ => throw new ArgumentException($"Value '{value}' was not a valid {nameof(FileSystemHandleKind)}.")
});
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
using System.Text.Json;
using System.Text.Json.Serialization;

namespace KristofferStrube.Blazor.FileSystem.Converters;

internal class WriteCommandTypeConverter : JsonConverter<WriteCommandType>
{
public override WriteCommandType Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
{
return reader.GetString() switch
{
"write" => WriteCommandType.Write,
"seek" => WriteCommandType.Seek,
"truncate" => WriteCommandType.Truncate,
var value => throw new ArgumentException($"Value '{value}' was not a valid {nameof(WriteCommandType)}."),
};
}

public override void Write(Utf8JsonWriter writer, WriteCommandType value, JsonSerializerOptions options)
{
writer.WriteStringValue(value switch
{
WriteCommandType.Write => "write",
WriteCommandType.Seek => "seek",
WriteCommandType.Truncate => "truncate",
_ => throw new ArgumentException($"Value '{value}' was not a valid {nameof(WriteCommandType)}.")
});
}
}
45 changes: 0 additions & 45 deletions src/KristofferStrube.Blazor.FileSystem/EnumDescriptionConverter.cs

This file was deleted.

This file was deleted.

Loading