├── .gitignore ├── .vscode ├── launch.json └── tasks.json ├── LICENSE ├── README.md ├── api ├── .config │ └── dotnet-tools.json ├── Controllers │ └── WeatherForecastController.cs ├── Program.cs ├── Properties │ └── launchSettings.json ├── WeatherForecast.cs ├── api.csproj ├── appsettings.Development.json └── appsettings.json ├── vetur.config.js ├── web-vue ├── .gitignore ├── .vscode │ └── extensions.json ├── README.md ├── index.html ├── package.json ├── public │ └── favicon.ico ├── src │ ├── App.vue │ ├── assets │ │ └── logo.png │ ├── components │ │ └── HelloWorld.vue │ ├── env.d.ts │ └── main.ts ├── tsconfig.json ├── vite.config.ts └── yarn.lock └── web ├── .gitignore ├── README.md ├── index.html ├── package.json ├── public └── favicon.ico ├── references ├── codegen │ ├── .gitkeep │ ├── core │ │ ├── ApiError.ts │ │ ├── ApiRequestOptions.ts │ │ ├── ApiResult.ts │ │ ├── CancelablePromise.ts │ │ ├── OpenAPI.ts │ │ └── request.ts │ ├── index.ts │ ├── models │ │ └── WeatherForecast.ts │ └── services │ │ └── WeatherForecastService.ts ├── swagger.json └── swagger.yaml ├── src ├── App.svelte ├── assets │ └── svelte.png ├── lib │ └── Counter.svelte ├── main.ts └── vite-env.d.ts ├── svelte.config.js ├── tsconfig.json ├── vite.config.js └── yarn.lock /.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/master/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 | [Aa][Rr][Mm]/ 27 | [Aa][Rr][Mm]64/ 28 | bld/ 29 | [Bb]in/ 30 | [Oo]bj/ 31 | [Ll]og/ 32 | [Ll]ogs/ 33 | 34 | # Visual Studio 2015/2017 cache/options directory 35 | .vs/ 36 | # Uncomment if you have tasks that create the project's static files in wwwroot 37 | #wwwroot/ 38 | 39 | # Visual Studio 2017 auto generated files 40 | Generated\ Files/ 41 | 42 | # MSTest test Results 43 | [Tt]est[Rr]esult*/ 44 | [Bb]uild[Ll]og.* 45 | 46 | # NUnit 47 | *.VisualState.xml 48 | TestResult.xml 49 | nunit-*.xml 50 | 51 | # Build Results of an ATL Project 52 | [Dd]ebugPS/ 53 | [Rr]eleasePS/ 54 | dlldata.c 55 | 56 | # Benchmark Results 57 | BenchmarkDotNet.Artifacts/ 58 | 59 | # .NET Core 60 | project.lock.json 61 | project.fragment.lock.json 62 | artifacts/ 63 | 64 | # StyleCop 65 | StyleCopReport.xml 66 | 67 | # Files built by Visual Studio 68 | *_i.c 69 | *_p.c 70 | *_h.h 71 | *.ilk 72 | *.meta 73 | *.obj 74 | *.iobj 75 | *.pch 76 | *.pdb 77 | *.ipdb 78 | *.pgc 79 | *.pgd 80 | *.rsp 81 | *.sbr 82 | *.tlb 83 | *.tli 84 | *.tlh 85 | *.tmp 86 | *.tmp_proj 87 | *_wpftmp.csproj 88 | *.log 89 | *.vspscc 90 | *.vssscc 91 | .builds 92 | *.pidb 93 | *.svclog 94 | *.scc 95 | 96 | # Chutzpah Test files 97 | _Chutzpah* 98 | 99 | # Visual C++ cache files 100 | ipch/ 101 | *.aps 102 | *.ncb 103 | *.opendb 104 | *.opensdf 105 | *.sdf 106 | *.cachefile 107 | *.VC.db 108 | *.VC.VC.opendb 109 | 110 | # Visual Studio profiler 111 | *.psess 112 | *.vsp 113 | *.vspx 114 | *.sap 115 | 116 | # Visual Studio Trace Files 117 | *.e2e 118 | 119 | # TFS 2012 Local Workspace 120 | $tf/ 121 | 122 | # Guidance Automation Toolkit 123 | *.gpState 124 | 125 | # ReSharper is a .NET coding add-in 126 | _ReSharper*/ 127 | *.[Rr]e[Ss]harper 128 | *.DotSettings.user 129 | 130 | # TeamCity is a build add-in 131 | _TeamCity* 132 | 133 | # DotCover is a Code Coverage Tool 134 | *.dotCover 135 | 136 | # AxoCover is a Code Coverage Tool 137 | .axoCover/* 138 | !.axoCover/settings.json 139 | 140 | # Visual Studio code coverage results 141 | *.coverage 142 | *.coveragexml 143 | 144 | # NCrunch 145 | _NCrunch_* 146 | .*crunch*.local.xml 147 | nCrunchTemp_* 148 | 149 | # MightyMoose 150 | *.mm.* 151 | AutoTest.Net/ 152 | 153 | # Web workbench (sass) 154 | .sass-cache/ 155 | 156 | # Installshield output folder 157 | [Ee]xpress/ 158 | 159 | # DocProject is a documentation generator add-in 160 | DocProject/buildhelp/ 161 | DocProject/Help/*.HxT 162 | DocProject/Help/*.HxC 163 | DocProject/Help/*.hhc 164 | DocProject/Help/*.hhk 165 | DocProject/Help/*.hhp 166 | DocProject/Help/Html2 167 | DocProject/Help/html 168 | 169 | # Click-Once directory 170 | publish/ 171 | 172 | # Publish Web Output 173 | *.[Pp]ublish.xml 174 | *.azurePubxml 175 | # Note: Comment the next line if you want to checkin your web deploy settings, 176 | # but database connection strings (with potential passwords) will be unencrypted 177 | *.pubxml 178 | *.publishproj 179 | 180 | # Microsoft Azure Web App publish settings. Comment the next line if you want to 181 | # checkin your Azure Web App publish settings, but sensitive information contained 182 | # in these scripts will be unencrypted 183 | PublishScripts/ 184 | 185 | # NuGet Packages 186 | *.nupkg 187 | # NuGet Symbol Packages 188 | *.snupkg 189 | # The packages folder can be ignored because of Package Restore 190 | **/[Pp]ackages/* 191 | # except build/, which is used as an MSBuild target. 192 | !**/[Pp]ackages/build/ 193 | # Uncomment if necessary however generally it will be regenerated when needed 194 | #!**/[Pp]ackages/repositories.config 195 | # NuGet v3's project.json files produces more ignorable files 196 | *.nuget.props 197 | *.nuget.targets 198 | 199 | # Microsoft Azure Build Output 200 | csx/ 201 | *.build.csdef 202 | 203 | # Microsoft Azure Emulator 204 | ecf/ 205 | rcf/ 206 | 207 | # Windows Store app package directories and files 208 | AppPackages/ 209 | BundleArtifacts/ 210 | Package.StoreAssociation.xml 211 | _pkginfo.txt 212 | *.appx 213 | *.appxbundle 214 | *.appxupload 215 | 216 | # Visual Studio cache files 217 | # files ending in .cache can be ignored 218 | *.[Cc]ache 219 | # but keep track of directories ending in .cache 220 | !?*.[Cc]ache/ 221 | 222 | # Others 223 | ClientBin/ 224 | ~$* 225 | *~ 226 | *.dbmdl 227 | *.dbproj.schemaview 228 | *.jfm 229 | *.pfx 230 | *.publishsettings 231 | orleans.codegen.cs 232 | 233 | # Including strong name files can present a security risk 234 | # (https://github.com/github/gitignore/pull/2483#issue-259490424) 235 | #*.snk 236 | 237 | # Since there are multiple workflows, uncomment next line to ignore bower_components 238 | # (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) 239 | #bower_components/ 240 | 241 | # RIA/Silverlight projects 242 | Generated_Code/ 243 | 244 | # Backup & report files from converting an old project file 245 | # to a newer Visual Studio version. Backup files are not needed, 246 | # because we have git ;-) 247 | _UpgradeReport_Files/ 248 | Backup*/ 249 | UpgradeLog*.XML 250 | UpgradeLog*.htm 251 | ServiceFabricBackup/ 252 | *.rptproj.bak 253 | 254 | # SQL Server files 255 | *.mdf 256 | *.ldf 257 | *.ndf 258 | 259 | # Business Intelligence projects 260 | *.rdl.data 261 | *.bim.layout 262 | *.bim_*.settings 263 | *.rptproj.rsuser 264 | *- [Bb]ackup.rdl 265 | *- [Bb]ackup ([0-9]).rdl 266 | *- [Bb]ackup ([0-9][0-9]).rdl 267 | 268 | # Microsoft Fakes 269 | FakesAssemblies/ 270 | 271 | # GhostDoc plugin setting file 272 | *.GhostDoc.xml 273 | 274 | # Node.js Tools for Visual Studio 275 | .ntvs_analysis.dat 276 | node_modules/ 277 | 278 | # Visual Studio 6 build log 279 | *.plg 280 | 281 | # Visual Studio 6 workspace options file 282 | *.opt 283 | 284 | # Visual Studio 6 auto-generated workspace file (contains which files were open etc.) 285 | *.vbw 286 | 287 | # Visual Studio LightSwitch build output 288 | **/*.HTMLClient/GeneratedArtifacts 289 | **/*.DesktopClient/GeneratedArtifacts 290 | **/*.DesktopClient/ModelManifest.xml 291 | **/*.Server/GeneratedArtifacts 292 | **/*.Server/ModelManifest.xml 293 | _Pvt_Extensions 294 | 295 | # Paket dependency manager 296 | .paket/paket.exe 297 | paket-files/ 298 | 299 | # FAKE - F# Make 300 | .fake/ 301 | 302 | # CodeRush personal settings 303 | .cr/personal 304 | 305 | # Python Tools for Visual Studio (PTVS) 306 | __pycache__/ 307 | *.pyc 308 | 309 | # Cake - Uncomment if you are using it 310 | # tools/** 311 | # !tools/packages.config 312 | 313 | # Tabs Studio 314 | *.tss 315 | 316 | # Telerik's JustMock configuration file 317 | *.jmconfig 318 | 319 | # BizTalk build output 320 | *.btp.cs 321 | *.btm.cs 322 | *.odx.cs 323 | *.xsd.cs 324 | 325 | # OpenCover UI analysis results 326 | OpenCover/ 327 | 328 | # Azure Stream Analytics local run output 329 | ASALocalRun/ 330 | 331 | # MSBuild Binary and Structured Log 332 | *.binlog 333 | 334 | # NVidia Nsight GPU debugger configuration file 335 | *.nvuser 336 | 337 | # MFractors (Xamarin productivity tool) working folder 338 | .mfractor/ 339 | 340 | # Local History for Visual Studio 341 | .localhistory/ 342 | 343 | # BeatPulse healthcheck temp database 344 | healthchecksdb 345 | 346 | # Backup folder for Package Reference Convert tool in Visual Studio 2017 347 | MigrationBackup/ 348 | 349 | # Ionide (cross platform F# VS Code tools) working folder 350 | .ionide/ 351 | 352 | # Ignore our generated code. 353 | references/**/*.json 354 | references/**/*.yaml 355 | references/**/*.ts -------------------------------------------------------------------------------- /.vscode/launch.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "0.2.0", 3 | "configurations": [ 4 | { 5 | // Use IntelliSense to find out which attributes exist for C# debugging 6 | // Use hover for the description of the existing attributes 7 | // For further information visit https://github.com/OmniSharp/omnisharp-vscode/blob/master/debugger-launchjson.md 8 | "name": ".NET Core Launch (web)", 9 | "type": "coreclr", 10 | "request": "launch", 11 | "preLaunchTask": "build", 12 | // If you have changed target frameworks, make sure to update the program path. 13 | "program": "${workspaceFolder}/api/bin/Debug/net6.0/api.dll", 14 | "args": [], 15 | "cwd": "${workspaceFolder}/api", 16 | "stopAtEntry": false, 17 | // Enable launching a web browser when ASP.NET Core starts. For more information: https://aka.ms/VSCode-CS-LaunchJson-WebBrowser 18 | "serverReadyAction": { 19 | "action": "openExternally", 20 | "pattern": "\\bNow listening on:\\s+(https?://\\S+)" 21 | }, 22 | "env": { 23 | "ASPNETCORE_ENVIRONMENT": "Development" 24 | }, 25 | "sourceFileMap": { 26 | "/Views": "${workspaceFolder}/Views" 27 | } 28 | }, 29 | { 30 | "name": ".NET Core Attach", 31 | "type": "coreclr", 32 | "request": "attach" 33 | } 34 | ] 35 | } -------------------------------------------------------------------------------- /.vscode/tasks.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "2.0.0", 3 | "tasks": [ 4 | { 5 | "label": "build", 6 | "command": "dotnet", 7 | "type": "process", 8 | "args": [ 9 | "build", 10 | "${workspaceFolder}/api/api.csproj", 11 | "/property:GenerateFullPaths=true", 12 | "/consoleloggerparameters:NoSummary" 13 | ], 14 | "problemMatcher": "$msCompile" 15 | }, 16 | { 17 | "label": "publish", 18 | "command": "dotnet", 19 | "type": "process", 20 | "args": [ 21 | "publish", 22 | "${workspaceFolder}/api/api.csproj", 23 | "/property:GenerateFullPaths=true", 24 | "/consoleloggerparameters:NoSummary" 25 | ], 26 | "problemMatcher": "$msCompile" 27 | }, 28 | { 29 | "label": "watch", 30 | "command": "dotnet", 31 | "type": "process", 32 | "args": [ 33 | "watch", 34 | "run", 35 | "${workspaceFolder}/api/api.csproj", 36 | "/property:GenerateFullPaths=true", 37 | "/consoleloggerparameters:NoSummary" 38 | ], 39 | "problemMatcher": "$msCompile" 40 | } 41 | ] 42 | } -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2021 Charles Chen 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 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # .NET 6 OpenAPI with TypeScript Client Generation 2 | 3 | This is a sample application demonstrating .NET 6 with OpenAPI client code generation. 4 | 5 | While gRPC and GraphQL seem to be *en vogue*, REST with OpenAPI offers many of the same benefits in terms of contract and client generation. REST can't match subscriptions and streaming capabilities built into gRPC and GraphQL (not to mention the other features on those platforms), but it's hard to beat the universal support for simple HTTP request/responses, ease of development, linear and predictable scaling of complexity, and maturity of REST. 6 | 7 | OpenAPI makes it more productive than ever to work with REST APIs and paired with managed WebSockets via [Azure SignalR](https://azure.microsoft.com/en-us/services/signalr-service/) or [Azure Web PubSub](https://azure.microsoft.com/en-us/services/web-pubsub/), building low-complexity, high performance web APIs is easier than ever. 8 | 9 | See for more discussion and my thoughts on gRPC, GraphQL, and REST: https://charliedigital.com/2021/11/25/net-6-web-apis-openapi-typescript-client-generation/ 10 | 11 | ## Google Cloud Run Version 12 | 13 | If you want to see how to deploy this into Google Cloud Run, check out the branch here: https://github.com/CharlieDigital/dotnet6-openapi/tree/dockerized 14 | 15 | ## Organization 16 | 17 | This project is set up as a mono-repo for simplicity. 18 | 19 | - `root` 20 | - `api` contains the .NET 6 web API 21 | - `web` contains the static web front-end in **Svelte** 22 | - `references` contains the generated client reference 23 | - `web-vue` contains the static web front-end in **Vue** 24 | 25 | ## DIY 26 | 27 | ### .NET Web API 28 | 29 | Start by creating the directory for the API: 30 | 31 | ``` 32 | mkdir api 33 | cd api 34 | ``` 35 | 36 | Then we set up the .NET 6 Web API project: 37 | 38 | ``` 39 | dotnet new webapi 40 | ``` 41 | 42 | This will create a default project using the .NET web APIs. 43 | 44 | You can start this project by running 45 | 46 | ``` 47 | dotnet run 48 | ``` 49 | 50 | You'll see output like the following: 51 | 52 | ``` 53 | C:\Users\chenc\Code\OSS\dotnet6-openapi\api>dotnet run 54 | Building... 55 | info: Microsoft.Hosting.Lifetime[14] 56 | Now listening on: https://localhost:7277 57 | info: Microsoft.Hosting.Lifetime[14] 58 | Now listening on: http://localhost:5133 59 | info: Microsoft.Hosting.Lifetime[0] 60 | Application started. Press Ctrl+C to shut down. 61 | info: Microsoft.Hosting.Lifetime[0] 62 | Hosting environment: Development 63 | info: Microsoft.Hosting.Lifetime[0] 64 | Content root path: C:\Users\chenc\Code\OSS\dotnet6-openapi\api\ 65 | ``` 66 | 67 | Opening your browser to `https://localhost:7277` will display an empty page. 68 | 69 | However, you can view your OpenAPI schema here: 70 | 71 | ``` 72 | https://localhost:7277/swagger/v1/swagger.json 73 | ``` 74 | 75 | And view the UI here: 76 | 77 | ``` 78 | https://localhost:7277/swagger/index.html 79 | ``` 80 | 81 | ### Generating Swagger at Build 82 | 83 | This default mechanism works great if you plan on generating your OpenAPI schemas at runtime. But if you want to generate your OpenAPI at build time, we'll need to add some tooling. 84 | 85 | We'll be adding a [Svelte](https://svelte.dev/) UI with [vite](https://vitejs.dev/) later. But we'll need to set up our folder now (since we can't initialize the template into an non-empty directory) and then switch back to `api` 86 | 87 | ``` 88 | cd ../ 89 | yarn create vite web --template svelte-ts 90 | cd web 91 | yarn 92 | mkdir references 93 | cd references 94 | mkdir codegen 95 | cd ../../api 96 | ``` 97 | 98 | We've created a basic Svelte TypeScript application that will be built with vite. 99 | 100 | These next steps are adapted from: https://khalidabuhakmeh.com/generate-aspnet-core-openapi-spec-at-build-time 101 | 102 | First, we'll need to install tooling to generate the schema at build time. 103 | 104 | ``` 105 | dotnet new tool-manifest 106 | dotnet tool install SwashBuckle.AspNetCore.Cli 107 | ``` 108 | 109 | The `.csproj` file needs to be modified to invoke the CLI 110 | 111 | Update the `csproj` file: 112 | 113 | ```xml 114 | 115 | 116 | net6.0 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | ``` 129 | 130 | Now when you run 131 | 132 | ``` 133 | dotnet build 134 | ``` 135 | 136 | This will generate the two files in our `web/references` directory. 137 | 138 | ### Generating TypeScript Client 139 | 140 | This gets us 2/3 of the way there. Now we want to generate a TypeScript client automatically from our schema so that we don't have to perform raw AJAX calls. 141 | 142 | Since our client will be used for a static web front-end, we can use `npm` or `yarn` to generate our client using the `openapi-typescript-codegen` project. 143 | 144 | - https://www.npmjs.com/package/openapi-typescript-codegen 145 | - https://yarnpkg.com/package/openapi-typescript 146 | 147 | We'll use `yarn` for this walkthrough. 148 | 149 | ``` 150 | cd ../web 151 | yarn add --dev openapi-typescript-codegen 152 | yarn openapi --input references/swagger.json --output references/codegen --client axios --postfix Service --useOptions --useUnionTypes 153 | ``` 154 | 155 | This will use the schemas to generate the *client TypeScript* for interacting with our services 🎉 156 | 157 | ### Automating with Yarn 158 | 159 | To simplify this, we can create a script that builds the full chain from the web project. 160 | 161 | Still in the `web` directory, modify the `package.json` file to add a script: 162 | 163 | ```json 164 | { 165 | // ... 166 | "scripts": { 167 | "codegen": "cd ../api && dotnet build && cd ../web && yarn openapi --input references/swagger.json --output references/codegen --client axios --postfix Service --useOptions --useUnionTypes" 168 | // ... 169 | } 170 | // ... 171 | } 172 | ``` 173 | 174 | Now if we run `yarn run codegen` from the `web` project, this will: 175 | 176 | 1. Build our .NET 6 WebAPI project 177 | 2. Generate an updated `swagger.json` and `swagger.yaml` file in the `web/references` directory 178 | 3. Generate an updated TypeScript client in the `web/references/client` directory 179 | 180 | Sweet! 181 | 182 | ### Building the Front-end 183 | 184 | Before we start updating the Svelte app, we'll need to update our API to allow CORS since the apps are at two different URLs. 185 | 186 | In `program.cs`, we add: 187 | 188 | ```csharp 189 | // We need this to call our API from the static front-end 190 | app.UseCors(options => { 191 | options.AllowAnyHeader(); 192 | options.AllowAnyMethod(); 193 | options.AllowAnyOrigin(); 194 | }); 195 | ``` 196 | 197 | anywhere before `app.Run()`. In a separate terminal in the `api` directory, start our API with `dotnet run`. Pay attention to the port. 198 | 199 | Now let's get back to our front-end. 200 | 201 | To see it, we switch into the `web` directory and run `yarn dev` 202 | 203 | ``` 204 | yarn dev 205 | ``` 206 | 207 | This will start our application and load it in the default browser. 208 | 209 | the `App.svelte` file is what we're going to modify. 210 | 211 | In the top ` 12 | 13 | 14 | -------------------------------------------------------------------------------- /web-vue/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "web-vue", 3 | "version": "0.0.0", 4 | "scripts": { 5 | "dev": "vite", 6 | "build": "vue-tsc --noEmit && vite build", 7 | "serve": "vite preview" 8 | }, 9 | "dependencies": { 10 | "vue": "^3.2.16" 11 | }, 12 | "devDependencies": { 13 | "@vitejs/plugin-vue": "^1.9.3", 14 | "typescript": "^4.4.3", 15 | "vite": "^2.6.4", 16 | "vue-tsc": "^0.3.0" 17 | } 18 | } -------------------------------------------------------------------------------- /web-vue/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CharlieDigital/dotnet6-openapi/988e9b74a4751a4ca685f255456f0760b8081fb7/web-vue/public/favicon.ico -------------------------------------------------------------------------------- /web-vue/src/App.vue: -------------------------------------------------------------------------------- 1 | 26 | 27 | 36 | 37 | 47 | -------------------------------------------------------------------------------- /web-vue/src/assets/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CharlieDigital/dotnet6-openapi/988e9b74a4751a4ca685f255456f0760b8081fb7/web-vue/src/assets/logo.png -------------------------------------------------------------------------------- /web-vue/src/components/HelloWorld.vue: -------------------------------------------------------------------------------- 1 | 8 | 9 | 35 | 36 | 53 | -------------------------------------------------------------------------------- /web-vue/src/env.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | 3 | declare module '*.vue' { 4 | import { DefineComponent } from 'vue' 5 | // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/ban-types 6 | const component: DefineComponent<{}, {}, any> 7 | export default component 8 | } 9 | -------------------------------------------------------------------------------- /web-vue/src/main.ts: -------------------------------------------------------------------------------- 1 | import { createApp } from 'vue' 2 | import App from './App.vue' 3 | 4 | createApp(App).mount('#app') 5 | -------------------------------------------------------------------------------- /web-vue/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "esnext", 4 | "useDefineForClassFields": true, 5 | "module": "esnext", 6 | "moduleResolution": "node", 7 | "strict": true, 8 | "jsx": "preserve", 9 | "sourceMap": true, 10 | "resolveJsonModule": true, 11 | "esModuleInterop": true, 12 | "lib": ["esnext", "dom"] 13 | }, 14 | "include": ["src/**/*.ts", "src/**/*.d.ts", "src/**/*.tsx", "src/**/*.vue"] 15 | } 16 | -------------------------------------------------------------------------------- /web-vue/vite.config.ts: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'vite' 2 | import vue from '@vitejs/plugin-vue' 3 | 4 | // https://vitejs.dev/config/ 5 | export default defineConfig({ 6 | plugins: [vue()] 7 | }) 8 | -------------------------------------------------------------------------------- /web-vue/yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@babel/helper-validator-identifier@^7.15.7": 6 | version "7.15.7" 7 | resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz#220df993bfe904a4a6b02ab4f3385a5ebf6e2389" 8 | integrity sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w== 9 | 10 | "@babel/parser@^7.15.0", "@babel/parser@^7.6.0", "@babel/parser@^7.9.6": 11 | version "7.16.4" 12 | resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.16.4.tgz#d5f92f57cf2c74ffe9b37981c0e72fee7311372e" 13 | integrity sha512-6V0qdPUaiVHH3RtZeLIsc+6pDhbYzHR8ogA8w+f+Wc77DuXto19g2QUwveINoS34Uw+W8/hQDGJCx+i4n7xcng== 14 | 15 | "@babel/types@^7.6.1", "@babel/types@^7.9.6": 16 | version "7.16.0" 17 | resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.16.0.tgz#db3b313804f96aadd0b776c4823e127ad67289ba" 18 | integrity sha512-PJgg/k3SdLsGb3hhisFvtLOw5ts113klrpLuIPtCJIU+BB24fqq6lf8RWqKJEjzqXR9AEH1rIb5XTqwBHB+kQg== 19 | dependencies: 20 | "@babel/helper-validator-identifier" "^7.15.7" 21 | to-fast-properties "^2.0.0" 22 | 23 | "@emmetio/abbreviation@^2.2.2": 24 | version "2.2.2" 25 | resolved "https://registry.yarnpkg.com/@emmetio/abbreviation/-/abbreviation-2.2.2.tgz#746762fd9e7a8c2ea604f580c62e3cfe250e6989" 26 | integrity sha512-TtE/dBnkTCct8+LntkqVrwqQao6EnPAs1YN3cUgxOxTaBlesBCY37ROUAVZrRlG64GNnVShdl/b70RfAI3w5lw== 27 | dependencies: 28 | "@emmetio/scanner" "^1.0.0" 29 | 30 | "@emmetio/css-abbreviation@^2.1.4": 31 | version "2.1.4" 32 | resolved "https://registry.yarnpkg.com/@emmetio/css-abbreviation/-/css-abbreviation-2.1.4.tgz#90362e8a1122ce3b76f6c3157907d30182f53f54" 33 | integrity sha512-qk9L60Y+uRtM5CPbB0y+QNl/1XKE09mSO+AhhSauIfr2YOx/ta3NJw2d8RtCFxgzHeRqFRr8jgyzThbu+MZ4Uw== 34 | dependencies: 35 | "@emmetio/scanner" "^1.0.0" 36 | 37 | "@emmetio/scanner@^1.0.0": 38 | version "1.0.0" 39 | resolved "https://registry.yarnpkg.com/@emmetio/scanner/-/scanner-1.0.0.tgz#065b2af6233fe7474d44823e3deb89724af42b5f" 40 | integrity sha512-8HqW8EVqjnCmWXVpqAOZf+EGESdkR27odcMMMGefgKXtar00SoYNSryGv//TELI4T3QFsECo78p+0lmalk/CFA== 41 | 42 | "@vitejs/plugin-vue@^1.9.3": 43 | version "1.10.0" 44 | resolved "https://registry.yarnpkg.com/@vitejs/plugin-vue/-/plugin-vue-1.10.0.tgz#d015c12d905bb7f76274c2bb272c3662151bf3c0" 45 | integrity sha512-XkSN7lduhQ3z/WMXv2spqt9TCS0znCjnvIGmbud2bxViWWWR4JWXE+x/cQZ/klR0Ug4Ts9eubL7LXAysON5Uvg== 46 | 47 | "@volar/code-gen@^0.27.24": 48 | version "0.27.24" 49 | resolved "https://registry.yarnpkg.com/@volar/code-gen/-/code-gen-0.27.24.tgz#ccdbe858951c1ee4e0c3979232d52412dc46756a" 50 | integrity sha512-s4j/QqOZUW03PeD6LmVYI00Q1C3CfJEOePDOQwDvCTUov4lFk0iSBtFyYhjlLyQ1pdtV1+TDTErkj2aMQtc4PA== 51 | dependencies: 52 | "@volar/shared" "^0.27.24" 53 | "@volar/source-map" "^0.27.24" 54 | 55 | "@volar/html2pug@^0.27.13": 56 | version "0.27.13" 57 | resolved "https://registry.yarnpkg.com/@volar/html2pug/-/html2pug-0.27.13.tgz#48dfa73ecf1ef1955a02a046d0c88845950fac85" 58 | integrity sha512-3NYgNA5F3PDsKbbpOrVdGy2S7ZYmZIbFmbp1A/27DDzjj/uIC9Pj7HXVvbYOzi8HcOxUPt0BMrh4TVzBUaCFww== 59 | dependencies: 60 | domelementtype "^2.2.0" 61 | domhandler "^4.2.0" 62 | htmlparser2 "^6.1.0" 63 | pug "^3.0.2" 64 | 65 | "@volar/shared@^0.27.24": 66 | version "0.27.24" 67 | resolved "https://registry.yarnpkg.com/@volar/shared/-/shared-0.27.24.tgz#a33457ec8ac0b0d367ed54c9e21913a5f8c2d6c2" 68 | integrity sha512-Mi8a4GQaiorfb+o4EqOXDZm9E/uBJXgScFgF+NhtcMBOUKHNMKQyLI7YRGumtyJTTdaX7nSDJjGGTkv23tcOtQ== 69 | dependencies: 70 | upath "^2.0.1" 71 | vscode-jsonrpc "^8.0.0-next.2" 72 | vscode-uri "^3.0.2" 73 | 74 | "@volar/source-map@^0.27.24": 75 | version "0.27.24" 76 | resolved "https://registry.yarnpkg.com/@volar/source-map/-/source-map-0.27.24.tgz#60f2e070c169be82cbf7ffa296a30c2823c5205f" 77 | integrity sha512-2I5a7cXqekZ66D6lHep7ttJgvVVtPEBUIe1hnpcGbnXWNA2ya6f6jKNNyTmrXQyfkh32IEuaUd4kocR+3AKMag== 78 | dependencies: 79 | "@volar/shared" "^0.27.24" 80 | 81 | "@volar/transforms@^0.27.24": 82 | version "0.27.24" 83 | resolved "https://registry.yarnpkg.com/@volar/transforms/-/transforms-0.27.24.tgz#68ebc53dca2e36884e247c0866ec3d24ed815784" 84 | integrity sha512-sOHi1ZSapFlxn7yPl4MO5TXd9aWC0BVq2CgXAJ2EESb+ddh2uJbGQgLLNocX+MDh419cUuuFT2QAJpuWHhJcng== 85 | dependencies: 86 | "@volar/shared" "^0.27.24" 87 | vscode-languageserver "^8.0.0-next.2" 88 | 89 | "@vscode/emmet-helper@^2.7.0": 90 | version "2.8.2" 91 | resolved "https://registry.yarnpkg.com/@vscode/emmet-helper/-/emmet-helper-2.8.2.tgz#9b2ce4fdd62cf3fda45cf8af67c012cfce55edc9" 92 | integrity sha512-A/+pkBYQq2JTow1A2flfTmEOmiF780KpdkoX7VBjQ7wujeA+CFUPd17YdeIa9aim20+J5Jp7SFujPDwVFiQucQ== 93 | dependencies: 94 | emmet "^2.3.0" 95 | jsonc-parser "^2.3.0" 96 | vscode-languageserver-textdocument "^1.0.1" 97 | vscode-languageserver-types "^3.15.1" 98 | vscode-nls "^5.0.0" 99 | vscode-uri "^2.1.2" 100 | 101 | "@vue/compiler-core@3.2.22": 102 | version "3.2.22" 103 | resolved "https://registry.yarnpkg.com/@vue/compiler-core/-/compiler-core-3.2.22.tgz#5e3d3b983cc7f430ddbc6a8773c872dcf410dc89" 104 | integrity sha512-uAkovrVeTcjzpiM4ECmVaMrv/bjdgAaLzvjcGqQPBEyUrcqsCgccT9fHJ/+hWVGhyMahmBwLqcn4guULNx7sdw== 105 | dependencies: 106 | "@babel/parser" "^7.15.0" 107 | "@vue/shared" "3.2.22" 108 | estree-walker "^2.0.2" 109 | source-map "^0.6.1" 110 | 111 | "@vue/compiler-dom@3.2.22", "@vue/compiler-dom@^3.2.19": 112 | version "3.2.22" 113 | resolved "https://registry.yarnpkg.com/@vue/compiler-dom/-/compiler-dom-3.2.22.tgz#221cc358a6c0651c04e1dd22a8470b21e56ee1a5" 114 | integrity sha512-VZdsw/VuO1ODs8K7NQwnMQzKITDkIFlYYC03SVnunuf6eNRxBPEonSyqbWNoo6qNaHAEBTG6VVcZC5xC9bAx1g== 115 | dependencies: 116 | "@vue/compiler-core" "3.2.22" 117 | "@vue/shared" "3.2.22" 118 | 119 | "@vue/compiler-sfc@3.2.22": 120 | version "3.2.22" 121 | resolved "https://registry.yarnpkg.com/@vue/compiler-sfc/-/compiler-sfc-3.2.22.tgz#ffd0e5e35479b6ade18d12fefec369cbaf2f7718" 122 | integrity sha512-tWRQ5ge1tsTDhUwHgueicKJ8rYm6WUVAPTaIpFW3GSwZKcOEJ2rXdfkHFShNVGupeRALz2ET2H84OL0GeRxY0A== 123 | dependencies: 124 | "@babel/parser" "^7.15.0" 125 | "@vue/compiler-core" "3.2.22" 126 | "@vue/compiler-dom" "3.2.22" 127 | "@vue/compiler-ssr" "3.2.22" 128 | "@vue/ref-transform" "3.2.22" 129 | "@vue/shared" "3.2.22" 130 | estree-walker "^2.0.2" 131 | magic-string "^0.25.7" 132 | postcss "^8.1.10" 133 | source-map "^0.6.1" 134 | 135 | "@vue/compiler-ssr@3.2.22": 136 | version "3.2.22" 137 | resolved "https://registry.yarnpkg.com/@vue/compiler-ssr/-/compiler-ssr-3.2.22.tgz#23552c31b76b45baf5f244713c81d77ab59447d2" 138 | integrity sha512-Cl6aoLJtXzzBkk1sKod8S0WBJLts3+ugVC91d22gGpbkw/64WnF12tOZi7Rg54PPLi1NovqyNWPsLH/SAFcu+w== 139 | dependencies: 140 | "@vue/compiler-dom" "3.2.22" 141 | "@vue/shared" "3.2.22" 142 | 143 | "@vue/reactivity@3.2.22", "@vue/reactivity@^3.2.19": 144 | version "3.2.22" 145 | resolved "https://registry.yarnpkg.com/@vue/reactivity/-/reactivity-3.2.22.tgz#88655c0b4febc561136e6550e329039f860caa0a" 146 | integrity sha512-xNkLAItjI0xB+lFeDgKCrSItmrHTaAzSnt8LmdSCPQnDyarmzbi/u4ESQnckWvlL7lSRKiEaOvblaNyqAa7OnQ== 147 | dependencies: 148 | "@vue/shared" "3.2.22" 149 | 150 | "@vue/ref-transform@3.2.22": 151 | version "3.2.22" 152 | resolved "https://registry.yarnpkg.com/@vue/ref-transform/-/ref-transform-3.2.22.tgz#16b03994eac71528cceff4cf76178ed9b44ac90a" 153 | integrity sha512-qalVWbq5xWWxLZ0L9OroBg/JZhzavQuCcDXblfErxyDEH6Xc5gIJ4feo1SVCICFzhAUgLgQTdSFLpgjBawbFpw== 154 | dependencies: 155 | "@babel/parser" "^7.15.0" 156 | "@vue/compiler-core" "3.2.22" 157 | "@vue/shared" "3.2.22" 158 | estree-walker "^2.0.2" 159 | magic-string "^0.25.7" 160 | 161 | "@vue/runtime-core@3.2.22": 162 | version "3.2.22" 163 | resolved "https://registry.yarnpkg.com/@vue/runtime-core/-/runtime-core-3.2.22.tgz#111f1bc97f20249e05ca2189856d99c82d72de32" 164 | integrity sha512-e7WOC55wmHPvmoVUk9VBe/Z9k5bJfWJfVIlkUkiADJn0bOgQD29oh/GS14Kb3aEJXIHLI17Em6+HxNut1sIh7Q== 165 | dependencies: 166 | "@vue/reactivity" "3.2.22" 167 | "@vue/shared" "3.2.22" 168 | 169 | "@vue/runtime-dom@3.2.22": 170 | version "3.2.22" 171 | resolved "https://registry.yarnpkg.com/@vue/runtime-dom/-/runtime-dom-3.2.22.tgz#c11d75dd51375ee4c74e339f6523ca05e37faa37" 172 | integrity sha512-w7VHYJoliLRTLc5beN77wxuOjla4v9wr2FF22xpZFYBmH4U1V7HkYhoHc1BTuNghI15CXT1tNIMhibI1nrQgdw== 173 | dependencies: 174 | "@vue/runtime-core" "3.2.22" 175 | "@vue/shared" "3.2.22" 176 | csstype "^2.6.8" 177 | 178 | "@vue/server-renderer@3.2.22": 179 | version "3.2.22" 180 | resolved "https://registry.yarnpkg.com/@vue/server-renderer/-/server-renderer-3.2.22.tgz#049c91a495cb0fcdac02dec485c31cb99410885f" 181 | integrity sha512-jCwbQgKPXiXoH9VS9F7K+gyEvEMrjutannwEZD1R8fQ9szmOTqC+RRbIY3Uf2ibQjZtZ8DV9a4FjxICvd9zZlQ== 182 | dependencies: 183 | "@vue/compiler-ssr" "3.2.22" 184 | "@vue/shared" "3.2.22" 185 | 186 | "@vue/shared@3.2.22", "@vue/shared@^3.2.19": 187 | version "3.2.22" 188 | resolved "https://registry.yarnpkg.com/@vue/shared/-/shared-3.2.22.tgz#26dcbe5e530f6c1f2de5ca9aeab92ab00f523b41" 189 | integrity sha512-qWVav014mpjEtbWbEgl0q9pEyrrIySKum8UVYjwhC6njrKzknLZPvfuYdQyVbApsqr94tf/3dP4pCuZmmjdCWQ== 190 | 191 | acorn@^7.1.1: 192 | version "7.4.1" 193 | resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" 194 | integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== 195 | 196 | asap@~2.0.3: 197 | version "2.0.6" 198 | resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" 199 | integrity sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY= 200 | 201 | assert-never@^1.2.1: 202 | version "1.2.1" 203 | resolved "https://registry.yarnpkg.com/assert-never/-/assert-never-1.2.1.tgz#11f0e363bf146205fb08193b5c7b90f4d1cf44fe" 204 | integrity sha512-TaTivMB6pYI1kXwrFlEhLeGfOqoDNdTxjCdwRfFFkEA30Eu+k48W34nlok2EYWJfFFzqaEmichdNM7th6M5HNw== 205 | 206 | babel-walk@3.0.0-canary-5: 207 | version "3.0.0-canary-5" 208 | resolved "https://registry.yarnpkg.com/babel-walk/-/babel-walk-3.0.0-canary-5.tgz#f66ecd7298357aee44955f235a6ef54219104b11" 209 | integrity sha512-GAwkz0AihzY5bkwIY5QDR+LvsRQgB/B+1foMPvi0FZPMl5fjD7ICiznUiBdLYMH1QYe6vqu4gWYytZOccLouFw== 210 | dependencies: 211 | "@babel/types" "^7.9.6" 212 | 213 | call-bind@^1.0.2: 214 | version "1.0.2" 215 | resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" 216 | integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== 217 | dependencies: 218 | function-bind "^1.1.1" 219 | get-intrinsic "^1.0.2" 220 | 221 | character-parser@^2.2.0: 222 | version "2.2.0" 223 | resolved "https://registry.yarnpkg.com/character-parser/-/character-parser-2.2.0.tgz#c7ce28f36d4bcd9744e5ffc2c5fcde1c73261fc0" 224 | integrity sha1-x84o821LzZdE5f/CxfzeHHMmH8A= 225 | dependencies: 226 | is-regex "^1.0.3" 227 | 228 | constantinople@^4.0.1: 229 | version "4.0.1" 230 | resolved "https://registry.yarnpkg.com/constantinople/-/constantinople-4.0.1.tgz#0def113fa0e4dc8de83331a5cf79c8b325213151" 231 | integrity sha512-vCrqcSIq4//Gx74TXXCGnHpulY1dskqLTFGDmhrGxzeXL8lF8kvXv6mpNWlJj1uD4DW23D4ljAqbY4RRaaUZIw== 232 | dependencies: 233 | "@babel/parser" "^7.6.0" 234 | "@babel/types" "^7.6.1" 235 | 236 | csstype@^2.6.8: 237 | version "2.6.19" 238 | resolved "https://registry.yarnpkg.com/csstype/-/csstype-2.6.19.tgz#feeb5aae89020bb389e1f63669a5ed490e391caa" 239 | integrity sha512-ZVxXaNy28/k3kJg0Fou5MiYpp88j7H9hLZp8PDC3jV0WFjfH5E9xHb56L0W59cPbKbcHXeP4qyT8PrHp8t6LcQ== 240 | 241 | doctypes@^1.1.0: 242 | version "1.1.0" 243 | resolved "https://registry.yarnpkg.com/doctypes/-/doctypes-1.1.0.tgz#ea80b106a87538774e8a3a4a5afe293de489e0a9" 244 | integrity sha1-6oCxBqh1OHdOijpKWv4pPeSJ4Kk= 245 | 246 | dom-serializer@^1.0.1: 247 | version "1.3.2" 248 | resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-1.3.2.tgz#6206437d32ceefaec7161803230c7a20bc1b4d91" 249 | integrity sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig== 250 | dependencies: 251 | domelementtype "^2.0.1" 252 | domhandler "^4.2.0" 253 | entities "^2.0.0" 254 | 255 | domelementtype@^2.0.1, domelementtype@^2.2.0: 256 | version "2.2.0" 257 | resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.2.0.tgz#9a0b6c2782ed6a1c7323d42267183df9bd8b1d57" 258 | integrity sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A== 259 | 260 | domhandler@^4.0.0, domhandler@^4.2.0: 261 | version "4.2.2" 262 | resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-4.2.2.tgz#e825d721d19a86b8c201a35264e226c678ee755f" 263 | integrity sha512-PzE9aBMsdZO8TK4BnuJwH0QT41wgMbRzuZrHUcpYncEjmQazq8QEaBWgLG7ZyC/DAZKEgglpIA6j4Qn/HmxS3w== 264 | dependencies: 265 | domelementtype "^2.2.0" 266 | 267 | domutils@^2.5.2: 268 | version "2.8.0" 269 | resolved "https://registry.yarnpkg.com/domutils/-/domutils-2.8.0.tgz#4437def5db6e2d1f5d6ee859bd95ca7d02048135" 270 | integrity sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A== 271 | dependencies: 272 | dom-serializer "^1.0.1" 273 | domelementtype "^2.2.0" 274 | domhandler "^4.2.0" 275 | 276 | emmet@^2.3.0: 277 | version "2.3.4" 278 | resolved "https://registry.yarnpkg.com/emmet/-/emmet-2.3.4.tgz#5ba0d7a5569a68c7697dfa890c772e4f3179d123" 279 | integrity sha512-3IqSwmO+N2ZGeuhDyhV/TIOJFUbkChi53bcasSNRE7Yd+4eorbbYz4e53TpMECt38NtYkZNupQCZRlwdAYA42A== 280 | dependencies: 281 | "@emmetio/abbreviation" "^2.2.2" 282 | "@emmetio/css-abbreviation" "^2.1.4" 283 | 284 | entities@^2.0.0: 285 | version "2.2.0" 286 | resolved "https://registry.yarnpkg.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55" 287 | integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A== 288 | 289 | esbuild-android-arm64@0.13.15: 290 | version "0.13.15" 291 | resolved "https://registry.yarnpkg.com/esbuild-android-arm64/-/esbuild-android-arm64-0.13.15.tgz#3fc3ff0bab76fe35dd237476b5d2b32bb20a3d44" 292 | integrity sha512-m602nft/XXeO8YQPUDVoHfjyRVPdPgjyyXOxZ44MK/agewFFkPa8tUo6lAzSWh5Ui5PB4KR9UIFTSBKh/RrCmg== 293 | 294 | esbuild-darwin-64@0.13.15: 295 | version "0.13.15" 296 | resolved "https://registry.yarnpkg.com/esbuild-darwin-64/-/esbuild-darwin-64-0.13.15.tgz#8e9169c16baf444eacec60d09b24d11b255a8e72" 297 | integrity sha512-ihOQRGs2yyp7t5bArCwnvn2Atr6X4axqPpEdCFPVp7iUj4cVSdisgvEKdNR7yH3JDjW6aQDw40iQFoTqejqxvQ== 298 | 299 | esbuild-darwin-arm64@0.13.15: 300 | version "0.13.15" 301 | resolved "https://registry.yarnpkg.com/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.13.15.tgz#1b07f893b632114f805e188ddfca41b2b778229a" 302 | integrity sha512-i1FZssTVxUqNlJ6cBTj5YQj4imWy3m49RZRnHhLpefFIh0To05ow9DTrXROTE1urGTQCloFUXTX8QfGJy1P8dQ== 303 | 304 | esbuild-freebsd-64@0.13.15: 305 | version "0.13.15" 306 | resolved "https://registry.yarnpkg.com/esbuild-freebsd-64/-/esbuild-freebsd-64-0.13.15.tgz#0b8b7eca1690c8ec94c75680c38c07269c1f4a85" 307 | integrity sha512-G3dLBXUI6lC6Z09/x+WtXBXbOYQZ0E8TDBqvn7aMaOCzryJs8LyVXKY4CPnHFXZAbSwkCbqiPuSQ1+HhrNk7EA== 308 | 309 | esbuild-freebsd-arm64@0.13.15: 310 | version "0.13.15" 311 | resolved "https://registry.yarnpkg.com/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.13.15.tgz#2e1a6c696bfdcd20a99578b76350b41db1934e52" 312 | integrity sha512-KJx0fzEDf1uhNOZQStV4ujg30WlnwqUASaGSFPhznLM/bbheu9HhqZ6mJJZM32lkyfGJikw0jg7v3S0oAvtvQQ== 313 | 314 | esbuild-linux-32@0.13.15: 315 | version "0.13.15" 316 | resolved "https://registry.yarnpkg.com/esbuild-linux-32/-/esbuild-linux-32-0.13.15.tgz#6fd39f36fc66dd45b6b5f515728c7bbebc342a69" 317 | integrity sha512-ZvTBPk0YWCLMCXiFmD5EUtB30zIPvC5Itxz0mdTu/xZBbbHJftQgLWY49wEPSn2T/TxahYCRDWun5smRa0Tu+g== 318 | 319 | esbuild-linux-64@0.13.15: 320 | version "0.13.15" 321 | resolved "https://registry.yarnpkg.com/esbuild-linux-64/-/esbuild-linux-64-0.13.15.tgz#9cb8e4bcd7574e67946e4ee5f1f1e12386bb6dd3" 322 | integrity sha512-eCKzkNSLywNeQTRBxJRQ0jxRCl2YWdMB3+PkWFo2BBQYC5mISLIVIjThNtn6HUNqua1pnvgP5xX0nHbZbPj5oA== 323 | 324 | esbuild-linux-arm64@0.13.15: 325 | version "0.13.15" 326 | resolved "https://registry.yarnpkg.com/esbuild-linux-arm64/-/esbuild-linux-arm64-0.13.15.tgz#3891aa3704ec579a1b92d2a586122e5b6a2bfba1" 327 | integrity sha512-bYpuUlN6qYU9slzr/ltyLTR9YTBS7qUDymO8SV7kjeNext61OdmqFAzuVZom+OLW1HPHseBfJ/JfdSlx8oTUoA== 328 | 329 | esbuild-linux-arm@0.13.15: 330 | version "0.13.15" 331 | resolved "https://registry.yarnpkg.com/esbuild-linux-arm/-/esbuild-linux-arm-0.13.15.tgz#8a00e99e6a0c6c9a6b7f334841364d8a2b4aecfe" 332 | integrity sha512-wUHttDi/ol0tD8ZgUMDH8Ef7IbDX+/UsWJOXaAyTdkT7Yy9ZBqPg8bgB/Dn3CZ9SBpNieozrPRHm0BGww7W/jA== 333 | 334 | esbuild-linux-mips64le@0.13.15: 335 | version "0.13.15" 336 | resolved "https://registry.yarnpkg.com/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.13.15.tgz#36b07cc47c3d21e48db3bb1f4d9ef8f46aead4f7" 337 | integrity sha512-KlVjIG828uFPyJkO/8gKwy9RbXhCEUeFsCGOJBepUlpa7G8/SeZgncUEz/tOOUJTcWMTmFMtdd3GElGyAtbSWg== 338 | 339 | esbuild-linux-ppc64le@0.13.15: 340 | version "0.13.15" 341 | resolved "https://registry.yarnpkg.com/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.13.15.tgz#f7e6bba40b9a11eb9dcae5b01550ea04670edad2" 342 | integrity sha512-h6gYF+OsaqEuBjeesTBtUPw0bmiDu7eAeuc2OEH9S6mV9/jPhPdhOWzdeshb0BskRZxPhxPOjqZ+/OqLcxQwEQ== 343 | 344 | esbuild-netbsd-64@0.13.15: 345 | version "0.13.15" 346 | resolved "https://registry.yarnpkg.com/esbuild-netbsd-64/-/esbuild-netbsd-64-0.13.15.tgz#a2fedc549c2b629d580a732d840712b08d440038" 347 | integrity sha512-3+yE9emwoevLMyvu+iR3rsa+Xwhie7ZEHMGDQ6dkqP/ndFzRHkobHUKTe+NCApSqG5ce2z4rFu+NX/UHnxlh3w== 348 | 349 | esbuild-openbsd-64@0.13.15: 350 | version "0.13.15" 351 | resolved "https://registry.yarnpkg.com/esbuild-openbsd-64/-/esbuild-openbsd-64-0.13.15.tgz#b22c0e5806d3a1fbf0325872037f885306b05cd7" 352 | integrity sha512-wTfvtwYJYAFL1fSs8yHIdf5GEE4NkbtbXtjLWjM3Cw8mmQKqsg8kTiqJ9NJQe5NX/5Qlo7Xd9r1yKMMkHllp5g== 353 | 354 | esbuild-sunos-64@0.13.15: 355 | version "0.13.15" 356 | resolved "https://registry.yarnpkg.com/esbuild-sunos-64/-/esbuild-sunos-64-0.13.15.tgz#d0b6454a88375ee8d3964daeff55c85c91c7cef4" 357 | integrity sha512-lbivT9Bx3t1iWWrSnGyBP9ODriEvWDRiweAs69vI+miJoeKwHWOComSRukttbuzjZ8r1q0mQJ8Z7yUsDJ3hKdw== 358 | 359 | esbuild-windows-32@0.13.15: 360 | version "0.13.15" 361 | resolved "https://registry.yarnpkg.com/esbuild-windows-32/-/esbuild-windows-32-0.13.15.tgz#c96d0b9bbb52f3303322582ef8e4847c5ad375a7" 362 | integrity sha512-fDMEf2g3SsJ599MBr50cY5ve5lP1wyVwTe6aLJsM01KtxyKkB4UT+fc5MXQFn3RLrAIAZOG+tHC+yXObpSn7Nw== 363 | 364 | esbuild-windows-64@0.13.15: 365 | version "0.13.15" 366 | resolved "https://registry.yarnpkg.com/esbuild-windows-64/-/esbuild-windows-64-0.13.15.tgz#1f79cb9b1e1bb02fb25cd414cb90d4ea2892c294" 367 | integrity sha512-9aMsPRGDWCd3bGjUIKG/ZOJPKsiztlxl/Q3C1XDswO6eNX/Jtwu4M+jb6YDH9hRSUflQWX0XKAfWzgy5Wk54JQ== 368 | 369 | esbuild-windows-arm64@0.13.15: 370 | version "0.13.15" 371 | resolved "https://registry.yarnpkg.com/esbuild-windows-arm64/-/esbuild-windows-arm64-0.13.15.tgz#482173070810df22a752c686509c370c3be3b3c3" 372 | integrity sha512-zzvyCVVpbwQQATaf3IG8mu1IwGEiDxKkYUdA4FpoCHi1KtPa13jeScYDjlW0Qh+ebWzpKfR2ZwvqAQkSWNcKjA== 373 | 374 | esbuild@^0.13.2: 375 | version "0.13.15" 376 | resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.13.15.tgz#db56a88166ee373f87dbb2d8798ff449e0450cdf" 377 | integrity sha512-raCxt02HBKv8RJxE8vkTSCXGIyKHdEdGfUmiYb8wnabnaEmHzyW7DCHb5tEN0xU8ryqg5xw54mcwnYkC4x3AIw== 378 | optionalDependencies: 379 | esbuild-android-arm64 "0.13.15" 380 | esbuild-darwin-64 "0.13.15" 381 | esbuild-darwin-arm64 "0.13.15" 382 | esbuild-freebsd-64 "0.13.15" 383 | esbuild-freebsd-arm64 "0.13.15" 384 | esbuild-linux-32 "0.13.15" 385 | esbuild-linux-64 "0.13.15" 386 | esbuild-linux-arm "0.13.15" 387 | esbuild-linux-arm64 "0.13.15" 388 | esbuild-linux-mips64le "0.13.15" 389 | esbuild-linux-ppc64le "0.13.15" 390 | esbuild-netbsd-64 "0.13.15" 391 | esbuild-openbsd-64 "0.13.15" 392 | esbuild-sunos-64 "0.13.15" 393 | esbuild-windows-32 "0.13.15" 394 | esbuild-windows-64 "0.13.15" 395 | esbuild-windows-arm64 "0.13.15" 396 | 397 | estree-walker@^2.0.2: 398 | version "2.0.2" 399 | resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-2.0.2.tgz#52f010178c2a4c117a7757cfe942adb7d2da4cac" 400 | integrity sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w== 401 | 402 | fsevents@~2.3.2: 403 | version "2.3.2" 404 | resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" 405 | integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== 406 | 407 | function-bind@^1.1.1: 408 | version "1.1.1" 409 | resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" 410 | integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== 411 | 412 | get-intrinsic@^1.0.2: 413 | version "1.1.1" 414 | resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.1.tgz#15f59f376f855c446963948f0d24cd3637b4abc6" 415 | integrity sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q== 416 | dependencies: 417 | function-bind "^1.1.1" 418 | has "^1.0.3" 419 | has-symbols "^1.0.1" 420 | 421 | has-symbols@^1.0.1, has-symbols@^1.0.2: 422 | version "1.0.2" 423 | resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.2.tgz#165d3070c00309752a1236a479331e3ac56f1423" 424 | integrity sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw== 425 | 426 | has-tostringtag@^1.0.0: 427 | version "1.0.0" 428 | resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.0.tgz#7e133818a7d394734f941e73c3d3f9291e658b25" 429 | integrity sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ== 430 | dependencies: 431 | has-symbols "^1.0.2" 432 | 433 | has@^1.0.3: 434 | version "1.0.3" 435 | resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" 436 | integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== 437 | dependencies: 438 | function-bind "^1.1.1" 439 | 440 | htmlparser2@^6.1.0: 441 | version "6.1.0" 442 | resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-6.1.0.tgz#c4d762b6c3371a05dbe65e94ae43a9f845fb8fb7" 443 | integrity sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A== 444 | dependencies: 445 | domelementtype "^2.0.1" 446 | domhandler "^4.0.0" 447 | domutils "^2.5.2" 448 | entities "^2.0.0" 449 | 450 | is-core-module@^2.2.0: 451 | version "2.8.0" 452 | resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.8.0.tgz#0321336c3d0925e497fd97f5d95cb114a5ccd548" 453 | integrity sha512-vd15qHsaqrRL7dtH6QNuy0ndJmRDrS9HAM1CAiSifNUFv4x1a0CCVsj18hJ1mShxIG6T2i1sO78MkP56r0nYRw== 454 | dependencies: 455 | has "^1.0.3" 456 | 457 | is-expression@^4.0.0: 458 | version "4.0.0" 459 | resolved "https://registry.yarnpkg.com/is-expression/-/is-expression-4.0.0.tgz#c33155962abf21d0afd2552514d67d2ec16fd2ab" 460 | integrity sha512-zMIXX63sxzG3XrkHkrAPvm/OVZVSCPNkwMHU8oTX7/U3AL78I0QXCEICXUM13BIa8TYGZ68PiTKfQz3yaTNr4A== 461 | dependencies: 462 | acorn "^7.1.1" 463 | object-assign "^4.1.1" 464 | 465 | is-promise@^2.0.0: 466 | version "2.2.2" 467 | resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.2.2.tgz#39ab959ccbf9a774cf079f7b40c7a26f763135f1" 468 | integrity sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ== 469 | 470 | is-regex@^1.0.3: 471 | version "1.1.4" 472 | resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958" 473 | integrity sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg== 474 | dependencies: 475 | call-bind "^1.0.2" 476 | has-tostringtag "^1.0.0" 477 | 478 | js-stringify@^1.0.2: 479 | version "1.0.2" 480 | resolved "https://registry.yarnpkg.com/js-stringify/-/js-stringify-1.0.2.tgz#1736fddfd9724f28a3682adc6230ae7e4e9679db" 481 | integrity sha1-Fzb939lyTyijaCrcYjCufk6Weds= 482 | 483 | jsonc-parser@^2.3.0: 484 | version "2.3.1" 485 | resolved "https://registry.yarnpkg.com/jsonc-parser/-/jsonc-parser-2.3.1.tgz#59549150b133f2efacca48fe9ce1ec0659af2342" 486 | integrity sha512-H8jvkz1O50L3dMZCsLqiuB2tA7muqbSg1AtGEkN0leAqGjsUzDJir3Zwr02BhqdcITPg3ei3mZ+HjMocAknhhg== 487 | 488 | jsonc-parser@^3.0.0: 489 | version "3.0.0" 490 | resolved "https://registry.yarnpkg.com/jsonc-parser/-/jsonc-parser-3.0.0.tgz#abdd785701c7e7eaca8a9ec8cf070ca51a745a22" 491 | integrity sha512-fQzRfAbIBnR0IQvftw9FJveWiHp72Fg20giDrHz6TdfB12UH/uue0D3hm57UB5KgAVuniLMCaS8P1IMj9NR7cA== 492 | 493 | jstransformer@1.0.0: 494 | version "1.0.0" 495 | resolved "https://registry.yarnpkg.com/jstransformer/-/jstransformer-1.0.0.tgz#ed8bf0921e2f3f1ed4d5c1a44f68709ed24722c3" 496 | integrity sha1-7Yvwkh4vPx7U1cGkT2hwntJHIsM= 497 | dependencies: 498 | is-promise "^2.0.0" 499 | promise "^7.0.1" 500 | 501 | lru-cache@^6.0.0: 502 | version "6.0.0" 503 | resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" 504 | integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== 505 | dependencies: 506 | yallist "^4.0.0" 507 | 508 | magic-string@^0.25.7: 509 | version "0.25.7" 510 | resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.7.tgz#3f497d6fd34c669c6798dcb821f2ef31f5445051" 511 | integrity sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA== 512 | dependencies: 513 | sourcemap-codec "^1.4.4" 514 | 515 | nanoid@^3.1.30: 516 | version "3.1.30" 517 | resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.1.30.tgz#63f93cc548d2a113dc5dfbc63bfa09e2b9b64362" 518 | integrity sha512-zJpuPDwOv8D2zq2WRoMe1HsfZthVewpel9CAvTfc/2mBD1uUT/agc5f7GHGWXlYkFvi1mVxe4IjvP2HNrop7nQ== 519 | 520 | object-assign@^4.1.1: 521 | version "4.1.1" 522 | resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" 523 | integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= 524 | 525 | path-parse@^1.0.6: 526 | version "1.0.7" 527 | resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" 528 | integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== 529 | 530 | picocolors@^1.0.0: 531 | version "1.0.0" 532 | resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" 533 | integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== 534 | 535 | postcss@^8.1.10, postcss@^8.3.8: 536 | version "8.4.1" 537 | resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.1.tgz#73051f825509ad1a716ef500108001bf3d1fa8f7" 538 | integrity sha512-WqLs/TTzXdG+/A4ZOOK9WDZiikrRaiA+eoEb/jz2DT9KUhMNHgP7yKPO8vwi62ZCsb703Gwb7BMZwDzI54Y2Ag== 539 | dependencies: 540 | nanoid "^3.1.30" 541 | picocolors "^1.0.0" 542 | source-map-js "^1.0.1" 543 | 544 | promise@^7.0.1: 545 | version "7.3.1" 546 | resolved "https://registry.yarnpkg.com/promise/-/promise-7.3.1.tgz#064b72602b18f90f29192b8b1bc418ffd1ebd3bf" 547 | integrity sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg== 548 | dependencies: 549 | asap "~2.0.3" 550 | 551 | pug-attrs@^3.0.0: 552 | version "3.0.0" 553 | resolved "https://registry.yarnpkg.com/pug-attrs/-/pug-attrs-3.0.0.tgz#b10451e0348165e31fad1cc23ebddd9dc7347c41" 554 | integrity sha512-azINV9dUtzPMFQktvTXciNAfAuVh/L/JCl0vtPCwvOA21uZrC08K/UnmrL+SXGEVc1FwzjW62+xw5S/uaLj6cA== 555 | dependencies: 556 | constantinople "^4.0.1" 557 | js-stringify "^1.0.2" 558 | pug-runtime "^3.0.0" 559 | 560 | pug-code-gen@^3.0.2: 561 | version "3.0.2" 562 | resolved "https://registry.yarnpkg.com/pug-code-gen/-/pug-code-gen-3.0.2.tgz#ad190f4943133bf186b60b80de483100e132e2ce" 563 | integrity sha512-nJMhW16MbiGRiyR4miDTQMRWDgKplnHyeLvioEJYbk1RsPI3FuA3saEP8uwnTb2nTJEKBU90NFVWJBk4OU5qyg== 564 | dependencies: 565 | constantinople "^4.0.1" 566 | doctypes "^1.1.0" 567 | js-stringify "^1.0.2" 568 | pug-attrs "^3.0.0" 569 | pug-error "^2.0.0" 570 | pug-runtime "^3.0.0" 571 | void-elements "^3.1.0" 572 | with "^7.0.0" 573 | 574 | pug-error@^2.0.0: 575 | version "2.0.0" 576 | resolved "https://registry.yarnpkg.com/pug-error/-/pug-error-2.0.0.tgz#5c62173cb09c34de2a2ce04f17b8adfec74d8ca5" 577 | integrity sha512-sjiUsi9M4RAGHktC1drQfCr5C5eriu24Lfbt4s+7SykztEOwVZtbFk1RRq0tzLxcMxMYTBR+zMQaG07J/btayQ== 578 | 579 | pug-filters@^4.0.0: 580 | version "4.0.0" 581 | resolved "https://registry.yarnpkg.com/pug-filters/-/pug-filters-4.0.0.tgz#d3e49af5ba8472e9b7a66d980e707ce9d2cc9b5e" 582 | integrity sha512-yeNFtq5Yxmfz0f9z2rMXGw/8/4i1cCFecw/Q7+D0V2DdtII5UvqE12VaZ2AY7ri6o5RNXiweGH79OCq+2RQU4A== 583 | dependencies: 584 | constantinople "^4.0.1" 585 | jstransformer "1.0.0" 586 | pug-error "^2.0.0" 587 | pug-walk "^2.0.0" 588 | resolve "^1.15.1" 589 | 590 | pug-lexer@^5.0.1: 591 | version "5.0.1" 592 | resolved "https://registry.yarnpkg.com/pug-lexer/-/pug-lexer-5.0.1.tgz#ae44628c5bef9b190b665683b288ca9024b8b0d5" 593 | integrity sha512-0I6C62+keXlZPZkOJeVam9aBLVP2EnbeDw3An+k0/QlqdwH6rv8284nko14Na7c0TtqtogfWXcRoFE4O4Ff20w== 594 | dependencies: 595 | character-parser "^2.2.0" 596 | is-expression "^4.0.0" 597 | pug-error "^2.0.0" 598 | 599 | pug-linker@^4.0.0: 600 | version "4.0.0" 601 | resolved "https://registry.yarnpkg.com/pug-linker/-/pug-linker-4.0.0.tgz#12cbc0594fc5a3e06b9fc59e6f93c146962a7708" 602 | integrity sha512-gjD1yzp0yxbQqnzBAdlhbgoJL5qIFJw78juN1NpTLt/mfPJ5VgC4BvkoD3G23qKzJtIIXBbcCt6FioLSFLOHdw== 603 | dependencies: 604 | pug-error "^2.0.0" 605 | pug-walk "^2.0.0" 606 | 607 | pug-load@^3.0.0: 608 | version "3.0.0" 609 | resolved "https://registry.yarnpkg.com/pug-load/-/pug-load-3.0.0.tgz#9fd9cda52202b08adb11d25681fb9f34bd41b662" 610 | integrity sha512-OCjTEnhLWZBvS4zni/WUMjH2YSUosnsmjGBB1An7CsKQarYSWQ0GCVyd4eQPMFJqZ8w9xgs01QdiZXKVjk92EQ== 611 | dependencies: 612 | object-assign "^4.1.1" 613 | pug-walk "^2.0.0" 614 | 615 | pug-parser@^6.0.0: 616 | version "6.0.0" 617 | resolved "https://registry.yarnpkg.com/pug-parser/-/pug-parser-6.0.0.tgz#a8fdc035863a95b2c1dc5ebf4ecf80b4e76a1260" 618 | integrity sha512-ukiYM/9cH6Cml+AOl5kETtM9NR3WulyVP2y4HOU45DyMim1IeP/OOiyEWRr6qk5I5klpsBnbuHpwKmTx6WURnw== 619 | dependencies: 620 | pug-error "^2.0.0" 621 | token-stream "1.0.0" 622 | 623 | pug-runtime@^3.0.0, pug-runtime@^3.0.1: 624 | version "3.0.1" 625 | resolved "https://registry.yarnpkg.com/pug-runtime/-/pug-runtime-3.0.1.tgz#f636976204723f35a8c5f6fad6acda2a191b83d7" 626 | integrity sha512-L50zbvrQ35TkpHwv0G6aLSuueDRwc/97XdY8kL3tOT0FmhgG7UypU3VztfV/LATAvmUfYi4wNxSajhSAeNN+Kg== 627 | 628 | pug-strip-comments@^2.0.0: 629 | version "2.0.0" 630 | resolved "https://registry.yarnpkg.com/pug-strip-comments/-/pug-strip-comments-2.0.0.tgz#f94b07fd6b495523330f490a7f554b4ff876303e" 631 | integrity sha512-zo8DsDpH7eTkPHCXFeAk1xZXJbyoTfdPlNR0bK7rpOMuhBYb0f5qUVCO1xlsitYd3w5FQTK7zpNVKb3rZoUrrQ== 632 | dependencies: 633 | pug-error "^2.0.0" 634 | 635 | pug-walk@^2.0.0: 636 | version "2.0.0" 637 | resolved "https://registry.yarnpkg.com/pug-walk/-/pug-walk-2.0.0.tgz#417aabc29232bb4499b5b5069a2b2d2a24d5f5fe" 638 | integrity sha512-yYELe9Q5q9IQhuvqsZNwA5hfPkMJ8u92bQLIMcsMxf/VADjNtEYptU+inlufAFYcWdHlwNfZOEnOOQrZrcyJCQ== 639 | 640 | pug@^3.0.2: 641 | version "3.0.2" 642 | resolved "https://registry.yarnpkg.com/pug/-/pug-3.0.2.tgz#f35c7107343454e43bc27ae0ff76c731b78ea535" 643 | integrity sha512-bp0I/hiK1D1vChHh6EfDxtndHji55XP/ZJKwsRqrz6lRia6ZC2OZbdAymlxdVFwd1L70ebrVJw4/eZ79skrIaw== 644 | dependencies: 645 | pug-code-gen "^3.0.2" 646 | pug-filters "^4.0.0" 647 | pug-lexer "^5.0.1" 648 | pug-linker "^4.0.0" 649 | pug-load "^3.0.0" 650 | pug-parser "^6.0.0" 651 | pug-runtime "^3.0.1" 652 | pug-strip-comments "^2.0.0" 653 | 654 | request-light@^0.5.4: 655 | version "0.5.5" 656 | resolved "https://registry.yarnpkg.com/request-light/-/request-light-0.5.5.tgz#254ab0b38a1db2192170b599b05181934e14932b" 657 | integrity sha512-AvjfJuhyT6dYfhtIBF+IpTPQco+Td1QJ6PsIJ5xui110vQ5p9HxHk+m1XJqXazLQT6CxxSx9eNv6R/+fu4bZig== 658 | 659 | resolve@^1.15.1, resolve@^1.20.0: 660 | version "1.20.0" 661 | resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.20.0.tgz#629a013fb3f70755d6f0b7935cc1c2c5378b1975" 662 | integrity sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A== 663 | dependencies: 664 | is-core-module "^2.2.0" 665 | path-parse "^1.0.6" 666 | 667 | rollup@^2.57.0: 668 | version "2.60.1" 669 | resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.60.1.tgz#4b34cd247f09b421f10a3c9286eda2ecf9972079" 670 | integrity sha512-akwfnpjY0rXEDSn1UTVfKXJhPsEBu+imi1gqBA1ZkHGydUnkV/fWCC90P7rDaLEW8KTwBcS1G3N4893Ndz+jwg== 671 | optionalDependencies: 672 | fsevents "~2.3.2" 673 | 674 | semver@^7.3.5: 675 | version "7.3.5" 676 | resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7" 677 | integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ== 678 | dependencies: 679 | lru-cache "^6.0.0" 680 | 681 | source-map-js@^1.0.1: 682 | version "1.0.1" 683 | resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.1.tgz#a1741c131e3c77d048252adfa24e23b908670caf" 684 | integrity sha512-4+TN2b3tqOCd/kaGRJ/sTYA0tR0mdXx26ipdolxcwtJVqEnqNYvlCAt1q3ypy4QMlYus+Zh34RNtYLoq2oQ4IA== 685 | 686 | source-map@^0.6.1: 687 | version "0.6.1" 688 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" 689 | integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== 690 | 691 | sourcemap-codec@^1.4.4: 692 | version "1.4.8" 693 | resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4" 694 | integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA== 695 | 696 | to-fast-properties@^2.0.0: 697 | version "2.0.0" 698 | resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" 699 | integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4= 700 | 701 | token-stream@1.0.0: 702 | version "1.0.0" 703 | resolved "https://registry.yarnpkg.com/token-stream/-/token-stream-1.0.0.tgz#cc200eab2613f4166d27ff9afc7ca56d49df6eb4" 704 | integrity sha1-zCAOqyYT9BZtJ/+a/HylbUnfbrQ= 705 | 706 | typescript@^4.4.3: 707 | version "4.5.2" 708 | resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.5.2.tgz#8ac1fba9f52256fdb06fb89e4122fa6a346c2998" 709 | integrity sha512-5BlMof9H1yGt0P8/WF+wPNw6GfctgGjXp5hkblpyT+8rkASSmkUKMXrxR0Xg8ThVCi/JnHQiKXeBaEwCeQwMFw== 710 | 711 | upath@^2.0.1: 712 | version "2.0.1" 713 | resolved "https://registry.yarnpkg.com/upath/-/upath-2.0.1.tgz#50c73dea68d6f6b990f51d279ce6081665d61a8b" 714 | integrity sha512-1uEe95xksV1O0CYKXo8vQvN1JEbtJp7lb7C5U9HMsIp6IVwntkH/oNUzyVNQSd4S1sYk2FpSSW44FqMc8qee5w== 715 | 716 | vite@^2.6.4: 717 | version "2.6.14" 718 | resolved "https://registry.yarnpkg.com/vite/-/vite-2.6.14.tgz#35c09a15e4df823410819a2a239ab11efb186271" 719 | integrity sha512-2HA9xGyi+EhY2MXo0+A2dRsqsAG3eFNEVIo12olkWhOmc8LfiM+eMdrXf+Ruje9gdXgvSqjLI9freec1RUM5EA== 720 | dependencies: 721 | esbuild "^0.13.2" 722 | postcss "^8.3.8" 723 | resolve "^1.20.0" 724 | rollup "^2.57.0" 725 | optionalDependencies: 726 | fsevents "~2.3.2" 727 | 728 | void-elements@^3.1.0: 729 | version "3.1.0" 730 | resolved "https://registry.yarnpkg.com/void-elements/-/void-elements-3.1.0.tgz#614f7fbf8d801f0bb5f0661f5b2f5785750e4f09" 731 | integrity sha1-YU9/v42AHwu18GYfWy9XhXUOTwk= 732 | 733 | vscode-css-languageservice@^5.1.4: 734 | version "5.1.8" 735 | resolved "https://registry.yarnpkg.com/vscode-css-languageservice/-/vscode-css-languageservice-5.1.8.tgz#36cb389788ffc2d5e6630ffc84e55ee38f8a2338" 736 | integrity sha512-Si1sMykS8U/p8LYgLGPCfZD1YFT0AtvUJQp9XJGw64DZWhtwYo28G2l64USLS9ge4ZPMZpwdpOK7PfbVKfgiiA== 737 | dependencies: 738 | vscode-languageserver-textdocument "^1.0.1" 739 | vscode-languageserver-types "^3.16.0" 740 | vscode-nls "^5.0.0" 741 | vscode-uri "^3.0.2" 742 | 743 | vscode-html-languageservice@^4.0.7: 744 | version "4.1.1" 745 | resolved "https://registry.yarnpkg.com/vscode-html-languageservice/-/vscode-html-languageservice-4.1.1.tgz#93739c9f3d0c12c8249bad23f5005850c289ec38" 746 | integrity sha512-rrDyCiOgMwOPgchpPGAeLzjYVVEW/Ror2/a1BWUEI3S9+NQhA9vj4SQkzmH6g2Bq9S9SV0OQeadD+xphOf1N3w== 747 | dependencies: 748 | vscode-languageserver-textdocument "^1.0.1" 749 | vscode-languageserver-types "^3.16.0" 750 | vscode-nls "^5.0.0" 751 | vscode-uri "^3.0.2" 752 | 753 | vscode-json-languageservice@^4.1.7: 754 | version "4.1.10" 755 | resolved "https://registry.yarnpkg.com/vscode-json-languageservice/-/vscode-json-languageservice-4.1.10.tgz#5d5729fc4f3e02f41599e0104523a1877c25f0fb" 756 | integrity sha512-IHliMEEYSY0tJjJt0ECb8ESx/nRXpoy9kN42WVQXgaqGyizFAf3jibSiezDQTrrY7f3kywXggCU+kkJEM+OLZQ== 757 | dependencies: 758 | jsonc-parser "^3.0.0" 759 | vscode-languageserver-textdocument "^1.0.1" 760 | vscode-languageserver-types "^3.16.0" 761 | vscode-nls "^5.0.0" 762 | vscode-uri "^3.0.2" 763 | 764 | vscode-jsonrpc@8.0.0-next.4, vscode-jsonrpc@^8.0.0-next.2: 765 | version "8.0.0-next.4" 766 | resolved "https://registry.yarnpkg.com/vscode-jsonrpc/-/vscode-jsonrpc-8.0.0-next.4.tgz#c0da5e3536c0862e8189b1678a3a7c4900e6ecbd" 767 | integrity sha512-i+wvza5Wd0YV/t9qhnS8I+dJdhJ1fHIhRW4f262rXXM9Mgts5VZhYrRZufGcai4y99RlbZvwaZhplQ6diRXkaA== 768 | 769 | vscode-languageserver-protocol@3.17.0-next.11: 770 | version "3.17.0-next.11" 771 | resolved "https://registry.yarnpkg.com/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.17.0-next.11.tgz#0f2b2bc0d28026422340e4571373e018598e2e16" 772 | integrity sha512-9FqHT7XvM6tWFsnLvRfuQA7Zh7wZZYAwA9dK85lYthA8M1aXpXEP9drXVvO/Fe03MUeJpKVf2e4/NvDaFUnttg== 773 | dependencies: 774 | vscode-jsonrpc "8.0.0-next.4" 775 | vscode-languageserver-types "3.17.0-next.5" 776 | 777 | vscode-languageserver-textdocument@^1.0.1: 778 | version "1.0.3" 779 | resolved "https://registry.yarnpkg.com/vscode-languageserver-textdocument/-/vscode-languageserver-textdocument-1.0.3.tgz#879f2649bfa5a6e07bc8b392c23ede2dfbf43eff" 780 | integrity sha512-ynEGytvgTb6HVSUwPJIAZgiHQmPCx8bZ8w5um5Lz+q5DjP0Zj8wTFhQpyg8xaMvefDytw2+HH5yzqS+FhsR28A== 781 | 782 | vscode-languageserver-types@3.17.0-next.5: 783 | version "3.17.0-next.5" 784 | resolved "https://registry.yarnpkg.com/vscode-languageserver-types/-/vscode-languageserver-types-3.17.0-next.5.tgz#0d176d39d215d55bffc9195112fb2b6d81ff5fbb" 785 | integrity sha512-Zcfaw8BznhlJWB09LDR0dscXyxn9+liREqJnPF4pigeUCHwKxYapYqizwuCpMHQ/oLYiAvKwU+f28hPleYu7pA== 786 | 787 | vscode-languageserver-types@^3.15.1, vscode-languageserver-types@^3.16.0: 788 | version "3.16.0" 789 | resolved "https://registry.yarnpkg.com/vscode-languageserver-types/-/vscode-languageserver-types-3.16.0.tgz#ecf393fc121ec6974b2da3efb3155644c514e247" 790 | integrity sha512-k8luDIWJWyenLc5ToFQQMaSrqCHiLwyKPHKPQZ5zz21vM+vIVUSvsRpcbiECH4WR88K2XZqc4ScRcZ7nk/jbeA== 791 | 792 | vscode-languageserver@^8.0.0-next.2: 793 | version "8.0.0-next.5" 794 | resolved "https://registry.yarnpkg.com/vscode-languageserver/-/vscode-languageserver-8.0.0-next.5.tgz#99f7f25dd658a1f000219f62c29ae557858f850c" 795 | integrity sha512-3E2W0eWtGKb6QAJqspOnD0thrBRRo8IGUMV5jpDNMcMKvmtkcxMwsBh0VxdvuWaZ51PiNyR4L+B+GUvkYsyFEg== 796 | dependencies: 797 | vscode-languageserver-protocol "3.17.0-next.11" 798 | 799 | vscode-nls@^5.0.0: 800 | version "5.0.0" 801 | resolved "https://registry.yarnpkg.com/vscode-nls/-/vscode-nls-5.0.0.tgz#99f0da0bd9ea7cda44e565a74c54b1f2bc257840" 802 | integrity sha512-u0Lw+IYlgbEJFF6/qAqG2d1jQmJl0eyAGJHoAJqr2HT4M2BNuQYSEiSE75f52pXHSJm8AlTjnLLbBFPrdz2hpA== 803 | 804 | vscode-pug-languageservice@^0.27.24: 805 | version "0.27.24" 806 | resolved "https://registry.yarnpkg.com/vscode-pug-languageservice/-/vscode-pug-languageservice-0.27.24.tgz#fa805c4d3e33dee3681e660a0767136738e68370" 807 | integrity sha512-GSvsFB+rPhAD7cBlEKCVNNsFGIaOnp/0zyLw3WpYbXY24vJZafXu1kHvtYaaQXJRnIhqp5EI5p+EqpdI3hTBnw== 808 | dependencies: 809 | "@volar/code-gen" "^0.27.24" 810 | "@volar/shared" "^0.27.24" 811 | "@volar/source-map" "^0.27.24" 812 | "@volar/transforms" "^0.27.24" 813 | pug-lexer "^5.0.1" 814 | pug-parser "^6.0.0" 815 | vscode-languageserver "^8.0.0-next.2" 816 | 817 | vscode-typescript-languageservice@^0.27.25: 818 | version "0.27.25" 819 | resolved "https://registry.yarnpkg.com/vscode-typescript-languageservice/-/vscode-typescript-languageservice-0.27.25.tgz#acd211723b600108c25515388b75d55ce15bb056" 820 | integrity sha512-nxpJI9MnF2rn5rKL/032Qrsq3T9DgM3slK5fwZp3suNdo90JG2zFTs3Ola8n62k7+KWu4A775obxyb4wLIW6Gw== 821 | dependencies: 822 | "@volar/shared" "^0.27.24" 823 | semver "^7.3.5" 824 | upath "^2.0.1" 825 | vscode-languageserver "^8.0.0-next.2" 826 | vscode-languageserver-textdocument "^1.0.1" 827 | 828 | vscode-uri@^2.1.2: 829 | version "2.1.2" 830 | resolved "https://registry.yarnpkg.com/vscode-uri/-/vscode-uri-2.1.2.tgz#c8d40de93eb57af31f3c715dd650e2ca2c096f1c" 831 | integrity sha512-8TEXQxlldWAuIODdukIb+TR5s+9Ds40eSJrw+1iDDA9IFORPjMELarNQE3myz5XIkWWpdprmJjm1/SxMlWOC8A== 832 | 833 | vscode-uri@^3.0.2: 834 | version "3.0.2" 835 | resolved "https://registry.yarnpkg.com/vscode-uri/-/vscode-uri-3.0.2.tgz#ecfd1d066cb8ef4c3a208decdbab9a8c23d055d0" 836 | integrity sha512-jkjy6pjU1fxUvI51P+gCsxg1u2n8LSt0W6KrCNQceaziKzff74GoWmjVG46KieVzybO1sttPQmYfrwSHey7GUA== 837 | 838 | vscode-vue-languageservice@^0.27.0: 839 | version "0.27.30" 840 | resolved "https://registry.yarnpkg.com/vscode-vue-languageservice/-/vscode-vue-languageservice-0.27.30.tgz#1f32b0203dd233582f74a457428519a6318f039e" 841 | integrity sha512-nPnUNCMqqHfxcCPLyLWvmgbNCgos3SwvPcl/CzAnMbqcjLtNZppsdI7bKX3EEj0Jbg6SGLQ9NanIvZaMI1bsUA== 842 | dependencies: 843 | "@volar/code-gen" "^0.27.24" 844 | "@volar/html2pug" "^0.27.13" 845 | "@volar/shared" "^0.27.24" 846 | "@volar/source-map" "^0.27.24" 847 | "@volar/transforms" "^0.27.24" 848 | "@vscode/emmet-helper" "^2.7.0" 849 | "@vue/compiler-dom" "^3.2.19" 850 | "@vue/reactivity" "^3.2.19" 851 | "@vue/shared" "^3.2.19" 852 | request-light "^0.5.4" 853 | upath "^2.0.1" 854 | vscode-css-languageservice "^5.1.4" 855 | vscode-html-languageservice "^4.0.7" 856 | vscode-json-languageservice "^4.1.7" 857 | vscode-languageserver "^8.0.0-next.2" 858 | vscode-languageserver-textdocument "^1.0.1" 859 | vscode-pug-languageservice "^0.27.24" 860 | vscode-typescript-languageservice "^0.27.25" 861 | 862 | vue-tsc@^0.3.0: 863 | version "0.3.0" 864 | resolved "https://registry.yarnpkg.com/vue-tsc/-/vue-tsc-0.3.0.tgz#3b3872bf4f1d2e4409b57adbd826032e253db406" 865 | integrity sha512-zaDRZBxwRIz1XjhNP92FqugG71st6BUMnA2EwPeXrAyzbEYVRz6TezNFceYl3QYqqN8CtaxbqUhaQEDj/ntoCA== 866 | dependencies: 867 | vscode-vue-languageservice "^0.27.0" 868 | 869 | vue@^3.2.16: 870 | version "3.2.22" 871 | resolved "https://registry.yarnpkg.com/vue/-/vue-3.2.22.tgz#46e4dd89e98cc4b851ae1eb35f00ced413a34bb7" 872 | integrity sha512-KD5nZpXVZquOC6926Xnp3zOvswrUyO9Rya7ZUoxWFQEjFDW4iACtwzubRB4Um2Om9kj6CaJOqAVRDSFlqLpdgw== 873 | dependencies: 874 | "@vue/compiler-dom" "3.2.22" 875 | "@vue/compiler-sfc" "3.2.22" 876 | "@vue/runtime-dom" "3.2.22" 877 | "@vue/server-renderer" "3.2.22" 878 | "@vue/shared" "3.2.22" 879 | 880 | with@^7.0.0: 881 | version "7.0.2" 882 | resolved "https://registry.yarnpkg.com/with/-/with-7.0.2.tgz#ccee3ad542d25538a7a7a80aad212b9828495bac" 883 | integrity sha512-RNGKj82nUPg3g5ygxkQl0R937xLyho1J24ItRCBTr/m1YnZkzJy1hUiHUJrc/VlsDQzsCnInEGSg3bci0Lmd4w== 884 | dependencies: 885 | "@babel/parser" "^7.9.6" 886 | "@babel/types" "^7.9.6" 887 | assert-never "^1.2.1" 888 | babel-walk "3.0.0-canary-5" 889 | 890 | yallist@^4.0.0: 891 | version "4.0.0" 892 | resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" 893 | integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== 894 | -------------------------------------------------------------------------------- /web/.gitignore: -------------------------------------------------------------------------------- 1 | /node_modules/ 2 | /dist/ 3 | /.vscode/ 4 | .DS_Store 5 | -------------------------------------------------------------------------------- /web/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 | [VSCode](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 | `vite dev` and `vite build` wouldn't work in a SvelteKit environment, for example. 20 | 21 | 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. 22 | 23 | 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. 24 | 25 | **Why `global.d.ts` instead of `compilerOptions.types` inside `jsconfig.json` or `tsconfig.json`?** 26 | 27 | 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. 28 | 29 | **Why include `.vscode/extensions.json`?** 30 | 31 | 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. 32 | 33 | **Why enable `allowJs` in the TS template?** 34 | 35 | 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. 36 | 37 | **Why is HMR not preserving my local component state?** 38 | 39 | 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). 40 | 41 | If you have state that's important to retain within a component, consider creating an external store which would not be replaced by HMR. 42 | 43 | ```ts 44 | // store.ts 45 | // An extremely simple external store 46 | import { writable } from 'svelte/store' 47 | export default writable(0) 48 | ``` 49 | -------------------------------------------------------------------------------- /web/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Svelte + TS + Vite App 8 | 9 | 10 |
11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /web/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "web", 3 | "version": "0.0.0", 4 | "type": "module", 5 | "scripts": { 6 | "dev": "vite", 7 | "build": "vite build", 8 | "serve": "vite preview", 9 | "check": "svelte-check --tsconfig ./tsconfig.json", 10 | "codegen": "cd ../api && dotnet build && cd ../web && yarn openapi --input references/swagger.json --output references/codegen --client axios --postfix Service --useOptions --useUnionTypes" 11 | }, 12 | "devDependencies": { 13 | "openapi-typescript-codegen": "^0.12.3", 14 | "@sveltejs/vite-plugin-svelte": "^1.0.0-next.11", 15 | "@tsconfig/svelte": "^2.0.1", 16 | "svelte": "^3.37.0", 17 | "svelte-check": "^2.1.0", 18 | "svelte-preprocess": "^4.7.2", 19 | "tslib": "^2.2.0", 20 | "typescript": "^4.3.2", 21 | "vite": "^2.6.4" 22 | } 23 | } -------------------------------------------------------------------------------- /web/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CharlieDigital/dotnet6-openapi/988e9b74a4751a4ca685f255456f0760b8081fb7/web/public/favicon.ico -------------------------------------------------------------------------------- /web/references/codegen/.gitkeep: -------------------------------------------------------------------------------- 1 | keep_me -------------------------------------------------------------------------------- /web/references/codegen/core/ApiError.ts: -------------------------------------------------------------------------------- 1 | /* istanbul ignore file */ 2 | /* tslint:disable */ 3 | /* eslint-disable */ 4 | import type { ApiResult } from './ApiResult'; 5 | 6 | export class ApiError extends Error { 7 | public readonly url: string; 8 | public readonly status: number; 9 | public readonly statusText: string; 10 | public readonly body: any; 11 | 12 | constructor(response: ApiResult, message: string) { 13 | super(message); 14 | 15 | this.name = 'ApiError'; 16 | this.url = response.url; 17 | this.status = response.status; 18 | this.statusText = response.statusText; 19 | this.body = response.body; 20 | } 21 | } -------------------------------------------------------------------------------- /web/references/codegen/core/ApiRequestOptions.ts: -------------------------------------------------------------------------------- 1 | /* istanbul ignore file */ 2 | /* tslint:disable */ 3 | /* eslint-disable */ 4 | export type ApiRequestOptions = { 5 | readonly method: 'GET' | 'PUT' | 'POST' | 'DELETE' | 'OPTIONS' | 'HEAD' | 'PATCH'; 6 | readonly path: string; 7 | readonly cookies?: Record; 8 | readonly headers?: Record; 9 | readonly query?: Record; 10 | readonly formData?: Record; 11 | readonly body?: any; 12 | readonly mediaType?: string; 13 | readonly responseHeader?: string; 14 | readonly errors?: Record; 15 | } -------------------------------------------------------------------------------- /web/references/codegen/core/ApiResult.ts: -------------------------------------------------------------------------------- 1 | /* istanbul ignore file */ 2 | /* tslint:disable */ 3 | /* eslint-disable */ 4 | export type ApiResult = { 5 | readonly url: string; 6 | readonly ok: boolean; 7 | readonly status: number; 8 | readonly statusText: string; 9 | readonly body: any; 10 | } -------------------------------------------------------------------------------- /web/references/codegen/core/CancelablePromise.ts: -------------------------------------------------------------------------------- 1 | /* istanbul ignore file */ 2 | /* tslint:disable */ 3 | /* eslint-disable */ 4 | export class CancelError extends Error { 5 | 6 | constructor(reason: string = 'Promise was canceled') { 7 | super(reason); 8 | this.name = 'CancelError'; 9 | } 10 | 11 | public get isCancelled(): boolean { 12 | return true; 13 | } 14 | } 15 | 16 | export interface OnCancel { 17 | readonly isPending: boolean; 18 | readonly isCancelled: boolean; 19 | 20 | (cancelHandler: () => void): void; 21 | } 22 | 23 | export class CancelablePromise implements Promise { 24 | readonly [Symbol.toStringTag]: string; 25 | 26 | #isPending: boolean; 27 | #isCancelled: boolean; 28 | readonly #cancelHandlers: (() => void)[]; 29 | readonly #promise: Promise; 30 | #resolve?: (value: T | PromiseLike) => void; 31 | #reject?: (reason?: any) => void; 32 | 33 | constructor( 34 | executor: ( 35 | resolve: (value: T | PromiseLike) => void, 36 | reject: (reason?: any) => void, 37 | onCancel: OnCancel 38 | ) => void 39 | ) { 40 | this.#isPending = true; 41 | this.#isCancelled = false; 42 | this.#cancelHandlers = []; 43 | this.#promise = new Promise((resolve, reject) => { 44 | this.#resolve = resolve; 45 | this.#reject = reject; 46 | 47 | const onResolve = (value: T | PromiseLike): void => { 48 | if (!this.#isCancelled) { 49 | this.#isPending = false; 50 | this.#resolve?.(value); 51 | } 52 | }; 53 | 54 | const onReject = (reason?: any): void => { 55 | this.#isPending = false; 56 | this.#reject?.(reason); 57 | }; 58 | 59 | const onCancel = (cancelHandler: () => void): void => { 60 | if (this.#isPending) { 61 | this.#cancelHandlers.push(cancelHandler); 62 | } 63 | }; 64 | 65 | Object.defineProperty(onCancel, 'isPending', { 66 | get: (): boolean => this.#isPending, 67 | }); 68 | 69 | Object.defineProperty(onCancel, 'isCancelled', { 70 | get: (): boolean => this.#isCancelled, 71 | }); 72 | 73 | return executor(onResolve, onReject, onCancel as OnCancel); 74 | }); 75 | } 76 | 77 | public then( 78 | onFulfilled?: ((value: T) => TResult1 | PromiseLike) | null, 79 | onRejected?: ((reason: any) => TResult2 | PromiseLike) | null 80 | ): Promise { 81 | return this.#promise.then(onFulfilled, onRejected); 82 | } 83 | 84 | public catch( 85 | onRejected?: ((reason: any) => TResult | PromiseLike) | null 86 | ): Promise { 87 | return this.#promise.catch(onRejected); 88 | } 89 | 90 | public finally(onFinally?: (() => void) | null): Promise { 91 | return this.#promise.finally(onFinally); 92 | } 93 | 94 | public cancel(): void { 95 | if (!this.#isPending || this.#isCancelled) { 96 | return; 97 | } 98 | this.#isCancelled = true; 99 | if (this.#cancelHandlers.length) { 100 | try { 101 | for (const cancelHandler of this.#cancelHandlers) { 102 | cancelHandler(); 103 | } 104 | } catch (error) { 105 | this.#reject?.(error); 106 | return; 107 | } 108 | } 109 | } 110 | 111 | public get isCancelled(): boolean { 112 | return this.#isCancelled; 113 | } 114 | } -------------------------------------------------------------------------------- /web/references/codegen/core/OpenAPI.ts: -------------------------------------------------------------------------------- 1 | /* istanbul ignore file */ 2 | /* tslint:disable */ 3 | /* eslint-disable */ 4 | import type { ApiRequestOptions } from './ApiRequestOptions'; 5 | 6 | type Resolver = (options: ApiRequestOptions) => Promise; 7 | type Headers = Record; 8 | 9 | type Config = { 10 | BASE: string; 11 | VERSION: string; 12 | WITH_CREDENTIALS: boolean; 13 | CREDENTIALS: 'include' | 'omit' | 'same-origin'; 14 | TOKEN?: string | Resolver; 15 | USERNAME?: string | Resolver; 16 | PASSWORD?: string | Resolver; 17 | HEADERS?: Headers | Resolver; 18 | ENCODE_PATH?: (path: string) => string; 19 | } 20 | 21 | export const OpenAPI: Config = { 22 | BASE: '', 23 | VERSION: '1.0', 24 | WITH_CREDENTIALS: false, 25 | CREDENTIALS: 'include', 26 | TOKEN: undefined, 27 | USERNAME: undefined, 28 | PASSWORD: undefined, 29 | HEADERS: undefined, 30 | ENCODE_PATH: undefined, 31 | }; -------------------------------------------------------------------------------- /web/references/codegen/core/request.ts: -------------------------------------------------------------------------------- 1 | /* istanbul ignore file */ 2 | /* tslint:disable */ 3 | /* eslint-disable */ 4 | import axios, { AxiosError, AxiosRequestConfig, AxiosResponse } from 'axios'; 5 | import Blob from 'cross-blob' 6 | import FormData from 'form-data'; 7 | 8 | import { ApiError } from './ApiError'; 9 | import type { ApiRequestOptions } from './ApiRequestOptions'; 10 | import type { ApiResult } from './ApiResult'; 11 | import { CancelablePromise } from './CancelablePromise'; 12 | import type { OnCancel } from './CancelablePromise'; 13 | import { OpenAPI } from './OpenAPI'; 14 | 15 | function isDefined(value: T | null | undefined): value is Exclude { 16 | return value !== undefined && value !== null; 17 | } 18 | 19 | function isString(value: any): value is string { 20 | return typeof value === 'string'; 21 | } 22 | 23 | function isStringWithValue(value: any): value is string { 24 | return isString(value) && value !== ''; 25 | } 26 | 27 | function isBlob(value: any): value is Blob { 28 | return value instanceof Blob; 29 | } 30 | 31 | function isSuccess(status: number): boolean { 32 | return status >= 200 && status < 300; 33 | } 34 | 35 | function base64(str: string): string { 36 | try { 37 | return btoa(str); 38 | } catch (err) { 39 | return Buffer.from(str).toString('base64'); 40 | } 41 | } 42 | 43 | function getQueryString(params: Record): string { 44 | const qs: string[] = []; 45 | 46 | Object.keys(params).forEach(key => { 47 | const value = params[key]; 48 | if (isDefined(value)) { 49 | if (Array.isArray(value)) { 50 | value.forEach(value => { 51 | qs.push(`${encodeURIComponent(key)}=${encodeURIComponent(String(value))}`); 52 | }); 53 | } else { 54 | qs.push(`${encodeURIComponent(key)}=${encodeURIComponent(String(value))}`); 55 | } 56 | } 57 | }); 58 | 59 | if (qs.length > 0) { 60 | return `?${qs.join('&')}`; 61 | } 62 | 63 | return ''; 64 | } 65 | 66 | function getUrl(options: ApiRequestOptions): string { 67 | const path = OpenAPI.ENCODE_PATH ? OpenAPI.ENCODE_PATH(options.path) : options.path; 68 | const url = `${OpenAPI.BASE}${path}`; 69 | if (options.query) { 70 | return `${url}${getQueryString(options.query)}`; 71 | } 72 | 73 | return url; 74 | } 75 | 76 | function getFormData(options: ApiRequestOptions): FormData | undefined { 77 | if (options.formData) { 78 | const formData = new FormData(); 79 | 80 | Object.entries(options.formData) 81 | .filter(([_, value]) => isDefined(value)) 82 | .forEach(([key, value]) => { 83 | if (isString(value) || isBlob(value)) { 84 | formData.append(key, value); 85 | } else { 86 | formData.append(key, JSON.stringify(value)); 87 | } 88 | }); 89 | 90 | return formData; 91 | } 92 | return; 93 | } 94 | 95 | type Resolver = (options: ApiRequestOptions) => Promise; 96 | 97 | async function resolve(options: ApiRequestOptions, resolver?: T | Resolver): Promise { 98 | if (typeof resolver === 'function') { 99 | return (resolver as Resolver)(options); 100 | } 101 | return resolver; 102 | } 103 | 104 | async function getHeaders(options: ApiRequestOptions, formData?: FormData): Promise> { 105 | const token = await resolve(options, OpenAPI.TOKEN); 106 | const username = await resolve(options, OpenAPI.USERNAME); 107 | const password = await resolve(options, OpenAPI.PASSWORD); 108 | const additionalHeaders = await resolve(options, OpenAPI.HEADERS); 109 | const formHeaders = typeof formData?.getHeaders === 'function' && formData?.getHeaders() || {} 110 | 111 | const headers = Object.entries({ 112 | Accept: 'application/json', 113 | ...additionalHeaders, 114 | ...options.headers, 115 | ...formHeaders, 116 | }) 117 | .filter(([_, value]) => isDefined(value)) 118 | .reduce((headers, [key, value]) => ({ 119 | ...headers, 120 | [key]: String(value), 121 | }), {} as Record); 122 | 123 | if (isStringWithValue(token)) { 124 | headers['Authorization'] = `Bearer ${token}`; 125 | } 126 | 127 | if (isStringWithValue(username) && isStringWithValue(password)) { 128 | const credentials = base64(`${username}:${password}`); 129 | headers['Authorization'] = `Basic ${credentials}`; 130 | } 131 | 132 | return headers; 133 | } 134 | 135 | function getRequestBody(options: ApiRequestOptions): any { 136 | if (options.body) { 137 | return options.body; 138 | } 139 | return; 140 | } 141 | 142 | async function sendRequest( 143 | options: ApiRequestOptions, 144 | url: string, 145 | formData: FormData | undefined, 146 | body: any, 147 | headers: Record, 148 | onCancel: OnCancel 149 | ): Promise> { 150 | const source = axios.CancelToken.source(); 151 | 152 | const config: AxiosRequestConfig = { 153 | url, 154 | headers, 155 | data: body || formData, 156 | method: options.method, 157 | withCredentials: OpenAPI.WITH_CREDENTIALS, 158 | cancelToken: source.token, 159 | }; 160 | 161 | onCancel(() => source.cancel('The user aborted a request.')); 162 | 163 | try { 164 | return await axios.request(config); 165 | } catch (error) { 166 | const axiosError = error as AxiosError; 167 | if (axiosError.response) { 168 | return axiosError.response; 169 | } 170 | throw error; 171 | } 172 | } 173 | 174 | function getResponseHeader(response: AxiosResponse, responseHeader?: string): string | undefined { 175 | if (responseHeader) { 176 | const content = response.headers[responseHeader]; 177 | if (isString(content)) { 178 | return content; 179 | } 180 | } 181 | return; 182 | } 183 | 184 | function getResponseBody(response: AxiosResponse): any { 185 | if (response.status !== 204) { 186 | return response.data; 187 | } 188 | return; 189 | } 190 | 191 | function catchErrors(options: ApiRequestOptions, result: ApiResult): void { 192 | const errors: Record = { 193 | 400: 'Bad Request', 194 | 401: 'Unauthorized', 195 | 403: 'Forbidden', 196 | 404: 'Not Found', 197 | 500: 'Internal Server Error', 198 | 502: 'Bad Gateway', 199 | 503: 'Service Unavailable', 200 | ...options.errors, 201 | } 202 | 203 | const error = errors[result.status]; 204 | if (error) { 205 | throw new ApiError(result, error); 206 | } 207 | 208 | if (!result.ok) { 209 | throw new ApiError(result, 'Generic Error'); 210 | } 211 | } 212 | 213 | /** 214 | * Request using axios client 215 | * @param options The request options from the the service 216 | * @returns CancelablePromise 217 | * @throws ApiError 218 | */ 219 | export function request(options: ApiRequestOptions): CancelablePromise { 220 | return new CancelablePromise(async (resolve, reject, onCancel) => { 221 | try { 222 | const url = getUrl(options); 223 | const formData = getFormData(options); 224 | const body = getRequestBody(options); 225 | const headers = await getHeaders(options, formData); 226 | 227 | if (!onCancel.isCancelled) { 228 | const response = await sendRequest(options, url, formData, body, headers, onCancel); 229 | const responseBody = getResponseBody(response); 230 | const responseHeader = getResponseHeader(response, options.responseHeader); 231 | 232 | const result: ApiResult = { 233 | url, 234 | ok: isSuccess(response.status), 235 | status: response.status, 236 | statusText: response.statusText, 237 | body: responseHeader || responseBody, 238 | }; 239 | 240 | catchErrors(options, result); 241 | 242 | resolve(result.body); 243 | } 244 | } catch (error) { 245 | reject(error); 246 | } 247 | }); 248 | } -------------------------------------------------------------------------------- /web/references/codegen/index.ts: -------------------------------------------------------------------------------- 1 | /* istanbul ignore file */ 2 | /* tslint:disable */ 3 | /* eslint-disable */ 4 | export { ApiError } from './core/ApiError'; 5 | export { CancelablePromise } from './core/CancelablePromise'; 6 | export { OpenAPI } from './core/OpenAPI'; 7 | 8 | export type { WeatherForecast } from './models/WeatherForecast'; 9 | 10 | export { WeatherForecastService } from './services/WeatherForecastService'; 11 | -------------------------------------------------------------------------------- /web/references/codegen/models/WeatherForecast.ts: -------------------------------------------------------------------------------- 1 | /* istanbul ignore file */ 2 | /* tslint:disable */ 3 | /* eslint-disable */ 4 | 5 | export type WeatherForecast = { 6 | date?: string; 7 | temperatureC?: number; 8 | readonly temperatureF?: number; 9 | summary?: string | null; 10 | } -------------------------------------------------------------------------------- /web/references/codegen/services/WeatherForecastService.ts: -------------------------------------------------------------------------------- 1 | /* istanbul ignore file */ 2 | /* tslint:disable */ 3 | /* eslint-disable */ 4 | import type { WeatherForecast } from '../models/WeatherForecast'; 5 | import type { CancelablePromise } from '../core/CancelablePromise'; 6 | import { request as __request } from '../core/request'; 7 | 8 | export class WeatherForecastService { 9 | 10 | /** 11 | * @returns WeatherForecast Success 12 | * @throws ApiError 13 | */ 14 | public static getWeatherForecast(): CancelablePromise> { 15 | return __request({ 16 | method: 'GET', 17 | path: `/WeatherForecast`, 18 | }); 19 | } 20 | 21 | } -------------------------------------------------------------------------------- /web/references/swagger.json: -------------------------------------------------------------------------------- 1 | { 2 | "openapi": "3.0.1", 3 | "info": { 4 | "title": "api, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null", 5 | "version": "1.0" 6 | }, 7 | "paths": { 8 | "/WeatherForecast": { 9 | "get": { 10 | "tags": [ 11 | "WeatherForecast" 12 | ], 13 | "operationId": "GetWeatherForecast", 14 | "responses": { 15 | "200": { 16 | "description": "Success", 17 | "content": { 18 | "text/plain": { 19 | "schema": { 20 | "type": "array", 21 | "items": { 22 | "$ref": "#/components/schemas/WeatherForecast" 23 | } 24 | } 25 | }, 26 | "application/json": { 27 | "schema": { 28 | "type": "array", 29 | "items": { 30 | "$ref": "#/components/schemas/WeatherForecast" 31 | } 32 | } 33 | }, 34 | "text/json": { 35 | "schema": { 36 | "type": "array", 37 | "items": { 38 | "$ref": "#/components/schemas/WeatherForecast" 39 | } 40 | } 41 | } 42 | } 43 | } 44 | } 45 | } 46 | } 47 | }, 48 | "components": { 49 | "schemas": { 50 | "WeatherForecast": { 51 | "type": "object", 52 | "properties": { 53 | "date": { 54 | "type": "string", 55 | "format": "date-time" 56 | }, 57 | "temperatureC": { 58 | "type": "integer", 59 | "format": "int32" 60 | }, 61 | "temperatureF": { 62 | "type": "integer", 63 | "format": "int32", 64 | "readOnly": true 65 | }, 66 | "summary": { 67 | "type": "string", 68 | "nullable": true 69 | } 70 | }, 71 | "additionalProperties": false 72 | } 73 | } 74 | } 75 | } -------------------------------------------------------------------------------- /web/references/swagger.yaml: -------------------------------------------------------------------------------- 1 | openapi: 3.0.1 2 | info: 3 | title: 'api, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' 4 | version: '1.0' 5 | paths: 6 | /WeatherForecast: 7 | get: 8 | tags: 9 | - WeatherForecast 10 | operationId: GetWeatherForecast 11 | responses: 12 | '200': 13 | description: Success 14 | content: 15 | text/plain: 16 | schema: 17 | type: array 18 | items: 19 | $ref: '#/components/schemas/WeatherForecast' 20 | application/json: 21 | schema: 22 | type: array 23 | items: 24 | $ref: '#/components/schemas/WeatherForecast' 25 | text/json: 26 | schema: 27 | type: array 28 | items: 29 | $ref: '#/components/schemas/WeatherForecast' 30 | components: 31 | schemas: 32 | WeatherForecast: 33 | type: object 34 | properties: 35 | date: 36 | type: string 37 | format: date-time 38 | temperatureC: 39 | type: integer 40 | format: int32 41 | temperatureF: 42 | type: integer 43 | format: int32 44 | readOnly: true 45 | summary: 46 | type: string 47 | nullable: true 48 | additionalProperties: false -------------------------------------------------------------------------------- /web/src/App.svelte: -------------------------------------------------------------------------------- 1 | 22 | 23 |
24 | Svelte Logo 25 |

Hello Typescript!

26 | 27 | 28 | 29 | {#await forecast} 30 |

Loading forecast...

31 | {:then days} 32 | {#each days as day} 33 |

{day.summary}

34 | {/each} 35 | {/await} 36 | 37 |

38 | Visit svelte.dev to learn how to build Svelte 39 | apps. 40 |

41 | 42 |

43 | Check out SvelteKit for 44 | the officially supported framework, also powered by Vite! 45 |

46 |
47 | 48 | 91 | -------------------------------------------------------------------------------- /web/src/assets/svelte.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CharlieDigital/dotnet6-openapi/988e9b74a4751a4ca685f255456f0760b8081fb7/web/src/assets/svelte.png -------------------------------------------------------------------------------- /web/src/lib/Counter.svelte: -------------------------------------------------------------------------------- 1 | 7 | 8 | 11 | 12 | 35 | -------------------------------------------------------------------------------- /web/src/main.ts: -------------------------------------------------------------------------------- 1 | import App from './App.svelte' 2 | 3 | const app = new App({ 4 | target: document.getElementById('app') 5 | }) 6 | 7 | export default app 8 | -------------------------------------------------------------------------------- /web/src/vite-env.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | /// 3 | -------------------------------------------------------------------------------- /web/svelte.config.js: -------------------------------------------------------------------------------- 1 | import sveltePreprocess from 'svelte-preprocess' 2 | 3 | export default { 4 | // Consult https://github.com/sveltejs/svelte-preprocess 5 | // for more information about preprocessors 6 | preprocess: sveltePreprocess() 7 | } 8 | -------------------------------------------------------------------------------- /web/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "@tsconfig/svelte/tsconfig.json", 3 | "compilerOptions": { 4 | "target": "esnext", 5 | "useDefineForClassFields": true, 6 | "module": "esnext", 7 | "resolveJsonModule": true, 8 | "baseUrl": ".", 9 | /** 10 | * Typecheck JS in `.svelte` and `.js` files by default. 11 | * Disable checkJs if you'd like to use dynamic types in JS. 12 | * Note that setting allowJs false does not prevent the use 13 | * of JS in `.svelte` files. 14 | */ 15 | "allowJs": true, 16 | "checkJs": true 17 | }, 18 | "include": ["src/**/*.d.ts", "src/**/*.ts", "src/**/*.js", "src/**/*.svelte"] 19 | } 20 | -------------------------------------------------------------------------------- /web/vite.config.js: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'vite' 2 | import { svelte } from '@sveltejs/vite-plugin-svelte' 3 | 4 | // https://vitejs.dev/config/ 5 | export default defineConfig({ 6 | plugins: [svelte()] 7 | }) 8 | -------------------------------------------------------------------------------- /web/yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@apidevtools/json-schema-ref-parser@9.0.9": 6 | version "9.0.9" 7 | resolved "https://registry.yarnpkg.com/@apidevtools/json-schema-ref-parser/-/json-schema-ref-parser-9.0.9.tgz#d720f9256e3609621280584f2b47ae165359268b" 8 | integrity sha512-GBD2Le9w2+lVFoc4vswGI/TjkNIZSVp7+9xPf+X3uidBfWnAeUWmquteSyt0+VCrhNMWj/FTABISQrD3Z/YA+w== 9 | dependencies: 10 | "@jsdevtools/ono" "^7.1.3" 11 | "@types/json-schema" "^7.0.6" 12 | call-me-maybe "^1.0.1" 13 | js-yaml "^4.1.0" 14 | 15 | "@jsdevtools/ono@^7.1.3": 16 | version "7.1.3" 17 | resolved "https://registry.yarnpkg.com/@jsdevtools/ono/-/ono-7.1.3.tgz#9df03bbd7c696a5c58885c34aa06da41c8543796" 18 | integrity sha512-4JQNk+3mVzK3xh2rqd6RB4J46qUR19azEHBneZyTZM+c456qOrbbM/5xcR8huNCCcbVt7+UmizG6GuUvPvKUYg== 19 | 20 | "@nodelib/fs.scandir@2.1.5": 21 | version "2.1.5" 22 | resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" 23 | integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== 24 | dependencies: 25 | "@nodelib/fs.stat" "2.0.5" 26 | run-parallel "^1.1.9" 27 | 28 | "@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": 29 | version "2.0.5" 30 | resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" 31 | integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== 32 | 33 | "@nodelib/fs.walk@^1.2.3": 34 | version "1.2.8" 35 | resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" 36 | integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== 37 | dependencies: 38 | "@nodelib/fs.scandir" "2.1.5" 39 | fastq "^1.6.0" 40 | 41 | "@rollup/pluginutils@^4.1.1": 42 | version "4.1.1" 43 | resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-4.1.1.tgz#1d4da86dd4eded15656a57d933fda2b9a08d47ec" 44 | integrity sha512-clDjivHqWGXi7u+0d2r2sBi4Ie6VLEAzWMIkvJLnDmxoOhBYOTfzGbOQBA32THHm11/LiJbd01tJUpJsbshSWQ== 45 | dependencies: 46 | estree-walker "^2.0.1" 47 | picomatch "^2.2.2" 48 | 49 | "@sveltejs/vite-plugin-svelte@^1.0.0-next.11": 50 | version "1.0.0-next.30" 51 | resolved "https://registry.yarnpkg.com/@sveltejs/vite-plugin-svelte/-/vite-plugin-svelte-1.0.0-next.30.tgz#a6cd181bb406d590c1fa8d480c55950d567689f9" 52 | integrity sha512-YQqdMxjL1VgSFk4/+IY3yLwuRRapPafPiZTiaGEq1psbJYSNYUWx9F1zMm32GMsnogg3zn99mGJOqe3ld3HZSg== 53 | dependencies: 54 | "@rollup/pluginutils" "^4.1.1" 55 | debug "^4.3.2" 56 | kleur "^4.1.4" 57 | magic-string "^0.25.7" 58 | require-relative "^0.8.7" 59 | svelte-hmr "^0.14.7" 60 | 61 | "@tsconfig/svelte@^2.0.1": 62 | version "2.0.1" 63 | resolved "https://registry.yarnpkg.com/@tsconfig/svelte/-/svelte-2.0.1.tgz#0e8d7caa693e9b2afce5e622c0475bb0fd89c12c" 64 | integrity sha512-aqkICXbM1oX5FfgZd2qSSAGdyo/NRxjWCamxoyi3T8iVQnzGge19HhDYzZ6NrVOW7bhcWNSq9XexWFtMzbB24A== 65 | 66 | "@types/json-schema@^7.0.6": 67 | version "7.0.9" 68 | resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.9.tgz#97edc9037ea0c38585320b28964dde3b39e4660d" 69 | integrity sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ== 70 | 71 | "@types/node-fetch@^2.5.12": 72 | version "2.5.12" 73 | resolved "https://registry.yarnpkg.com/@types/node-fetch/-/node-fetch-2.5.12.tgz#8a6f779b1d4e60b7a57fb6fd48d84fb545b9cc66" 74 | integrity sha512-MKgC4dlq4kKNa/mYrwpKfzQMB5X3ee5U6fSprkKpToBqBmX4nFZL9cW5jl6sWn+xpRJ7ypWh2yyqqr8UUCstSw== 75 | dependencies: 76 | "@types/node" "*" 77 | form-data "^3.0.0" 78 | 79 | "@types/node@*": 80 | version "16.11.10" 81 | resolved "https://registry.yarnpkg.com/@types/node/-/node-16.11.10.tgz#2e3ad0a680d96367103d3e670d41c2fed3da61ae" 82 | integrity sha512-3aRnHa1KlOEEhJ6+CvyHKK5vE9BcLGjtUpwvqYLRvYNQKMfabu3BwfJaA/SLW8dxe28LsNDjtHwePTuzn3gmOA== 83 | 84 | "@types/pug@^2.0.4": 85 | version "2.0.5" 86 | resolved "https://registry.yarnpkg.com/@types/pug/-/pug-2.0.5.tgz#69bc700934dd473c7ab97270bd2dbacefe562231" 87 | integrity sha512-LOnASQoeNZMkzexRuyqcBBDZ6rS+rQxUMkmj5A0PkhhiSZivLIuz6Hxyr1mkGoEZEkk66faROmpMi4fFkrKsBA== 88 | 89 | "@types/sass@^1.16.0": 90 | version "1.43.1" 91 | resolved "https://registry.yarnpkg.com/@types/sass/-/sass-1.43.1.tgz#86bb0168e9e881d7dade6eba16c9ed6d25dc2f68" 92 | integrity sha512-BPdoIt1lfJ6B7rw35ncdwBZrAssjcwzI5LByIrYs+tpXlj/CAkuVdRsgZDdP4lq5EjyWzwxZCqAoFyHKFwp32g== 93 | dependencies: 94 | "@types/node" "*" 95 | 96 | abort-controller@^3.0.0: 97 | version "3.0.0" 98 | resolved "https://registry.yarnpkg.com/abort-controller/-/abort-controller-3.0.0.tgz#eaf54d53b62bae4138e809ca225c8439a6efb392" 99 | integrity sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg== 100 | dependencies: 101 | event-target-shim "^5.0.0" 102 | 103 | ansi-styles@^4.1.0: 104 | version "4.3.0" 105 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" 106 | integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== 107 | dependencies: 108 | color-convert "^2.0.1" 109 | 110 | anymatch@~3.1.2: 111 | version "3.1.2" 112 | resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716" 113 | integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg== 114 | dependencies: 115 | normalize-path "^3.0.0" 116 | picomatch "^2.0.4" 117 | 118 | argparse@^2.0.1: 119 | version "2.0.1" 120 | resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" 121 | integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== 122 | 123 | asynckit@^0.4.0: 124 | version "0.4.0" 125 | resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" 126 | integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= 127 | 128 | axios@^0.24.0: 129 | version "0.24.0" 130 | resolved "https://registry.yarnpkg.com/axios/-/axios-0.24.0.tgz#804e6fa1e4b9c5288501dd9dff56a7a0940d20d6" 131 | integrity sha512-Q6cWsys88HoPgAaFAVUb0WpPk0O8iTeisR9IMqy9G8AbO4NlpVknrnQS03zzF9PGAWgO3cgletO3VjV/P7VztA== 132 | dependencies: 133 | follow-redirects "^1.14.4" 134 | 135 | balanced-match@^1.0.0: 136 | version "1.0.2" 137 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" 138 | integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== 139 | 140 | binary-extensions@^2.0.0: 141 | version "2.2.0" 142 | resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" 143 | integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== 144 | 145 | blob-polyfill@^5.0.20210201: 146 | version "5.0.20210201" 147 | resolved "https://registry.yarnpkg.com/blob-polyfill/-/blob-polyfill-5.0.20210201.tgz#0024bfa5dcc3440eb5a2f1e5991cb1612a558465" 148 | integrity sha512-SrH6IG6aXL9pCgSysBCiDpGcAJ1j6/c1qCwR3sTEQJhb+MTk6FITNA6eW6WNYQDNZVi4Z9GjxH5v2MMTv59CrQ== 149 | 150 | brace-expansion@^1.1.7: 151 | version "1.1.11" 152 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" 153 | integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== 154 | dependencies: 155 | balanced-match "^1.0.0" 156 | concat-map "0.0.1" 157 | 158 | braces@^3.0.1, braces@~3.0.2: 159 | version "3.0.2" 160 | resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" 161 | integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== 162 | dependencies: 163 | fill-range "^7.0.1" 164 | 165 | buffer-crc32@^0.2.5: 166 | version "0.2.13" 167 | resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242" 168 | integrity sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI= 169 | 170 | call-me-maybe@^1.0.1: 171 | version "1.0.1" 172 | resolved "https://registry.yarnpkg.com/call-me-maybe/-/call-me-maybe-1.0.1.tgz#26d208ea89e37b5cbde60250a15f031c16a4d66b" 173 | integrity sha1-JtII6onje1y95gJQoV8DHBak1ms= 174 | 175 | callsites@^3.0.0: 176 | version "3.1.0" 177 | resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" 178 | integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== 179 | 180 | camelcase@^6.2.0: 181 | version "6.2.1" 182 | resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.2.1.tgz#250fd350cfd555d0d2160b1d51510eaf8326e86e" 183 | integrity sha512-tVI4q5jjFV5CavAU8DXfza/TJcZutVKo/5Foskmsqcm0MsL91moHvwiGNnqaa2o6PF/7yT5ikDRcVcl8Rj6LCA== 184 | 185 | chalk@^4.0.0: 186 | version "4.1.2" 187 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" 188 | integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== 189 | dependencies: 190 | ansi-styles "^4.1.0" 191 | supports-color "^7.1.0" 192 | 193 | chokidar@^3.4.1: 194 | version "3.5.2" 195 | resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.2.tgz#dba3976fcadb016f66fd365021d91600d01c1e75" 196 | integrity sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ== 197 | dependencies: 198 | anymatch "~3.1.2" 199 | braces "~3.0.2" 200 | glob-parent "~5.1.2" 201 | is-binary-path "~2.1.0" 202 | is-glob "~4.0.1" 203 | normalize-path "~3.0.0" 204 | readdirp "~3.6.0" 205 | optionalDependencies: 206 | fsevents "~2.3.2" 207 | 208 | color-convert@^2.0.1: 209 | version "2.0.1" 210 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" 211 | integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== 212 | dependencies: 213 | color-name "~1.1.4" 214 | 215 | color-name@~1.1.4: 216 | version "1.1.4" 217 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" 218 | integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== 219 | 220 | combined-stream@^1.0.8: 221 | version "1.0.8" 222 | resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" 223 | integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== 224 | dependencies: 225 | delayed-stream "~1.0.0" 226 | 227 | commander@^8.3.0: 228 | version "8.3.0" 229 | resolved "https://registry.yarnpkg.com/commander/-/commander-8.3.0.tgz#4837ea1b2da67b9c616a67afbb0fafee567bca66" 230 | integrity sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww== 231 | 232 | concat-map@0.0.1: 233 | version "0.0.1" 234 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" 235 | integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= 236 | 237 | cross-blob@^2.0.1: 238 | version "2.0.1" 239 | resolved "https://registry.yarnpkg.com/cross-blob/-/cross-blob-2.0.1.tgz#7c187282e0855353705ed9ac5af2ee7f27c910c6" 240 | integrity sha512-ARuKPPo3I6DSqizal4UCyMCiGPQdMpMJS3Owx6Lleuh26vSt2UnfWRwbMLCYqbJUrcol+KzGVSLR91ezSHP80A== 241 | dependencies: 242 | blob-polyfill "^5.0.20210201" 243 | fetch-blob "^2.1.2" 244 | 245 | debug@^4.3.2: 246 | version "4.3.2" 247 | resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.2.tgz#f0a49c18ac8779e31d4a0c6029dfb76873c7428b" 248 | integrity sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw== 249 | dependencies: 250 | ms "2.1.2" 251 | 252 | delayed-stream@~1.0.0: 253 | version "1.0.0" 254 | resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" 255 | integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= 256 | 257 | detect-indent@^6.0.0: 258 | version "6.1.0" 259 | resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-6.1.0.tgz#592485ebbbf6b3b1ab2be175c8393d04ca0d57e6" 260 | integrity sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA== 261 | 262 | es6-promise@^3.1.2: 263 | version "3.3.1" 264 | resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-3.3.1.tgz#a08cdde84ccdbf34d027a1451bc91d4bcd28a613" 265 | integrity sha1-oIzd6EzNvzTQJ6FFG8kdS80ophM= 266 | 267 | esbuild-android-arm64@0.13.15: 268 | version "0.13.15" 269 | resolved "https://registry.yarnpkg.com/esbuild-android-arm64/-/esbuild-android-arm64-0.13.15.tgz#3fc3ff0bab76fe35dd237476b5d2b32bb20a3d44" 270 | integrity sha512-m602nft/XXeO8YQPUDVoHfjyRVPdPgjyyXOxZ44MK/agewFFkPa8tUo6lAzSWh5Ui5PB4KR9UIFTSBKh/RrCmg== 271 | 272 | esbuild-darwin-64@0.13.15: 273 | version "0.13.15" 274 | resolved "https://registry.yarnpkg.com/esbuild-darwin-64/-/esbuild-darwin-64-0.13.15.tgz#8e9169c16baf444eacec60d09b24d11b255a8e72" 275 | integrity sha512-ihOQRGs2yyp7t5bArCwnvn2Atr6X4axqPpEdCFPVp7iUj4cVSdisgvEKdNR7yH3JDjW6aQDw40iQFoTqejqxvQ== 276 | 277 | esbuild-darwin-arm64@0.13.15: 278 | version "0.13.15" 279 | resolved "https://registry.yarnpkg.com/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.13.15.tgz#1b07f893b632114f805e188ddfca41b2b778229a" 280 | integrity sha512-i1FZssTVxUqNlJ6cBTj5YQj4imWy3m49RZRnHhLpefFIh0To05ow9DTrXROTE1urGTQCloFUXTX8QfGJy1P8dQ== 281 | 282 | esbuild-freebsd-64@0.13.15: 283 | version "0.13.15" 284 | resolved "https://registry.yarnpkg.com/esbuild-freebsd-64/-/esbuild-freebsd-64-0.13.15.tgz#0b8b7eca1690c8ec94c75680c38c07269c1f4a85" 285 | integrity sha512-G3dLBXUI6lC6Z09/x+WtXBXbOYQZ0E8TDBqvn7aMaOCzryJs8LyVXKY4CPnHFXZAbSwkCbqiPuSQ1+HhrNk7EA== 286 | 287 | esbuild-freebsd-arm64@0.13.15: 288 | version "0.13.15" 289 | resolved "https://registry.yarnpkg.com/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.13.15.tgz#2e1a6c696bfdcd20a99578b76350b41db1934e52" 290 | integrity sha512-KJx0fzEDf1uhNOZQStV4ujg30WlnwqUASaGSFPhznLM/bbheu9HhqZ6mJJZM32lkyfGJikw0jg7v3S0oAvtvQQ== 291 | 292 | esbuild-linux-32@0.13.15: 293 | version "0.13.15" 294 | resolved "https://registry.yarnpkg.com/esbuild-linux-32/-/esbuild-linux-32-0.13.15.tgz#6fd39f36fc66dd45b6b5f515728c7bbebc342a69" 295 | integrity sha512-ZvTBPk0YWCLMCXiFmD5EUtB30zIPvC5Itxz0mdTu/xZBbbHJftQgLWY49wEPSn2T/TxahYCRDWun5smRa0Tu+g== 296 | 297 | esbuild-linux-64@0.13.15: 298 | version "0.13.15" 299 | resolved "https://registry.yarnpkg.com/esbuild-linux-64/-/esbuild-linux-64-0.13.15.tgz#9cb8e4bcd7574e67946e4ee5f1f1e12386bb6dd3" 300 | integrity sha512-eCKzkNSLywNeQTRBxJRQ0jxRCl2YWdMB3+PkWFo2BBQYC5mISLIVIjThNtn6HUNqua1pnvgP5xX0nHbZbPj5oA== 301 | 302 | esbuild-linux-arm64@0.13.15: 303 | version "0.13.15" 304 | resolved "https://registry.yarnpkg.com/esbuild-linux-arm64/-/esbuild-linux-arm64-0.13.15.tgz#3891aa3704ec579a1b92d2a586122e5b6a2bfba1" 305 | integrity sha512-bYpuUlN6qYU9slzr/ltyLTR9YTBS7qUDymO8SV7kjeNext61OdmqFAzuVZom+OLW1HPHseBfJ/JfdSlx8oTUoA== 306 | 307 | esbuild-linux-arm@0.13.15: 308 | version "0.13.15" 309 | resolved "https://registry.yarnpkg.com/esbuild-linux-arm/-/esbuild-linux-arm-0.13.15.tgz#8a00e99e6a0c6c9a6b7f334841364d8a2b4aecfe" 310 | integrity sha512-wUHttDi/ol0tD8ZgUMDH8Ef7IbDX+/UsWJOXaAyTdkT7Yy9ZBqPg8bgB/Dn3CZ9SBpNieozrPRHm0BGww7W/jA== 311 | 312 | esbuild-linux-mips64le@0.13.15: 313 | version "0.13.15" 314 | resolved "https://registry.yarnpkg.com/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.13.15.tgz#36b07cc47c3d21e48db3bb1f4d9ef8f46aead4f7" 315 | integrity sha512-KlVjIG828uFPyJkO/8gKwy9RbXhCEUeFsCGOJBepUlpa7G8/SeZgncUEz/tOOUJTcWMTmFMtdd3GElGyAtbSWg== 316 | 317 | esbuild-linux-ppc64le@0.13.15: 318 | version "0.13.15" 319 | resolved "https://registry.yarnpkg.com/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.13.15.tgz#f7e6bba40b9a11eb9dcae5b01550ea04670edad2" 320 | integrity sha512-h6gYF+OsaqEuBjeesTBtUPw0bmiDu7eAeuc2OEH9S6mV9/jPhPdhOWzdeshb0BskRZxPhxPOjqZ+/OqLcxQwEQ== 321 | 322 | esbuild-netbsd-64@0.13.15: 323 | version "0.13.15" 324 | resolved "https://registry.yarnpkg.com/esbuild-netbsd-64/-/esbuild-netbsd-64-0.13.15.tgz#a2fedc549c2b629d580a732d840712b08d440038" 325 | integrity sha512-3+yE9emwoevLMyvu+iR3rsa+Xwhie7ZEHMGDQ6dkqP/ndFzRHkobHUKTe+NCApSqG5ce2z4rFu+NX/UHnxlh3w== 326 | 327 | esbuild-openbsd-64@0.13.15: 328 | version "0.13.15" 329 | resolved "https://registry.yarnpkg.com/esbuild-openbsd-64/-/esbuild-openbsd-64-0.13.15.tgz#b22c0e5806d3a1fbf0325872037f885306b05cd7" 330 | integrity sha512-wTfvtwYJYAFL1fSs8yHIdf5GEE4NkbtbXtjLWjM3Cw8mmQKqsg8kTiqJ9NJQe5NX/5Qlo7Xd9r1yKMMkHllp5g== 331 | 332 | esbuild-sunos-64@0.13.15: 333 | version "0.13.15" 334 | resolved "https://registry.yarnpkg.com/esbuild-sunos-64/-/esbuild-sunos-64-0.13.15.tgz#d0b6454a88375ee8d3964daeff55c85c91c7cef4" 335 | integrity sha512-lbivT9Bx3t1iWWrSnGyBP9ODriEvWDRiweAs69vI+miJoeKwHWOComSRukttbuzjZ8r1q0mQJ8Z7yUsDJ3hKdw== 336 | 337 | esbuild-windows-32@0.13.15: 338 | version "0.13.15" 339 | resolved "https://registry.yarnpkg.com/esbuild-windows-32/-/esbuild-windows-32-0.13.15.tgz#c96d0b9bbb52f3303322582ef8e4847c5ad375a7" 340 | integrity sha512-fDMEf2g3SsJ599MBr50cY5ve5lP1wyVwTe6aLJsM01KtxyKkB4UT+fc5MXQFn3RLrAIAZOG+tHC+yXObpSn7Nw== 341 | 342 | esbuild-windows-64@0.13.15: 343 | version "0.13.15" 344 | resolved "https://registry.yarnpkg.com/esbuild-windows-64/-/esbuild-windows-64-0.13.15.tgz#1f79cb9b1e1bb02fb25cd414cb90d4ea2892c294" 345 | integrity sha512-9aMsPRGDWCd3bGjUIKG/ZOJPKsiztlxl/Q3C1XDswO6eNX/Jtwu4M+jb6YDH9hRSUflQWX0XKAfWzgy5Wk54JQ== 346 | 347 | esbuild-windows-arm64@0.13.15: 348 | version "0.13.15" 349 | resolved "https://registry.yarnpkg.com/esbuild-windows-arm64/-/esbuild-windows-arm64-0.13.15.tgz#482173070810df22a752c686509c370c3be3b3c3" 350 | integrity sha512-zzvyCVVpbwQQATaf3IG8mu1IwGEiDxKkYUdA4FpoCHi1KtPa13jeScYDjlW0Qh+ebWzpKfR2ZwvqAQkSWNcKjA== 351 | 352 | esbuild@^0.13.2: 353 | version "0.13.15" 354 | resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.13.15.tgz#db56a88166ee373f87dbb2d8798ff449e0450cdf" 355 | integrity sha512-raCxt02HBKv8RJxE8vkTSCXGIyKHdEdGfUmiYb8wnabnaEmHzyW7DCHb5tEN0xU8ryqg5xw54mcwnYkC4x3AIw== 356 | optionalDependencies: 357 | esbuild-android-arm64 "0.13.15" 358 | esbuild-darwin-64 "0.13.15" 359 | esbuild-darwin-arm64 "0.13.15" 360 | esbuild-freebsd-64 "0.13.15" 361 | esbuild-freebsd-arm64 "0.13.15" 362 | esbuild-linux-32 "0.13.15" 363 | esbuild-linux-64 "0.13.15" 364 | esbuild-linux-arm "0.13.15" 365 | esbuild-linux-arm64 "0.13.15" 366 | esbuild-linux-mips64le "0.13.15" 367 | esbuild-linux-ppc64le "0.13.15" 368 | esbuild-netbsd-64 "0.13.15" 369 | esbuild-openbsd-64 "0.13.15" 370 | esbuild-sunos-64 "0.13.15" 371 | esbuild-windows-32 "0.13.15" 372 | esbuild-windows-64 "0.13.15" 373 | esbuild-windows-arm64 "0.13.15" 374 | 375 | estree-walker@^2.0.1: 376 | version "2.0.2" 377 | resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-2.0.2.tgz#52f010178c2a4c117a7757cfe942adb7d2da4cac" 378 | integrity sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w== 379 | 380 | event-target-shim@^5.0.0: 381 | version "5.0.1" 382 | resolved "https://registry.yarnpkg.com/event-target-shim/-/event-target-shim-5.0.1.tgz#5d4d3ebdf9583d63a5333ce2deb7480ab2b05789" 383 | integrity sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ== 384 | 385 | fast-glob@^3.2.7: 386 | version "3.2.7" 387 | resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.7.tgz#fd6cb7a2d7e9aa7a7846111e85a196d6b2f766a1" 388 | integrity sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q== 389 | dependencies: 390 | "@nodelib/fs.stat" "^2.0.2" 391 | "@nodelib/fs.walk" "^1.2.3" 392 | glob-parent "^5.1.2" 393 | merge2 "^1.3.0" 394 | micromatch "^4.0.4" 395 | 396 | fastq@^1.6.0: 397 | version "1.13.0" 398 | resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.13.0.tgz#616760f88a7526bdfc596b7cab8c18938c36b98c" 399 | integrity sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw== 400 | dependencies: 401 | reusify "^1.0.4" 402 | 403 | fetch-blob@^2.1.2: 404 | version "2.1.2" 405 | resolved "https://registry.yarnpkg.com/fetch-blob/-/fetch-blob-2.1.2.tgz#a7805db1361bd44c1ef62bb57fb5fe8ea173ef3c" 406 | integrity sha512-YKqtUDwqLyfyMnmbw8XD6Q8j9i/HggKtPEI+pZ1+8bvheBu78biSmNaXWusx1TauGqtUUGx/cBb1mKdq2rLYow== 407 | 408 | fill-range@^7.0.1: 409 | version "7.0.1" 410 | resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" 411 | integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== 412 | dependencies: 413 | to-regex-range "^5.0.1" 414 | 415 | follow-redirects@^1.14.4: 416 | version "1.14.5" 417 | resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.14.5.tgz#f09a5848981d3c772b5392309778523f8d85c381" 418 | integrity sha512-wtphSXy7d4/OR+MvIFbCVBDzZ5520qV8XfPklSN5QtxuMUJZ+b0Wnst1e1lCDocfzuCkHqj8k0FpZqO+UIaKNA== 419 | 420 | form-data@^3.0.0: 421 | version "3.0.1" 422 | resolved "https://registry.yarnpkg.com/form-data/-/form-data-3.0.1.tgz#ebd53791b78356a99af9a300d4282c4d5eb9755f" 423 | integrity sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg== 424 | dependencies: 425 | asynckit "^0.4.0" 426 | combined-stream "^1.0.8" 427 | mime-types "^2.1.12" 428 | 429 | form-data@^4.0.0: 430 | version "4.0.0" 431 | resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452" 432 | integrity sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww== 433 | dependencies: 434 | asynckit "^0.4.0" 435 | combined-stream "^1.0.8" 436 | mime-types "^2.1.12" 437 | 438 | fs.realpath@^1.0.0: 439 | version "1.0.0" 440 | resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" 441 | integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= 442 | 443 | fsevents@~2.3.2: 444 | version "2.3.2" 445 | resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" 446 | integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== 447 | 448 | function-bind@^1.1.1: 449 | version "1.1.1" 450 | resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" 451 | integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== 452 | 453 | glob-parent@^5.1.2, glob-parent@~5.1.2: 454 | version "5.1.2" 455 | resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" 456 | integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== 457 | dependencies: 458 | is-glob "^4.0.1" 459 | 460 | glob@^7.1.3: 461 | version "7.2.0" 462 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023" 463 | integrity sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q== 464 | dependencies: 465 | fs.realpath "^1.0.0" 466 | inflight "^1.0.4" 467 | inherits "2" 468 | minimatch "^3.0.4" 469 | once "^1.3.0" 470 | path-is-absolute "^1.0.0" 471 | 472 | graceful-fs@^4.1.3: 473 | version "4.2.8" 474 | resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.8.tgz#e412b8d33f5e006593cbd3cee6df9f2cebbe802a" 475 | integrity sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg== 476 | 477 | handlebars@^4.7.6: 478 | version "4.7.7" 479 | resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.7.7.tgz#9ce33416aad02dbd6c8fafa8240d5d98004945a1" 480 | integrity sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA== 481 | dependencies: 482 | minimist "^1.2.5" 483 | neo-async "^2.6.0" 484 | source-map "^0.6.1" 485 | wordwrap "^1.0.0" 486 | optionalDependencies: 487 | uglify-js "^3.1.4" 488 | 489 | has-flag@^4.0.0: 490 | version "4.0.0" 491 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" 492 | integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== 493 | 494 | has@^1.0.3: 495 | version "1.0.3" 496 | resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" 497 | integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== 498 | dependencies: 499 | function-bind "^1.1.1" 500 | 501 | import-fresh@^3.2.1: 502 | version "3.3.0" 503 | resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" 504 | integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== 505 | dependencies: 506 | parent-module "^1.0.0" 507 | resolve-from "^4.0.0" 508 | 509 | inflight@^1.0.4: 510 | version "1.0.6" 511 | resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" 512 | integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= 513 | dependencies: 514 | once "^1.3.0" 515 | wrappy "1" 516 | 517 | inherits@2: 518 | version "2.0.4" 519 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" 520 | integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== 521 | 522 | is-binary-path@~2.1.0: 523 | version "2.1.0" 524 | resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" 525 | integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== 526 | dependencies: 527 | binary-extensions "^2.0.0" 528 | 529 | is-core-module@^2.2.0: 530 | version "2.8.0" 531 | resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.8.0.tgz#0321336c3d0925e497fd97f5d95cb114a5ccd548" 532 | integrity sha512-vd15qHsaqrRL7dtH6QNuy0ndJmRDrS9HAM1CAiSifNUFv4x1a0CCVsj18hJ1mShxIG6T2i1sO78MkP56r0nYRw== 533 | dependencies: 534 | has "^1.0.3" 535 | 536 | is-extglob@^2.1.1: 537 | version "2.1.1" 538 | resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" 539 | integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= 540 | 541 | is-glob@^4.0.1, is-glob@~4.0.1: 542 | version "4.0.3" 543 | resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" 544 | integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== 545 | dependencies: 546 | is-extglob "^2.1.1" 547 | 548 | is-number@^7.0.0: 549 | version "7.0.0" 550 | resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" 551 | integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== 552 | 553 | js-yaml@^4.1.0: 554 | version "4.1.0" 555 | resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" 556 | integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== 557 | dependencies: 558 | argparse "^2.0.1" 559 | 560 | json-schema-ref-parser@^9.0.7: 561 | version "9.0.9" 562 | resolved "https://registry.yarnpkg.com/json-schema-ref-parser/-/json-schema-ref-parser-9.0.9.tgz#66ea538e7450b12af342fa3d5b8458bc1e1e013f" 563 | integrity sha512-qcP2lmGy+JUoQJ4DOQeLaZDqH9qSkeGCK3suKWxJXS82dg728Mn3j97azDMaOUmJAN4uCq91LdPx4K7E8F1a7Q== 564 | dependencies: 565 | "@apidevtools/json-schema-ref-parser" "9.0.9" 566 | 567 | kleur@^4.1.4: 568 | version "4.1.4" 569 | resolved "https://registry.yarnpkg.com/kleur/-/kleur-4.1.4.tgz#8c202987d7e577766d039a8cd461934c01cda04d" 570 | integrity sha512-8QADVssbrFjivHWQU7KkMgptGTl6WAcSdlbBPY4uNF+mWr6DGcKrvY2w4FQJoXch7+fKMjj0dRrL75vk3k23OA== 571 | 572 | magic-string@^0.25.7: 573 | version "0.25.7" 574 | resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.7.tgz#3f497d6fd34c669c6798dcb821f2ef31f5445051" 575 | integrity sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA== 576 | dependencies: 577 | sourcemap-codec "^1.4.4" 578 | 579 | merge2@^1.3.0: 580 | version "1.4.1" 581 | resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" 582 | integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== 583 | 584 | micromatch@^4.0.4: 585 | version "4.0.4" 586 | resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.4.tgz#896d519dfe9db25fce94ceb7a500919bf881ebf9" 587 | integrity sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg== 588 | dependencies: 589 | braces "^3.0.1" 590 | picomatch "^2.2.3" 591 | 592 | mime-db@1.51.0: 593 | version "1.51.0" 594 | resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.51.0.tgz#d9ff62451859b18342d960850dc3cfb77e63fb0c" 595 | integrity sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g== 596 | 597 | mime-types@^2.1.12: 598 | version "2.1.34" 599 | resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.34.tgz#5a712f9ec1503511a945803640fafe09d3793c24" 600 | integrity sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A== 601 | dependencies: 602 | mime-db "1.51.0" 603 | 604 | min-indent@^1.0.0: 605 | version "1.0.1" 606 | resolved "https://registry.yarnpkg.com/min-indent/-/min-indent-1.0.1.tgz#a63f681673b30571fbe8bc25686ae746eefa9869" 607 | integrity sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg== 608 | 609 | minimatch@^3.0.4: 610 | version "3.0.4" 611 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" 612 | integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== 613 | dependencies: 614 | brace-expansion "^1.1.7" 615 | 616 | minimist@^1.2.0, minimist@^1.2.5: 617 | version "1.2.5" 618 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" 619 | integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== 620 | 621 | mkdirp@^0.5.1: 622 | version "0.5.5" 623 | resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" 624 | integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== 625 | dependencies: 626 | minimist "^1.2.5" 627 | 628 | mkdirp@^1.0.4: 629 | version "1.0.4" 630 | resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" 631 | integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== 632 | 633 | mri@^1.1.0: 634 | version "1.2.0" 635 | resolved "https://registry.yarnpkg.com/mri/-/mri-1.2.0.tgz#6721480fec2a11a4889861115a48b6cbe7cc8f0b" 636 | integrity sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA== 637 | 638 | ms@2.1.2: 639 | version "2.1.2" 640 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" 641 | integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== 642 | 643 | nanoid@^3.1.30: 644 | version "3.1.30" 645 | resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.1.30.tgz#63f93cc548d2a113dc5dfbc63bfa09e2b9b64362" 646 | integrity sha512-zJpuPDwOv8D2zq2WRoMe1HsfZthVewpel9CAvTfc/2mBD1uUT/agc5f7GHGWXlYkFvi1mVxe4IjvP2HNrop7nQ== 647 | 648 | neo-async@^2.6.0: 649 | version "2.6.2" 650 | resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" 651 | integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== 652 | 653 | node-fetch@^2.6.5: 654 | version "2.6.6" 655 | resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.6.tgz#1751a7c01834e8e1697758732e9efb6eeadfaf89" 656 | integrity sha512-Z8/6vRlTUChSdIgMa51jxQ4lrw/Jy5SOW10ObaA47/RElsAN2c5Pn8bTgFGWn/ibwzXTE8qwr1Yzx28vsecXEA== 657 | dependencies: 658 | whatwg-url "^5.0.0" 659 | 660 | normalize-path@^3.0.0, normalize-path@~3.0.0: 661 | version "3.0.0" 662 | resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" 663 | integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== 664 | 665 | once@^1.3.0: 666 | version "1.4.0" 667 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" 668 | integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= 669 | dependencies: 670 | wrappy "1" 671 | 672 | openapi-typescript-codegen@^0.12.3: 673 | version "0.12.3" 674 | resolved "https://registry.yarnpkg.com/openapi-typescript-codegen/-/openapi-typescript-codegen-0.12.3.tgz#91bf5ebae88ba380f0928504537cd6e6511a31f7" 675 | integrity sha512-6S3KjVFJSC8mRlbZRr6mxYhUBzxNwEQQ8ev6cCRVaN+GsZ+ZEeSmO84/gOg2O5qCsWtzWe8RmvVZHRAvvJk5pQ== 676 | dependencies: 677 | "@types/node-fetch" "^2.5.12" 678 | abort-controller "^3.0.0" 679 | axios "^0.24.0" 680 | camelcase "^6.2.0" 681 | commander "^8.3.0" 682 | cross-blob "^2.0.1" 683 | form-data "^4.0.0" 684 | handlebars "^4.7.6" 685 | json-schema-ref-parser "^9.0.7" 686 | mkdirp "^1.0.4" 687 | node-fetch "^2.6.5" 688 | rimraf "^3.0.2" 689 | 690 | parent-module@^1.0.0: 691 | version "1.0.1" 692 | resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" 693 | integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== 694 | dependencies: 695 | callsites "^3.0.0" 696 | 697 | path-is-absolute@^1.0.0: 698 | version "1.0.1" 699 | resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" 700 | integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= 701 | 702 | path-parse@^1.0.6: 703 | version "1.0.7" 704 | resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" 705 | integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== 706 | 707 | picocolors@^1.0.0: 708 | version "1.0.0" 709 | resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" 710 | integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== 711 | 712 | picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.2, picomatch@^2.2.3: 713 | version "2.3.0" 714 | resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.0.tgz#f1f061de8f6a4bf022892e2d128234fb98302972" 715 | integrity sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw== 716 | 717 | postcss@^8.3.8: 718 | version "8.4.1" 719 | resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.1.tgz#73051f825509ad1a716ef500108001bf3d1fa8f7" 720 | integrity sha512-WqLs/TTzXdG+/A4ZOOK9WDZiikrRaiA+eoEb/jz2DT9KUhMNHgP7yKPO8vwi62ZCsb703Gwb7BMZwDzI54Y2Ag== 721 | dependencies: 722 | nanoid "^3.1.30" 723 | picocolors "^1.0.0" 724 | source-map-js "^1.0.1" 725 | 726 | queue-microtask@^1.2.2: 727 | version "1.2.3" 728 | resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" 729 | integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== 730 | 731 | readdirp@~3.6.0: 732 | version "3.6.0" 733 | resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" 734 | integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== 735 | dependencies: 736 | picomatch "^2.2.1" 737 | 738 | require-relative@^0.8.7: 739 | version "0.8.7" 740 | resolved "https://registry.yarnpkg.com/require-relative/-/require-relative-0.8.7.tgz#7999539fc9e047a37928fa196f8e1563dabd36de" 741 | integrity sha1-eZlTn8ngR6N5KPoZb44VY9q9Nt4= 742 | 743 | resolve-from@^4.0.0: 744 | version "4.0.0" 745 | resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" 746 | integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== 747 | 748 | resolve@^1.20.0: 749 | version "1.20.0" 750 | resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.20.0.tgz#629a013fb3f70755d6f0b7935cc1c2c5378b1975" 751 | integrity sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A== 752 | dependencies: 753 | is-core-module "^2.2.0" 754 | path-parse "^1.0.6" 755 | 756 | reusify@^1.0.4: 757 | version "1.0.4" 758 | resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" 759 | integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== 760 | 761 | rimraf@^2.5.2: 762 | version "2.7.1" 763 | resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" 764 | integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== 765 | dependencies: 766 | glob "^7.1.3" 767 | 768 | rimraf@^3.0.2: 769 | version "3.0.2" 770 | resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" 771 | integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== 772 | dependencies: 773 | glob "^7.1.3" 774 | 775 | rollup@^2.57.0: 776 | version "2.60.1" 777 | resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.60.1.tgz#4b34cd247f09b421f10a3c9286eda2ecf9972079" 778 | integrity sha512-akwfnpjY0rXEDSn1UTVfKXJhPsEBu+imi1gqBA1ZkHGydUnkV/fWCC90P7rDaLEW8KTwBcS1G3N4893Ndz+jwg== 779 | optionalDependencies: 780 | fsevents "~2.3.2" 781 | 782 | run-parallel@^1.1.9: 783 | version "1.2.0" 784 | resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" 785 | integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== 786 | dependencies: 787 | queue-microtask "^1.2.2" 788 | 789 | sade@^1.7.4: 790 | version "1.7.4" 791 | resolved "https://registry.yarnpkg.com/sade/-/sade-1.7.4.tgz#ea681e0c65d248d2095c90578c03ca0bb1b54691" 792 | integrity sha512-y5yauMD93rX840MwUJr7C1ysLFBgMspsdTo4UVrDg3fXDvtwOyIqykhVAAm6fk/3au77773itJStObgK+LKaiA== 793 | dependencies: 794 | mri "^1.1.0" 795 | 796 | sander@^0.5.0: 797 | version "0.5.1" 798 | resolved "https://registry.yarnpkg.com/sander/-/sander-0.5.1.tgz#741e245e231f07cafb6fdf0f133adfa216a502ad" 799 | integrity sha1-dB4kXiMfB8r7b98PEzrfohalAq0= 800 | dependencies: 801 | es6-promise "^3.1.2" 802 | graceful-fs "^4.1.3" 803 | mkdirp "^0.5.1" 804 | rimraf "^2.5.2" 805 | 806 | sorcery@^0.10.0: 807 | version "0.10.0" 808 | resolved "https://registry.yarnpkg.com/sorcery/-/sorcery-0.10.0.tgz#8ae90ad7d7cb05fc59f1ab0c637845d5c15a52b7" 809 | integrity sha1-iukK19fLBfxZ8asMY3hF1cFaUrc= 810 | dependencies: 811 | buffer-crc32 "^0.2.5" 812 | minimist "^1.2.0" 813 | sander "^0.5.0" 814 | sourcemap-codec "^1.3.0" 815 | 816 | source-map-js@^1.0.1: 817 | version "1.0.1" 818 | resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.1.tgz#a1741c131e3c77d048252adfa24e23b908670caf" 819 | integrity sha512-4+TN2b3tqOCd/kaGRJ/sTYA0tR0mdXx26ipdolxcwtJVqEnqNYvlCAt1q3ypy4QMlYus+Zh34RNtYLoq2oQ4IA== 820 | 821 | source-map@^0.6.1: 822 | version "0.6.1" 823 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" 824 | integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== 825 | 826 | source-map@^0.7.3: 827 | version "0.7.3" 828 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" 829 | integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== 830 | 831 | sourcemap-codec@^1.3.0, sourcemap-codec@^1.4.4: 832 | version "1.4.8" 833 | resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4" 834 | integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA== 835 | 836 | strip-indent@^3.0.0: 837 | version "3.0.0" 838 | resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-3.0.0.tgz#c32e1cee940b6b3432c771bc2c54bcce73cd3001" 839 | integrity sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ== 840 | dependencies: 841 | min-indent "^1.0.0" 842 | 843 | supports-color@^7.1.0: 844 | version "7.2.0" 845 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" 846 | integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== 847 | dependencies: 848 | has-flag "^4.0.0" 849 | 850 | svelte-check@^2.1.0: 851 | version "2.2.10" 852 | resolved "https://registry.yarnpkg.com/svelte-check/-/svelte-check-2.2.10.tgz#ca2e4fde2d077e703792d8301a643c36375f646c" 853 | integrity sha512-UVLd/N7hUIG2v6dytofsw8MxYn2iS2hpNSglsGz9Z9b8ZfbJ5jayl4Mm1SXhNwiFs5aklG90zSBJtd7NTK8dTg== 854 | dependencies: 855 | chalk "^4.0.0" 856 | chokidar "^3.4.1" 857 | fast-glob "^3.2.7" 858 | import-fresh "^3.2.1" 859 | minimist "^1.2.5" 860 | sade "^1.7.4" 861 | source-map "^0.7.3" 862 | svelte-preprocess "^4.0.0" 863 | typescript "*" 864 | 865 | svelte-hmr@^0.14.7: 866 | version "0.14.7" 867 | resolved "https://registry.yarnpkg.com/svelte-hmr/-/svelte-hmr-0.14.7.tgz#7fa8261c7b225d9409f0a86f3b9ea5c3ca6f6607" 868 | integrity sha512-pDrzgcWSoMaK6AJkBWkmgIsecW0GChxYZSZieIYfCP0v2oPyx2CYU/zm7TBIcjLVUPP714WxmViE9Thht4etog== 869 | 870 | svelte-preprocess@^4.0.0, svelte-preprocess@^4.7.2: 871 | version "4.9.8" 872 | resolved "https://registry.yarnpkg.com/svelte-preprocess/-/svelte-preprocess-4.9.8.tgz#fd40afebfb352f469beab289667485ebf0d811da" 873 | integrity sha512-EQS/oRZzMtYdAprppZxY3HcysKh11w54MgA63ybtL+TAZ4hVqYOnhw41JVJjWN9dhPnNjjLzvbZ2tMhTsla1Og== 874 | dependencies: 875 | "@types/pug" "^2.0.4" 876 | "@types/sass" "^1.16.0" 877 | detect-indent "^6.0.0" 878 | magic-string "^0.25.7" 879 | sorcery "^0.10.0" 880 | strip-indent "^3.0.0" 881 | 882 | svelte@^3.37.0: 883 | version "3.44.2" 884 | resolved "https://registry.yarnpkg.com/svelte/-/svelte-3.44.2.tgz#3e69be2598308dfc8354ba584cec54e648a50f7f" 885 | integrity sha512-jrZhZtmH3ZMweXg1Q15onb8QlWD+a5T5Oca4C1jYvSURp2oD35h4A5TV6t6MEa93K4LlX6BkafZPdQoFjw/ylA== 886 | 887 | to-regex-range@^5.0.1: 888 | version "5.0.1" 889 | resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" 890 | integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== 891 | dependencies: 892 | is-number "^7.0.0" 893 | 894 | tr46@~0.0.3: 895 | version "0.0.3" 896 | resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" 897 | integrity sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o= 898 | 899 | tslib@^2.2.0: 900 | version "2.3.1" 901 | resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.3.1.tgz#e8a335add5ceae51aa261d32a490158ef042ef01" 902 | integrity sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw== 903 | 904 | typescript@*, typescript@^4.3.2: 905 | version "4.5.2" 906 | resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.5.2.tgz#8ac1fba9f52256fdb06fb89e4122fa6a346c2998" 907 | integrity sha512-5BlMof9H1yGt0P8/WF+wPNw6GfctgGjXp5hkblpyT+8rkASSmkUKMXrxR0Xg8ThVCi/JnHQiKXeBaEwCeQwMFw== 908 | 909 | uglify-js@^3.1.4: 910 | version "3.14.3" 911 | resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.14.3.tgz#c0f25dfea1e8e5323eccf59610be08b6043c15cf" 912 | integrity sha512-mic3aOdiq01DuSVx0TseaEzMIVqebMZ0Z3vaeDhFEh9bsc24hV1TFvN74reA2vs08D0ZWfNjAcJ3UbVLaBss+g== 913 | 914 | vite@^2.6.4: 915 | version "2.6.14" 916 | resolved "https://registry.yarnpkg.com/vite/-/vite-2.6.14.tgz#35c09a15e4df823410819a2a239ab11efb186271" 917 | integrity sha512-2HA9xGyi+EhY2MXo0+A2dRsqsAG3eFNEVIo12olkWhOmc8LfiM+eMdrXf+Ruje9gdXgvSqjLI9freec1RUM5EA== 918 | dependencies: 919 | esbuild "^0.13.2" 920 | postcss "^8.3.8" 921 | resolve "^1.20.0" 922 | rollup "^2.57.0" 923 | optionalDependencies: 924 | fsevents "~2.3.2" 925 | 926 | webidl-conversions@^3.0.0: 927 | version "3.0.1" 928 | resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" 929 | integrity sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE= 930 | 931 | whatwg-url@^5.0.0: 932 | version "5.0.0" 933 | resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" 934 | integrity sha1-lmRU6HZUYuN2RNNib2dCzotwll0= 935 | dependencies: 936 | tr46 "~0.0.3" 937 | webidl-conversions "^3.0.0" 938 | 939 | wordwrap@^1.0.0: 940 | version "1.0.0" 941 | resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" 942 | integrity sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus= 943 | 944 | wrappy@1: 945 | version "1.0.2" 946 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" 947 | integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= 948 | --------------------------------------------------------------------------------