├── .gitattributes ├── .gitignore ├── LICENSE ├── SvelteApp1.Server ├── Controllers │ └── WeatherForecastController.cs ├── Data │ ├── ApplicationDbContext.cs │ └── ApplicationUser.cs ├── Migrations │ ├── 20231224195252_db1.Designer.cs │ ├── 20231224195252_db1.cs │ └── ApplicationDbContextModelSnapshot.cs ├── Program.cs ├── Properties │ └── launchSettings.json ├── SvelteApp1.Server.csproj ├── SvelteApp1.Server.http ├── WeatherForecast.cs ├── appsettings.Development.json └── appsettings.json ├── SvelteApp1.sln └── svelteapp1.client ├── .eslintrc.cjs ├── .gitignore ├── README.md ├── index.html ├── nuget.config ├── package-lock.json ├── package.json ├── public └── vite.svg ├── src ├── App.svelte ├── AuthorizeView.svelte ├── app.css ├── assets │ └── svelte.svg ├── components │ ├── Counter.svelte │ ├── Logout.svelte │ └── WeatherForecast.svelte ├── main.ts ├── pages │ ├── Home.svelte │ ├── Login.svelte │ └── Register.svelte └── vite-env.d.ts ├── svelte.config.js ├── svelteapp1.client.esproj ├── tsconfig.json ├── tsconfig.node.json └── vite.config.ts /.gitattributes: -------------------------------------------------------------------------------- 1 | # Auto detect text files and perform LF normalization 2 | * text=auto 3 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | ## Ignore Visual Studio temporary files, build results, and 2 | ## files generated by popular Visual Studio add-ons. 3 | ## 4 | ## Get latest from https://github.com/github/gitignore/blob/main/VisualStudio.gitignore 5 | 6 | # User-specific files 7 | *.rsuser 8 | *.suo 9 | *.user 10 | *.userosscache 11 | *.sln.docstates 12 | 13 | # User-specific files (MonoDevelop/Xamarin Studio) 14 | *.userprefs 15 | 16 | # Mono auto generated files 17 | mono_crash.* 18 | 19 | # Build results 20 | [Dd]ebug/ 21 | [Dd]ebugPublic/ 22 | [Rr]elease/ 23 | [Rr]eleases/ 24 | x64/ 25 | x86/ 26 | [Ww][Ii][Nn]32/ 27 | [Aa][Rr][Mm]/ 28 | [Aa][Rr][Mm]64/ 29 | bld/ 30 | [Bb]in/ 31 | [Oo]bj/ 32 | [Ll]og/ 33 | [Ll]ogs/ 34 | 35 | # Visual Studio 2015/2017 cache/options directory 36 | .vs/ 37 | # Uncomment if you have tasks that create the project's static files in wwwroot 38 | #wwwroot/ 39 | 40 | # Visual Studio 2017 auto generated files 41 | Generated\ Files/ 42 | 43 | # MSTest test Results 44 | [Tt]est[Rr]esult*/ 45 | [Bb]uild[Ll]og.* 46 | 47 | # NUnit 48 | *.VisualState.xml 49 | TestResult.xml 50 | nunit-*.xml 51 | 52 | # Build Results of an ATL Project 53 | [Dd]ebugPS/ 54 | [Rr]eleasePS/ 55 | dlldata.c 56 | 57 | # Benchmark Results 58 | BenchmarkDotNet.Artifacts/ 59 | 60 | # .NET Core 61 | project.lock.json 62 | project.fragment.lock.json 63 | artifacts/ 64 | 65 | # ASP.NET Scaffolding 66 | ScaffoldingReadMe.txt 67 | 68 | # StyleCop 69 | StyleCopReport.xml 70 | 71 | # Files built by Visual Studio 72 | *_i.c 73 | *_p.c 74 | *_h.h 75 | *.ilk 76 | *.meta 77 | *.obj 78 | *.iobj 79 | *.pch 80 | *.pdb 81 | *.ipdb 82 | *.pgc 83 | *.pgd 84 | *.rsp 85 | *.sbr 86 | *.tlb 87 | *.tli 88 | *.tlh 89 | *.tmp 90 | *.tmp_proj 91 | *_wpftmp.csproj 92 | *.log 93 | *.tlog 94 | *.vspscc 95 | *.vssscc 96 | .builds 97 | *.pidb 98 | *.svclog 99 | *.scc 100 | 101 | # Chutzpah Test files 102 | _Chutzpah* 103 | 104 | # Visual C++ cache files 105 | ipch/ 106 | *.aps 107 | *.ncb 108 | *.opendb 109 | *.opensdf 110 | *.sdf 111 | *.cachefile 112 | *.VC.db 113 | *.VC.VC.opendb 114 | 115 | # Visual Studio profiler 116 | *.psess 117 | *.vsp 118 | *.vspx 119 | *.sap 120 | 121 | # Visual Studio Trace Files 122 | *.e2e 123 | 124 | # TFS 2012 Local Workspace 125 | $tf/ 126 | 127 | # Guidance Automation Toolkit 128 | *.gpState 129 | 130 | # ReSharper is a .NET coding add-in 131 | _ReSharper*/ 132 | *.[Rr]e[Ss]harper 133 | *.DotSettings.user 134 | 135 | # TeamCity is a build add-in 136 | _TeamCity* 137 | 138 | # DotCover is a Code Coverage Tool 139 | *.dotCover 140 | 141 | # AxoCover is a Code Coverage Tool 142 | .axoCover/* 143 | !.axoCover/settings.json 144 | 145 | # Coverlet is a free, cross platform Code Coverage Tool 146 | coverage*.json 147 | coverage*.xml 148 | coverage*.info 149 | 150 | # Visual Studio code coverage results 151 | *.coverage 152 | *.coveragexml 153 | 154 | # NCrunch 155 | _NCrunch_* 156 | .*crunch*.local.xml 157 | nCrunchTemp_* 158 | 159 | # MightyMoose 160 | *.mm.* 161 | AutoTest.Net/ 162 | 163 | # Web workbench (sass) 164 | .sass-cache/ 165 | 166 | # Installshield output folder 167 | [Ee]xpress/ 168 | 169 | # DocProject is a documentation generator add-in 170 | DocProject/buildhelp/ 171 | DocProject/Help/*.HxT 172 | DocProject/Help/*.HxC 173 | DocProject/Help/*.hhc 174 | DocProject/Help/*.hhk 175 | DocProject/Help/*.hhp 176 | DocProject/Help/Html2 177 | DocProject/Help/html 178 | 179 | # Click-Once directory 180 | publish/ 181 | 182 | # Publish Web Output 183 | *.[Pp]ublish.xml 184 | *.azurePubxml 185 | # Note: Comment the next line if you want to checkin your web deploy settings, 186 | # but database connection strings (with potential passwords) will be unencrypted 187 | *.pubxml 188 | *.publishproj 189 | 190 | # Microsoft Azure Web App publish settings. Comment the next line if you want to 191 | # checkin your Azure Web App publish settings, but sensitive information contained 192 | # in these scripts will be unencrypted 193 | PublishScripts/ 194 | 195 | # NuGet Packages 196 | *.nupkg 197 | # NuGet Symbol Packages 198 | *.snupkg 199 | # The packages folder can be ignored because of Package Restore 200 | **/[Pp]ackages/* 201 | # except build/, which is used as an MSBuild target. 202 | !**/[Pp]ackages/build/ 203 | # Uncomment if necessary however generally it will be regenerated when needed 204 | #!**/[Pp]ackages/repositories.config 205 | # NuGet v3's project.json files produces more ignorable files 206 | *.nuget.props 207 | *.nuget.targets 208 | 209 | # Microsoft Azure Build Output 210 | csx/ 211 | *.build.csdef 212 | 213 | # Microsoft Azure Emulator 214 | ecf/ 215 | rcf/ 216 | 217 | # Windows Store app package directories and files 218 | AppPackages/ 219 | BundleArtifacts/ 220 | Package.StoreAssociation.xml 221 | _pkginfo.txt 222 | *.appx 223 | *.appxbundle 224 | *.appxupload 225 | 226 | # Visual Studio cache files 227 | # files ending in .cache can be ignored 228 | *.[Cc]ache 229 | # but keep track of directories ending in .cache 230 | !?*.[Cc]ache/ 231 | 232 | # Others 233 | ClientBin/ 234 | ~$* 235 | *~ 236 | *.dbmdl 237 | *.dbproj.schemaview 238 | *.jfm 239 | *.pfx 240 | *.publishsettings 241 | orleans.codegen.cs 242 | 243 | # Including strong name files can present a security risk 244 | # (https://github.com/github/gitignore/pull/2483#issue-259490424) 245 | #*.snk 246 | 247 | # Since there are multiple workflows, uncomment next line to ignore bower_components 248 | # (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) 249 | #bower_components/ 250 | 251 | # RIA/Silverlight projects 252 | Generated_Code/ 253 | 254 | # Backup & report files from converting an old project file 255 | # to a newer Visual Studio version. Backup files are not needed, 256 | # because we have git ;-) 257 | _UpgradeReport_Files/ 258 | Backup*/ 259 | UpgradeLog*.XML 260 | UpgradeLog*.htm 261 | ServiceFabricBackup/ 262 | *.rptproj.bak 263 | 264 | # SQL Server files 265 | *.mdf 266 | *.ldf 267 | *.ndf 268 | 269 | # Business Intelligence projects 270 | *.rdl.data 271 | *.bim.layout 272 | *.bim_*.settings 273 | *.rptproj.rsuser 274 | *- [Bb]ackup.rdl 275 | *- [Bb]ackup ([0-9]).rdl 276 | *- [Bb]ackup ([0-9][0-9]).rdl 277 | 278 | # Microsoft Fakes 279 | FakesAssemblies/ 280 | 281 | # GhostDoc plugin setting file 282 | *.GhostDoc.xml 283 | 284 | # Node.js Tools for Visual Studio 285 | .ntvs_analysis.dat 286 | node_modules/ 287 | 288 | # Visual Studio 6 build log 289 | *.plg 290 | 291 | # Visual Studio 6 workspace options file 292 | *.opt 293 | 294 | # Visual Studio 6 auto-generated workspace file (contains which files were open etc.) 295 | *.vbw 296 | 297 | # Visual Studio 6 auto-generated project file (contains which files were open etc.) 298 | *.vbp 299 | 300 | # Visual Studio 6 workspace and project file (working project files containing files to include in project) 301 | *.dsw 302 | *.dsp 303 | 304 | # Visual Studio 6 technical files 305 | *.ncb 306 | *.aps 307 | 308 | # Visual Studio LightSwitch build output 309 | **/*.HTMLClient/GeneratedArtifacts 310 | **/*.DesktopClient/GeneratedArtifacts 311 | **/*.DesktopClient/ModelManifest.xml 312 | **/*.Server/GeneratedArtifacts 313 | **/*.Server/ModelManifest.xml 314 | _Pvt_Extensions 315 | 316 | # Paket dependency manager 317 | .paket/paket.exe 318 | paket-files/ 319 | 320 | # FAKE - F# Make 321 | .fake/ 322 | 323 | # CodeRush personal settings 324 | .cr/personal 325 | 326 | # Python Tools for Visual Studio (PTVS) 327 | __pycache__/ 328 | *.pyc 329 | 330 | # Cake - Uncomment if you are using it 331 | # tools/** 332 | # !tools/packages.config 333 | 334 | # Tabs Studio 335 | *.tss 336 | 337 | # Telerik's JustMock configuration file 338 | *.jmconfig 339 | 340 | # BizTalk build output 341 | *.btp.cs 342 | *.btm.cs 343 | *.odx.cs 344 | *.xsd.cs 345 | 346 | # OpenCover UI analysis results 347 | OpenCover/ 348 | 349 | # Azure Stream Analytics local run output 350 | ASALocalRun/ 351 | 352 | # MSBuild Binary and Structured Log 353 | *.binlog 354 | 355 | # NVidia Nsight GPU debugger configuration file 356 | *.nvuser 357 | 358 | # MFractors (Xamarin productivity tool) working folder 359 | .mfractor/ 360 | 361 | # Local History for Visual Studio 362 | .localhistory/ 363 | 364 | # Visual Studio History (VSHistory) files 365 | .vshistory/ 366 | 367 | # BeatPulse healthcheck temp database 368 | healthchecksdb 369 | 370 | # Backup folder for Package Reference Convert tool in Visual Studio 2017 371 | MigrationBackup/ 372 | 373 | # Ionide (cross platform F# VS Code tools) working folder 374 | .ionide/ 375 | 376 | # Fody - auto-generated XML schema 377 | FodyWeavers.xsd 378 | 379 | # VS Code files for those working on multiple tools 380 | .vscode/* 381 | !.vscode/settings.json 382 | !.vscode/tasks.json 383 | !.vscode/launch.json 384 | !.vscode/extensions.json 385 | *.code-workspace 386 | 387 | # Local History for Visual Studio Code 388 | .history/ 389 | 390 | # Windows Installer files from build outputs 391 | *.cab 392 | *.msi 393 | *.msix 394 | *.msm 395 | *.msp 396 | 397 | # JetBrains Rider 398 | *.sln.iml 399 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2024 mckennajsv 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /SvelteApp1.Server/Controllers/WeatherForecastController.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.AspNetCore.Mvc; 2 | 3 | namespace SvelteApp1.Server.Controllers 4 | { 5 | [ApiController] 6 | [Route("[controller]")] 7 | public class WeatherForecastController : ControllerBase 8 | { 9 | private static readonly string[] Summaries = new[] 10 | { 11 | "Freezing", "Bracing", "Chilly", "Cool", "Mild", "Warm", "Balmy", "Hot", "Sweltering", "Scorching" 12 | }; 13 | 14 | private readonly ILogger _logger; 15 | 16 | public WeatherForecastController(ILogger logger) 17 | { 18 | _logger = logger; 19 | } 20 | 21 | [HttpGet(Name = "GetWeatherForecast")] 22 | public IEnumerable Get() 23 | { 24 | return Enumerable.Range(1, 5).Select(index => new WeatherForecast 25 | { 26 | Date = DateOnly.FromDateTime(DateTime.Now.AddDays(index)), 27 | TemperatureC = Random.Shared.Next(-20, 55), 28 | Summary = Summaries[Random.Shared.Next(Summaries.Length)] 29 | }) 30 | .ToArray(); 31 | } 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /SvelteApp1.Server/Data/ApplicationDbContext.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.AspNetCore.Identity.EntityFrameworkCore; 2 | using Microsoft.EntityFrameworkCore; 3 | 4 | namespace SvelteApp1.Server.Data 5 | { 6 | public class ApplicationDbContext : IdentityDbContext 7 | { 8 | public ApplicationDbContext(DbContextOptions options) 9 | : base(options) 10 | { 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /SvelteApp1.Server/Data/ApplicationUser.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.AspNetCore.Identity; 2 | 3 | namespace SvelteApp1.Server.Data 4 | { 5 | public class ApplicationUser : IdentityUser 6 | { 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /SvelteApp1.Server/Migrations/20231224195252_db1.Designer.cs: -------------------------------------------------------------------------------- 1 | // 2 | using System; 3 | using Microsoft.EntityFrameworkCore; 4 | using Microsoft.EntityFrameworkCore.Infrastructure; 5 | using Microsoft.EntityFrameworkCore.Metadata; 6 | using Microsoft.EntityFrameworkCore.Migrations; 7 | using Microsoft.EntityFrameworkCore.Storage.ValueConversion; 8 | using SvelteApp1.Server.Data; 9 | 10 | #nullable disable 11 | 12 | namespace SvelteApp1.Server.Migrations 13 | { 14 | [DbContext(typeof(ApplicationDbContext))] 15 | [Migration("20231224195252_db1")] 16 | partial class db1 17 | { 18 | /// 19 | protected override void BuildTargetModel(ModelBuilder modelBuilder) 20 | { 21 | #pragma warning disable 612, 618 22 | modelBuilder 23 | .HasAnnotation("ProductVersion", "8.0.0") 24 | .HasAnnotation("Relational:MaxIdentifierLength", 128); 25 | 26 | SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder); 27 | 28 | modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRole", b => 29 | { 30 | b.Property("Id") 31 | .HasColumnType("nvarchar(450)"); 32 | 33 | b.Property("ConcurrencyStamp") 34 | .IsConcurrencyToken() 35 | .HasColumnType("nvarchar(max)"); 36 | 37 | b.Property("Name") 38 | .HasMaxLength(256) 39 | .HasColumnType("nvarchar(256)"); 40 | 41 | b.Property("NormalizedName") 42 | .HasMaxLength(256) 43 | .HasColumnType("nvarchar(256)"); 44 | 45 | b.HasKey("Id"); 46 | 47 | b.HasIndex("NormalizedName") 48 | .IsUnique() 49 | .HasDatabaseName("RoleNameIndex") 50 | .HasFilter("[NormalizedName] IS NOT NULL"); 51 | 52 | b.ToTable("AspNetRoles", (string)null); 53 | }); 54 | 55 | modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim", b => 56 | { 57 | b.Property("Id") 58 | .ValueGeneratedOnAdd() 59 | .HasColumnType("int"); 60 | 61 | SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); 62 | 63 | b.Property("ClaimType") 64 | .HasColumnType("nvarchar(max)"); 65 | 66 | b.Property("ClaimValue") 67 | .HasColumnType("nvarchar(max)"); 68 | 69 | b.Property("RoleId") 70 | .IsRequired() 71 | .HasColumnType("nvarchar(450)"); 72 | 73 | b.HasKey("Id"); 74 | 75 | b.HasIndex("RoleId"); 76 | 77 | b.ToTable("AspNetRoleClaims", (string)null); 78 | }); 79 | 80 | modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim", b => 81 | { 82 | b.Property("Id") 83 | .ValueGeneratedOnAdd() 84 | .HasColumnType("int"); 85 | 86 | SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); 87 | 88 | b.Property("ClaimType") 89 | .HasColumnType("nvarchar(max)"); 90 | 91 | b.Property("ClaimValue") 92 | .HasColumnType("nvarchar(max)"); 93 | 94 | b.Property("UserId") 95 | .IsRequired() 96 | .HasColumnType("nvarchar(450)"); 97 | 98 | b.HasKey("Id"); 99 | 100 | b.HasIndex("UserId"); 101 | 102 | b.ToTable("AspNetUserClaims", (string)null); 103 | }); 104 | 105 | modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin", b => 106 | { 107 | b.Property("LoginProvider") 108 | .HasColumnType("nvarchar(450)"); 109 | 110 | b.Property("ProviderKey") 111 | .HasColumnType("nvarchar(450)"); 112 | 113 | b.Property("ProviderDisplayName") 114 | .HasColumnType("nvarchar(max)"); 115 | 116 | b.Property("UserId") 117 | .IsRequired() 118 | .HasColumnType("nvarchar(450)"); 119 | 120 | b.HasKey("LoginProvider", "ProviderKey"); 121 | 122 | b.HasIndex("UserId"); 123 | 124 | b.ToTable("AspNetUserLogins", (string)null); 125 | }); 126 | 127 | modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole", b => 128 | { 129 | b.Property("UserId") 130 | .HasColumnType("nvarchar(450)"); 131 | 132 | b.Property("RoleId") 133 | .HasColumnType("nvarchar(450)"); 134 | 135 | b.HasKey("UserId", "RoleId"); 136 | 137 | b.HasIndex("RoleId"); 138 | 139 | b.ToTable("AspNetUserRoles", (string)null); 140 | }); 141 | 142 | modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken", b => 143 | { 144 | b.Property("UserId") 145 | .HasColumnType("nvarchar(450)"); 146 | 147 | b.Property("LoginProvider") 148 | .HasColumnType("nvarchar(450)"); 149 | 150 | b.Property("Name") 151 | .HasColumnType("nvarchar(450)"); 152 | 153 | b.Property("Value") 154 | .HasColumnType("nvarchar(max)"); 155 | 156 | b.HasKey("UserId", "LoginProvider", "Name"); 157 | 158 | b.ToTable("AspNetUserTokens", (string)null); 159 | }); 160 | 161 | modelBuilder.Entity("SvelteApp1.Server.Data.ApplicationUser", b => 162 | { 163 | b.Property("Id") 164 | .HasColumnType("nvarchar(450)"); 165 | 166 | b.Property("AccessFailedCount") 167 | .HasColumnType("int"); 168 | 169 | b.Property("ConcurrencyStamp") 170 | .IsConcurrencyToken() 171 | .HasColumnType("nvarchar(max)"); 172 | 173 | b.Property("Email") 174 | .HasMaxLength(256) 175 | .HasColumnType("nvarchar(256)"); 176 | 177 | b.Property("EmailConfirmed") 178 | .HasColumnType("bit"); 179 | 180 | b.Property("LockoutEnabled") 181 | .HasColumnType("bit"); 182 | 183 | b.Property("LockoutEnd") 184 | .HasColumnType("datetimeoffset"); 185 | 186 | b.Property("NormalizedEmail") 187 | .HasMaxLength(256) 188 | .HasColumnType("nvarchar(256)"); 189 | 190 | b.Property("NormalizedUserName") 191 | .HasMaxLength(256) 192 | .HasColumnType("nvarchar(256)"); 193 | 194 | b.Property("PasswordHash") 195 | .HasColumnType("nvarchar(max)"); 196 | 197 | b.Property("PhoneNumber") 198 | .HasColumnType("nvarchar(max)"); 199 | 200 | b.Property("PhoneNumberConfirmed") 201 | .HasColumnType("bit"); 202 | 203 | b.Property("SecurityStamp") 204 | .HasColumnType("nvarchar(max)"); 205 | 206 | b.Property("TwoFactorEnabled") 207 | .HasColumnType("bit"); 208 | 209 | b.Property("UserName") 210 | .HasMaxLength(256) 211 | .HasColumnType("nvarchar(256)"); 212 | 213 | b.HasKey("Id"); 214 | 215 | b.HasIndex("NormalizedEmail") 216 | .HasDatabaseName("EmailIndex"); 217 | 218 | b.HasIndex("NormalizedUserName") 219 | .IsUnique() 220 | .HasDatabaseName("UserNameIndex") 221 | .HasFilter("[NormalizedUserName] IS NOT NULL"); 222 | 223 | b.ToTable("AspNetUsers", (string)null); 224 | }); 225 | 226 | modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim", b => 227 | { 228 | b.HasOne("Microsoft.AspNetCore.Identity.IdentityRole", null) 229 | .WithMany() 230 | .HasForeignKey("RoleId") 231 | .OnDelete(DeleteBehavior.Cascade) 232 | .IsRequired(); 233 | }); 234 | 235 | modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim", b => 236 | { 237 | b.HasOne("SvelteApp1.Server.Data.ApplicationUser", null) 238 | .WithMany() 239 | .HasForeignKey("UserId") 240 | .OnDelete(DeleteBehavior.Cascade) 241 | .IsRequired(); 242 | }); 243 | 244 | modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin", b => 245 | { 246 | b.HasOne("SvelteApp1.Server.Data.ApplicationUser", null) 247 | .WithMany() 248 | .HasForeignKey("UserId") 249 | .OnDelete(DeleteBehavior.Cascade) 250 | .IsRequired(); 251 | }); 252 | 253 | modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole", b => 254 | { 255 | b.HasOne("Microsoft.AspNetCore.Identity.IdentityRole", null) 256 | .WithMany() 257 | .HasForeignKey("RoleId") 258 | .OnDelete(DeleteBehavior.Cascade) 259 | .IsRequired(); 260 | 261 | b.HasOne("SvelteApp1.Server.Data.ApplicationUser", null) 262 | .WithMany() 263 | .HasForeignKey("UserId") 264 | .OnDelete(DeleteBehavior.Cascade) 265 | .IsRequired(); 266 | }); 267 | 268 | modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken", b => 269 | { 270 | b.HasOne("SvelteApp1.Server.Data.ApplicationUser", null) 271 | .WithMany() 272 | .HasForeignKey("UserId") 273 | .OnDelete(DeleteBehavior.Cascade) 274 | .IsRequired(); 275 | }); 276 | #pragma warning restore 612, 618 277 | } 278 | } 279 | } 280 | -------------------------------------------------------------------------------- /SvelteApp1.Server/Migrations/20231224195252_db1.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using Microsoft.EntityFrameworkCore.Migrations; 3 | 4 | #nullable disable 5 | 6 | namespace SvelteApp1.Server.Migrations 7 | { 8 | /// 9 | public partial class db1 : Migration 10 | { 11 | /// 12 | protected override void Up(MigrationBuilder migrationBuilder) 13 | { 14 | migrationBuilder.CreateTable( 15 | name: "AspNetRoles", 16 | columns: table => new 17 | { 18 | Id = table.Column(type: "nvarchar(450)", nullable: false), 19 | Name = table.Column(type: "nvarchar(256)", maxLength: 256, nullable: true), 20 | NormalizedName = table.Column(type: "nvarchar(256)", maxLength: 256, nullable: true), 21 | ConcurrencyStamp = table.Column(type: "nvarchar(max)", nullable: true) 22 | }, 23 | constraints: table => 24 | { 25 | table.PrimaryKey("PK_AspNetRoles", x => x.Id); 26 | }); 27 | 28 | migrationBuilder.CreateTable( 29 | name: "AspNetUsers", 30 | columns: table => new 31 | { 32 | Id = table.Column(type: "nvarchar(450)", nullable: false), 33 | UserName = table.Column(type: "nvarchar(256)", maxLength: 256, nullable: true), 34 | NormalizedUserName = table.Column(type: "nvarchar(256)", maxLength: 256, nullable: true), 35 | Email = table.Column(type: "nvarchar(256)", maxLength: 256, nullable: true), 36 | NormalizedEmail = table.Column(type: "nvarchar(256)", maxLength: 256, nullable: true), 37 | EmailConfirmed = table.Column(type: "bit", nullable: false), 38 | PasswordHash = table.Column(type: "nvarchar(max)", nullable: true), 39 | SecurityStamp = table.Column(type: "nvarchar(max)", nullable: true), 40 | ConcurrencyStamp = table.Column(type: "nvarchar(max)", nullable: true), 41 | PhoneNumber = table.Column(type: "nvarchar(max)", nullable: true), 42 | PhoneNumberConfirmed = table.Column(type: "bit", nullable: false), 43 | TwoFactorEnabled = table.Column(type: "bit", nullable: false), 44 | LockoutEnd = table.Column(type: "datetimeoffset", nullable: true), 45 | LockoutEnabled = table.Column(type: "bit", nullable: false), 46 | AccessFailedCount = table.Column(type: "int", nullable: false) 47 | }, 48 | constraints: table => 49 | { 50 | table.PrimaryKey("PK_AspNetUsers", x => x.Id); 51 | }); 52 | 53 | migrationBuilder.CreateTable( 54 | name: "AspNetRoleClaims", 55 | columns: table => new 56 | { 57 | Id = table.Column(type: "int", nullable: false) 58 | .Annotation("SqlServer:Identity", "1, 1"), 59 | RoleId = table.Column(type: "nvarchar(450)", nullable: false), 60 | ClaimType = table.Column(type: "nvarchar(max)", nullable: true), 61 | ClaimValue = table.Column(type: "nvarchar(max)", nullable: true) 62 | }, 63 | constraints: table => 64 | { 65 | table.PrimaryKey("PK_AspNetRoleClaims", x => x.Id); 66 | table.ForeignKey( 67 | name: "FK_AspNetRoleClaims_AspNetRoles_RoleId", 68 | column: x => x.RoleId, 69 | principalTable: "AspNetRoles", 70 | principalColumn: "Id", 71 | onDelete: ReferentialAction.Cascade); 72 | }); 73 | 74 | migrationBuilder.CreateTable( 75 | name: "AspNetUserClaims", 76 | columns: table => new 77 | { 78 | Id = table.Column(type: "int", nullable: false) 79 | .Annotation("SqlServer:Identity", "1, 1"), 80 | UserId = table.Column(type: "nvarchar(450)", nullable: false), 81 | ClaimType = table.Column(type: "nvarchar(max)", nullable: true), 82 | ClaimValue = table.Column(type: "nvarchar(max)", nullable: true) 83 | }, 84 | constraints: table => 85 | { 86 | table.PrimaryKey("PK_AspNetUserClaims", x => x.Id); 87 | table.ForeignKey( 88 | name: "FK_AspNetUserClaims_AspNetUsers_UserId", 89 | column: x => x.UserId, 90 | principalTable: "AspNetUsers", 91 | principalColumn: "Id", 92 | onDelete: ReferentialAction.Cascade); 93 | }); 94 | 95 | migrationBuilder.CreateTable( 96 | name: "AspNetUserLogins", 97 | columns: table => new 98 | { 99 | LoginProvider = table.Column(type: "nvarchar(450)", nullable: false), 100 | ProviderKey = table.Column(type: "nvarchar(450)", nullable: false), 101 | ProviderDisplayName = table.Column(type: "nvarchar(max)", nullable: true), 102 | UserId = table.Column(type: "nvarchar(450)", nullable: false) 103 | }, 104 | constraints: table => 105 | { 106 | table.PrimaryKey("PK_AspNetUserLogins", x => new { x.LoginProvider, x.ProviderKey }); 107 | table.ForeignKey( 108 | name: "FK_AspNetUserLogins_AspNetUsers_UserId", 109 | column: x => x.UserId, 110 | principalTable: "AspNetUsers", 111 | principalColumn: "Id", 112 | onDelete: ReferentialAction.Cascade); 113 | }); 114 | 115 | migrationBuilder.CreateTable( 116 | name: "AspNetUserRoles", 117 | columns: table => new 118 | { 119 | UserId = table.Column(type: "nvarchar(450)", nullable: false), 120 | RoleId = table.Column(type: "nvarchar(450)", nullable: false) 121 | }, 122 | constraints: table => 123 | { 124 | table.PrimaryKey("PK_AspNetUserRoles", x => new { x.UserId, x.RoleId }); 125 | table.ForeignKey( 126 | name: "FK_AspNetUserRoles_AspNetRoles_RoleId", 127 | column: x => x.RoleId, 128 | principalTable: "AspNetRoles", 129 | principalColumn: "Id", 130 | onDelete: ReferentialAction.Cascade); 131 | table.ForeignKey( 132 | name: "FK_AspNetUserRoles_AspNetUsers_UserId", 133 | column: x => x.UserId, 134 | principalTable: "AspNetUsers", 135 | principalColumn: "Id", 136 | onDelete: ReferentialAction.Cascade); 137 | }); 138 | 139 | migrationBuilder.CreateTable( 140 | name: "AspNetUserTokens", 141 | columns: table => new 142 | { 143 | UserId = table.Column(type: "nvarchar(450)", nullable: false), 144 | LoginProvider = table.Column(type: "nvarchar(450)", nullable: false), 145 | Name = table.Column(type: "nvarchar(450)", nullable: false), 146 | Value = table.Column(type: "nvarchar(max)", nullable: true) 147 | }, 148 | constraints: table => 149 | { 150 | table.PrimaryKey("PK_AspNetUserTokens", x => new { x.UserId, x.LoginProvider, x.Name }); 151 | table.ForeignKey( 152 | name: "FK_AspNetUserTokens_AspNetUsers_UserId", 153 | column: x => x.UserId, 154 | principalTable: "AspNetUsers", 155 | principalColumn: "Id", 156 | onDelete: ReferentialAction.Cascade); 157 | }); 158 | 159 | migrationBuilder.CreateIndex( 160 | name: "IX_AspNetRoleClaims_RoleId", 161 | table: "AspNetRoleClaims", 162 | column: "RoleId"); 163 | 164 | migrationBuilder.CreateIndex( 165 | name: "RoleNameIndex", 166 | table: "AspNetRoles", 167 | column: "NormalizedName", 168 | unique: true, 169 | filter: "[NormalizedName] IS NOT NULL"); 170 | 171 | migrationBuilder.CreateIndex( 172 | name: "IX_AspNetUserClaims_UserId", 173 | table: "AspNetUserClaims", 174 | column: "UserId"); 175 | 176 | migrationBuilder.CreateIndex( 177 | name: "IX_AspNetUserLogins_UserId", 178 | table: "AspNetUserLogins", 179 | column: "UserId"); 180 | 181 | migrationBuilder.CreateIndex( 182 | name: "IX_AspNetUserRoles_RoleId", 183 | table: "AspNetUserRoles", 184 | column: "RoleId"); 185 | 186 | migrationBuilder.CreateIndex( 187 | name: "EmailIndex", 188 | table: "AspNetUsers", 189 | column: "NormalizedEmail"); 190 | 191 | migrationBuilder.CreateIndex( 192 | name: "UserNameIndex", 193 | table: "AspNetUsers", 194 | column: "NormalizedUserName", 195 | unique: true, 196 | filter: "[NormalizedUserName] IS NOT NULL"); 197 | } 198 | 199 | /// 200 | protected override void Down(MigrationBuilder migrationBuilder) 201 | { 202 | migrationBuilder.DropTable( 203 | name: "AspNetRoleClaims"); 204 | 205 | migrationBuilder.DropTable( 206 | name: "AspNetUserClaims"); 207 | 208 | migrationBuilder.DropTable( 209 | name: "AspNetUserLogins"); 210 | 211 | migrationBuilder.DropTable( 212 | name: "AspNetUserRoles"); 213 | 214 | migrationBuilder.DropTable( 215 | name: "AspNetUserTokens"); 216 | 217 | migrationBuilder.DropTable( 218 | name: "AspNetRoles"); 219 | 220 | migrationBuilder.DropTable( 221 | name: "AspNetUsers"); 222 | } 223 | } 224 | } 225 | -------------------------------------------------------------------------------- /SvelteApp1.Server/Migrations/ApplicationDbContextModelSnapshot.cs: -------------------------------------------------------------------------------- 1 | // 2 | using System; 3 | using Microsoft.EntityFrameworkCore; 4 | using Microsoft.EntityFrameworkCore.Infrastructure; 5 | using Microsoft.EntityFrameworkCore.Metadata; 6 | using Microsoft.EntityFrameworkCore.Storage.ValueConversion; 7 | using SvelteApp1.Server.Data; 8 | 9 | #nullable disable 10 | 11 | namespace SvelteApp1.Server.Migrations 12 | { 13 | [DbContext(typeof(ApplicationDbContext))] 14 | partial class ApplicationDbContextModelSnapshot : ModelSnapshot 15 | { 16 | protected override void BuildModel(ModelBuilder modelBuilder) 17 | { 18 | #pragma warning disable 612, 618 19 | modelBuilder 20 | .HasAnnotation("ProductVersion", "8.0.0") 21 | .HasAnnotation("Relational:MaxIdentifierLength", 128); 22 | 23 | SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder); 24 | 25 | modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRole", b => 26 | { 27 | b.Property("Id") 28 | .HasColumnType("nvarchar(450)"); 29 | 30 | b.Property("ConcurrencyStamp") 31 | .IsConcurrencyToken() 32 | .HasColumnType("nvarchar(max)"); 33 | 34 | b.Property("Name") 35 | .HasMaxLength(256) 36 | .HasColumnType("nvarchar(256)"); 37 | 38 | b.Property("NormalizedName") 39 | .HasMaxLength(256) 40 | .HasColumnType("nvarchar(256)"); 41 | 42 | b.HasKey("Id"); 43 | 44 | b.HasIndex("NormalizedName") 45 | .IsUnique() 46 | .HasDatabaseName("RoleNameIndex") 47 | .HasFilter("[NormalizedName] IS NOT NULL"); 48 | 49 | b.ToTable("AspNetRoles", (string)null); 50 | }); 51 | 52 | modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim", b => 53 | { 54 | b.Property("Id") 55 | .ValueGeneratedOnAdd() 56 | .HasColumnType("int"); 57 | 58 | SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); 59 | 60 | b.Property("ClaimType") 61 | .HasColumnType("nvarchar(max)"); 62 | 63 | b.Property("ClaimValue") 64 | .HasColumnType("nvarchar(max)"); 65 | 66 | b.Property("RoleId") 67 | .IsRequired() 68 | .HasColumnType("nvarchar(450)"); 69 | 70 | b.HasKey("Id"); 71 | 72 | b.HasIndex("RoleId"); 73 | 74 | b.ToTable("AspNetRoleClaims", (string)null); 75 | }); 76 | 77 | modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim", b => 78 | { 79 | b.Property("Id") 80 | .ValueGeneratedOnAdd() 81 | .HasColumnType("int"); 82 | 83 | SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); 84 | 85 | b.Property("ClaimType") 86 | .HasColumnType("nvarchar(max)"); 87 | 88 | b.Property("ClaimValue") 89 | .HasColumnType("nvarchar(max)"); 90 | 91 | b.Property("UserId") 92 | .IsRequired() 93 | .HasColumnType("nvarchar(450)"); 94 | 95 | b.HasKey("Id"); 96 | 97 | b.HasIndex("UserId"); 98 | 99 | b.ToTable("AspNetUserClaims", (string)null); 100 | }); 101 | 102 | modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin", b => 103 | { 104 | b.Property("LoginProvider") 105 | .HasColumnType("nvarchar(450)"); 106 | 107 | b.Property("ProviderKey") 108 | .HasColumnType("nvarchar(450)"); 109 | 110 | b.Property("ProviderDisplayName") 111 | .HasColumnType("nvarchar(max)"); 112 | 113 | b.Property("UserId") 114 | .IsRequired() 115 | .HasColumnType("nvarchar(450)"); 116 | 117 | b.HasKey("LoginProvider", "ProviderKey"); 118 | 119 | b.HasIndex("UserId"); 120 | 121 | b.ToTable("AspNetUserLogins", (string)null); 122 | }); 123 | 124 | modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole", b => 125 | { 126 | b.Property("UserId") 127 | .HasColumnType("nvarchar(450)"); 128 | 129 | b.Property("RoleId") 130 | .HasColumnType("nvarchar(450)"); 131 | 132 | b.HasKey("UserId", "RoleId"); 133 | 134 | b.HasIndex("RoleId"); 135 | 136 | b.ToTable("AspNetUserRoles", (string)null); 137 | }); 138 | 139 | modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken", b => 140 | { 141 | b.Property("UserId") 142 | .HasColumnType("nvarchar(450)"); 143 | 144 | b.Property("LoginProvider") 145 | .HasColumnType("nvarchar(450)"); 146 | 147 | b.Property("Name") 148 | .HasColumnType("nvarchar(450)"); 149 | 150 | b.Property("Value") 151 | .HasColumnType("nvarchar(max)"); 152 | 153 | b.HasKey("UserId", "LoginProvider", "Name"); 154 | 155 | b.ToTable("AspNetUserTokens", (string)null); 156 | }); 157 | 158 | modelBuilder.Entity("SvelteApp1.Server.Data.ApplicationUser", b => 159 | { 160 | b.Property("Id") 161 | .HasColumnType("nvarchar(450)"); 162 | 163 | b.Property("AccessFailedCount") 164 | .HasColumnType("int"); 165 | 166 | b.Property("ConcurrencyStamp") 167 | .IsConcurrencyToken() 168 | .HasColumnType("nvarchar(max)"); 169 | 170 | b.Property("Email") 171 | .HasMaxLength(256) 172 | .HasColumnType("nvarchar(256)"); 173 | 174 | b.Property("EmailConfirmed") 175 | .HasColumnType("bit"); 176 | 177 | b.Property("LockoutEnabled") 178 | .HasColumnType("bit"); 179 | 180 | b.Property("LockoutEnd") 181 | .HasColumnType("datetimeoffset"); 182 | 183 | b.Property("NormalizedEmail") 184 | .HasMaxLength(256) 185 | .HasColumnType("nvarchar(256)"); 186 | 187 | b.Property("NormalizedUserName") 188 | .HasMaxLength(256) 189 | .HasColumnType("nvarchar(256)"); 190 | 191 | b.Property("PasswordHash") 192 | .HasColumnType("nvarchar(max)"); 193 | 194 | b.Property("PhoneNumber") 195 | .HasColumnType("nvarchar(max)"); 196 | 197 | b.Property("PhoneNumberConfirmed") 198 | .HasColumnType("bit"); 199 | 200 | b.Property("SecurityStamp") 201 | .HasColumnType("nvarchar(max)"); 202 | 203 | b.Property("TwoFactorEnabled") 204 | .HasColumnType("bit"); 205 | 206 | b.Property("UserName") 207 | .HasMaxLength(256) 208 | .HasColumnType("nvarchar(256)"); 209 | 210 | b.HasKey("Id"); 211 | 212 | b.HasIndex("NormalizedEmail") 213 | .HasDatabaseName("EmailIndex"); 214 | 215 | b.HasIndex("NormalizedUserName") 216 | .IsUnique() 217 | .HasDatabaseName("UserNameIndex") 218 | .HasFilter("[NormalizedUserName] IS NOT NULL"); 219 | 220 | b.ToTable("AspNetUsers", (string)null); 221 | }); 222 | 223 | modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim", b => 224 | { 225 | b.HasOne("Microsoft.AspNetCore.Identity.IdentityRole", null) 226 | .WithMany() 227 | .HasForeignKey("RoleId") 228 | .OnDelete(DeleteBehavior.Cascade) 229 | .IsRequired(); 230 | }); 231 | 232 | modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim", b => 233 | { 234 | b.HasOne("SvelteApp1.Server.Data.ApplicationUser", null) 235 | .WithMany() 236 | .HasForeignKey("UserId") 237 | .OnDelete(DeleteBehavior.Cascade) 238 | .IsRequired(); 239 | }); 240 | 241 | modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin", b => 242 | { 243 | b.HasOne("SvelteApp1.Server.Data.ApplicationUser", null) 244 | .WithMany() 245 | .HasForeignKey("UserId") 246 | .OnDelete(DeleteBehavior.Cascade) 247 | .IsRequired(); 248 | }); 249 | 250 | modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole", b => 251 | { 252 | b.HasOne("Microsoft.AspNetCore.Identity.IdentityRole", null) 253 | .WithMany() 254 | .HasForeignKey("RoleId") 255 | .OnDelete(DeleteBehavior.Cascade) 256 | .IsRequired(); 257 | 258 | b.HasOne("SvelteApp1.Server.Data.ApplicationUser", null) 259 | .WithMany() 260 | .HasForeignKey("UserId") 261 | .OnDelete(DeleteBehavior.Cascade) 262 | .IsRequired(); 263 | }); 264 | 265 | modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken", b => 266 | { 267 | b.HasOne("SvelteApp1.Server.Data.ApplicationUser", null) 268 | .WithMany() 269 | .HasForeignKey("UserId") 270 | .OnDelete(DeleteBehavior.Cascade) 271 | .IsRequired(); 272 | }); 273 | #pragma warning restore 612, 618 274 | } 275 | } 276 | } 277 | -------------------------------------------------------------------------------- /SvelteApp1.Server/Program.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.AspNetCore.Identity; 2 | using Microsoft.EntityFrameworkCore; 3 | using SvelteApp1.Server.Data; 4 | using System.Security.Claims; 5 | 6 | namespace SvelteApp1.Server 7 | { 8 | public class Program 9 | { 10 | public static void Main(string[] args) 11 | { 12 | var builder = WebApplication.CreateBuilder(args); 13 | var connectionString = builder.Configuration.GetConnectionString("ApplicationDbContextConnection") ?? throw new InvalidOperationException("Connection string 'ApplicationDbContextConnection' not found."); 14 | 15 | builder.Services.AddDbContext(options => options.UseSqlServer(connectionString)); 16 | 17 | builder.Services.AddAuthorization(); 18 | builder.Services.AddIdentityApiEndpoints() 19 | .AddEntityFrameworkStores(); 20 | 21 | // Add services to the container. 22 | 23 | builder.Services.AddControllers(); 24 | // Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle 25 | builder.Services.AddEndpointsApiExplorer(); 26 | builder.Services.AddSwaggerGen(); 27 | 28 | var app = builder.Build(); 29 | 30 | app.UseDefaultFiles(); 31 | app.UseStaticFiles(); 32 | 33 | // Configure the HTTP request pipeline. 34 | if (app.Environment.IsDevelopment()) 35 | { 36 | app.UseSwagger(); 37 | app.UseSwaggerUI(); 38 | } 39 | 40 | app.UseHttpsRedirection(); 41 | 42 | app.UseAuthorization(); 43 | 44 | app.MapIdentityApi(); 45 | 46 | app.MapPost("/logout", async (SignInManager signInManager) => 47 | { 48 | 49 | await signInManager.SignOutAsync(); 50 | return Results.Ok(); 51 | 52 | }).RequireAuthorization(); 53 | 54 | 55 | app.MapGet("/pingauth", (ClaimsPrincipal user) => 56 | { 57 | var email = user.FindFirstValue(ClaimTypes.Email); // get the user's email from the claim 58 | return Results.Json(new { Email = email }); ; // return the email as a plain text response 59 | }).RequireAuthorization(); 60 | 61 | 62 | 63 | 64 | app.MapControllers(); 65 | 66 | app.MapFallbackToFile("/index.html"); 67 | 68 | app.Run(); 69 | } 70 | } 71 | } 72 | -------------------------------------------------------------------------------- /SvelteApp1.Server/Properties/launchSettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json.schemastore.org/launchsettings.json", 3 | "iisSettings": { 4 | "windowsAuthentication": false, 5 | "anonymousAuthentication": true, 6 | "iisExpress": { 7 | "applicationUrl": "http://localhost:13051", 8 | "sslPort": 44367 9 | } 10 | }, 11 | "profiles": { 12 | "http": { 13 | "commandName": "Project", 14 | "dotnetRunMessages": true, 15 | "launchBrowser": true, 16 | "launchUrl": "swagger", 17 | "applicationUrl": "http://localhost:5182", 18 | "environmentVariables": { 19 | "ASPNETCORE_ENVIRONMENT": "Development", 20 | "ASPNETCORE_HOSTINGSTARTUPASSEMBLIES": "Microsoft.AspNetCore.SpaProxy" 21 | } 22 | }, 23 | "https": { 24 | "commandName": "Project", 25 | "dotnetRunMessages": true, 26 | "launchBrowser": true, 27 | "launchUrl": "swagger", 28 | "applicationUrl": "https://localhost:7174;http://localhost:5182", 29 | "environmentVariables": { 30 | "ASPNETCORE_ENVIRONMENT": "Development", 31 | "ASPNETCORE_HOSTINGSTARTUPASSEMBLIES": "Microsoft.AspNetCore.SpaProxy" 32 | } 33 | }, 34 | "IIS Express": { 35 | "commandName": "IISExpress", 36 | "launchBrowser": true, 37 | "launchUrl": "swagger", 38 | "environmentVariables": { 39 | "ASPNETCORE_ENVIRONMENT": "Development", 40 | "ASPNETCORE_HOSTINGSTARTUPASSEMBLIES": "Microsoft.AspNetCore.SpaProxy" 41 | } 42 | } 43 | } 44 | } 45 | 46 | -------------------------------------------------------------------------------- /SvelteApp1.Server/SvelteApp1.Server.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | net8.0 5 | enable 6 | enable 7 | false 8 | ..\svelteapp1.client 9 | npm run dev 10 | https://localhost:5173 11 | 12 | 13 | 14 | 15 | 16 | 8.*-* 17 | 18 | 19 | all 20 | runtime; build; native; contentfiles; analyzers; buildtransitive 21 | 22 | 23 | 24 | all 25 | runtime; build; native; contentfiles; analyzers; buildtransitive 26 | 27 | 28 | 29 | 30 | 31 | 32 | false 33 | 34 | 35 | 36 | 37 | -------------------------------------------------------------------------------- /SvelteApp1.Server/SvelteApp1.Server.http: -------------------------------------------------------------------------------- 1 | @SvelteApp1.Server_HostAddress = http://localhost:5182 2 | 3 | GET {{SvelteApp1.Server_HostAddress}}/weatherforecast/ 4 | Accept: application/json 5 | 6 | ### 7 | -------------------------------------------------------------------------------- /SvelteApp1.Server/WeatherForecast.cs: -------------------------------------------------------------------------------- 1 | namespace SvelteApp1.Server 2 | { 3 | public class WeatherForecast 4 | { 5 | public DateOnly Date { get; set; } 6 | 7 | public int TemperatureC { get; set; } 8 | 9 | public int TemperatureF => 32 + (int)(TemperatureC / 0.5556); 10 | 11 | public string? Summary { get; set; } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /SvelteApp1.Server/appsettings.Development.json: -------------------------------------------------------------------------------- 1 | { 2 | "Logging": { 3 | "LogLevel": { 4 | "Default": "Information", 5 | "Microsoft.AspNetCore": "Warning" 6 | } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /SvelteApp1.Server/appsettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "Logging": { 3 | "LogLevel": { 4 | "Default": "Information", 5 | "Microsoft.AspNetCore": "Warning" 6 | } 7 | }, 8 | "AllowedHosts": "*", 9 | "ConnectionStrings": { 10 | "ApplicationDbContextConnection": "Server=(localdb)\\mssqllocaldb;Database=SvelteApp1.Server;Trusted_Connection=True;MultipleActiveResultSets=true" 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /SvelteApp1.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio Version 17 4 | VisualStudioVersion = 17.8.34330.188 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SvelteApp1.Server", "SvelteApp1.Server\SvelteApp1.Server.csproj", "{9CA4F111-63BA-439C-9F15-E3396B2F1730}" 7 | EndProject 8 | Project("{54A90642-561A-4BB1-A94E-469ADEE60C69}") = "svelteapp1.client", "svelteapp1.client\svelteapp1.client.esproj", "{1BD78378-3A9C-4FE2-BEA3-DB777007FD92}" 9 | EndProject 10 | Global 11 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 12 | Debug|Any CPU = Debug|Any CPU 13 | Release|Any CPU = Release|Any CPU 14 | EndGlobalSection 15 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 16 | {9CA4F111-63BA-439C-9F15-E3396B2F1730}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 17 | {9CA4F111-63BA-439C-9F15-E3396B2F1730}.Debug|Any CPU.Build.0 = Debug|Any CPU 18 | {9CA4F111-63BA-439C-9F15-E3396B2F1730}.Release|Any CPU.ActiveCfg = Release|Any CPU 19 | {9CA4F111-63BA-439C-9F15-E3396B2F1730}.Release|Any CPU.Build.0 = Release|Any CPU 20 | {1BD78378-3A9C-4FE2-BEA3-DB777007FD92}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 21 | {1BD78378-3A9C-4FE2-BEA3-DB777007FD92}.Debug|Any CPU.Build.0 = Debug|Any CPU 22 | {1BD78378-3A9C-4FE2-BEA3-DB777007FD92}.Debug|Any CPU.Deploy.0 = Debug|Any CPU 23 | {1BD78378-3A9C-4FE2-BEA3-DB777007FD92}.Release|Any CPU.ActiveCfg = Release|Any CPU 24 | {1BD78378-3A9C-4FE2-BEA3-DB777007FD92}.Release|Any CPU.Build.0 = Release|Any CPU 25 | {1BD78378-3A9C-4FE2-BEA3-DB777007FD92}.Release|Any CPU.Deploy.0 = Release|Any CPU 26 | EndGlobalSection 27 | GlobalSection(SolutionProperties) = preSolution 28 | HideSolutionNode = FALSE 29 | EndGlobalSection 30 | GlobalSection(ExtensibilityGlobals) = postSolution 31 | SolutionGuid = {999F2B36-1FD0-4120-A79B-3FF27E84E1A2} 32 | EndGlobalSection 33 | EndGlobal 34 | -------------------------------------------------------------------------------- /svelteapp1.client/.eslintrc.cjs: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | root: true, 3 | env: { browser: true, es2020: true }, 4 | extends: [ 5 | 'eslint:recommended', 6 | 'plugin:@typescript-eslint/recommended', 7 | 'plugin:react-hooks/recommended', 8 | ], 9 | ignorePatterns: ['dist', '.eslintrc.cjs'], 10 | parser: '@typescript-eslint/parser', 11 | plugins: ['react-refresh'], 12 | rules: { 13 | 'react-refresh/only-export-components': [ 14 | 'warn', 15 | { allowConstantExport: true }, 16 | ], 17 | }, 18 | } 19 | -------------------------------------------------------------------------------- /svelteapp1.client/.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | pnpm-debug.log* 8 | lerna-debug.log* 9 | 10 | node_modules 11 | dist 12 | dist-ssr 13 | *.local 14 | 15 | # Editor directories and files 16 | .vscode/* 17 | !.vscode/extensions.json 18 | .idea 19 | .DS_Store 20 | *.suo 21 | *.ntvs* 22 | *.njsproj 23 | *.sln 24 | *.sw? 25 | -------------------------------------------------------------------------------- /svelteapp1.client/README.md: -------------------------------------------------------------------------------- 1 | # Svelte + TS + Vite 2 | 3 | This template should help get you started developing with Svelte and TypeScript in Vite. 4 | 5 | ## Recommended IDE Setup 6 | 7 | [VS Code](https://code.visualstudio.com/) + [Svelte](https://marketplace.visualstudio.com/items?itemName=svelte.svelte-vscode). 8 | 9 | ## Need an official Svelte framework? 10 | 11 | Check out [SvelteKit](https://github.com/sveltejs/kit#readme), which is also powered by Vite. Deploy anywhere with its serverless-first approach and adapt to various platforms, with out of the box support for TypeScript, SCSS, and Less, and easily-added support for mdsvex, GraphQL, PostCSS, Tailwind CSS, and more. 12 | 13 | ## Technical considerations 14 | 15 | **Why use this over SvelteKit?** 16 | 17 | - It brings its own routing solution which might not be preferable for some users. 18 | - It is first and foremost a framework that just happens to use Vite under the hood, not a Vite app. 19 | 20 | This template contains as little as possible to get started with Vite + TypeScript + Svelte, while taking into account the developer experience with regards to HMR and intellisense. It demonstrates capabilities on par with the other `create-vite` templates and is a good starting point for beginners dipping their toes into a Vite + Svelte project. 21 | 22 | Should you later need the extended capabilities and extensibility provided by SvelteKit, the template has been structured similarly to SvelteKit so that it is easy to migrate. 23 | 24 | **Why `global.d.ts` instead of `compilerOptions.types` inside `jsconfig.json` or `tsconfig.json`?** 25 | 26 | Setting `compilerOptions.types` shuts out all other types not explicitly listed in the configuration. Using triple-slash references keeps the default TypeScript setting of accepting type information from the entire workspace, while also adding `svelte` and `vite/client` type information. 27 | 28 | **Why include `.vscode/extensions.json`?** 29 | 30 | Other templates indirectly recommend extensions via the README, but this file allows VS Code to prompt the user to install the recommended extension upon opening the project. 31 | 32 | **Why enable `allowJs` in the TS template?** 33 | 34 | While `allowJs: false` would indeed prevent the use of `.js` files in the project, it does not prevent the use of JavaScript syntax in `.svelte` files. In addition, it would force `checkJs: false`, bringing the worst of both worlds: not being able to guarantee the entire codebase is TypeScript, and also having worse typechecking for the existing JavaScript. In addition, there are valid use cases in which a mixed codebase may be relevant. 35 | 36 | **Why is HMR not preserving my local component state?** 37 | 38 | HMR state preservation comes with a number of gotchas! It has been disabled by default in both `svelte-hmr` and `@sveltejs/vite-plugin-svelte` due to its often surprising behavior. You can read the details [here](https://github.com/rixo/svelte-hmr#svelte-hmr). 39 | 40 | If you have state that's important to retain within a component, consider creating an external store which would not be replaced by HMR. 41 | 42 | ```ts 43 | // store.ts 44 | // An extremely simple external store 45 | import { writable } from 'svelte/store' 46 | export default writable(0) 47 | ``` 48 | -------------------------------------------------------------------------------- /svelteapp1.client/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Vite + Svelte + TS 8 | 9 | 10 |
11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /svelteapp1.client/nuget.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /svelteapp1.client/package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "vite-project", 3 | "version": "0.0.0", 4 | "lockfileVersion": 3, 5 | "requires": true, 6 | "packages": { 7 | "": { 8 | "name": "vite-project", 9 | "version": "0.0.0", 10 | "dependencies": { 11 | "svelte-routing": "^2.10.0" 12 | }, 13 | "devDependencies": { 14 | "@sveltejs/vite-plugin-svelte": "^3.0.1", 15 | "@tsconfig/svelte": "^5.0.2", 16 | "@typescript-eslint/eslint-plugin": "^6.14.0", 17 | "@typescript-eslint/parser": "^6.14.0", 18 | "eslint": "^8.55.0", 19 | "eslint-plugin-react-hooks": "^4.6.0", 20 | "eslint-plugin-react-refresh": "^0.4.5", 21 | "svelte": "^4.2.8", 22 | "svelte-check": "^3.6.2", 23 | "tslib": "^2.6.2", 24 | "typescript": "^5.2.2", 25 | "vite": "^5.0.8" 26 | } 27 | }, 28 | "node_modules/@aashutoshrathi/word-wrap": { 29 | "version": "1.2.6", 30 | "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", 31 | "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", 32 | "dev": true, 33 | "engines": { 34 | "node": ">=0.10.0" 35 | } 36 | }, 37 | "node_modules/@ampproject/remapping": { 38 | "version": "2.2.1", 39 | "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz", 40 | "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==", 41 | "dev": true, 42 | "dependencies": { 43 | "@jridgewell/gen-mapping": "^0.3.0", 44 | "@jridgewell/trace-mapping": "^0.3.9" 45 | }, 46 | "engines": { 47 | "node": ">=6.0.0" 48 | } 49 | }, 50 | "node_modules/@esbuild/aix-ppc64": { 51 | "version": "0.19.10", 52 | "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.19.10.tgz", 53 | "integrity": "sha512-Q+mk96KJ+FZ30h9fsJl+67IjNJm3x2eX+GBWGmocAKgzp27cowCOOqSdscX80s0SpdFXZnIv/+1xD1EctFx96Q==", 54 | "cpu": [ 55 | "ppc64" 56 | ], 57 | "dev": true, 58 | "optional": true, 59 | "os": [ 60 | "aix" 61 | ], 62 | "engines": { 63 | "node": ">=12" 64 | } 65 | }, 66 | "node_modules/@esbuild/android-arm": { 67 | "version": "0.19.10", 68 | "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.19.10.tgz", 69 | "integrity": "sha512-7W0bK7qfkw1fc2viBfrtAEkDKHatYfHzr/jKAHNr9BvkYDXPcC6bodtm8AyLJNNuqClLNaeTLuwURt4PRT9d7w==", 70 | "cpu": [ 71 | "arm" 72 | ], 73 | "dev": true, 74 | "optional": true, 75 | "os": [ 76 | "android" 77 | ], 78 | "engines": { 79 | "node": ">=12" 80 | } 81 | }, 82 | "node_modules/@esbuild/android-arm64": { 83 | "version": "0.19.10", 84 | "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.19.10.tgz", 85 | "integrity": "sha512-1X4CClKhDgC3by7k8aOWZeBXQX8dHT5QAMCAQDArCLaYfkppoARvh0fit3X2Qs+MXDngKcHv6XXyQCpY0hkK1Q==", 86 | "cpu": [ 87 | "arm64" 88 | ], 89 | "dev": true, 90 | "optional": true, 91 | "os": [ 92 | "android" 93 | ], 94 | "engines": { 95 | "node": ">=12" 96 | } 97 | }, 98 | "node_modules/@esbuild/android-x64": { 99 | "version": "0.19.10", 100 | "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.19.10.tgz", 101 | "integrity": "sha512-O/nO/g+/7NlitUxETkUv/IvADKuZXyH4BHf/g/7laqKC4i/7whLpB0gvpPc2zpF0q9Q6FXS3TS75QHac9MvVWw==", 102 | "cpu": [ 103 | "x64" 104 | ], 105 | "dev": true, 106 | "optional": true, 107 | "os": [ 108 | "android" 109 | ], 110 | "engines": { 111 | "node": ">=12" 112 | } 113 | }, 114 | "node_modules/@esbuild/darwin-arm64": { 115 | "version": "0.19.10", 116 | "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.19.10.tgz", 117 | "integrity": "sha512-YSRRs2zOpwypck+6GL3wGXx2gNP7DXzetmo5pHXLrY/VIMsS59yKfjPizQ4lLt5vEI80M41gjm2BxrGZ5U+VMA==", 118 | "cpu": [ 119 | "arm64" 120 | ], 121 | "dev": true, 122 | "optional": true, 123 | "os": [ 124 | "darwin" 125 | ], 126 | "engines": { 127 | "node": ">=12" 128 | } 129 | }, 130 | "node_modules/@esbuild/darwin-x64": { 131 | "version": "0.19.10", 132 | "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.19.10.tgz", 133 | "integrity": "sha512-alfGtT+IEICKtNE54hbvPg13xGBe4GkVxyGWtzr+yHO7HIiRJppPDhOKq3zstTcVf8msXb/t4eavW3jCDpMSmA==", 134 | "cpu": [ 135 | "x64" 136 | ], 137 | "dev": true, 138 | "optional": true, 139 | "os": [ 140 | "darwin" 141 | ], 142 | "engines": { 143 | "node": ">=12" 144 | } 145 | }, 146 | "node_modules/@esbuild/freebsd-arm64": { 147 | "version": "0.19.10", 148 | "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.10.tgz", 149 | "integrity": "sha512-dMtk1wc7FSH8CCkE854GyGuNKCewlh+7heYP/sclpOG6Cectzk14qdUIY5CrKDbkA/OczXq9WesqnPl09mj5dg==", 150 | "cpu": [ 151 | "arm64" 152 | ], 153 | "dev": true, 154 | "optional": true, 155 | "os": [ 156 | "freebsd" 157 | ], 158 | "engines": { 159 | "node": ">=12" 160 | } 161 | }, 162 | "node_modules/@esbuild/freebsd-x64": { 163 | "version": "0.19.10", 164 | "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.19.10.tgz", 165 | "integrity": "sha512-G5UPPspryHu1T3uX8WiOEUa6q6OlQh6gNl4CO4Iw5PS+Kg5bVggVFehzXBJY6X6RSOMS8iXDv2330VzaObm4Ag==", 166 | "cpu": [ 167 | "x64" 168 | ], 169 | "dev": true, 170 | "optional": true, 171 | "os": [ 172 | "freebsd" 173 | ], 174 | "engines": { 175 | "node": ">=12" 176 | } 177 | }, 178 | "node_modules/@esbuild/linux-arm": { 179 | "version": "0.19.10", 180 | "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.19.10.tgz", 181 | "integrity": "sha512-j6gUW5aAaPgD416Hk9FHxn27On28H4eVI9rJ4az7oCGTFW48+LcgNDBN+9f8rKZz7EEowo889CPKyeaD0iw9Kg==", 182 | "cpu": [ 183 | "arm" 184 | ], 185 | "dev": true, 186 | "optional": true, 187 | "os": [ 188 | "linux" 189 | ], 190 | "engines": { 191 | "node": ">=12" 192 | } 193 | }, 194 | "node_modules/@esbuild/linux-arm64": { 195 | "version": "0.19.10", 196 | "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.19.10.tgz", 197 | "integrity": "sha512-QxaouHWZ+2KWEj7cGJmvTIHVALfhpGxo3WLmlYfJ+dA5fJB6lDEIg+oe/0//FuyVHuS3l79/wyBxbHr0NgtxJQ==", 198 | "cpu": [ 199 | "arm64" 200 | ], 201 | "dev": true, 202 | "optional": true, 203 | "os": [ 204 | "linux" 205 | ], 206 | "engines": { 207 | "node": ">=12" 208 | } 209 | }, 210 | "node_modules/@esbuild/linux-ia32": { 211 | "version": "0.19.10", 212 | "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.19.10.tgz", 213 | "integrity": "sha512-4ub1YwXxYjj9h1UIZs2hYbnTZBtenPw5NfXCRgEkGb0b6OJ2gpkMvDqRDYIDRjRdWSe/TBiZltm3Y3Q8SN1xNg==", 214 | "cpu": [ 215 | "ia32" 216 | ], 217 | "dev": true, 218 | "optional": true, 219 | "os": [ 220 | "linux" 221 | ], 222 | "engines": { 223 | "node": ">=12" 224 | } 225 | }, 226 | "node_modules/@esbuild/linux-loong64": { 227 | "version": "0.19.10", 228 | "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.19.10.tgz", 229 | "integrity": "sha512-lo3I9k+mbEKoxtoIbM0yC/MZ1i2wM0cIeOejlVdZ3D86LAcFXFRdeuZmh91QJvUTW51bOK5W2BznGNIl4+mDaA==", 230 | "cpu": [ 231 | "loong64" 232 | ], 233 | "dev": true, 234 | "optional": true, 235 | "os": [ 236 | "linux" 237 | ], 238 | "engines": { 239 | "node": ">=12" 240 | } 241 | }, 242 | "node_modules/@esbuild/linux-mips64el": { 243 | "version": "0.19.10", 244 | "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.19.10.tgz", 245 | "integrity": "sha512-J4gH3zhHNbdZN0Bcr1QUGVNkHTdpijgx5VMxeetSk6ntdt+vR1DqGmHxQYHRmNb77tP6GVvD+K0NyO4xjd7y4A==", 246 | "cpu": [ 247 | "mips64el" 248 | ], 249 | "dev": true, 250 | "optional": true, 251 | "os": [ 252 | "linux" 253 | ], 254 | "engines": { 255 | "node": ">=12" 256 | } 257 | }, 258 | "node_modules/@esbuild/linux-ppc64": { 259 | "version": "0.19.10", 260 | "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.19.10.tgz", 261 | "integrity": "sha512-tgT/7u+QhV6ge8wFMzaklOY7KqiyitgT1AUHMApau32ZlvTB/+efeCtMk4eXS+uEymYK249JsoiklZN64xt6oQ==", 262 | "cpu": [ 263 | "ppc64" 264 | ], 265 | "dev": true, 266 | "optional": true, 267 | "os": [ 268 | "linux" 269 | ], 270 | "engines": { 271 | "node": ">=12" 272 | } 273 | }, 274 | "node_modules/@esbuild/linux-riscv64": { 275 | "version": "0.19.10", 276 | "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.19.10.tgz", 277 | "integrity": "sha512-0f/spw0PfBMZBNqtKe5FLzBDGo0SKZKvMl5PHYQr3+eiSscfJ96XEknCe+JoOayybWUFQbcJTrk946i3j9uYZA==", 278 | "cpu": [ 279 | "riscv64" 280 | ], 281 | "dev": true, 282 | "optional": true, 283 | "os": [ 284 | "linux" 285 | ], 286 | "engines": { 287 | "node": ">=12" 288 | } 289 | }, 290 | "node_modules/@esbuild/linux-s390x": { 291 | "version": "0.19.10", 292 | "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.19.10.tgz", 293 | "integrity": "sha512-pZFe0OeskMHzHa9U38g+z8Yx5FNCLFtUnJtQMpwhS+r4S566aK2ci3t4NCP4tjt6d5j5uo4h7tExZMjeKoehAA==", 294 | "cpu": [ 295 | "s390x" 296 | ], 297 | "dev": true, 298 | "optional": true, 299 | "os": [ 300 | "linux" 301 | ], 302 | "engines": { 303 | "node": ">=12" 304 | } 305 | }, 306 | "node_modules/@esbuild/linux-x64": { 307 | "version": "0.19.10", 308 | "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.19.10.tgz", 309 | "integrity": "sha512-SpYNEqg/6pZYoc+1zLCjVOYvxfZVZj6w0KROZ3Fje/QrM3nfvT2llI+wmKSrWuX6wmZeTapbarvuNNK/qepSgA==", 310 | "cpu": [ 311 | "x64" 312 | ], 313 | "dev": true, 314 | "optional": true, 315 | "os": [ 316 | "linux" 317 | ], 318 | "engines": { 319 | "node": ">=12" 320 | } 321 | }, 322 | "node_modules/@esbuild/netbsd-x64": { 323 | "version": "0.19.10", 324 | "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.19.10.tgz", 325 | "integrity": "sha512-ACbZ0vXy9zksNArWlk2c38NdKg25+L9pr/mVaj9SUq6lHZu/35nx2xnQVRGLrC1KKQqJKRIB0q8GspiHI3J80Q==", 326 | "cpu": [ 327 | "x64" 328 | ], 329 | "dev": true, 330 | "optional": true, 331 | "os": [ 332 | "netbsd" 333 | ], 334 | "engines": { 335 | "node": ">=12" 336 | } 337 | }, 338 | "node_modules/@esbuild/openbsd-x64": { 339 | "version": "0.19.10", 340 | "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.19.10.tgz", 341 | "integrity": "sha512-PxcgvjdSjtgPMiPQrM3pwSaG4kGphP+bLSb+cihuP0LYdZv1epbAIecHVl5sD3npkfYBZ0ZnOjR878I7MdJDFg==", 342 | "cpu": [ 343 | "x64" 344 | ], 345 | "dev": true, 346 | "optional": true, 347 | "os": [ 348 | "openbsd" 349 | ], 350 | "engines": { 351 | "node": ">=12" 352 | } 353 | }, 354 | "node_modules/@esbuild/sunos-x64": { 355 | "version": "0.19.10", 356 | "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.19.10.tgz", 357 | "integrity": "sha512-ZkIOtrRL8SEJjr+VHjmW0znkPs+oJXhlJbNwfI37rvgeMtk3sxOQevXPXjmAPZPigVTncvFqLMd+uV0IBSEzqA==", 358 | "cpu": [ 359 | "x64" 360 | ], 361 | "dev": true, 362 | "optional": true, 363 | "os": [ 364 | "sunos" 365 | ], 366 | "engines": { 367 | "node": ">=12" 368 | } 369 | }, 370 | "node_modules/@esbuild/win32-arm64": { 371 | "version": "0.19.10", 372 | "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.19.10.tgz", 373 | "integrity": "sha512-+Sa4oTDbpBfGpl3Hn3XiUe4f8TU2JF7aX8cOfqFYMMjXp6ma6NJDztl5FDG8Ezx0OjwGikIHw+iA54YLDNNVfw==", 374 | "cpu": [ 375 | "arm64" 376 | ], 377 | "dev": true, 378 | "optional": true, 379 | "os": [ 380 | "win32" 381 | ], 382 | "engines": { 383 | "node": ">=12" 384 | } 385 | }, 386 | "node_modules/@esbuild/win32-ia32": { 387 | "version": "0.19.10", 388 | "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.19.10.tgz", 389 | "integrity": "sha512-EOGVLK1oWMBXgfttJdPHDTiivYSjX6jDNaATeNOaCOFEVcfMjtbx7WVQwPSE1eIfCp/CaSF2nSrDtzc4I9f8TQ==", 390 | "cpu": [ 391 | "ia32" 392 | ], 393 | "dev": true, 394 | "optional": true, 395 | "os": [ 396 | "win32" 397 | ], 398 | "engines": { 399 | "node": ">=12" 400 | } 401 | }, 402 | "node_modules/@esbuild/win32-x64": { 403 | "version": "0.19.10", 404 | "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.19.10.tgz", 405 | "integrity": "sha512-whqLG6Sc70AbU73fFYvuYzaE4MNMBIlR1Y/IrUeOXFrWHxBEjjbZaQ3IXIQS8wJdAzue2GwYZCjOrgrU1oUHoA==", 406 | "cpu": [ 407 | "x64" 408 | ], 409 | "dev": true, 410 | "optional": true, 411 | "os": [ 412 | "win32" 413 | ], 414 | "engines": { 415 | "node": ">=12" 416 | } 417 | }, 418 | "node_modules/@eslint-community/eslint-utils": { 419 | "version": "4.4.0", 420 | "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", 421 | "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", 422 | "dev": true, 423 | "dependencies": { 424 | "eslint-visitor-keys": "^3.3.0" 425 | }, 426 | "engines": { 427 | "node": "^12.22.0 || ^14.17.0 || >=16.0.0" 428 | }, 429 | "peerDependencies": { 430 | "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" 431 | } 432 | }, 433 | "node_modules/@eslint-community/regexpp": { 434 | "version": "4.10.0", 435 | "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz", 436 | "integrity": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==", 437 | "dev": true, 438 | "engines": { 439 | "node": "^12.0.0 || ^14.0.0 || >=16.0.0" 440 | } 441 | }, 442 | "node_modules/@eslint/eslintrc": { 443 | "version": "2.1.4", 444 | "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", 445 | "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", 446 | "dev": true, 447 | "dependencies": { 448 | "ajv": "^6.12.4", 449 | "debug": "^4.3.2", 450 | "espree": "^9.6.0", 451 | "globals": "^13.19.0", 452 | "ignore": "^5.2.0", 453 | "import-fresh": "^3.2.1", 454 | "js-yaml": "^4.1.0", 455 | "minimatch": "^3.1.2", 456 | "strip-json-comments": "^3.1.1" 457 | }, 458 | "engines": { 459 | "node": "^12.22.0 || ^14.17.0 || >=16.0.0" 460 | }, 461 | "funding": { 462 | "url": "https://opencollective.com/eslint" 463 | } 464 | }, 465 | "node_modules/@eslint/js": { 466 | "version": "8.56.0", 467 | "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.56.0.tgz", 468 | "integrity": "sha512-gMsVel9D7f2HLkBma9VbtzZRehRogVRfbr++f06nL2vnCGCNlzOD+/MUov/F4p8myyAHspEhVobgjpX64q5m6A==", 469 | "dev": true, 470 | "engines": { 471 | "node": "^12.22.0 || ^14.17.0 || >=16.0.0" 472 | } 473 | }, 474 | "node_modules/@humanwhocodes/config-array": { 475 | "version": "0.11.13", 476 | "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.13.tgz", 477 | "integrity": "sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ==", 478 | "dev": true, 479 | "dependencies": { 480 | "@humanwhocodes/object-schema": "^2.0.1", 481 | "debug": "^4.1.1", 482 | "minimatch": "^3.0.5" 483 | }, 484 | "engines": { 485 | "node": ">=10.10.0" 486 | } 487 | }, 488 | "node_modules/@humanwhocodes/module-importer": { 489 | "version": "1.0.1", 490 | "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", 491 | "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", 492 | "dev": true, 493 | "engines": { 494 | "node": ">=12.22" 495 | }, 496 | "funding": { 497 | "type": "github", 498 | "url": "https://github.com/sponsors/nzakas" 499 | } 500 | }, 501 | "node_modules/@humanwhocodes/object-schema": { 502 | "version": "2.0.1", 503 | "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.1.tgz", 504 | "integrity": "sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw==", 505 | "dev": true 506 | }, 507 | "node_modules/@jridgewell/gen-mapping": { 508 | "version": "0.3.3", 509 | "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", 510 | "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", 511 | "dev": true, 512 | "dependencies": { 513 | "@jridgewell/set-array": "^1.0.1", 514 | "@jridgewell/sourcemap-codec": "^1.4.10", 515 | "@jridgewell/trace-mapping": "^0.3.9" 516 | }, 517 | "engines": { 518 | "node": ">=6.0.0" 519 | } 520 | }, 521 | "node_modules/@jridgewell/resolve-uri": { 522 | "version": "3.1.1", 523 | "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", 524 | "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", 525 | "dev": true, 526 | "engines": { 527 | "node": ">=6.0.0" 528 | } 529 | }, 530 | "node_modules/@jridgewell/set-array": { 531 | "version": "1.1.2", 532 | "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", 533 | "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", 534 | "dev": true, 535 | "engines": { 536 | "node": ">=6.0.0" 537 | } 538 | }, 539 | "node_modules/@jridgewell/sourcemap-codec": { 540 | "version": "1.4.15", 541 | "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", 542 | "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", 543 | "dev": true 544 | }, 545 | "node_modules/@jridgewell/trace-mapping": { 546 | "version": "0.3.20", 547 | "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz", 548 | "integrity": "sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==", 549 | "dev": true, 550 | "dependencies": { 551 | "@jridgewell/resolve-uri": "^3.1.0", 552 | "@jridgewell/sourcemap-codec": "^1.4.14" 553 | } 554 | }, 555 | "node_modules/@nodelib/fs.scandir": { 556 | "version": "2.1.5", 557 | "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", 558 | "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", 559 | "dev": true, 560 | "dependencies": { 561 | "@nodelib/fs.stat": "2.0.5", 562 | "run-parallel": "^1.1.9" 563 | }, 564 | "engines": { 565 | "node": ">= 8" 566 | } 567 | }, 568 | "node_modules/@nodelib/fs.stat": { 569 | "version": "2.0.5", 570 | "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", 571 | "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", 572 | "dev": true, 573 | "engines": { 574 | "node": ">= 8" 575 | } 576 | }, 577 | "node_modules/@nodelib/fs.walk": { 578 | "version": "1.2.8", 579 | "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", 580 | "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", 581 | "dev": true, 582 | "dependencies": { 583 | "@nodelib/fs.scandir": "2.1.5", 584 | "fastq": "^1.6.0" 585 | }, 586 | "engines": { 587 | "node": ">= 8" 588 | } 589 | }, 590 | "node_modules/@rollup/rollup-android-arm-eabi": { 591 | "version": "4.9.1", 592 | "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.9.1.tgz", 593 | "integrity": "sha512-6vMdBZqtq1dVQ4CWdhFwhKZL6E4L1dV6jUjuBvsavvNJSppzi6dLBbuV+3+IyUREaj9ZFvQefnQm28v4OCXlig==", 594 | "cpu": [ 595 | "arm" 596 | ], 597 | "dev": true, 598 | "optional": true, 599 | "os": [ 600 | "android" 601 | ] 602 | }, 603 | "node_modules/@rollup/rollup-android-arm64": { 604 | "version": "4.9.1", 605 | "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.9.1.tgz", 606 | "integrity": "sha512-Jto9Fl3YQ9OLsTDWtLFPtaIMSL2kwGyGoVCmPC8Gxvym9TCZm4Sie+cVeblPO66YZsYH8MhBKDMGZ2NDxuk/XQ==", 607 | "cpu": [ 608 | "arm64" 609 | ], 610 | "dev": true, 611 | "optional": true, 612 | "os": [ 613 | "android" 614 | ] 615 | }, 616 | "node_modules/@rollup/rollup-darwin-arm64": { 617 | "version": "4.9.1", 618 | "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.9.1.tgz", 619 | "integrity": "sha512-LtYcLNM+bhsaKAIGwVkh5IOWhaZhjTfNOkGzGqdHvhiCUVuJDalvDxEdSnhFzAn+g23wgsycmZk1vbnaibZwwA==", 620 | "cpu": [ 621 | "arm64" 622 | ], 623 | "dev": true, 624 | "optional": true, 625 | "os": [ 626 | "darwin" 627 | ] 628 | }, 629 | "node_modules/@rollup/rollup-darwin-x64": { 630 | "version": "4.9.1", 631 | "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.9.1.tgz", 632 | "integrity": "sha512-KyP/byeXu9V+etKO6Lw3E4tW4QdcnzDG/ake031mg42lob5tN+5qfr+lkcT/SGZaH2PdW4Z1NX9GHEkZ8xV7og==", 633 | "cpu": [ 634 | "x64" 635 | ], 636 | "dev": true, 637 | "optional": true, 638 | "os": [ 639 | "darwin" 640 | ] 641 | }, 642 | "node_modules/@rollup/rollup-linux-arm-gnueabihf": { 643 | "version": "4.9.1", 644 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.9.1.tgz", 645 | "integrity": "sha512-Yqz/Doumf3QTKplwGNrCHe/B2p9xqDghBZSlAY0/hU6ikuDVQuOUIpDP/YcmoT+447tsZTmirmjgG3znvSCR0Q==", 646 | "cpu": [ 647 | "arm" 648 | ], 649 | "dev": true, 650 | "optional": true, 651 | "os": [ 652 | "linux" 653 | ] 654 | }, 655 | "node_modules/@rollup/rollup-linux-arm64-gnu": { 656 | "version": "4.9.1", 657 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.9.1.tgz", 658 | "integrity": "sha512-u3XkZVvxcvlAOlQJ3UsD1rFvLWqu4Ef/Ggl40WAVCuogf4S1nJPHh5RTgqYFpCOvuGJ7H5yGHabjFKEZGExk5Q==", 659 | "cpu": [ 660 | "arm64" 661 | ], 662 | "dev": true, 663 | "optional": true, 664 | "os": [ 665 | "linux" 666 | ] 667 | }, 668 | "node_modules/@rollup/rollup-linux-arm64-musl": { 669 | "version": "4.9.1", 670 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.9.1.tgz", 671 | "integrity": "sha512-0XSYN/rfWShW+i+qjZ0phc6vZ7UWI8XWNz4E/l+6edFt+FxoEghrJHjX1EY/kcUGCnZzYYRCl31SNdfOi450Aw==", 672 | "cpu": [ 673 | "arm64" 674 | ], 675 | "dev": true, 676 | "optional": true, 677 | "os": [ 678 | "linux" 679 | ] 680 | }, 681 | "node_modules/@rollup/rollup-linux-riscv64-gnu": { 682 | "version": "4.9.1", 683 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.9.1.tgz", 684 | "integrity": "sha512-LmYIO65oZVfFt9t6cpYkbC4d5lKHLYv5B4CSHRpnANq0VZUQXGcCPXHzbCXCz4RQnx7jvlYB1ISVNCE/omz5cw==", 685 | "cpu": [ 686 | "riscv64" 687 | ], 688 | "dev": true, 689 | "optional": true, 690 | "os": [ 691 | "linux" 692 | ] 693 | }, 694 | "node_modules/@rollup/rollup-linux-x64-gnu": { 695 | "version": "4.9.1", 696 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.9.1.tgz", 697 | "integrity": "sha512-kr8rEPQ6ns/Lmr/hiw8sEVj9aa07gh1/tQF2Y5HrNCCEPiCBGnBUt9tVusrcBBiJfIt1yNaXN6r1CCmpbFEDpg==", 698 | "cpu": [ 699 | "x64" 700 | ], 701 | "dev": true, 702 | "optional": true, 703 | "os": [ 704 | "linux" 705 | ] 706 | }, 707 | "node_modules/@rollup/rollup-linux-x64-musl": { 708 | "version": "4.9.1", 709 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.9.1.tgz", 710 | "integrity": "sha512-t4QSR7gN+OEZLG0MiCgPqMWZGwmeHhsM4AkegJ0Kiy6TnJ9vZ8dEIwHw1LcZKhbHxTY32hp9eVCMdR3/I8MGRw==", 711 | "cpu": [ 712 | "x64" 713 | ], 714 | "dev": true, 715 | "optional": true, 716 | "os": [ 717 | "linux" 718 | ] 719 | }, 720 | "node_modules/@rollup/rollup-win32-arm64-msvc": { 721 | "version": "4.9.1", 722 | "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.9.1.tgz", 723 | "integrity": "sha512-7XI4ZCBN34cb+BH557FJPmh0kmNz2c25SCQeT9OiFWEgf8+dL6ZwJ8f9RnUIit+j01u07Yvrsuu1rZGxJCc51g==", 724 | "cpu": [ 725 | "arm64" 726 | ], 727 | "dev": true, 728 | "optional": true, 729 | "os": [ 730 | "win32" 731 | ] 732 | }, 733 | "node_modules/@rollup/rollup-win32-ia32-msvc": { 734 | "version": "4.9.1", 735 | "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.9.1.tgz", 736 | "integrity": "sha512-yE5c2j1lSWOH5jp+Q0qNL3Mdhr8WuqCNVjc6BxbVfS5cAS6zRmdiw7ktb8GNpDCEUJphILY6KACoFoRtKoqNQg==", 737 | "cpu": [ 738 | "ia32" 739 | ], 740 | "dev": true, 741 | "optional": true, 742 | "os": [ 743 | "win32" 744 | ] 745 | }, 746 | "node_modules/@rollup/rollup-win32-x64-msvc": { 747 | "version": "4.9.1", 748 | "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.9.1.tgz", 749 | "integrity": "sha512-PyJsSsafjmIhVgaI1Zdj7m8BB8mMckFah/xbpplObyHfiXzKcI5UOUXRyOdHW7nz4DpMCuzLnF7v5IWHenCwYA==", 750 | "cpu": [ 751 | "x64" 752 | ], 753 | "dev": true, 754 | "optional": true, 755 | "os": [ 756 | "win32" 757 | ] 758 | }, 759 | "node_modules/@sveltejs/vite-plugin-svelte": { 760 | "version": "3.0.1", 761 | "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte/-/vite-plugin-svelte-3.0.1.tgz", 762 | "integrity": "sha512-CGURX6Ps+TkOovK6xV+Y2rn8JKa8ZPUHPZ/NKgCxAmgBrXReavzFl8aOSCj3kQ1xqT7yGJj53hjcV/gqwDAaWA==", 763 | "dev": true, 764 | "dependencies": { 765 | "@sveltejs/vite-plugin-svelte-inspector": "^2.0.0-next.0 || ^2.0.0", 766 | "debug": "^4.3.4", 767 | "deepmerge": "^4.3.1", 768 | "kleur": "^4.1.5", 769 | "magic-string": "^0.30.5", 770 | "svelte-hmr": "^0.15.3", 771 | "vitefu": "^0.2.5" 772 | }, 773 | "engines": { 774 | "node": "^18.0.0 || >=20" 775 | }, 776 | "peerDependencies": { 777 | "svelte": "^4.0.0 || ^5.0.0-next.0", 778 | "vite": "^5.0.0" 779 | } 780 | }, 781 | "node_modules/@sveltejs/vite-plugin-svelte-inspector": { 782 | "version": "2.0.0", 783 | "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte-inspector/-/vite-plugin-svelte-inspector-2.0.0.tgz", 784 | "integrity": "sha512-gjr9ZFg1BSlIpfZ4PRewigrvYmHWbDrq2uvvPB1AmTWKuM+dI1JXQSUu2pIrYLb/QncyiIGkFDFKTwJ0XqQZZg==", 785 | "dev": true, 786 | "dependencies": { 787 | "debug": "^4.3.4" 788 | }, 789 | "engines": { 790 | "node": "^18.0.0 || >=20" 791 | }, 792 | "peerDependencies": { 793 | "@sveltejs/vite-plugin-svelte": "^3.0.0", 794 | "svelte": "^4.0.0 || ^5.0.0-next.0", 795 | "vite": "^5.0.0" 796 | } 797 | }, 798 | "node_modules/@tsconfig/svelte": { 799 | "version": "5.0.2", 800 | "resolved": "https://registry.npmjs.org/@tsconfig/svelte/-/svelte-5.0.2.tgz", 801 | "integrity": "sha512-BRbo1fOtyVbhfLyuCWw6wAWp+U8UQle+ZXu84MYYWzYSEB28dyfnRBIE99eoG+qdAC0po6L2ScIEivcT07UaMA==", 802 | "dev": true 803 | }, 804 | "node_modules/@types/estree": { 805 | "version": "1.0.5", 806 | "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", 807 | "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", 808 | "dev": true 809 | }, 810 | "node_modules/@types/json-schema": { 811 | "version": "7.0.15", 812 | "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", 813 | "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", 814 | "dev": true 815 | }, 816 | "node_modules/@types/pug": { 817 | "version": "2.0.10", 818 | "resolved": "https://registry.npmjs.org/@types/pug/-/pug-2.0.10.tgz", 819 | "integrity": "sha512-Sk/uYFOBAB7mb74XcpizmH0KOR2Pv3D2Hmrh1Dmy5BmK3MpdSa5kqZcg6EKBdklU0bFXX9gCfzvpnyUehrPIuA==", 820 | "dev": true 821 | }, 822 | "node_modules/@types/semver": { 823 | "version": "7.5.6", 824 | "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.6.tgz", 825 | "integrity": "sha512-dn1l8LaMea/IjDoHNd9J52uBbInB796CDffS6VdIxvqYCPSG0V0DzHp76GpaWnlhg88uYyPbXCDIowa86ybd5A==", 826 | "dev": true 827 | }, 828 | "node_modules/@typescript-eslint/eslint-plugin": { 829 | "version": "6.15.0", 830 | "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.15.0.tgz", 831 | "integrity": "sha512-j5qoikQqPccq9QoBAupOP+CBu8BaJ8BLjaXSioDISeTZkVO3ig7oSIKh3H+rEpee7xCXtWwSB4KIL5l6hWZzpg==", 832 | "dev": true, 833 | "dependencies": { 834 | "@eslint-community/regexpp": "^4.5.1", 835 | "@typescript-eslint/scope-manager": "6.15.0", 836 | "@typescript-eslint/type-utils": "6.15.0", 837 | "@typescript-eslint/utils": "6.15.0", 838 | "@typescript-eslint/visitor-keys": "6.15.0", 839 | "debug": "^4.3.4", 840 | "graphemer": "^1.4.0", 841 | "ignore": "^5.2.4", 842 | "natural-compare": "^1.4.0", 843 | "semver": "^7.5.4", 844 | "ts-api-utils": "^1.0.1" 845 | }, 846 | "engines": { 847 | "node": "^16.0.0 || >=18.0.0" 848 | }, 849 | "funding": { 850 | "type": "opencollective", 851 | "url": "https://opencollective.com/typescript-eslint" 852 | }, 853 | "peerDependencies": { 854 | "@typescript-eslint/parser": "^6.0.0 || ^6.0.0-alpha", 855 | "eslint": "^7.0.0 || ^8.0.0" 856 | }, 857 | "peerDependenciesMeta": { 858 | "typescript": { 859 | "optional": true 860 | } 861 | } 862 | }, 863 | "node_modules/@typescript-eslint/parser": { 864 | "version": "6.15.0", 865 | "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.15.0.tgz", 866 | "integrity": "sha512-MkgKNnsjC6QwcMdlNAel24jjkEO/0hQaMDLqP4S9zq5HBAUJNQB6y+3DwLjX7b3l2b37eNAxMPLwb3/kh8VKdA==", 867 | "dev": true, 868 | "dependencies": { 869 | "@typescript-eslint/scope-manager": "6.15.0", 870 | "@typescript-eslint/types": "6.15.0", 871 | "@typescript-eslint/typescript-estree": "6.15.0", 872 | "@typescript-eslint/visitor-keys": "6.15.0", 873 | "debug": "^4.3.4" 874 | }, 875 | "engines": { 876 | "node": "^16.0.0 || >=18.0.0" 877 | }, 878 | "funding": { 879 | "type": "opencollective", 880 | "url": "https://opencollective.com/typescript-eslint" 881 | }, 882 | "peerDependencies": { 883 | "eslint": "^7.0.0 || ^8.0.0" 884 | }, 885 | "peerDependenciesMeta": { 886 | "typescript": { 887 | "optional": true 888 | } 889 | } 890 | }, 891 | "node_modules/@typescript-eslint/scope-manager": { 892 | "version": "6.15.0", 893 | "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.15.0.tgz", 894 | "integrity": "sha512-+BdvxYBltqrmgCNu4Li+fGDIkW9n//NrruzG9X1vBzaNK+ExVXPoGB71kneaVw/Jp+4rH/vaMAGC6JfMbHstVg==", 895 | "dev": true, 896 | "dependencies": { 897 | "@typescript-eslint/types": "6.15.0", 898 | "@typescript-eslint/visitor-keys": "6.15.0" 899 | }, 900 | "engines": { 901 | "node": "^16.0.0 || >=18.0.0" 902 | }, 903 | "funding": { 904 | "type": "opencollective", 905 | "url": "https://opencollective.com/typescript-eslint" 906 | } 907 | }, 908 | "node_modules/@typescript-eslint/type-utils": { 909 | "version": "6.15.0", 910 | "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.15.0.tgz", 911 | "integrity": "sha512-CnmHKTfX6450Bo49hPg2OkIm/D/TVYV7jO1MCfPYGwf6x3GO0VU8YMO5AYMn+u3X05lRRxA4fWCz87GFQV6yVQ==", 912 | "dev": true, 913 | "dependencies": { 914 | "@typescript-eslint/typescript-estree": "6.15.0", 915 | "@typescript-eslint/utils": "6.15.0", 916 | "debug": "^4.3.4", 917 | "ts-api-utils": "^1.0.1" 918 | }, 919 | "engines": { 920 | "node": "^16.0.0 || >=18.0.0" 921 | }, 922 | "funding": { 923 | "type": "opencollective", 924 | "url": "https://opencollective.com/typescript-eslint" 925 | }, 926 | "peerDependencies": { 927 | "eslint": "^7.0.0 || ^8.0.0" 928 | }, 929 | "peerDependenciesMeta": { 930 | "typescript": { 931 | "optional": true 932 | } 933 | } 934 | }, 935 | "node_modules/@typescript-eslint/types": { 936 | "version": "6.15.0", 937 | "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.15.0.tgz", 938 | "integrity": "sha512-yXjbt//E4T/ee8Ia1b5mGlbNj9fB9lJP4jqLbZualwpP2BCQ5is6BcWwxpIsY4XKAhmdv3hrW92GdtJbatC6dQ==", 939 | "dev": true, 940 | "engines": { 941 | "node": "^16.0.0 || >=18.0.0" 942 | }, 943 | "funding": { 944 | "type": "opencollective", 945 | "url": "https://opencollective.com/typescript-eslint" 946 | } 947 | }, 948 | "node_modules/@typescript-eslint/typescript-estree": { 949 | "version": "6.15.0", 950 | "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.15.0.tgz", 951 | "integrity": "sha512-7mVZJN7Hd15OmGuWrp2T9UvqR2Ecg+1j/Bp1jXUEY2GZKV6FXlOIoqVDmLpBiEiq3katvj/2n2mR0SDwtloCew==", 952 | "dev": true, 953 | "dependencies": { 954 | "@typescript-eslint/types": "6.15.0", 955 | "@typescript-eslint/visitor-keys": "6.15.0", 956 | "debug": "^4.3.4", 957 | "globby": "^11.1.0", 958 | "is-glob": "^4.0.3", 959 | "semver": "^7.5.4", 960 | "ts-api-utils": "^1.0.1" 961 | }, 962 | "engines": { 963 | "node": "^16.0.0 || >=18.0.0" 964 | }, 965 | "funding": { 966 | "type": "opencollective", 967 | "url": "https://opencollective.com/typescript-eslint" 968 | }, 969 | "peerDependenciesMeta": { 970 | "typescript": { 971 | "optional": true 972 | } 973 | } 974 | }, 975 | "node_modules/@typescript-eslint/utils": { 976 | "version": "6.15.0", 977 | "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.15.0.tgz", 978 | "integrity": "sha512-eF82p0Wrrlt8fQSRL0bGXzK5nWPRV2dYQZdajcfzOD9+cQz9O7ugifrJxclB+xVOvWvagXfqS4Es7vpLP4augw==", 979 | "dev": true, 980 | "dependencies": { 981 | "@eslint-community/eslint-utils": "^4.4.0", 982 | "@types/json-schema": "^7.0.12", 983 | "@types/semver": "^7.5.0", 984 | "@typescript-eslint/scope-manager": "6.15.0", 985 | "@typescript-eslint/types": "6.15.0", 986 | "@typescript-eslint/typescript-estree": "6.15.0", 987 | "semver": "^7.5.4" 988 | }, 989 | "engines": { 990 | "node": "^16.0.0 || >=18.0.0" 991 | }, 992 | "funding": { 993 | "type": "opencollective", 994 | "url": "https://opencollective.com/typescript-eslint" 995 | }, 996 | "peerDependencies": { 997 | "eslint": "^7.0.0 || ^8.0.0" 998 | } 999 | }, 1000 | "node_modules/@typescript-eslint/visitor-keys": { 1001 | "version": "6.15.0", 1002 | "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.15.0.tgz", 1003 | "integrity": "sha512-1zvtdC1a9h5Tb5jU9x3ADNXO9yjP8rXlaoChu0DQX40vf5ACVpYIVIZhIMZ6d5sDXH7vq4dsZBT1fEGj8D2n2w==", 1004 | "dev": true, 1005 | "dependencies": { 1006 | "@typescript-eslint/types": "6.15.0", 1007 | "eslint-visitor-keys": "^3.4.1" 1008 | }, 1009 | "engines": { 1010 | "node": "^16.0.0 || >=18.0.0" 1011 | }, 1012 | "funding": { 1013 | "type": "opencollective", 1014 | "url": "https://opencollective.com/typescript-eslint" 1015 | } 1016 | }, 1017 | "node_modules/@ungap/structured-clone": { 1018 | "version": "1.2.0", 1019 | "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", 1020 | "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", 1021 | "dev": true 1022 | }, 1023 | "node_modules/acorn": { 1024 | "version": "8.11.2", 1025 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.2.tgz", 1026 | "integrity": "sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==", 1027 | "dev": true, 1028 | "bin": { 1029 | "acorn": "bin/acorn" 1030 | }, 1031 | "engines": { 1032 | "node": ">=0.4.0" 1033 | } 1034 | }, 1035 | "node_modules/acorn-jsx": { 1036 | "version": "5.3.2", 1037 | "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", 1038 | "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", 1039 | "dev": true, 1040 | "peerDependencies": { 1041 | "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" 1042 | } 1043 | }, 1044 | "node_modules/ajv": { 1045 | "version": "6.12.6", 1046 | "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", 1047 | "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", 1048 | "dev": true, 1049 | "dependencies": { 1050 | "fast-deep-equal": "^3.1.1", 1051 | "fast-json-stable-stringify": "^2.0.0", 1052 | "json-schema-traverse": "^0.4.1", 1053 | "uri-js": "^4.2.2" 1054 | }, 1055 | "funding": { 1056 | "type": "github", 1057 | "url": "https://github.com/sponsors/epoberezkin" 1058 | } 1059 | }, 1060 | "node_modules/ansi-regex": { 1061 | "version": "5.0.1", 1062 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", 1063 | "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", 1064 | "dev": true, 1065 | "engines": { 1066 | "node": ">=8" 1067 | } 1068 | }, 1069 | "node_modules/ansi-styles": { 1070 | "version": "4.3.0", 1071 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", 1072 | "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", 1073 | "dev": true, 1074 | "dependencies": { 1075 | "color-convert": "^2.0.1" 1076 | }, 1077 | "engines": { 1078 | "node": ">=8" 1079 | }, 1080 | "funding": { 1081 | "url": "https://github.com/chalk/ansi-styles?sponsor=1" 1082 | } 1083 | }, 1084 | "node_modules/anymatch": { 1085 | "version": "3.1.3", 1086 | "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", 1087 | "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", 1088 | "dev": true, 1089 | "dependencies": { 1090 | "normalize-path": "^3.0.0", 1091 | "picomatch": "^2.0.4" 1092 | }, 1093 | "engines": { 1094 | "node": ">= 8" 1095 | } 1096 | }, 1097 | "node_modules/argparse": { 1098 | "version": "2.0.1", 1099 | "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", 1100 | "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", 1101 | "dev": true 1102 | }, 1103 | "node_modules/aria-query": { 1104 | "version": "5.3.0", 1105 | "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz", 1106 | "integrity": "sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==", 1107 | "dev": true, 1108 | "dependencies": { 1109 | "dequal": "^2.0.3" 1110 | } 1111 | }, 1112 | "node_modules/array-union": { 1113 | "version": "2.1.0", 1114 | "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", 1115 | "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", 1116 | "dev": true, 1117 | "engines": { 1118 | "node": ">=8" 1119 | } 1120 | }, 1121 | "node_modules/axobject-query": { 1122 | "version": "3.2.1", 1123 | "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-3.2.1.tgz", 1124 | "integrity": "sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg==", 1125 | "dev": true, 1126 | "dependencies": { 1127 | "dequal": "^2.0.3" 1128 | } 1129 | }, 1130 | "node_modules/balanced-match": { 1131 | "version": "1.0.2", 1132 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", 1133 | "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", 1134 | "dev": true 1135 | }, 1136 | "node_modules/binary-extensions": { 1137 | "version": "2.2.0", 1138 | "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", 1139 | "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", 1140 | "dev": true, 1141 | "engines": { 1142 | "node": ">=8" 1143 | } 1144 | }, 1145 | "node_modules/brace-expansion": { 1146 | "version": "1.1.11", 1147 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 1148 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 1149 | "dev": true, 1150 | "dependencies": { 1151 | "balanced-match": "^1.0.0", 1152 | "concat-map": "0.0.1" 1153 | } 1154 | }, 1155 | "node_modules/braces": { 1156 | "version": "3.0.2", 1157 | "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", 1158 | "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", 1159 | "dev": true, 1160 | "dependencies": { 1161 | "fill-range": "^7.0.1" 1162 | }, 1163 | "engines": { 1164 | "node": ">=8" 1165 | } 1166 | }, 1167 | "node_modules/buffer-crc32": { 1168 | "version": "0.2.13", 1169 | "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", 1170 | "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", 1171 | "dev": true, 1172 | "engines": { 1173 | "node": "*" 1174 | } 1175 | }, 1176 | "node_modules/callsites": { 1177 | "version": "3.1.0", 1178 | "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", 1179 | "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", 1180 | "dev": true, 1181 | "engines": { 1182 | "node": ">=6" 1183 | } 1184 | }, 1185 | "node_modules/chalk": { 1186 | "version": "4.1.2", 1187 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", 1188 | "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", 1189 | "dev": true, 1190 | "dependencies": { 1191 | "ansi-styles": "^4.1.0", 1192 | "supports-color": "^7.1.0" 1193 | }, 1194 | "engines": { 1195 | "node": ">=10" 1196 | }, 1197 | "funding": { 1198 | "url": "https://github.com/chalk/chalk?sponsor=1" 1199 | } 1200 | }, 1201 | "node_modules/chokidar": { 1202 | "version": "3.5.3", 1203 | "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", 1204 | "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", 1205 | "dev": true, 1206 | "funding": [ 1207 | { 1208 | "type": "individual", 1209 | "url": "https://paulmillr.com/funding/" 1210 | } 1211 | ], 1212 | "dependencies": { 1213 | "anymatch": "~3.1.2", 1214 | "braces": "~3.0.2", 1215 | "glob-parent": "~5.1.2", 1216 | "is-binary-path": "~2.1.0", 1217 | "is-glob": "~4.0.1", 1218 | "normalize-path": "~3.0.0", 1219 | "readdirp": "~3.6.0" 1220 | }, 1221 | "engines": { 1222 | "node": ">= 8.10.0" 1223 | }, 1224 | "optionalDependencies": { 1225 | "fsevents": "~2.3.2" 1226 | } 1227 | }, 1228 | "node_modules/code-red": { 1229 | "version": "1.0.4", 1230 | "resolved": "https://registry.npmjs.org/code-red/-/code-red-1.0.4.tgz", 1231 | "integrity": "sha512-7qJWqItLA8/VPVlKJlFXU+NBlo/qyfs39aJcuMT/2ere32ZqvF5OSxgdM5xOfJJ7O429gg2HM47y8v9P+9wrNw==", 1232 | "dev": true, 1233 | "dependencies": { 1234 | "@jridgewell/sourcemap-codec": "^1.4.15", 1235 | "@types/estree": "^1.0.1", 1236 | "acorn": "^8.10.0", 1237 | "estree-walker": "^3.0.3", 1238 | "periscopic": "^3.1.0" 1239 | } 1240 | }, 1241 | "node_modules/color-convert": { 1242 | "version": "2.0.1", 1243 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", 1244 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 1245 | "dev": true, 1246 | "dependencies": { 1247 | "color-name": "~1.1.4" 1248 | }, 1249 | "engines": { 1250 | "node": ">=7.0.0" 1251 | } 1252 | }, 1253 | "node_modules/color-name": { 1254 | "version": "1.1.4", 1255 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", 1256 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", 1257 | "dev": true 1258 | }, 1259 | "node_modules/concat-map": { 1260 | "version": "0.0.1", 1261 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 1262 | "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", 1263 | "dev": true 1264 | }, 1265 | "node_modules/cross-spawn": { 1266 | "version": "7.0.3", 1267 | "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", 1268 | "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", 1269 | "dev": true, 1270 | "dependencies": { 1271 | "path-key": "^3.1.0", 1272 | "shebang-command": "^2.0.0", 1273 | "which": "^2.0.1" 1274 | }, 1275 | "engines": { 1276 | "node": ">= 8" 1277 | } 1278 | }, 1279 | "node_modules/css-tree": { 1280 | "version": "2.3.1", 1281 | "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.3.1.tgz", 1282 | "integrity": "sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==", 1283 | "dev": true, 1284 | "dependencies": { 1285 | "mdn-data": "2.0.30", 1286 | "source-map-js": "^1.0.1" 1287 | }, 1288 | "engines": { 1289 | "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0" 1290 | } 1291 | }, 1292 | "node_modules/debug": { 1293 | "version": "4.3.4", 1294 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", 1295 | "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", 1296 | "dev": true, 1297 | "dependencies": { 1298 | "ms": "2.1.2" 1299 | }, 1300 | "engines": { 1301 | "node": ">=6.0" 1302 | }, 1303 | "peerDependenciesMeta": { 1304 | "supports-color": { 1305 | "optional": true 1306 | } 1307 | } 1308 | }, 1309 | "node_modules/deep-is": { 1310 | "version": "0.1.4", 1311 | "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", 1312 | "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", 1313 | "dev": true 1314 | }, 1315 | "node_modules/deepmerge": { 1316 | "version": "4.3.1", 1317 | "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", 1318 | "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", 1319 | "dev": true, 1320 | "engines": { 1321 | "node": ">=0.10.0" 1322 | } 1323 | }, 1324 | "node_modules/dequal": { 1325 | "version": "2.0.3", 1326 | "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", 1327 | "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", 1328 | "dev": true, 1329 | "engines": { 1330 | "node": ">=6" 1331 | } 1332 | }, 1333 | "node_modules/detect-indent": { 1334 | "version": "6.1.0", 1335 | "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-6.1.0.tgz", 1336 | "integrity": "sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==", 1337 | "dev": true, 1338 | "engines": { 1339 | "node": ">=8" 1340 | } 1341 | }, 1342 | "node_modules/dir-glob": { 1343 | "version": "3.0.1", 1344 | "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", 1345 | "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", 1346 | "dev": true, 1347 | "dependencies": { 1348 | "path-type": "^4.0.0" 1349 | }, 1350 | "engines": { 1351 | "node": ">=8" 1352 | } 1353 | }, 1354 | "node_modules/doctrine": { 1355 | "version": "3.0.0", 1356 | "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", 1357 | "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", 1358 | "dev": true, 1359 | "dependencies": { 1360 | "esutils": "^2.0.2" 1361 | }, 1362 | "engines": { 1363 | "node": ">=6.0.0" 1364 | } 1365 | }, 1366 | "node_modules/es6-promise": { 1367 | "version": "3.3.1", 1368 | "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-3.3.1.tgz", 1369 | "integrity": "sha512-SOp9Phqvqn7jtEUxPWdWfWoLmyt2VaJ6MpvP9Comy1MceMXqE6bxvaTu4iaxpYYPzhny28Lc+M87/c2cPK6lDg==", 1370 | "dev": true 1371 | }, 1372 | "node_modules/esbuild": { 1373 | "version": "0.19.10", 1374 | "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.19.10.tgz", 1375 | "integrity": "sha512-S1Y27QGt/snkNYrRcswgRFqZjaTG5a5xM3EQo97uNBnH505pdzSNe/HLBq1v0RO7iK/ngdbhJB6mDAp0OK+iUA==", 1376 | "dev": true, 1377 | "hasInstallScript": true, 1378 | "bin": { 1379 | "esbuild": "bin/esbuild" 1380 | }, 1381 | "engines": { 1382 | "node": ">=12" 1383 | }, 1384 | "optionalDependencies": { 1385 | "@esbuild/aix-ppc64": "0.19.10", 1386 | "@esbuild/android-arm": "0.19.10", 1387 | "@esbuild/android-arm64": "0.19.10", 1388 | "@esbuild/android-x64": "0.19.10", 1389 | "@esbuild/darwin-arm64": "0.19.10", 1390 | "@esbuild/darwin-x64": "0.19.10", 1391 | "@esbuild/freebsd-arm64": "0.19.10", 1392 | "@esbuild/freebsd-x64": "0.19.10", 1393 | "@esbuild/linux-arm": "0.19.10", 1394 | "@esbuild/linux-arm64": "0.19.10", 1395 | "@esbuild/linux-ia32": "0.19.10", 1396 | "@esbuild/linux-loong64": "0.19.10", 1397 | "@esbuild/linux-mips64el": "0.19.10", 1398 | "@esbuild/linux-ppc64": "0.19.10", 1399 | "@esbuild/linux-riscv64": "0.19.10", 1400 | "@esbuild/linux-s390x": "0.19.10", 1401 | "@esbuild/linux-x64": "0.19.10", 1402 | "@esbuild/netbsd-x64": "0.19.10", 1403 | "@esbuild/openbsd-x64": "0.19.10", 1404 | "@esbuild/sunos-x64": "0.19.10", 1405 | "@esbuild/win32-arm64": "0.19.10", 1406 | "@esbuild/win32-ia32": "0.19.10", 1407 | "@esbuild/win32-x64": "0.19.10" 1408 | } 1409 | }, 1410 | "node_modules/escape-string-regexp": { 1411 | "version": "4.0.0", 1412 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", 1413 | "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", 1414 | "dev": true, 1415 | "engines": { 1416 | "node": ">=10" 1417 | }, 1418 | "funding": { 1419 | "url": "https://github.com/sponsors/sindresorhus" 1420 | } 1421 | }, 1422 | "node_modules/eslint": { 1423 | "version": "8.56.0", 1424 | "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.56.0.tgz", 1425 | "integrity": "sha512-Go19xM6T9puCOWntie1/P997aXxFsOi37JIHRWI514Hc6ZnaHGKY9xFhrU65RT6CcBEzZoGG1e6Nq+DT04ZtZQ==", 1426 | "dev": true, 1427 | "dependencies": { 1428 | "@eslint-community/eslint-utils": "^4.2.0", 1429 | "@eslint-community/regexpp": "^4.6.1", 1430 | "@eslint/eslintrc": "^2.1.4", 1431 | "@eslint/js": "8.56.0", 1432 | "@humanwhocodes/config-array": "^0.11.13", 1433 | "@humanwhocodes/module-importer": "^1.0.1", 1434 | "@nodelib/fs.walk": "^1.2.8", 1435 | "@ungap/structured-clone": "^1.2.0", 1436 | "ajv": "^6.12.4", 1437 | "chalk": "^4.0.0", 1438 | "cross-spawn": "^7.0.2", 1439 | "debug": "^4.3.2", 1440 | "doctrine": "^3.0.0", 1441 | "escape-string-regexp": "^4.0.0", 1442 | "eslint-scope": "^7.2.2", 1443 | "eslint-visitor-keys": "^3.4.3", 1444 | "espree": "^9.6.1", 1445 | "esquery": "^1.4.2", 1446 | "esutils": "^2.0.2", 1447 | "fast-deep-equal": "^3.1.3", 1448 | "file-entry-cache": "^6.0.1", 1449 | "find-up": "^5.0.0", 1450 | "glob-parent": "^6.0.2", 1451 | "globals": "^13.19.0", 1452 | "graphemer": "^1.4.0", 1453 | "ignore": "^5.2.0", 1454 | "imurmurhash": "^0.1.4", 1455 | "is-glob": "^4.0.0", 1456 | "is-path-inside": "^3.0.3", 1457 | "js-yaml": "^4.1.0", 1458 | "json-stable-stringify-without-jsonify": "^1.0.1", 1459 | "levn": "^0.4.1", 1460 | "lodash.merge": "^4.6.2", 1461 | "minimatch": "^3.1.2", 1462 | "natural-compare": "^1.4.0", 1463 | "optionator": "^0.9.3", 1464 | "strip-ansi": "^6.0.1", 1465 | "text-table": "^0.2.0" 1466 | }, 1467 | "bin": { 1468 | "eslint": "bin/eslint.js" 1469 | }, 1470 | "engines": { 1471 | "node": "^12.22.0 || ^14.17.0 || >=16.0.0" 1472 | }, 1473 | "funding": { 1474 | "url": "https://opencollective.com/eslint" 1475 | } 1476 | }, 1477 | "node_modules/eslint-plugin-react-hooks": { 1478 | "version": "4.6.0", 1479 | "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz", 1480 | "integrity": "sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==", 1481 | "dev": true, 1482 | "engines": { 1483 | "node": ">=10" 1484 | }, 1485 | "peerDependencies": { 1486 | "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0" 1487 | } 1488 | }, 1489 | "node_modules/eslint-plugin-react-refresh": { 1490 | "version": "0.4.5", 1491 | "resolved": "https://registry.npmjs.org/eslint-plugin-react-refresh/-/eslint-plugin-react-refresh-0.4.5.tgz", 1492 | "integrity": "sha512-D53FYKJa+fDmZMtriODxvhwrO+IOqrxoEo21gMA0sjHdU6dPVH4OhyFip9ypl8HOF5RV5KdTo+rBQLvnY2cO8w==", 1493 | "dev": true, 1494 | "peerDependencies": { 1495 | "eslint": ">=7" 1496 | } 1497 | }, 1498 | "node_modules/eslint-scope": { 1499 | "version": "7.2.2", 1500 | "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", 1501 | "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", 1502 | "dev": true, 1503 | "dependencies": { 1504 | "esrecurse": "^4.3.0", 1505 | "estraverse": "^5.2.0" 1506 | }, 1507 | "engines": { 1508 | "node": "^12.22.0 || ^14.17.0 || >=16.0.0" 1509 | }, 1510 | "funding": { 1511 | "url": "https://opencollective.com/eslint" 1512 | } 1513 | }, 1514 | "node_modules/eslint-visitor-keys": { 1515 | "version": "3.4.3", 1516 | "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", 1517 | "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", 1518 | "dev": true, 1519 | "engines": { 1520 | "node": "^12.22.0 || ^14.17.0 || >=16.0.0" 1521 | }, 1522 | "funding": { 1523 | "url": "https://opencollective.com/eslint" 1524 | } 1525 | }, 1526 | "node_modules/eslint/node_modules/glob-parent": { 1527 | "version": "6.0.2", 1528 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", 1529 | "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", 1530 | "dev": true, 1531 | "dependencies": { 1532 | "is-glob": "^4.0.3" 1533 | }, 1534 | "engines": { 1535 | "node": ">=10.13.0" 1536 | } 1537 | }, 1538 | "node_modules/espree": { 1539 | "version": "9.6.1", 1540 | "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", 1541 | "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", 1542 | "dev": true, 1543 | "dependencies": { 1544 | "acorn": "^8.9.0", 1545 | "acorn-jsx": "^5.3.2", 1546 | "eslint-visitor-keys": "^3.4.1" 1547 | }, 1548 | "engines": { 1549 | "node": "^12.22.0 || ^14.17.0 || >=16.0.0" 1550 | }, 1551 | "funding": { 1552 | "url": "https://opencollective.com/eslint" 1553 | } 1554 | }, 1555 | "node_modules/esquery": { 1556 | "version": "1.5.0", 1557 | "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", 1558 | "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", 1559 | "dev": true, 1560 | "dependencies": { 1561 | "estraverse": "^5.1.0" 1562 | }, 1563 | "engines": { 1564 | "node": ">=0.10" 1565 | } 1566 | }, 1567 | "node_modules/esrecurse": { 1568 | "version": "4.3.0", 1569 | "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", 1570 | "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", 1571 | "dev": true, 1572 | "dependencies": { 1573 | "estraverse": "^5.2.0" 1574 | }, 1575 | "engines": { 1576 | "node": ">=4.0" 1577 | } 1578 | }, 1579 | "node_modules/estraverse": { 1580 | "version": "5.3.0", 1581 | "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", 1582 | "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", 1583 | "dev": true, 1584 | "engines": { 1585 | "node": ">=4.0" 1586 | } 1587 | }, 1588 | "node_modules/estree-walker": { 1589 | "version": "3.0.3", 1590 | "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", 1591 | "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", 1592 | "dev": true, 1593 | "dependencies": { 1594 | "@types/estree": "^1.0.0" 1595 | } 1596 | }, 1597 | "node_modules/esutils": { 1598 | "version": "2.0.3", 1599 | "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", 1600 | "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", 1601 | "dev": true, 1602 | "engines": { 1603 | "node": ">=0.10.0" 1604 | } 1605 | }, 1606 | "node_modules/fast-deep-equal": { 1607 | "version": "3.1.3", 1608 | "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", 1609 | "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", 1610 | "dev": true 1611 | }, 1612 | "node_modules/fast-glob": { 1613 | "version": "3.3.2", 1614 | "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", 1615 | "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", 1616 | "dev": true, 1617 | "dependencies": { 1618 | "@nodelib/fs.stat": "^2.0.2", 1619 | "@nodelib/fs.walk": "^1.2.3", 1620 | "glob-parent": "^5.1.2", 1621 | "merge2": "^1.3.0", 1622 | "micromatch": "^4.0.4" 1623 | }, 1624 | "engines": { 1625 | "node": ">=8.6.0" 1626 | } 1627 | }, 1628 | "node_modules/fast-json-stable-stringify": { 1629 | "version": "2.1.0", 1630 | "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", 1631 | "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", 1632 | "dev": true 1633 | }, 1634 | "node_modules/fast-levenshtein": { 1635 | "version": "2.0.6", 1636 | "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", 1637 | "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", 1638 | "dev": true 1639 | }, 1640 | "node_modules/fastq": { 1641 | "version": "1.16.0", 1642 | "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.16.0.tgz", 1643 | "integrity": "sha512-ifCoaXsDrsdkWTtiNJX5uzHDsrck5TzfKKDcuFFTIrrc/BS076qgEIfoIy1VeZqViznfKiysPYTh/QeHtnIsYA==", 1644 | "dev": true, 1645 | "dependencies": { 1646 | "reusify": "^1.0.4" 1647 | } 1648 | }, 1649 | "node_modules/file-entry-cache": { 1650 | "version": "6.0.1", 1651 | "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", 1652 | "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", 1653 | "dev": true, 1654 | "dependencies": { 1655 | "flat-cache": "^3.0.4" 1656 | }, 1657 | "engines": { 1658 | "node": "^10.12.0 || >=12.0.0" 1659 | } 1660 | }, 1661 | "node_modules/fill-range": { 1662 | "version": "7.0.1", 1663 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", 1664 | "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", 1665 | "dev": true, 1666 | "dependencies": { 1667 | "to-regex-range": "^5.0.1" 1668 | }, 1669 | "engines": { 1670 | "node": ">=8" 1671 | } 1672 | }, 1673 | "node_modules/find-up": { 1674 | "version": "5.0.0", 1675 | "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", 1676 | "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", 1677 | "dev": true, 1678 | "dependencies": { 1679 | "locate-path": "^6.0.0", 1680 | "path-exists": "^4.0.0" 1681 | }, 1682 | "engines": { 1683 | "node": ">=10" 1684 | }, 1685 | "funding": { 1686 | "url": "https://github.com/sponsors/sindresorhus" 1687 | } 1688 | }, 1689 | "node_modules/flat-cache": { 1690 | "version": "3.2.0", 1691 | "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", 1692 | "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", 1693 | "dev": true, 1694 | "dependencies": { 1695 | "flatted": "^3.2.9", 1696 | "keyv": "^4.5.3", 1697 | "rimraf": "^3.0.2" 1698 | }, 1699 | "engines": { 1700 | "node": "^10.12.0 || >=12.0.0" 1701 | } 1702 | }, 1703 | "node_modules/flat-cache/node_modules/rimraf": { 1704 | "version": "3.0.2", 1705 | "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", 1706 | "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", 1707 | "dev": true, 1708 | "dependencies": { 1709 | "glob": "^7.1.3" 1710 | }, 1711 | "bin": { 1712 | "rimraf": "bin.js" 1713 | }, 1714 | "funding": { 1715 | "url": "https://github.com/sponsors/isaacs" 1716 | } 1717 | }, 1718 | "node_modules/flatted": { 1719 | "version": "3.2.9", 1720 | "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.9.tgz", 1721 | "integrity": "sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==", 1722 | "dev": true 1723 | }, 1724 | "node_modules/fs.realpath": { 1725 | "version": "1.0.0", 1726 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 1727 | "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", 1728 | "dev": true 1729 | }, 1730 | "node_modules/fsevents": { 1731 | "version": "2.3.3", 1732 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", 1733 | "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", 1734 | "dev": true, 1735 | "hasInstallScript": true, 1736 | "optional": true, 1737 | "os": [ 1738 | "darwin" 1739 | ], 1740 | "engines": { 1741 | "node": "^8.16.0 || ^10.6.0 || >=11.0.0" 1742 | } 1743 | }, 1744 | "node_modules/glob": { 1745 | "version": "7.2.3", 1746 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", 1747 | "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", 1748 | "dev": true, 1749 | "dependencies": { 1750 | "fs.realpath": "^1.0.0", 1751 | "inflight": "^1.0.4", 1752 | "inherits": "2", 1753 | "minimatch": "^3.1.1", 1754 | "once": "^1.3.0", 1755 | "path-is-absolute": "^1.0.0" 1756 | }, 1757 | "engines": { 1758 | "node": "*" 1759 | }, 1760 | "funding": { 1761 | "url": "https://github.com/sponsors/isaacs" 1762 | } 1763 | }, 1764 | "node_modules/glob-parent": { 1765 | "version": "5.1.2", 1766 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", 1767 | "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", 1768 | "dev": true, 1769 | "dependencies": { 1770 | "is-glob": "^4.0.1" 1771 | }, 1772 | "engines": { 1773 | "node": ">= 6" 1774 | } 1775 | }, 1776 | "node_modules/globals": { 1777 | "version": "13.24.0", 1778 | "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", 1779 | "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", 1780 | "dev": true, 1781 | "dependencies": { 1782 | "type-fest": "^0.20.2" 1783 | }, 1784 | "engines": { 1785 | "node": ">=8" 1786 | }, 1787 | "funding": { 1788 | "url": "https://github.com/sponsors/sindresorhus" 1789 | } 1790 | }, 1791 | "node_modules/globby": { 1792 | "version": "11.1.0", 1793 | "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", 1794 | "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", 1795 | "dev": true, 1796 | "dependencies": { 1797 | "array-union": "^2.1.0", 1798 | "dir-glob": "^3.0.1", 1799 | "fast-glob": "^3.2.9", 1800 | "ignore": "^5.2.0", 1801 | "merge2": "^1.4.1", 1802 | "slash": "^3.0.0" 1803 | }, 1804 | "engines": { 1805 | "node": ">=10" 1806 | }, 1807 | "funding": { 1808 | "url": "https://github.com/sponsors/sindresorhus" 1809 | } 1810 | }, 1811 | "node_modules/graceful-fs": { 1812 | "version": "4.2.11", 1813 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", 1814 | "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", 1815 | "dev": true 1816 | }, 1817 | "node_modules/graphemer": { 1818 | "version": "1.4.0", 1819 | "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", 1820 | "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", 1821 | "dev": true 1822 | }, 1823 | "node_modules/has-flag": { 1824 | "version": "4.0.0", 1825 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", 1826 | "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", 1827 | "dev": true, 1828 | "engines": { 1829 | "node": ">=8" 1830 | } 1831 | }, 1832 | "node_modules/ignore": { 1833 | "version": "5.3.0", 1834 | "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.0.tgz", 1835 | "integrity": "sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg==", 1836 | "dev": true, 1837 | "engines": { 1838 | "node": ">= 4" 1839 | } 1840 | }, 1841 | "node_modules/import-fresh": { 1842 | "version": "3.3.0", 1843 | "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", 1844 | "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", 1845 | "dev": true, 1846 | "dependencies": { 1847 | "parent-module": "^1.0.0", 1848 | "resolve-from": "^4.0.0" 1849 | }, 1850 | "engines": { 1851 | "node": ">=6" 1852 | }, 1853 | "funding": { 1854 | "url": "https://github.com/sponsors/sindresorhus" 1855 | } 1856 | }, 1857 | "node_modules/imurmurhash": { 1858 | "version": "0.1.4", 1859 | "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", 1860 | "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", 1861 | "dev": true, 1862 | "engines": { 1863 | "node": ">=0.8.19" 1864 | } 1865 | }, 1866 | "node_modules/inflight": { 1867 | "version": "1.0.6", 1868 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 1869 | "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", 1870 | "dev": true, 1871 | "dependencies": { 1872 | "once": "^1.3.0", 1873 | "wrappy": "1" 1874 | } 1875 | }, 1876 | "node_modules/inherits": { 1877 | "version": "2.0.4", 1878 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 1879 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", 1880 | "dev": true 1881 | }, 1882 | "node_modules/is-binary-path": { 1883 | "version": "2.1.0", 1884 | "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", 1885 | "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", 1886 | "dev": true, 1887 | "dependencies": { 1888 | "binary-extensions": "^2.0.0" 1889 | }, 1890 | "engines": { 1891 | "node": ">=8" 1892 | } 1893 | }, 1894 | "node_modules/is-extglob": { 1895 | "version": "2.1.1", 1896 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", 1897 | "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", 1898 | "dev": true, 1899 | "engines": { 1900 | "node": ">=0.10.0" 1901 | } 1902 | }, 1903 | "node_modules/is-glob": { 1904 | "version": "4.0.3", 1905 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", 1906 | "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", 1907 | "dev": true, 1908 | "dependencies": { 1909 | "is-extglob": "^2.1.1" 1910 | }, 1911 | "engines": { 1912 | "node": ">=0.10.0" 1913 | } 1914 | }, 1915 | "node_modules/is-number": { 1916 | "version": "7.0.0", 1917 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", 1918 | "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", 1919 | "dev": true, 1920 | "engines": { 1921 | "node": ">=0.12.0" 1922 | } 1923 | }, 1924 | "node_modules/is-path-inside": { 1925 | "version": "3.0.3", 1926 | "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", 1927 | "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", 1928 | "dev": true, 1929 | "engines": { 1930 | "node": ">=8" 1931 | } 1932 | }, 1933 | "node_modules/is-reference": { 1934 | "version": "3.0.2", 1935 | "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-3.0.2.tgz", 1936 | "integrity": "sha512-v3rht/LgVcsdZa3O2Nqs+NMowLOxeOm7Ay9+/ARQ2F+qEoANRcqrjAZKGN0v8ymUetZGgkp26LTnGT7H0Qo9Pg==", 1937 | "dev": true, 1938 | "dependencies": { 1939 | "@types/estree": "*" 1940 | } 1941 | }, 1942 | "node_modules/isexe": { 1943 | "version": "2.0.0", 1944 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", 1945 | "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", 1946 | "dev": true 1947 | }, 1948 | "node_modules/js-yaml": { 1949 | "version": "4.1.0", 1950 | "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", 1951 | "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", 1952 | "dev": true, 1953 | "dependencies": { 1954 | "argparse": "^2.0.1" 1955 | }, 1956 | "bin": { 1957 | "js-yaml": "bin/js-yaml.js" 1958 | } 1959 | }, 1960 | "node_modules/json-buffer": { 1961 | "version": "3.0.1", 1962 | "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", 1963 | "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", 1964 | "dev": true 1965 | }, 1966 | "node_modules/json-schema-traverse": { 1967 | "version": "0.4.1", 1968 | "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", 1969 | "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", 1970 | "dev": true 1971 | }, 1972 | "node_modules/json-stable-stringify-without-jsonify": { 1973 | "version": "1.0.1", 1974 | "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", 1975 | "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", 1976 | "dev": true 1977 | }, 1978 | "node_modules/keyv": { 1979 | "version": "4.5.4", 1980 | "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", 1981 | "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", 1982 | "dev": true, 1983 | "dependencies": { 1984 | "json-buffer": "3.0.1" 1985 | } 1986 | }, 1987 | "node_modules/kleur": { 1988 | "version": "4.1.5", 1989 | "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz", 1990 | "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==", 1991 | "dev": true, 1992 | "engines": { 1993 | "node": ">=6" 1994 | } 1995 | }, 1996 | "node_modules/levn": { 1997 | "version": "0.4.1", 1998 | "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", 1999 | "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", 2000 | "dev": true, 2001 | "dependencies": { 2002 | "prelude-ls": "^1.2.1", 2003 | "type-check": "~0.4.0" 2004 | }, 2005 | "engines": { 2006 | "node": ">= 0.8.0" 2007 | } 2008 | }, 2009 | "node_modules/locate-character": { 2010 | "version": "3.0.0", 2011 | "resolved": "https://registry.npmjs.org/locate-character/-/locate-character-3.0.0.tgz", 2012 | "integrity": "sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA==", 2013 | "dev": true 2014 | }, 2015 | "node_modules/locate-path": { 2016 | "version": "6.0.0", 2017 | "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", 2018 | "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", 2019 | "dev": true, 2020 | "dependencies": { 2021 | "p-locate": "^5.0.0" 2022 | }, 2023 | "engines": { 2024 | "node": ">=10" 2025 | }, 2026 | "funding": { 2027 | "url": "https://github.com/sponsors/sindresorhus" 2028 | } 2029 | }, 2030 | "node_modules/lodash.merge": { 2031 | "version": "4.6.2", 2032 | "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", 2033 | "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", 2034 | "dev": true 2035 | }, 2036 | "node_modules/lru-cache": { 2037 | "version": "6.0.0", 2038 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", 2039 | "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", 2040 | "dev": true, 2041 | "dependencies": { 2042 | "yallist": "^4.0.0" 2043 | }, 2044 | "engines": { 2045 | "node": ">=10" 2046 | } 2047 | }, 2048 | "node_modules/magic-string": { 2049 | "version": "0.30.5", 2050 | "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.5.tgz", 2051 | "integrity": "sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA==", 2052 | "dev": true, 2053 | "dependencies": { 2054 | "@jridgewell/sourcemap-codec": "^1.4.15" 2055 | }, 2056 | "engines": { 2057 | "node": ">=12" 2058 | } 2059 | }, 2060 | "node_modules/mdn-data": { 2061 | "version": "2.0.30", 2062 | "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.30.tgz", 2063 | "integrity": "sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==", 2064 | "dev": true 2065 | }, 2066 | "node_modules/merge2": { 2067 | "version": "1.4.1", 2068 | "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", 2069 | "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", 2070 | "dev": true, 2071 | "engines": { 2072 | "node": ">= 8" 2073 | } 2074 | }, 2075 | "node_modules/micromatch": { 2076 | "version": "4.0.5", 2077 | "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", 2078 | "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", 2079 | "dev": true, 2080 | "dependencies": { 2081 | "braces": "^3.0.2", 2082 | "picomatch": "^2.3.1" 2083 | }, 2084 | "engines": { 2085 | "node": ">=8.6" 2086 | } 2087 | }, 2088 | "node_modules/min-indent": { 2089 | "version": "1.0.1", 2090 | "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", 2091 | "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", 2092 | "dev": true, 2093 | "engines": { 2094 | "node": ">=4" 2095 | } 2096 | }, 2097 | "node_modules/minimatch": { 2098 | "version": "3.1.2", 2099 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", 2100 | "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", 2101 | "dev": true, 2102 | "dependencies": { 2103 | "brace-expansion": "^1.1.7" 2104 | }, 2105 | "engines": { 2106 | "node": "*" 2107 | } 2108 | }, 2109 | "node_modules/minimist": { 2110 | "version": "1.2.8", 2111 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", 2112 | "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", 2113 | "dev": true, 2114 | "funding": { 2115 | "url": "https://github.com/sponsors/ljharb" 2116 | } 2117 | }, 2118 | "node_modules/mkdirp": { 2119 | "version": "0.5.6", 2120 | "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", 2121 | "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", 2122 | "dev": true, 2123 | "dependencies": { 2124 | "minimist": "^1.2.6" 2125 | }, 2126 | "bin": { 2127 | "mkdirp": "bin/cmd.js" 2128 | } 2129 | }, 2130 | "node_modules/mri": { 2131 | "version": "1.2.0", 2132 | "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz", 2133 | "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==", 2134 | "dev": true, 2135 | "engines": { 2136 | "node": ">=4" 2137 | } 2138 | }, 2139 | "node_modules/ms": { 2140 | "version": "2.1.2", 2141 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 2142 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", 2143 | "dev": true 2144 | }, 2145 | "node_modules/nanoid": { 2146 | "version": "3.3.7", 2147 | "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", 2148 | "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", 2149 | "dev": true, 2150 | "funding": [ 2151 | { 2152 | "type": "github", 2153 | "url": "https://github.com/sponsors/ai" 2154 | } 2155 | ], 2156 | "bin": { 2157 | "nanoid": "bin/nanoid.cjs" 2158 | }, 2159 | "engines": { 2160 | "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" 2161 | } 2162 | }, 2163 | "node_modules/natural-compare": { 2164 | "version": "1.4.0", 2165 | "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", 2166 | "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", 2167 | "dev": true 2168 | }, 2169 | "node_modules/normalize-path": { 2170 | "version": "3.0.0", 2171 | "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", 2172 | "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", 2173 | "dev": true, 2174 | "engines": { 2175 | "node": ">=0.10.0" 2176 | } 2177 | }, 2178 | "node_modules/once": { 2179 | "version": "1.4.0", 2180 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 2181 | "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", 2182 | "dev": true, 2183 | "dependencies": { 2184 | "wrappy": "1" 2185 | } 2186 | }, 2187 | "node_modules/optionator": { 2188 | "version": "0.9.3", 2189 | "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", 2190 | "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", 2191 | "dev": true, 2192 | "dependencies": { 2193 | "@aashutoshrathi/word-wrap": "^1.2.3", 2194 | "deep-is": "^0.1.3", 2195 | "fast-levenshtein": "^2.0.6", 2196 | "levn": "^0.4.1", 2197 | "prelude-ls": "^1.2.1", 2198 | "type-check": "^0.4.0" 2199 | }, 2200 | "engines": { 2201 | "node": ">= 0.8.0" 2202 | } 2203 | }, 2204 | "node_modules/p-limit": { 2205 | "version": "3.1.0", 2206 | "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", 2207 | "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", 2208 | "dev": true, 2209 | "dependencies": { 2210 | "yocto-queue": "^0.1.0" 2211 | }, 2212 | "engines": { 2213 | "node": ">=10" 2214 | }, 2215 | "funding": { 2216 | "url": "https://github.com/sponsors/sindresorhus" 2217 | } 2218 | }, 2219 | "node_modules/p-locate": { 2220 | "version": "5.0.0", 2221 | "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", 2222 | "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", 2223 | "dev": true, 2224 | "dependencies": { 2225 | "p-limit": "^3.0.2" 2226 | }, 2227 | "engines": { 2228 | "node": ">=10" 2229 | }, 2230 | "funding": { 2231 | "url": "https://github.com/sponsors/sindresorhus" 2232 | } 2233 | }, 2234 | "node_modules/parent-module": { 2235 | "version": "1.0.1", 2236 | "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", 2237 | "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", 2238 | "dev": true, 2239 | "dependencies": { 2240 | "callsites": "^3.0.0" 2241 | }, 2242 | "engines": { 2243 | "node": ">=6" 2244 | } 2245 | }, 2246 | "node_modules/path-exists": { 2247 | "version": "4.0.0", 2248 | "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", 2249 | "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", 2250 | "dev": true, 2251 | "engines": { 2252 | "node": ">=8" 2253 | } 2254 | }, 2255 | "node_modules/path-is-absolute": { 2256 | "version": "1.0.1", 2257 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 2258 | "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", 2259 | "dev": true, 2260 | "engines": { 2261 | "node": ">=0.10.0" 2262 | } 2263 | }, 2264 | "node_modules/path-key": { 2265 | "version": "3.1.1", 2266 | "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", 2267 | "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", 2268 | "dev": true, 2269 | "engines": { 2270 | "node": ">=8" 2271 | } 2272 | }, 2273 | "node_modules/path-type": { 2274 | "version": "4.0.0", 2275 | "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", 2276 | "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", 2277 | "dev": true, 2278 | "engines": { 2279 | "node": ">=8" 2280 | } 2281 | }, 2282 | "node_modules/periscopic": { 2283 | "version": "3.1.0", 2284 | "resolved": "https://registry.npmjs.org/periscopic/-/periscopic-3.1.0.tgz", 2285 | "integrity": "sha512-vKiQ8RRtkl9P+r/+oefh25C3fhybptkHKCZSPlcXiJux2tJF55GnEj3BVn4A5gKfq9NWWXXrxkHBwVPUfH0opw==", 2286 | "dev": true, 2287 | "dependencies": { 2288 | "@types/estree": "^1.0.0", 2289 | "estree-walker": "^3.0.0", 2290 | "is-reference": "^3.0.0" 2291 | } 2292 | }, 2293 | "node_modules/picocolors": { 2294 | "version": "1.0.0", 2295 | "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", 2296 | "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", 2297 | "dev": true 2298 | }, 2299 | "node_modules/picomatch": { 2300 | "version": "2.3.1", 2301 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", 2302 | "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", 2303 | "dev": true, 2304 | "engines": { 2305 | "node": ">=8.6" 2306 | }, 2307 | "funding": { 2308 | "url": "https://github.com/sponsors/jonschlinkert" 2309 | } 2310 | }, 2311 | "node_modules/postcss": { 2312 | "version": "8.4.32", 2313 | "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.32.tgz", 2314 | "integrity": "sha512-D/kj5JNu6oo2EIy+XL/26JEDTlIbB8hw85G8StOE6L74RQAVVP5rej6wxCNqyMbR4RkPfqvezVbPw81Ngd6Kcw==", 2315 | "dev": true, 2316 | "funding": [ 2317 | { 2318 | "type": "opencollective", 2319 | "url": "https://opencollective.com/postcss/" 2320 | }, 2321 | { 2322 | "type": "tidelift", 2323 | "url": "https://tidelift.com/funding/github/npm/postcss" 2324 | }, 2325 | { 2326 | "type": "github", 2327 | "url": "https://github.com/sponsors/ai" 2328 | } 2329 | ], 2330 | "dependencies": { 2331 | "nanoid": "^3.3.7", 2332 | "picocolors": "^1.0.0", 2333 | "source-map-js": "^1.0.2" 2334 | }, 2335 | "engines": { 2336 | "node": "^10 || ^12 || >=14" 2337 | } 2338 | }, 2339 | "node_modules/prelude-ls": { 2340 | "version": "1.2.1", 2341 | "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", 2342 | "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", 2343 | "dev": true, 2344 | "engines": { 2345 | "node": ">= 0.8.0" 2346 | } 2347 | }, 2348 | "node_modules/punycode": { 2349 | "version": "2.3.1", 2350 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", 2351 | "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", 2352 | "dev": true, 2353 | "engines": { 2354 | "node": ">=6" 2355 | } 2356 | }, 2357 | "node_modules/queue-microtask": { 2358 | "version": "1.2.3", 2359 | "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", 2360 | "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", 2361 | "dev": true, 2362 | "funding": [ 2363 | { 2364 | "type": "github", 2365 | "url": "https://github.com/sponsors/feross" 2366 | }, 2367 | { 2368 | "type": "patreon", 2369 | "url": "https://www.patreon.com/feross" 2370 | }, 2371 | { 2372 | "type": "consulting", 2373 | "url": "https://feross.org/support" 2374 | } 2375 | ] 2376 | }, 2377 | "node_modules/readdirp": { 2378 | "version": "3.6.0", 2379 | "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", 2380 | "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", 2381 | "dev": true, 2382 | "dependencies": { 2383 | "picomatch": "^2.2.1" 2384 | }, 2385 | "engines": { 2386 | "node": ">=8.10.0" 2387 | } 2388 | }, 2389 | "node_modules/resolve-from": { 2390 | "version": "4.0.0", 2391 | "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", 2392 | "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", 2393 | "dev": true, 2394 | "engines": { 2395 | "node": ">=4" 2396 | } 2397 | }, 2398 | "node_modules/reusify": { 2399 | "version": "1.0.4", 2400 | "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", 2401 | "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", 2402 | "dev": true, 2403 | "engines": { 2404 | "iojs": ">=1.0.0", 2405 | "node": ">=0.10.0" 2406 | } 2407 | }, 2408 | "node_modules/rimraf": { 2409 | "version": "2.7.1", 2410 | "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", 2411 | "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", 2412 | "dev": true, 2413 | "dependencies": { 2414 | "glob": "^7.1.3" 2415 | }, 2416 | "bin": { 2417 | "rimraf": "bin.js" 2418 | } 2419 | }, 2420 | "node_modules/rollup": { 2421 | "version": "4.9.1", 2422 | "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.9.1.tgz", 2423 | "integrity": "sha512-pgPO9DWzLoW/vIhlSoDByCzcpX92bKEorbgXuZrqxByte3JFk2xSW2JEeAcyLc9Ru9pqcNNW+Ob7ntsk2oT/Xw==", 2424 | "dev": true, 2425 | "bin": { 2426 | "rollup": "dist/bin/rollup" 2427 | }, 2428 | "engines": { 2429 | "node": ">=18.0.0", 2430 | "npm": ">=8.0.0" 2431 | }, 2432 | "optionalDependencies": { 2433 | "@rollup/rollup-android-arm-eabi": "4.9.1", 2434 | "@rollup/rollup-android-arm64": "4.9.1", 2435 | "@rollup/rollup-darwin-arm64": "4.9.1", 2436 | "@rollup/rollup-darwin-x64": "4.9.1", 2437 | "@rollup/rollup-linux-arm-gnueabihf": "4.9.1", 2438 | "@rollup/rollup-linux-arm64-gnu": "4.9.1", 2439 | "@rollup/rollup-linux-arm64-musl": "4.9.1", 2440 | "@rollup/rollup-linux-riscv64-gnu": "4.9.1", 2441 | "@rollup/rollup-linux-x64-gnu": "4.9.1", 2442 | "@rollup/rollup-linux-x64-musl": "4.9.1", 2443 | "@rollup/rollup-win32-arm64-msvc": "4.9.1", 2444 | "@rollup/rollup-win32-ia32-msvc": "4.9.1", 2445 | "@rollup/rollup-win32-x64-msvc": "4.9.1", 2446 | "fsevents": "~2.3.2" 2447 | } 2448 | }, 2449 | "node_modules/run-parallel": { 2450 | "version": "1.2.0", 2451 | "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", 2452 | "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", 2453 | "dev": true, 2454 | "funding": [ 2455 | { 2456 | "type": "github", 2457 | "url": "https://github.com/sponsors/feross" 2458 | }, 2459 | { 2460 | "type": "patreon", 2461 | "url": "https://www.patreon.com/feross" 2462 | }, 2463 | { 2464 | "type": "consulting", 2465 | "url": "https://feross.org/support" 2466 | } 2467 | ], 2468 | "dependencies": { 2469 | "queue-microtask": "^1.2.2" 2470 | } 2471 | }, 2472 | "node_modules/sade": { 2473 | "version": "1.8.1", 2474 | "resolved": "https://registry.npmjs.org/sade/-/sade-1.8.1.tgz", 2475 | "integrity": "sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==", 2476 | "dev": true, 2477 | "dependencies": { 2478 | "mri": "^1.1.0" 2479 | }, 2480 | "engines": { 2481 | "node": ">=6" 2482 | } 2483 | }, 2484 | "node_modules/sander": { 2485 | "version": "0.5.1", 2486 | "resolved": "https://registry.npmjs.org/sander/-/sander-0.5.1.tgz", 2487 | "integrity": "sha512-3lVqBir7WuKDHGrKRDn/1Ye3kwpXaDOMsiRP1wd6wpZW56gJhsbp5RqQpA6JG/P+pkXizygnr1dKR8vzWaVsfA==", 2488 | "dev": true, 2489 | "dependencies": { 2490 | "es6-promise": "^3.1.2", 2491 | "graceful-fs": "^4.1.3", 2492 | "mkdirp": "^0.5.1", 2493 | "rimraf": "^2.5.2" 2494 | } 2495 | }, 2496 | "node_modules/semver": { 2497 | "version": "7.5.4", 2498 | "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", 2499 | "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", 2500 | "dev": true, 2501 | "dependencies": { 2502 | "lru-cache": "^6.0.0" 2503 | }, 2504 | "bin": { 2505 | "semver": "bin/semver.js" 2506 | }, 2507 | "engines": { 2508 | "node": ">=10" 2509 | } 2510 | }, 2511 | "node_modules/shebang-command": { 2512 | "version": "2.0.0", 2513 | "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", 2514 | "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", 2515 | "dev": true, 2516 | "dependencies": { 2517 | "shebang-regex": "^3.0.0" 2518 | }, 2519 | "engines": { 2520 | "node": ">=8" 2521 | } 2522 | }, 2523 | "node_modules/shebang-regex": { 2524 | "version": "3.0.0", 2525 | "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", 2526 | "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", 2527 | "dev": true, 2528 | "engines": { 2529 | "node": ">=8" 2530 | } 2531 | }, 2532 | "node_modules/slash": { 2533 | "version": "3.0.0", 2534 | "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", 2535 | "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", 2536 | "dev": true, 2537 | "engines": { 2538 | "node": ">=8" 2539 | } 2540 | }, 2541 | "node_modules/sorcery": { 2542 | "version": "0.11.0", 2543 | "resolved": "https://registry.npmjs.org/sorcery/-/sorcery-0.11.0.tgz", 2544 | "integrity": "sha512-J69LQ22xrQB1cIFJhPfgtLuI6BpWRiWu1Y3vSsIwK/eAScqJxd/+CJlUuHQRdX2C9NGFamq+KqNywGgaThwfHw==", 2545 | "dev": true, 2546 | "dependencies": { 2547 | "@jridgewell/sourcemap-codec": "^1.4.14", 2548 | "buffer-crc32": "^0.2.5", 2549 | "minimist": "^1.2.0", 2550 | "sander": "^0.5.0" 2551 | }, 2552 | "bin": { 2553 | "sorcery": "bin/sorcery" 2554 | } 2555 | }, 2556 | "node_modules/source-map-js": { 2557 | "version": "1.0.2", 2558 | "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", 2559 | "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", 2560 | "dev": true, 2561 | "engines": { 2562 | "node": ">=0.10.0" 2563 | } 2564 | }, 2565 | "node_modules/strip-ansi": { 2566 | "version": "6.0.1", 2567 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", 2568 | "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", 2569 | "dev": true, 2570 | "dependencies": { 2571 | "ansi-regex": "^5.0.1" 2572 | }, 2573 | "engines": { 2574 | "node": ">=8" 2575 | } 2576 | }, 2577 | "node_modules/strip-indent": { 2578 | "version": "3.0.0", 2579 | "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", 2580 | "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", 2581 | "dev": true, 2582 | "dependencies": { 2583 | "min-indent": "^1.0.0" 2584 | }, 2585 | "engines": { 2586 | "node": ">=8" 2587 | } 2588 | }, 2589 | "node_modules/strip-json-comments": { 2590 | "version": "3.1.1", 2591 | "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", 2592 | "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", 2593 | "dev": true, 2594 | "engines": { 2595 | "node": ">=8" 2596 | }, 2597 | "funding": { 2598 | "url": "https://github.com/sponsors/sindresorhus" 2599 | } 2600 | }, 2601 | "node_modules/supports-color": { 2602 | "version": "7.2.0", 2603 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", 2604 | "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", 2605 | "dev": true, 2606 | "dependencies": { 2607 | "has-flag": "^4.0.0" 2608 | }, 2609 | "engines": { 2610 | "node": ">=8" 2611 | } 2612 | }, 2613 | "node_modules/svelte": { 2614 | "version": "4.2.8", 2615 | "resolved": "https://registry.npmjs.org/svelte/-/svelte-4.2.8.tgz", 2616 | "integrity": "sha512-hU6dh1MPl8gh6klQZwK/n73GiAHiR95IkFsesLPbMeEZi36ydaXL/ZAb4g9sayT0MXzpxyZjR28yderJHxcmYA==", 2617 | "dev": true, 2618 | "dependencies": { 2619 | "@ampproject/remapping": "^2.2.1", 2620 | "@jridgewell/sourcemap-codec": "^1.4.15", 2621 | "@jridgewell/trace-mapping": "^0.3.18", 2622 | "acorn": "^8.9.0", 2623 | "aria-query": "^5.3.0", 2624 | "axobject-query": "^3.2.1", 2625 | "code-red": "^1.0.3", 2626 | "css-tree": "^2.3.1", 2627 | "estree-walker": "^3.0.3", 2628 | "is-reference": "^3.0.1", 2629 | "locate-character": "^3.0.0", 2630 | "magic-string": "^0.30.4", 2631 | "periscopic": "^3.1.0" 2632 | }, 2633 | "engines": { 2634 | "node": ">=16" 2635 | } 2636 | }, 2637 | "node_modules/svelte-check": { 2638 | "version": "3.6.2", 2639 | "resolved": "https://registry.npmjs.org/svelte-check/-/svelte-check-3.6.2.tgz", 2640 | "integrity": "sha512-E6iFh4aUCGJLRz6QZXH3gcN/VFfkzwtruWSRmlKrLWQTiO6VzLsivR6q02WYLGNAGecV3EocqZuCDrC2uttZ0g==", 2641 | "dev": true, 2642 | "dependencies": { 2643 | "@jridgewell/trace-mapping": "^0.3.17", 2644 | "chokidar": "^3.4.1", 2645 | "fast-glob": "^3.2.7", 2646 | "import-fresh": "^3.2.1", 2647 | "picocolors": "^1.0.0", 2648 | "sade": "^1.7.4", 2649 | "svelte-preprocess": "^5.1.0", 2650 | "typescript": "^5.0.3" 2651 | }, 2652 | "bin": { 2653 | "svelte-check": "bin/svelte-check" 2654 | }, 2655 | "peerDependencies": { 2656 | "svelte": "^3.55.0 || ^4.0.0-next.0 || ^4.0.0 || ^5.0.0-next.0" 2657 | } 2658 | }, 2659 | "node_modules/svelte-hmr": { 2660 | "version": "0.15.3", 2661 | "resolved": "https://registry.npmjs.org/svelte-hmr/-/svelte-hmr-0.15.3.tgz", 2662 | "integrity": "sha512-41snaPswvSf8TJUhlkoJBekRrABDXDMdpNpT2tfHIv4JuhgvHqLMhEPGtaQn0BmbNSTkuz2Ed20DF2eHw0SmBQ==", 2663 | "dev": true, 2664 | "engines": { 2665 | "node": "^12.20 || ^14.13.1 || >= 16" 2666 | }, 2667 | "peerDependencies": { 2668 | "svelte": "^3.19.0 || ^4.0.0" 2669 | } 2670 | }, 2671 | "node_modules/svelte-preprocess": { 2672 | "version": "5.1.3", 2673 | "resolved": "https://registry.npmjs.org/svelte-preprocess/-/svelte-preprocess-5.1.3.tgz", 2674 | "integrity": "sha512-xxAkmxGHT+J/GourS5mVJeOXZzne1FR5ljeOUAMXUkfEhkLEllRreXpbl3dIYJlcJRfL1LO1uIAPpBpBfiqGPw==", 2675 | "dev": true, 2676 | "hasInstallScript": true, 2677 | "dependencies": { 2678 | "@types/pug": "^2.0.6", 2679 | "detect-indent": "^6.1.0", 2680 | "magic-string": "^0.30.5", 2681 | "sorcery": "^0.11.0", 2682 | "strip-indent": "^3.0.0" 2683 | }, 2684 | "engines": { 2685 | "node": ">= 16.0.0", 2686 | "pnpm": "^8.0.0" 2687 | }, 2688 | "peerDependencies": { 2689 | "@babel/core": "^7.10.2", 2690 | "coffeescript": "^2.5.1", 2691 | "less": "^3.11.3 || ^4.0.0", 2692 | "postcss": "^7 || ^8", 2693 | "postcss-load-config": "^2.1.0 || ^3.0.0 || ^4.0.0 || ^5.0.0", 2694 | "pug": "^3.0.0", 2695 | "sass": "^1.26.8", 2696 | "stylus": "^0.55.0", 2697 | "sugarss": "^2.0.0 || ^3.0.0 || ^4.0.0", 2698 | "svelte": "^3.23.0 || ^4.0.0-next.0 || ^4.0.0 || ^5.0.0-next.0", 2699 | "typescript": ">=3.9.5 || ^4.0.0 || ^5.0.0" 2700 | }, 2701 | "peerDependenciesMeta": { 2702 | "@babel/core": { 2703 | "optional": true 2704 | }, 2705 | "coffeescript": { 2706 | "optional": true 2707 | }, 2708 | "less": { 2709 | "optional": true 2710 | }, 2711 | "postcss": { 2712 | "optional": true 2713 | }, 2714 | "postcss-load-config": { 2715 | "optional": true 2716 | }, 2717 | "pug": { 2718 | "optional": true 2719 | }, 2720 | "sass": { 2721 | "optional": true 2722 | }, 2723 | "stylus": { 2724 | "optional": true 2725 | }, 2726 | "sugarss": { 2727 | "optional": true 2728 | }, 2729 | "typescript": { 2730 | "optional": true 2731 | } 2732 | } 2733 | }, 2734 | "node_modules/svelte-routing": { 2735 | "version": "2.10.0", 2736 | "resolved": "https://registry.npmjs.org/svelte-routing/-/svelte-routing-2.10.0.tgz", 2737 | "integrity": "sha512-GM30MYs0WkTpWE6VaZV7Bl6bZmWD2vzEK4zrMQej131rpItdnqxfXTqSJFAT1I80C77XZKkjWuJeQKvBnQ2KXA==" 2738 | }, 2739 | "node_modules/text-table": { 2740 | "version": "0.2.0", 2741 | "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", 2742 | "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", 2743 | "dev": true 2744 | }, 2745 | "node_modules/to-regex-range": { 2746 | "version": "5.0.1", 2747 | "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", 2748 | "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", 2749 | "dev": true, 2750 | "dependencies": { 2751 | "is-number": "^7.0.0" 2752 | }, 2753 | "engines": { 2754 | "node": ">=8.0" 2755 | } 2756 | }, 2757 | "node_modules/ts-api-utils": { 2758 | "version": "1.0.3", 2759 | "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.0.3.tgz", 2760 | "integrity": "sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg==", 2761 | "dev": true, 2762 | "engines": { 2763 | "node": ">=16.13.0" 2764 | }, 2765 | "peerDependencies": { 2766 | "typescript": ">=4.2.0" 2767 | } 2768 | }, 2769 | "node_modules/tslib": { 2770 | "version": "2.6.2", 2771 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", 2772 | "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", 2773 | "dev": true 2774 | }, 2775 | "node_modules/type-check": { 2776 | "version": "0.4.0", 2777 | "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", 2778 | "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", 2779 | "dev": true, 2780 | "dependencies": { 2781 | "prelude-ls": "^1.2.1" 2782 | }, 2783 | "engines": { 2784 | "node": ">= 0.8.0" 2785 | } 2786 | }, 2787 | "node_modules/type-fest": { 2788 | "version": "0.20.2", 2789 | "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", 2790 | "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", 2791 | "dev": true, 2792 | "engines": { 2793 | "node": ">=10" 2794 | }, 2795 | "funding": { 2796 | "url": "https://github.com/sponsors/sindresorhus" 2797 | } 2798 | }, 2799 | "node_modules/typescript": { 2800 | "version": "5.3.3", 2801 | "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.3.tgz", 2802 | "integrity": "sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==", 2803 | "dev": true, 2804 | "bin": { 2805 | "tsc": "bin/tsc", 2806 | "tsserver": "bin/tsserver" 2807 | }, 2808 | "engines": { 2809 | "node": ">=14.17" 2810 | } 2811 | }, 2812 | "node_modules/uri-js": { 2813 | "version": "4.4.1", 2814 | "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", 2815 | "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", 2816 | "dev": true, 2817 | "dependencies": { 2818 | "punycode": "^2.1.0" 2819 | } 2820 | }, 2821 | "node_modules/vite": { 2822 | "version": "5.0.10", 2823 | "resolved": "https://registry.npmjs.org/vite/-/vite-5.0.10.tgz", 2824 | "integrity": "sha512-2P8J7WWgmc355HUMlFrwofacvr98DAjoE52BfdbwQtyLH06XKwaL/FMnmKM2crF0iX4MpmMKoDlNCB1ok7zHCw==", 2825 | "dev": true, 2826 | "dependencies": { 2827 | "esbuild": "^0.19.3", 2828 | "postcss": "^8.4.32", 2829 | "rollup": "^4.2.0" 2830 | }, 2831 | "bin": { 2832 | "vite": "bin/vite.js" 2833 | }, 2834 | "engines": { 2835 | "node": "^18.0.0 || >=20.0.0" 2836 | }, 2837 | "funding": { 2838 | "url": "https://github.com/vitejs/vite?sponsor=1" 2839 | }, 2840 | "optionalDependencies": { 2841 | "fsevents": "~2.3.3" 2842 | }, 2843 | "peerDependencies": { 2844 | "@types/node": "^18.0.0 || >=20.0.0", 2845 | "less": "*", 2846 | "lightningcss": "^1.21.0", 2847 | "sass": "*", 2848 | "stylus": "*", 2849 | "sugarss": "*", 2850 | "terser": "^5.4.0" 2851 | }, 2852 | "peerDependenciesMeta": { 2853 | "@types/node": { 2854 | "optional": true 2855 | }, 2856 | "less": { 2857 | "optional": true 2858 | }, 2859 | "lightningcss": { 2860 | "optional": true 2861 | }, 2862 | "sass": { 2863 | "optional": true 2864 | }, 2865 | "stylus": { 2866 | "optional": true 2867 | }, 2868 | "sugarss": { 2869 | "optional": true 2870 | }, 2871 | "terser": { 2872 | "optional": true 2873 | } 2874 | } 2875 | }, 2876 | "node_modules/vitefu": { 2877 | "version": "0.2.5", 2878 | "resolved": "https://registry.npmjs.org/vitefu/-/vitefu-0.2.5.tgz", 2879 | "integrity": "sha512-SgHtMLoqaeeGnd2evZ849ZbACbnwQCIwRH57t18FxcXoZop0uQu0uzlIhJBlF/eWVzuce0sHeqPcDo+evVcg8Q==", 2880 | "dev": true, 2881 | "peerDependencies": { 2882 | "vite": "^3.0.0 || ^4.0.0 || ^5.0.0" 2883 | }, 2884 | "peerDependenciesMeta": { 2885 | "vite": { 2886 | "optional": true 2887 | } 2888 | } 2889 | }, 2890 | "node_modules/which": { 2891 | "version": "2.0.2", 2892 | "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", 2893 | "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", 2894 | "dev": true, 2895 | "dependencies": { 2896 | "isexe": "^2.0.0" 2897 | }, 2898 | "bin": { 2899 | "node-which": "bin/node-which" 2900 | }, 2901 | "engines": { 2902 | "node": ">= 8" 2903 | } 2904 | }, 2905 | "node_modules/wrappy": { 2906 | "version": "1.0.2", 2907 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 2908 | "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", 2909 | "dev": true 2910 | }, 2911 | "node_modules/yallist": { 2912 | "version": "4.0.0", 2913 | "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", 2914 | "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", 2915 | "dev": true 2916 | }, 2917 | "node_modules/yocto-queue": { 2918 | "version": "0.1.0", 2919 | "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", 2920 | "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", 2921 | "dev": true, 2922 | "engines": { 2923 | "node": ">=10" 2924 | }, 2925 | "funding": { 2926 | "url": "https://github.com/sponsors/sindresorhus" 2927 | } 2928 | } 2929 | } 2930 | } 2931 | -------------------------------------------------------------------------------- /svelteapp1.client/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "vite-project", 3 | "private": true, 4 | "version": "0.0.0", 5 | "type": "module", 6 | "scripts": { 7 | "dev": "vite", 8 | "build": "vite build", 9 | "preview": "vite preview", 10 | "check": "svelte-check --tsconfig ./tsconfig.json" 11 | }, 12 | "dependencies": { 13 | "svelte-routing": "^2.10.0" 14 | }, 15 | "devDependencies": { 16 | "@sveltejs/vite-plugin-svelte": "^3.0.1", 17 | "@tsconfig/svelte": "^5.0.2", 18 | "svelte": "^4.2.8", 19 | "svelte-check": "^3.6.2", 20 | "tslib": "^2.6.2", 21 | "typescript": "^5.2.2", 22 | "@typescript-eslint/eslint-plugin": "^6.14.0", 23 | "@typescript-eslint/parser": "^6.14.0", 24 | "eslint": "^8.55.0", 25 | "eslint-plugin-react-hooks": "^4.6.0", 26 | "eslint-plugin-react-refresh": "^0.4.5", 27 | "vite": "^5.0.8" 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /svelteapp1.client/public/vite.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /svelteapp1.client/src/App.svelte: -------------------------------------------------------------------------------- 1 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /svelteapp1.client/src/AuthorizeView.svelte: -------------------------------------------------------------------------------- 1 | 25 | 26 | 27 | {#await IsAuthenticated()} 28 | Checking Authentication 29 | {:then authenticated} 30 | {#if (authenticated) } 31 | 32 | {:else} 33 | 34 | {/if} 35 | {/await} -------------------------------------------------------------------------------- /svelteapp1.client/src/app.css: -------------------------------------------------------------------------------- 1 | :root { 2 | font-family: Inter, system-ui, Avenir, Helvetica, Arial, sans-serif; 3 | line-height: 1.5; 4 | font-weight: 400; 5 | 6 | color-scheme: light dark; 7 | color: rgba(255, 255, 255, 0.87); 8 | background-color: #242424; 9 | 10 | font-synthesis: none; 11 | text-rendering: optimizeLegibility; 12 | -webkit-font-smoothing: antialiased; 13 | -moz-osx-font-smoothing: grayscale; 14 | } 15 | 16 | a { 17 | font-weight: 500; 18 | color: #646cff; 19 | text-decoration: inherit; 20 | } 21 | a:hover { 22 | color: #535bf2; 23 | } 24 | 25 | body { 26 | margin: 0; 27 | display: flex; 28 | place-items: center; 29 | min-width: 320px; 30 | min-height: 100vh; 31 | } 32 | 33 | h1 { 34 | font-size: 3.2em; 35 | line-height: 1.1; 36 | } 37 | 38 | .card { 39 | padding: 2em; 40 | } 41 | 42 | #app { 43 | max-width: 1280px; 44 | margin: 0 auto; 45 | padding: 2rem; 46 | text-align: center; 47 | } 48 | 49 | button { 50 | border-radius: 8px; 51 | border: 1px solid transparent; 52 | padding: 0.6em 1.2em; 53 | font-size: 1em; 54 | font-weight: 500; 55 | font-family: inherit; 56 | background-color: #1a1a1a; 57 | cursor: pointer; 58 | transition: border-color 0.25s; 59 | } 60 | button:hover { 61 | border-color: #646cff; 62 | } 63 | button:focus, 64 | button:focus-visible { 65 | outline: 4px auto -webkit-focus-ring-color; 66 | } 67 | 68 | @media (prefers-color-scheme: light) { 69 | :root { 70 | color: #213547; 71 | background-color: #ffffff; 72 | } 73 | a:hover { 74 | color: #747bff; 75 | } 76 | button { 77 | background-color: #f9f9f9; 78 | } 79 | } 80 | 81 | 82 | .logo { 83 | height: 6em; 84 | padding: 1.5em; 85 | will-change: filter; 86 | transition: filter 300ms; 87 | } 88 | .logo:hover { 89 | filter: drop-shadow(0 0 2em #646cffaa); 90 | } 91 | .logo.svelte:hover { 92 | filter: drop-shadow(0 0 2em #ff3e00aa); 93 | } 94 | 95 | .table { 96 | display: table; 97 | width: 100%; 98 | border: 0px; 99 | } 100 | 101 | .row { 102 | display: table-row; 103 | } 104 | 105 | .col { 106 | display: table-cell; 107 | padding: 10px; 108 | } 109 | 110 | .box { 111 | /* adjust the width and height as needed */ 112 | 113 | /* set the background color */ 114 | /* add a rounded border with 10px radius */ 115 | 116 | border-radius: 10px; 117 | /* add a drop shadow with 5px offset and 10px blur */ 118 | box-shadow: 5px 5px 10px gray; 119 | /* center the div horizontally and vertically */ 120 | padding: 20px; 121 | } 122 | -------------------------------------------------------------------------------- /svelteapp1.client/src/assets/svelte.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /svelteapp1.client/src/components/Counter.svelte: -------------------------------------------------------------------------------- 1 | 7 | 8 | 11 | -------------------------------------------------------------------------------- /svelteapp1.client/src/components/Logout.svelte: -------------------------------------------------------------------------------- 1 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /svelteapp1.client/src/components/WeatherForecast.svelte: -------------------------------------------------------------------------------- 1 | 8 | 9 | 22 | 23 |

Weather Forecasts

24 | {#await getForecasts()} 25 |

Loading...

26 | {:then weatherData} 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | {#each weatherData as { date, temperatureC, temperatureF, summary }} 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | {/each} 48 | 49 |
DateTemperature (°C)Temperature (°F)Summary
{date}{temperatureC}{temperatureF}{summary}
50 | 51 | {/await} 52 | -------------------------------------------------------------------------------- /svelteapp1.client/src/main.ts: -------------------------------------------------------------------------------- 1 | import './app.css' 2 | import App from './App.svelte' 3 | 4 | const app = new App({ 5 | target: document.getElementById('app') as HTMLElement, 6 | }) 7 | 8 | export default app 9 | -------------------------------------------------------------------------------- /svelteapp1.client/src/pages/Home.svelte: -------------------------------------------------------------------------------- 1 | 10 | 11 | 12 |
13 |
14 | 15 | 16 | 17 |
18 |

Svelte Demo

19 | Log Out {user_identity_email} | 20 | Register 21 |
22 | 23 | 24 |
25 |
26 | 27 | 42 |
-------------------------------------------------------------------------------- /svelteapp1.client/src/pages/Login.svelte: -------------------------------------------------------------------------------- 1 | 30 | 31 |
32 |
33 |
34 |
35 |
Email:
36 |
37 | 42 |
43 |
44 |
45 |
Password:
46 |
47 | 52 |
53 |
54 |
55 |
56 | 57 | Remember Me 58 |
59 | 60 | 61 |

{message}

62 |
63 | 64 |
65 | -------------------------------------------------------------------------------- /svelteapp1.client/src/pages/Register.svelte: -------------------------------------------------------------------------------- 1 | 56 | 57 |
58 |
59 |
60 |
61 |
Email:
62 |
63 | 69 |
70 |
71 |
72 |
Password:
73 |
74 | 80 |
81 |
82 |
83 |
Password: (confirm)
84 |
85 | 91 |
92 |
93 |
94 | 95 | 96 |

{message}

97 |
98 | 99 |
-------------------------------------------------------------------------------- /svelteapp1.client/src/vite-env.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | /// 3 | -------------------------------------------------------------------------------- /svelteapp1.client/svelte.config.js: -------------------------------------------------------------------------------- 1 | import { vitePreprocess } from '@sveltejs/vite-plugin-svelte' 2 | 3 | export default { 4 | // Consult https://svelte.dev/docs#compile-time-svelte-preprocess 5 | // for more information about preprocessors 6 | preprocess: vitePreprocess(), 7 | } 8 | -------------------------------------------------------------------------------- /svelteapp1.client/svelteapp1.client.esproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | npm run dev 4 | src\ 5 | Jest 6 | 7 | false 8 | 9 | $(MSBuildProjectDirectory)\dist 10 | 11 | -------------------------------------------------------------------------------- /svelteapp1.client/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "@tsconfig/svelte/tsconfig.json", 3 | "compilerOptions": { 4 | "target": "ESNext", 5 | "useDefineForClassFields": true, 6 | "module": "ESNext", 7 | "resolveJsonModule": true, 8 | /** 9 | * Typecheck JS in `.svelte` and `.js` files by default. 10 | * Disable checkJs if you'd like to use dynamic types in JS. 11 | * Note that setting allowJs false does not prevent the use 12 | * of JS in `.svelte` files. 13 | */ 14 | "allowJs": true, 15 | "checkJs": true, 16 | "isolatedModules": true 17 | }, 18 | "include": ["src/**/*.ts", "src/**/*.js", "src/**/*.svelte"], 19 | "exclude": ["node_modules/svelte-routing"], 20 | "references": [{ "path": "./tsconfig.node.json" }] 21 | } 22 | -------------------------------------------------------------------------------- /svelteapp1.client/tsconfig.node.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "composite": true, 4 | "skipLibCheck": true, 5 | "module": "ESNext", 6 | "moduleResolution": "bundler" 7 | }, 8 | "include": ["vite.config.ts"] 9 | } 10 | -------------------------------------------------------------------------------- /svelteapp1.client/vite.config.ts: -------------------------------------------------------------------------------- 1 | import { fileURLToPath, URL } from 'node:url'; 2 | 3 | import { defineConfig } from 'vite'; 4 | import { svelte } from '@sveltejs/vite-plugin-svelte'; 5 | import fs from 'fs'; 6 | import path from 'path'; 7 | import child_process from 'child_process'; 8 | 9 | const baseFolder = 10 | process.env.APPDATA !== undefined && process.env.APPDATA !== '' 11 | ? `${process.env.APPDATA}/ASP.NET/https` 12 | : `${process.env.HOME}/.aspnet/https`; 13 | 14 | const certificateArg = process.argv.map(arg => arg.match(/--name=(?.+)/i)).filter(Boolean)[0]; 15 | const certificateName = certificateArg ? certificateArg.groups.value : "svelteapp1.client"; 16 | 17 | if (!certificateName) { 18 | console.error('Invalid certificate name. Run this script in the context of an npm/yarn script or pass --name=<> explicitly.') 19 | process.exit(-1); 20 | } 21 | 22 | const certFilePath = path.join(baseFolder, `${certificateName}.pem`); 23 | const keyFilePath = path.join(baseFolder, `${certificateName}.key`); 24 | 25 | if (!fs.existsSync(certFilePath) || !fs.existsSync(keyFilePath)) { 26 | if (0 !== child_process.spawnSync('dotnet', [ 27 | 'dev-certs', 28 | 'https', 29 | '--export-path', 30 | certFilePath, 31 | '--format', 32 | 'Pem', 33 | '--no-password', 34 | ], { stdio: 'inherit', }).status) { 35 | throw new Error("Could not create certificate."); 36 | } 37 | } 38 | 39 | // https://vitejs.dev/config/ 40 | export default defineConfig({ 41 | plugins: [svelte()], 42 | resolve: { 43 | alias: { 44 | '@': fileURLToPath(new URL('./src', import.meta.url)) 45 | } 46 | }, 47 | server: { 48 | proxy: { 49 | '^/weatherforecast': { 50 | target: 'https://localhost:7174/', 51 | secure: false 52 | }, 53 | '^/register': { 54 | target: 'https://localhost:7174/', 55 | secure: false 56 | }, 57 | '^/login': { 58 | target: 'https://localhost:7174/', 59 | secure: false 60 | }, 61 | '^/logout': { 62 | target: 'https://localhost:7174/', 63 | secure: false 64 | }, 65 | '^/pingauth': { 66 | target: 'https://localhost:7174/', 67 | secure: false 68 | } 69 | }, 70 | port: 5173, 71 | https: { 72 | key: fs.readFileSync(keyFilePath), 73 | cert: fs.readFileSync(certFilePath), 74 | } 75 | } 76 | }) 77 | --------------------------------------------------------------------------------