diff --git a/.config/dotnet-tools.json b/.config/dotnet-tools.json index 2bb0d03..d8b754c 100644 --- a/.config/dotnet-tools.json +++ b/.config/dotnet-tools.json @@ -3,28 +3,32 @@ "isRoot": true, "tools": { "fantomas": { - "version": "6.2.3", + "version": "6.3.16", "commands": [ "fantomas" - ] + ], + "rollForward": false }, "verify.tool": { "version": "0.6.0", "commands": [ "dotnet-verify" - ] + ], + "rollForward": false }, "csharpier": { - "version": "0.26.4", + "version": "0.30.2", "commands": [ "dotnet-csharpier" - ] + ], + "rollForward": false }, "dotnet-fsharplint": { - "version": "0.21.10", + "version": "0.24.2", "commands": [ "dotnet-fsharplint" - ] + ], + "rollForward": false } } -} \ No newline at end of file +} diff --git a/.github/workflows/pull-request.yml b/.github/workflows/pull-request.yml index 8da783a..0c21490 100644 --- a/.github/workflows/pull-request.yml +++ b/.github/workflows/pull-request.yml @@ -31,14 +31,15 @@ jobs: name: windows-2019 runs-on: windows-2019 steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Setup dotnet - uses: actions/setup-dotnet@v3 + uses: actions/setup-dotnet@v4 with: dotnet-version: | - 8.x + 9.0.1xx + dotnet-quality: 'daily' - name: 'Cache: .nuke/temp, ~/.nuget/packages' - uses: actions/cache@v3 + uses: actions/cache@v4 with: path: | .nuke/temp @@ -50,14 +51,15 @@ jobs: name: ubuntu-latest runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Setup dotnet - uses: actions/setup-dotnet@v3 + uses: actions/setup-dotnet@v4 with: dotnet-version: | - 8.x + 9.0.1xx + dotnet-quality: 'daily' - name: 'Cache: .nuke/temp, ~/.nuget/packages' - uses: actions/cache@v3 + uses: actions/cache@v4 with: path: | .nuke/temp @@ -69,14 +71,15 @@ jobs: name: macos-latest runs-on: macos-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Setup dotnet - uses: actions/setup-dotnet@v3 + uses: actions/setup-dotnet@v4 with: dotnet-version: | - 8.x + 9.0.1xx + dotnet-quality: 'daily' - name: 'Cache: .nuke/temp, ~/.nuget/packages' - uses: actions/cache@v3 + uses: actions/cache@v4 with: path: | .nuke/temp diff --git a/.nuke/build.schema.json b/.nuke/build.schema.json index bce52d7..764de51 100644 --- a/.nuke/build.schema.json +++ b/.nuke/build.schema.json @@ -1,21 +1,57 @@ { "$schema": "http://json-schema.org/draft-04/schema#", - "$ref": "#/definitions/build", - "title": "Build Schema", "definitions": { - "build": { - "type": "object", + "Host": { + "type": "string", + "enum": [ + "AppVeyor", + "AzurePipelines", + "Bamboo", + "Bitbucket", + "Bitrise", + "GitHubActions", + "GitLab", + "Jenkins", + "Rider", + "SpaceAutomation", + "TeamCity", + "Terminal", + "TravisCI", + "VisualStudio", + "VSCode" + ] + }, + "ExecutableTarget": { + "type": "string", + "enum": [ + "CheckCsharpier", + "CheckFantomas", + "Compile", + "FormatCsharpier", + "FormatFantomas", + "InstallCsharpier", + "InstallFantomas", + "InstallLinters", + "Lint", + "Pack", + "PublishLanguageServer", + "Restore", + "RestoreTools", + "Test" + ] + }, + "Verbosity": { + "type": "string", + "description": "", + "enum": [ + "Verbose", + "Normal", + "Minimal", + "Quiet" + ] + }, + "NukeBuild": { "properties": { - "CleanPackagesDirectory": { - "type": "boolean" - }, - "Configuration": { - "type": "string", - "enum": [ - "Debug", - "Release" - ] - }, "Continue": { "type": "boolean", "description": "Indicates to continue a previously failed build attempt" @@ -25,29 +61,8 @@ "description": "Shows the help text for this build assembly" }, "Host": { - "type": "string", "description": "Host for execution. Default is 'automatic'", - "enum": [ - "AppVeyor", - "AzurePipelines", - "Bamboo", - "Bitbucket", - "Bitrise", - "GitHubActions", - "GitLab", - "Jenkins", - "Rider", - "SpaceAutomation", - "TeamCity", - "Terminal", - "TravisCI", - "VisualStudio", - "VSCode" - ] - }, - "IgnoreFailedSources": { - "type": "boolean", - "description": "Ignore unreachable sources during Restore" + "$ref": "#/definitions/Host" }, "NoLogo": { "type": "boolean", @@ -76,65 +91,48 @@ "type": "array", "description": "List of targets to be skipped. Empty list skips all dependencies", "items": { - "type": "string", - "enum": [ - "CheckCsharpier", - "CheckFantomas", - "CheckFSharpLint", - "Compile", - "FormatCsharpier", - "FormatFantomas", - "InstallCsharpier", - "InstallFantomas", - "InstallFSharpLint", - "InstallLinters", - "Lint", - "Pack", - "Restore", - "RestoreTools", - "Test" - ] + "$ref": "#/definitions/ExecutableTarget" } }, - "Solution": { - "type": "string", - "description": "Path to a solution file that is automatically loaded" - }, "Target": { "type": "array", "description": "List of targets to be invoked. Default is '{default_target}'", "items": { - "type": "string", - "enum": [ - "CheckCsharpier", - "CheckFantomas", - "CheckFSharpLint", - "Compile", - "FormatCsharpier", - "FormatFantomas", - "InstallCsharpier", - "InstallFantomas", - "InstallFSharpLint", - "InstallLinters", - "Lint", - "Pack", - "Restore", - "RestoreTools", - "Test" - ] + "$ref": "#/definitions/ExecutableTarget" } }, "Verbosity": { - "type": "string", "description": "Logging verbosity during build execution. Default is 'Normal'", + "$ref": "#/definitions/Verbosity" + } + } + } + }, + "allOf": [ + { + "properties": { + "CleanPackagesDirectory": { + "type": "boolean" + }, + "Configuration": { + "type": "string", "enum": [ - "Minimal", - "Normal", - "Quiet", - "Verbose" + "Debug", + "Release" ] + }, + "IgnoreFailedSources": { + "type": "boolean", + "description": "Ignore unreachable sources during Restore" + }, + "Solution": { + "type": "string", + "description": "Path to a solution file that is automatically loaded" } } + }, + { + "$ref": "#/definitions/NukeBuild" } - } + ] } diff --git a/Directory.Build.props b/Directory.Build.props index 2ff40e1..541460c 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -1,7 +1,7 @@ - net8.0 + net9.0 strict en true diff --git a/build/Build.cs b/build/Build.cs index 9ba6f77..db0c3bc 100644 --- a/build/Build.cs +++ b/build/Build.cs @@ -4,7 +4,6 @@ using System.Collections.Generic; using System.Linq; -using System.Security.Cryptography; using Nuke.Common; using Nuke.Common.CI.GitHubActions; using Nuke.Common.Execution; @@ -27,7 +26,8 @@ OnPushBranches = [MainBranch, DevelopBranch], PublishArtifacts = false // FetchDepth = 0 // fetch full history - , SetupDotnetVersions = ["8.x",] + , SetupDotnetVersions = ["9.0.1xx",] + , SetupDotnetQuality = DotnetVersionQuality.Daily , InvokedTargets = [ nameof(ITest.Test), nameof(IUseLinters.InstallLinters), @@ -38,7 +38,7 @@ class Build : NukeBuild, IUseCsharpier, IUseFantomas, - IUseFSharpLint, + //IUseFSharpLint, IUseCustomLinters, IHazSolution, ITest, @@ -70,26 +70,28 @@ public T From() bool IUseCsharpier.UseGlobalTool => false; bool IUseFantomas.UseGlobalTool => false; - bool IUseFSharpLint.UseGlobalTool => false; + //bool IUseFSharpLint.UseGlobalTool => false; - IEnumerable IUseFantomas.DirectoriesToFormat => new[] - { + IEnumerable IUseFantomas.DirectoriesToFormat => + [ RootDirectory / "src", RootDirectory / "tests", - }; + ]; - IEnumerable IUseCustomLinters.Linters => new IProvideLinter[] - { + IEnumerable IUseCustomLinters.Linters => + [ From().Linter, From().Linter, - From().Linter, - }; + //From().Linter, + ]; + + AbsolutePath ToolsManifestPath => RootDirectory / ".config" / "dotnet-tools.json"; // csharpier-ignore public Target RestoreTools => _ => _ .Before(it => it.Restore) .DependentFor(it => it.InstallLinters) - .Executes(() => DotNetToolRestore()) + .Executes(() => DotNetToolRestore(it => it.SetToolManifest(ToolsManifestPath))) ; public SolutionFolder SrcFolder => CurrentSolution.GetSolutionFolder("src"); @@ -99,7 +101,7 @@ public T From() SrcFolder.GetProject("Visp.Runtime.Library"), ]; - IEnumerable TargetFrameworks => ["net8.0"]; + IEnumerable TargetFrameworks => ["net9.0"]; IEnumerable<(Project Project, string Framework)> ICompile.PublishConfigurations => from project in ProjectsToPack @@ -129,6 +131,20 @@ from framework in TargetFrameworks _.RemoveLoggers($"trx;LogFileName={v.Name}.trx") .AddLoggers($"trx;LogFilePrefix={v.Name}"); + Project LanguageServerProject => CurrentSolution.GetSolutionFolder("src").GetProject("Visp.LanguageServer"); + + // csharpier-ignore + public Target PublishLanguageServer => _ => _ + .DependsOn(x => x.Compile) + .Executes(() => + { + DotNetPublish(it => it + .SetProject(LanguageServerProject) + .SetNoRestore(true) + .SetOutput(RootDirectory / "artifacts" / "Visp.LanguageServer") + .AddProperty("TargetsForTfmSpecificContentInPackage", "")); + }); + // specifying TargetsForTfmSpecificContentInPackage because of // https://github.com/dotnet/fsharp/issues/12320#issuecomment-1059791494 @@ -197,7 +213,7 @@ public interface IPackSpecificPackagesWithoutTesting : IPack [Parameter] bool CleanPackagesDirectory => true; - IEnumerable TargetFrameworks => ["net8.0"]; + IEnumerable TargetFrameworks => ["net9.0"]; IEnumerable<(Project Project, string Framework)> ICompile.PublishConfigurations => from project in ProjectsToPack @@ -248,8 +264,8 @@ public interface IUseFantomas : INukeBuild // csharpier-ignore Target FormatFantomas => _ => _ - .TryBefore(x => x.Format) - .TryDependentFor(x => x.Format) + .TryBefore(x => x.FormatDotNet) + .TryDependentFor(x => x.FormatDotNet) .Executes(() => RunFantomas(check: false)); sealed IProvideLinter Linter => @@ -283,7 +299,10 @@ public interface IUseFSharpLint : INukeBuild, IHazSolution { bool UseGlobalTool { get; } - IEnumerable FilesToFormat => new[] { Solution.Path }; + IEnumerable FilesToFormat => Solution + .AllProjects + .Where(it => it.Path.Extension.Contains("fsproj")) + .Select(it => it.Path); // csharpier-ignore Target CheckFSharpLint => _ => _ @@ -316,7 +335,12 @@ void RunFormat(AbsolutePath path) { DotNet( arguments: toolname + $" lint {path}", - logInvocation: true + logInvocation: true, + environmentVariables: new Dictionary + { + // https://github.com/fsprojects/FSharpLint/issues/687 + ["DOTNET_ROLL_FORWARD"] = "latestMajor", + } ); } } diff --git a/build/_build.csproj b/build/_build.csproj index 8391b05..82bc74e 100644 --- a/build/_build.csproj +++ b/build/_build.csproj @@ -2,7 +2,7 @@ Exe - net8.0 + net9.0 12.0 CS0649;CS0169;CA1050;CA1822;CA2211;IDE1006 @@ -15,9 +15,9 @@ - - - + + + diff --git a/cli.ps1 b/cli.ps1 index f59391e..5106602 100755 --- a/cli.ps1 +++ b/cli.ps1 @@ -12,16 +12,16 @@ function ExecSafe([scriptblock] $cmd) { $buildArgs = @( "build" + "-v", "q" + "-tl:off" ) if (-not $NoBuild) { - ExecSafe { & dotnet @buildArgs } + ExecSafe { & dotnet @buildArgs | Out-Null } } $dotnetArgs = @( - "run" - "--project", "./src/Visp.Cli" - "--no-build" + "src/Visp.Cli/bin/Debug/net9.0/Visp.Cli.dll" ) -ExecSafe { & dotnet @dotnetArgs `-- @CmdArgs } +ExecSafe { & dotnet @dotnetArgs @CmdArgs } diff --git a/editors/vscode/visp-fs/.eslintrc.json b/editors/vscode/visp-fs/.eslintrc.json deleted file mode 100644 index bb8a001..0000000 --- a/editors/vscode/visp-fs/.eslintrc.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "root": true, - "parser": "@typescript-eslint/parser", - "parserOptions": { - "ecmaVersion": 6, - "sourceType": "module" - }, - "plugins": ["@typescript-eslint"], - "rules": { - "@typescript-eslint/naming-convention": [ - "warn", - { - "selector": "import", - "format": ["camelCase", "PascalCase"] - } - ], - "@typescript-eslint/semi": "warn", - "curly": "warn", - "eqeqeq": "warn", - "no-throw-literal": "warn", - "semi": "off" - }, - "ignorePatterns": ["out", "dist", "**/*.d.ts"] -} diff --git a/editors/vscode/visp-fs/.prettierrc.json b/editors/vscode/visp-fs/.prettierrc.json new file mode 100644 index 0000000..e470e8c --- /dev/null +++ b/editors/vscode/visp-fs/.prettierrc.json @@ -0,0 +1,6 @@ +{ + "trailingComma": "es5", + "tabWidth": 2, + "semi": true, + "singleQuote": false +} diff --git a/editors/vscode/visp-fs/eslint.config.mjs b/editors/vscode/visp-fs/eslint.config.mjs new file mode 100644 index 0000000..6a06461 --- /dev/null +++ b/editors/vscode/visp-fs/eslint.config.mjs @@ -0,0 +1,9 @@ +// @ts-check + +import eslint from '@eslint/js'; +import tseslint from 'typescript-eslint'; + +export default tseslint.config( + eslint.configs.recommended, + tseslint.configs.recommended, +); diff --git a/editors/vscode/visp-fs/package-lock.json b/editors/vscode/visp-fs/package-lock.json index d326b0f..c15ad41 100644 --- a/editors/vscode/visp-fs/package-lock.json +++ b/editors/vscode/visp-fs/package-lock.json @@ -12,18 +12,18 @@ "vscode-languageclient": "^9.0.1" }, "devDependencies": { - "@types/mocha": "^10.0.6", - "@types/node": "20.x", - "@types/vscode": "^1.84.2", - "@typescript-eslint/eslint-plugin": "^6.13.1", - "@typescript-eslint/parser": "^6.13.1", - "@vscode/test-electron": "^2.3.8", - "@vscode/vsce": "^2.22.0", - "esbuild": "^0.19.8", - "eslint": "^8.54.0", - "glob": "^10.3.10", - "mocha": "^10.2.0", - "typescript": "^5.3.2" + "@eslint/js": "^9.16.0", + "@types/mocha": "^10.0.10", + "@types/node": "22.x", + "@types/vscode": "^1.95.0", + "@vscode/test-electron": "^2.4.1", + "@vscode/vsce": "^3.2.1", + "esbuild": "^0.24.0", + "eslint": "^9.16.0", + "glob": "^11.0.0", + "mocha": "^10.8.2", + "typescript": "^5.7.2", + "typescript-eslint": "^8.16.0" }, "engines": { "vscode": "^1.84.0" @@ -38,356 +38,583 @@ "node": ">=0.10.0" } }, + "node_modules/@azure/abort-controller": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@azure/abort-controller/-/abort-controller-2.1.2.tgz", + "integrity": "sha512-nBrLsEWm4J2u5LpAPjxADTlq3trDgVZZXHNKabeXZtpq3d3AbN/KGO82R87rdDz5/lYB024rtEf10/q0urNgsA==", + "dev": true, + "license": "MIT", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@azure/core-auth": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@azure/core-auth/-/core-auth-1.9.0.tgz", + "integrity": "sha512-FPwHpZywuyasDSLMqJ6fhbOK3TqUdviZNF8OqRGA4W5Ewib2lEEZ+pBsYcBa88B2NGO/SEnYPGhyBqNlE8ilSw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@azure/abort-controller": "^2.0.0", + "@azure/core-util": "^1.11.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@azure/core-client": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/@azure/core-client/-/core-client-1.9.2.tgz", + "integrity": "sha512-kRdry/rav3fUKHl/aDLd/pDLcB+4pOFwPPTVEExuMyaI5r+JBbMWqRbCY1pn5BniDaU3lRxO9eaQ1AmSMehl/w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@azure/abort-controller": "^2.0.0", + "@azure/core-auth": "^1.4.0", + "@azure/core-rest-pipeline": "^1.9.1", + "@azure/core-tracing": "^1.0.0", + "@azure/core-util": "^1.6.1", + "@azure/logger": "^1.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@azure/core-rest-pipeline": { + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/@azure/core-rest-pipeline/-/core-rest-pipeline-1.18.1.tgz", + "integrity": "sha512-/wS73UEDrxroUEVywEm7J0p2c+IIiVxyfigCGfsKvCxxCET4V/Hef2aURqltrXMRjNmdmt5IuOgIpl8f6xdO5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@azure/abort-controller": "^2.0.0", + "@azure/core-auth": "^1.8.0", + "@azure/core-tracing": "^1.0.1", + "@azure/core-util": "^1.11.0", + "@azure/logger": "^1.0.0", + "http-proxy-agent": "^7.0.0", + "https-proxy-agent": "^7.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@azure/core-tracing": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@azure/core-tracing/-/core-tracing-1.2.0.tgz", + "integrity": "sha512-UKTiEJPkWcESPYJz3X5uKRYyOcJD+4nYph+KpfdPRnQJVrZfk0KJgdnaAWKfhsBBtAf/D58Az4AvCJEmWgIBAg==", + "dev": true, + "license": "MIT", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@azure/core-util": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@azure/core-util/-/core-util-1.11.0.tgz", + "integrity": "sha512-DxOSLua+NdpWoSqULhjDyAZTXFdP/LKkqtYuxxz1SCN289zk3OG8UOpnCQAz/tygyACBtWp/BoO72ptK7msY8g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@azure/abort-controller": "^2.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@azure/identity": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/@azure/identity/-/identity-4.5.0.tgz", + "integrity": "sha512-EknvVmtBuSIic47xkOqyNabAme0RYTw52BTMz8eBgU1ysTyMrD1uOoM+JdS0J/4Yfp98IBT3osqq3BfwSaNaGQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@azure/abort-controller": "^2.0.0", + "@azure/core-auth": "^1.9.0", + "@azure/core-client": "^1.9.2", + "@azure/core-rest-pipeline": "^1.17.0", + "@azure/core-tracing": "^1.0.0", + "@azure/core-util": "^1.11.0", + "@azure/logger": "^1.0.0", + "@azure/msal-browser": "^3.26.1", + "@azure/msal-node": "^2.15.0", + "events": "^3.0.0", + "jws": "^4.0.0", + "open": "^8.0.0", + "stoppable": "^1.1.0", + "tslib": "^2.2.0" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@azure/logger": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@azure/logger/-/logger-1.1.4.tgz", + "integrity": "sha512-4IXXzcCdLdlXuCG+8UKEwLA1T1NHqUfanhXYHiQTn+6sfWCZXduqbtXDGceg3Ce5QxTGo7EqmbV6Bi+aqKuClQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@azure/msal-browser": { + "version": "3.27.0", + "resolved": "https://registry.npmjs.org/@azure/msal-browser/-/msal-browser-3.27.0.tgz", + "integrity": "sha512-+b4ZKSD8+vslCtVRVetkegEhOFMLP3rxDWJY212ct+2r6jVg6OSQKc1Qz3kCoXo0FgwaXkb+76TMZfpHp8QtgA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@azure/msal-common": "14.16.0" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/@azure/msal-common": { + "version": "14.16.0", + "resolved": "https://registry.npmjs.org/@azure/msal-common/-/msal-common-14.16.0.tgz", + "integrity": "sha512-1KOZj9IpcDSwpNiQNjt0jDYZpQvNZay7QAEi/5DLubay40iGYtLzya/jbjRPLyOTZhEKyL1MzPuw2HqBCjceYA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/@azure/msal-node": { + "version": "2.16.2", + "resolved": "https://registry.npmjs.org/@azure/msal-node/-/msal-node-2.16.2.tgz", + "integrity": "sha512-An7l1hEr0w1HMMh1LU+rtDtqL7/jw74ORlc9Wnh06v7TU/xpG39/Zdr1ZJu3QpjUfKJ+E0/OXMW8DRSWTlh7qQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@azure/msal-common": "14.16.0", + "jsonwebtoken": "^9.0.0", + "uuid": "^8.3.0" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.24.0.tgz", + "integrity": "sha512-WtKdFM7ls47zkKHFVzMz8opM7LkcsIp9amDUBIAWirg70RM71WRSjdILPsY5Uv1D42ZpUfaPILDlfactHgsRkw==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=18" + } + }, "node_modules/@esbuild/android-arm": { - "version": "0.19.8", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.19.8.tgz", - "integrity": "sha512-31E2lxlGM1KEfivQl8Yf5aYU/mflz9g06H6S15ITUFQueMFtFjESRMoDSkvMo8thYvLBax+VKTPlpnx+sPicOA==", + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.24.0.tgz", + "integrity": "sha512-arAtTPo76fJ/ICkXWetLCc9EwEHKaeya4vMrReVlEIUCAUncH7M4bhMQ+M9Vf+FFOZJdTNMXNBrWwW+OXWpSew==", "cpu": [ "arm" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "android" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/android-arm64": { - "version": "0.19.8", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.19.8.tgz", - "integrity": "sha512-B8JbS61bEunhfx8kasogFENgQfr/dIp+ggYXwTqdbMAgGDhRa3AaPpQMuQU0rNxDLECj6FhDzk1cF9WHMVwrtA==", + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.24.0.tgz", + "integrity": "sha512-Vsm497xFM7tTIPYK9bNTYJyF/lsP590Qc1WxJdlB6ljCbdZKU9SY8i7+Iin4kyhV/KV5J2rOKsBQbB77Ab7L/w==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "android" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/android-x64": { - "version": "0.19.8", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.19.8.tgz", - "integrity": "sha512-rdqqYfRIn4jWOp+lzQttYMa2Xar3OK9Yt2fhOhzFXqg0rVWEfSclJvZq5fZslnz6ypHvVf3CT7qyf0A5pM682A==", + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.24.0.tgz", + "integrity": "sha512-t8GrvnFkiIY7pa7mMgJd7p8p8qqYIz1NYiAoKc75Zyv73L3DZW++oYMSHPRarcotTKuSs6m3hTOa5CKHaS02TQ==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "android" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/darwin-arm64": { - "version": "0.19.8", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.19.8.tgz", - "integrity": "sha512-RQw9DemMbIq35Bprbboyf8SmOr4UXsRVxJ97LgB55VKKeJOOdvsIPy0nFyF2l8U+h4PtBx/1kRf0BelOYCiQcw==", + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.24.0.tgz", + "integrity": "sha512-CKyDpRbK1hXwv79soeTJNHb5EiG6ct3efd/FTPdzOWdbZZfGhpbcqIpiD0+vwmpu0wTIL97ZRPZu8vUt46nBSw==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "darwin" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/darwin-x64": { - "version": "0.19.8", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.19.8.tgz", - "integrity": "sha512-3sur80OT9YdeZwIVgERAysAbwncom7b4bCI2XKLjMfPymTud7e/oY4y+ci1XVp5TfQp/bppn7xLw1n/oSQY3/Q==", + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.24.0.tgz", + "integrity": "sha512-rgtz6flkVkh58od4PwTRqxbKH9cOjaXCMZgWD905JOzjFKW+7EiUObfd/Kav+A6Gyud6WZk9w+xu6QLytdi2OA==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "darwin" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/freebsd-arm64": { - "version": "0.19.8", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.8.tgz", - "integrity": "sha512-WAnPJSDattvS/XtPCTj1tPoTxERjcTpH6HsMr6ujTT+X6rylVe8ggxk8pVxzf5U1wh5sPODpawNicF5ta/9Tmw==", + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.24.0.tgz", + "integrity": "sha512-6Mtdq5nHggwfDNLAHkPlyLBpE5L6hwsuXZX8XNmHno9JuL2+bg2BX5tRkwjyfn6sKbxZTq68suOjgWqCicvPXA==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "freebsd" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/freebsd-x64": { - "version": "0.19.8", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.19.8.tgz", - "integrity": "sha512-ICvZyOplIjmmhjd6mxi+zxSdpPTKFfyPPQMQTK/w+8eNK6WV01AjIztJALDtwNNfFhfZLux0tZLC+U9nSyA5Zg==", + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.24.0.tgz", + "integrity": "sha512-D3H+xh3/zphoX8ck4S2RxKR6gHlHDXXzOf6f/9dbFt/NRBDIE33+cVa49Kil4WUjxMGW0ZIYBYtaGCa2+OsQwQ==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "freebsd" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-arm": { - "version": "0.19.8", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.19.8.tgz", - "integrity": "sha512-H4vmI5PYqSvosPaTJuEppU9oz1dq2A7Mr2vyg5TF9Ga+3+MGgBdGzcyBP7qK9MrwFQZlvNyJrvz6GuCaj3OukQ==", + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.24.0.tgz", + "integrity": "sha512-gJKIi2IjRo5G6Glxb8d3DzYXlxdEj2NlkixPsqePSZMhLudqPhtZ4BUrpIuTjJYXxvF9njql+vRjB2oaC9XpBw==", "cpu": [ "arm" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-arm64": { - "version": "0.19.8", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.19.8.tgz", - "integrity": "sha512-z1zMZivxDLHWnyGOctT9JP70h0beY54xDDDJt4VpTX+iwA77IFsE1vCXWmprajJGa+ZYSqkSbRQ4eyLCpCmiCQ==", + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.24.0.tgz", + "integrity": "sha512-TDijPXTOeE3eaMkRYpcy3LarIg13dS9wWHRdwYRnzlwlA370rNdZqbcp0WTyyV/k2zSxfko52+C7jU5F9Tfj1g==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-ia32": { - "version": "0.19.8", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.19.8.tgz", - "integrity": "sha512-1a8suQiFJmZz1khm/rDglOc8lavtzEMRo0v6WhPgxkrjcU0LkHj+TwBrALwoz/OtMExvsqbbMI0ChyelKabSvQ==", + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.24.0.tgz", + "integrity": "sha512-K40ip1LAcA0byL05TbCQ4yJ4swvnbzHscRmUilrmP9Am7//0UjPreh4lpYzvThT2Quw66MhjG//20mrufm40mA==", "cpu": [ "ia32" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-loong64": { - "version": "0.19.8", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.19.8.tgz", - "integrity": "sha512-fHZWS2JJxnXt1uYJsDv9+b60WCc2RlvVAy1F76qOLtXRO+H4mjt3Tr6MJ5l7Q78X8KgCFudnTuiQRBhULUyBKQ==", + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.24.0.tgz", + "integrity": "sha512-0mswrYP/9ai+CU0BzBfPMZ8RVm3RGAN/lmOMgW4aFUSOQBjA31UP8Mr6DDhWSuMwj7jaWOT0p0WoZ6jeHhrD7g==", "cpu": [ "loong64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-mips64el": { - "version": "0.19.8", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.19.8.tgz", - "integrity": "sha512-Wy/z0EL5qZYLX66dVnEg9riiwls5IYnziwuju2oUiuxVc+/edvqXa04qNtbrs0Ukatg5HEzqT94Zs7J207dN5Q==", + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.24.0.tgz", + "integrity": "sha512-hIKvXm0/3w/5+RDtCJeXqMZGkI2s4oMUGj3/jM0QzhgIASWrGO5/RlzAzm5nNh/awHE0A19h/CvHQe6FaBNrRA==", "cpu": [ "mips64el" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-ppc64": { - "version": "0.19.8", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.19.8.tgz", - "integrity": "sha512-ETaW6245wK23YIEufhMQ3HSeHO7NgsLx8gygBVldRHKhOlD1oNeNy/P67mIh1zPn2Hr2HLieQrt6tWrVwuqrxg==", + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.24.0.tgz", + "integrity": "sha512-HcZh5BNq0aC52UoocJxaKORfFODWXZxtBaaZNuN3PUX3MoDsChsZqopzi5UupRhPHSEHotoiptqikjN/B77mYQ==", "cpu": [ "ppc64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-riscv64": { - "version": "0.19.8", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.19.8.tgz", - "integrity": "sha512-T2DRQk55SgoleTP+DtPlMrxi/5r9AeFgkhkZ/B0ap99zmxtxdOixOMI570VjdRCs9pE4Wdkz7JYrsPvsl7eESg==", + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.24.0.tgz", + "integrity": "sha512-bEh7dMn/h3QxeR2KTy1DUszQjUrIHPZKyO6aN1X4BCnhfYhuQqedHaa5MxSQA/06j3GpiIlFGSsy1c7Gf9padw==", "cpu": [ "riscv64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-s390x": { - "version": "0.19.8", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.19.8.tgz", - "integrity": "sha512-NPxbdmmo3Bk7mbNeHmcCd7R7fptJaczPYBaELk6NcXxy7HLNyWwCyDJ/Xx+/YcNH7Im5dHdx9gZ5xIwyliQCbg==", + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.24.0.tgz", + "integrity": "sha512-ZcQ6+qRkw1UcZGPyrCiHHkmBaj9SiCD8Oqd556HldP+QlpUIe2Wgn3ehQGVoPOvZvtHm8HPx+bH20c9pvbkX3g==", "cpu": [ "s390x" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-x64": { - "version": "0.19.8", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.19.8.tgz", - "integrity": "sha512-lytMAVOM3b1gPypL2TRmZ5rnXl7+6IIk8uB3eLsV1JwcizuolblXRrc5ShPrO9ls/b+RTp+E6gbsuLWHWi2zGg==", + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.24.0.tgz", + "integrity": "sha512-vbutsFqQ+foy3wSSbmjBXXIJ6PL3scghJoM8zCL142cGaZKAdCZHyf+Bpu/MmX9zT9Q0zFBVKb36Ma5Fzfa8xA==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/netbsd-x64": { - "version": "0.19.8", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.19.8.tgz", - "integrity": "sha512-hvWVo2VsXz/8NVt1UhLzxwAfo5sioj92uo0bCfLibB0xlOmimU/DeAEsQILlBQvkhrGjamP0/el5HU76HAitGw==", + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.24.0.tgz", + "integrity": "sha512-hjQ0R/ulkO8fCYFsG0FZoH+pWgTTDreqpqY7UnQntnaKv95uP5iW3+dChxnx7C3trQQU40S+OgWhUVwCjVFLvg==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "netbsd" ], "engines": { - "node": ">=12" + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.24.0.tgz", + "integrity": "sha512-MD9uzzkPQbYehwcN583yx3Tu5M8EIoTD+tUgKF982WYL9Pf5rKy9ltgD0eUgs8pvKnmizxjXZyLt0z6DC3rRXg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" } }, "node_modules/@esbuild/openbsd-x64": { - "version": "0.19.8", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.19.8.tgz", - "integrity": "sha512-/7Y7u77rdvmGTxR83PgaSvSBJCC2L3Kb1M/+dmSIvRvQPXXCuC97QAwMugBNG0yGcbEGfFBH7ojPzAOxfGNkwQ==", + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.24.0.tgz", + "integrity": "sha512-4ir0aY1NGUhIC1hdoCzr1+5b43mw99uNwVzhIq1OY3QcEwPDO3B7WNXBzaKY5Nsf1+N11i1eOfFcq+D/gOS15Q==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "openbsd" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/sunos-x64": { - "version": "0.19.8", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.19.8.tgz", - "integrity": "sha512-9Lc4s7Oi98GqFA4HzA/W2JHIYfnXbUYgekUP/Sm4BG9sfLjyv6GKKHKKVs83SMicBF2JwAX6A1PuOLMqpD001w==", + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.24.0.tgz", + "integrity": "sha512-jVzdzsbM5xrotH+W5f1s+JtUy1UWgjU0Cf4wMvffTB8m6wP5/kx0KiaLHlbJO+dMgtxKV8RQ/JvtlFcdZ1zCPA==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "sunos" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/win32-arm64": { - "version": "0.19.8", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.19.8.tgz", - "integrity": "sha512-rq6WzBGjSzihI9deW3fC2Gqiak68+b7qo5/3kmB6Gvbh/NYPA0sJhrnp7wgV4bNwjqM+R2AApXGxMO7ZoGhIJg==", + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.24.0.tgz", + "integrity": "sha512-iKc8GAslzRpBytO2/aN3d2yb2z8XTVfNV0PjGlCxKo5SgWmNXx82I/Q3aG1tFfS+A2igVCY97TJ8tnYwpUWLCA==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/win32-ia32": { - "version": "0.19.8", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.19.8.tgz", - "integrity": "sha512-AIAbverbg5jMvJznYiGhrd3sumfwWs8572mIJL5NQjJa06P8KfCPWZQ0NwZbPQnbQi9OWSZhFVSUWjjIrn4hSw==", + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.24.0.tgz", + "integrity": "sha512-vQW36KZolfIudCcTnaTpmLQ24Ha1RjygBo39/aLkM2kmjkWmZGEJ5Gn9l5/7tzXA42QGIoWbICfg6KLLkIw6yw==", "cpu": [ "ia32" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/win32-x64": { - "version": "0.19.8", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.19.8.tgz", - "integrity": "sha512-bfZ0cQ1uZs2PqpulNL5j/3w+GDhP36k1K5c38QdQg+Swy51jFZWWeIkteNsufkQxp986wnqRRsb/bHbY1WQ7TA==", + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.24.0.tgz", + "integrity": "sha512-7IAFPrjSQIJrGsK6flwg7NFmwBoSTyF3rl7If0hNUFQU4ilTsEPL6GuMuU9BfIWVVGuRnuIidkSMC+c0Otu8IA==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@eslint-community/eslint-utils": { @@ -406,24 +633,51 @@ } }, "node_modules/@eslint-community/regexpp": { - "version": "4.10.0", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz", - "integrity": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==", + "version": "4.12.1", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz", + "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==", "dev": true, + "license": "MIT", "engines": { "node": "^12.0.0 || ^14.0.0 || >=16.0.0" } }, + "node_modules/@eslint/config-array": { + "version": "0.19.0", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.19.0.tgz", + "integrity": "sha512-zdHg2FPIFNKPdcHWtiNT+jEFCHYVplAXRDlQDyqy0zGx/q2parwh7brGJSiTxRk/TSMkbM//zt/f5CHgyTyaSQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/object-schema": "^2.1.4", + "debug": "^4.3.1", + "minimatch": "^3.1.2" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/core": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.9.0.tgz", + "integrity": "sha512-7ATR9F0e4W85D/0w7cU0SNj7qkAexMG+bAHEZOjo9akvGuhHE2m7umzWzfnpa0XAg5Kxc1BWmtPMV67jJ+9VUg==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, "node_modules/@eslint/eslintrc": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.3.tgz", - "integrity": "sha512-yZzuIG+jnVu6hNSzFEN07e8BxF3uAzYtQb6uDkaYZLo6oYZDCq454c5kB8zxnzfCYyP4MIuyBn10L0DqwujTmA==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.2.0.tgz", + "integrity": "sha512-grOjVNN8P3hjJn/eIETF1wwd12DdnwFDoyceUJLYYdkpbwq3nLi+4fqrTAONx7XDALqlL220wC/RHSC/QTI/0w==", "dev": true, + "license": "MIT", "dependencies": { "ajv": "^6.12.4", "debug": "^4.3.2", - "espree": "^9.6.0", - "globals": "^13.19.0", + "espree": "^10.0.1", + "globals": "^14.0.0", "ignore": "^5.2.0", "import-fresh": "^3.2.1", "js-yaml": "^4.1.0", @@ -431,33 +685,81 @@ "strip-json-comments": "^3.1.1" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "url": "https://opencollective.com/eslint" } }, "node_modules/@eslint/js": { - "version": "8.54.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.54.0.tgz", - "integrity": "sha512-ut5V+D+fOoWPgGGNj83GGjnntO39xDy6DWxO0wb7Jp3DcMX0TfIqdzHF85VTQkerdyGmuuMD9AKAo5KiNlf/AQ==", + "version": "9.16.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.16.0.tgz", + "integrity": "sha512-tw2HxzQkrbeuvyj1tG2Yqq+0H9wGoI2IMk4EOsQeX+vmd75FtJAzf+gTA69WF+baUKRYQ3x2kbLE08js5OsTVg==", "dev": true, + "license": "MIT", "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/object-schema": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.4.tgz", + "integrity": "sha512-BsWiH1yFGjXXS2yvrf5LyuoSIIbPrGUWob917o+BTKuZ7qJdxX8aJLRxs1fS9n6r7vESrq1OUqb68dANcFXuQQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, - "node_modules/@humanwhocodes/config-array": { - "version": "0.11.13", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.13.tgz", - "integrity": "sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ==", + "node_modules/@eslint/plugin-kit": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.2.3.tgz", + "integrity": "sha512-2b/g5hRmpbb1o4GnTZax9N9m0FXzz9OV42ZzI4rDDMDuHUqigAiQCEWChBWCY4ztAGVRjoWT19v0yMmc5/L5kA==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@humanwhocodes/object-schema": "^2.0.1", - "debug": "^4.1.1", - "minimatch": "^3.0.5" + "levn": "^0.4.1" }, "engines": { - "node": ">=10.10.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@humanfs/core": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", + "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanfs/node": { + "version": "0.16.6", + "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.6.tgz", + "integrity": "sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@humanfs/core": "^0.19.1", + "@humanwhocodes/retry": "^0.3.0" + }, + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanfs/node/node_modules/@humanwhocodes/retry": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.3.1.tgz", + "integrity": "sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" } }, "node_modules/@humanwhocodes/module-importer": { @@ -473,17 +775,26 @@ "url": "https://github.com/sponsors/nzakas" } }, - "node_modules/@humanwhocodes/object-schema": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.1.tgz", - "integrity": "sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw==", - "dev": true + "node_modules/@humanwhocodes/retry": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.1.tgz", + "integrity": "sha512-c7hNEllBlenFTHBky65mhq8WD2kbN9Q6gk0bTk8lSBvc554jpXSkST1iePudpt7+A/AQvuHs9EMqjHDXMY1lrA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } }, "node_modules/@isaacs/cliui": { "version": "8.0.2", "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", "dev": true, + "license": "ISC", "dependencies": { "string-width": "^5.1.2", "string-width-cjs": "npm:string-width@^4.2.0", @@ -497,10 +808,11 @@ } }, "node_modules/@isaacs/cliui/node_modules/ansi-regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", "dev": true, + "license": "MIT", "engines": { "node": ">=12" }, @@ -513,6 +825,7 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", "dev": true, + "license": "MIT", "dependencies": { "ansi-regex": "^6.0.1" }, @@ -558,304 +871,247 @@ "node": ">= 8" } }, - "node_modules/@pkgjs/parseargs": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", - "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "node_modules/@types/estree": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", + "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==", "dev": true, - "optional": true, - "engines": { - "node": ">=14" - } - }, - "node_modules/@tootallnate/once": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", - "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", - "dev": true, - "engines": { - "node": ">= 6" - } + "license": "MIT" }, "node_modules/@types/json-schema": { "version": "7.0.15", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/mocha": { - "version": "10.0.6", - "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-10.0.6.tgz", - "integrity": "sha512-dJvrYWxP/UcXm36Qn36fxhUKu8A/xMRXVT2cliFF1Z7UA9liG5Psj3ezNSZw+5puH2czDXRLcXQxf8JbJt0ejg==", - "dev": true + "version": "10.0.10", + "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-10.0.10.tgz", + "integrity": "sha512-xPyYSz1cMPnJQhl0CLMH68j3gprKZaTjG3s5Vi+fDgx+uhG9NOXwbVt52eFS8ECyXhyKcjDLCBEqBExKuiZb7Q==", + "dev": true, + "license": "MIT" }, "node_modules/@types/node": { - "version": "20.10.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.10.1.tgz", - "integrity": "sha512-T2qwhjWwGH81vUEx4EXmBKsTJRXFXNZTL4v0gi01+zyBmCwzE6TyHszqX01m+QHTEq+EZNo13NeJIdEqf+Myrg==", + "version": "22.10.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.10.1.tgz", + "integrity": "sha512-qKgsUwfHZV2WCWLAnVP1JqnpE6Im6h3Y0+fYgMTasNQ7V++CBX5OT1as0g0f+OyubbFqhf6XVNIsmN4IIhEgGQ==", "dev": true, + "license": "MIT", "dependencies": { - "undici-types": "~5.26.4" + "undici-types": "~6.20.0" } }, - "node_modules/@types/semver": { - "version": "7.5.6", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.6.tgz", - "integrity": "sha512-dn1l8LaMea/IjDoHNd9J52uBbInB796CDffS6VdIxvqYCPSG0V0DzHp76GpaWnlhg88uYyPbXCDIowa86ybd5A==", - "dev": true - }, "node_modules/@types/vscode": { - "version": "1.84.2", - "resolved": "https://registry.npmjs.org/@types/vscode/-/vscode-1.84.2.tgz", - "integrity": "sha512-LCe1FvCDMJKkPdLVGYhP0HRJ1PDop2gRVm/zFHiOKwYLBRS7vEV3uOOUId4HMV+L1IxqyS+IZXMmlSMRbZGIAw==", - "dev": true - }, - "node_modules/@typescript-eslint/eslint-plugin": { - "version": "6.13.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.13.1.tgz", - "integrity": "sha512-5bQDGkXaxD46bPvQt08BUz9YSaO4S0fB1LB5JHQuXTfkGPI3+UUeS387C/e9jRie5GqT8u5kFTrMvAjtX4O5kA==", + "version": "1.95.0", + "resolved": "https://registry.npmjs.org/@types/vscode/-/vscode-1.95.0.tgz", + "integrity": "sha512-0LBD8TEiNbet3NvWsmn59zLzOFu/txSlGxnv5yAFHCrhG9WvAnR3IvfHzMOs2aeWqgvNjq9pO99IUw8d3n+unw==", "dev": true, - "dependencies": { - "@eslint-community/regexpp": "^4.5.1", - "@typescript-eslint/scope-manager": "6.13.1", - "@typescript-eslint/type-utils": "6.13.1", - "@typescript-eslint/utils": "6.13.1", - "@typescript-eslint/visitor-keys": "6.13.1", - "debug": "^4.3.4", - "graphemer": "^1.4.0", - "ignore": "^5.2.4", - "natural-compare": "^1.4.0", - "semver": "^7.5.4", - "ts-api-utils": "^1.0.1" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "@typescript-eslint/parser": "^6.0.0 || ^6.0.0-alpha", - "eslint": "^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } + "license": "MIT" }, - "node_modules/@typescript-eslint/parser": { - "version": "6.13.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.13.1.tgz", - "integrity": "sha512-fs2XOhWCzRhqMmQf0eicLa/CWSaYss2feXsy7xBD/pLyWke/jCIVc2s1ikEAtSW7ina1HNhv7kONoEfVNEcdDQ==", + "node_modules/@vscode/test-electron": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@vscode/test-electron/-/test-electron-2.4.1.tgz", + "integrity": "sha512-Gc6EdaLANdktQ1t+zozoBVRynfIsMKMc94Svu1QreOBC8y76x4tvaK32TljrLi1LI2+PK58sDVbL7ALdqf3VRQ==", "dev": true, + "license": "MIT", "dependencies": { - "@typescript-eslint/scope-manager": "6.13.1", - "@typescript-eslint/types": "6.13.1", - "@typescript-eslint/typescript-estree": "6.13.1", - "@typescript-eslint/visitor-keys": "6.13.1", - "debug": "^4.3.4" + "http-proxy-agent": "^7.0.2", + "https-proxy-agent": "^7.0.5", + "jszip": "^3.10.1", + "ora": "^7.0.1", + "semver": "^7.6.2" }, "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "node": ">=16" } }, - "node_modules/@typescript-eslint/scope-manager": { - "version": "6.13.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.13.1.tgz", - "integrity": "sha512-BW0kJ7ceiKi56GbT2KKzZzN+nDxzQK2DS6x0PiSMPjciPgd/JRQGMibyaN2cPt2cAvuoH0oNvn2fwonHI+4QUQ==", + "node_modules/@vscode/vsce": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/@vscode/vsce/-/vsce-3.2.1.tgz", + "integrity": "sha512-AY9vBjwExakK1c0cI/3NN2Ey0EgiKLBye/fxl/ue+o4q6RZ7N+xzd1jAD6eI6eBeMVANi617+V2rxIAkDPco2Q==", "dev": true, + "license": "MIT", "dependencies": { - "@typescript-eslint/types": "6.13.1", - "@typescript-eslint/visitor-keys": "6.13.1" + "@azure/identity": "^4.1.0", + "@vscode/vsce-sign": "^2.0.0", + "azure-devops-node-api": "^12.5.0", + "chalk": "^2.4.2", + "cheerio": "^1.0.0-rc.9", + "cockatiel": "^3.1.2", + "commander": "^6.2.1", + "form-data": "^4.0.0", + "glob": "^11.0.0", + "hosted-git-info": "^4.0.2", + "jsonc-parser": "^3.2.0", + "leven": "^3.1.0", + "markdown-it": "^14.1.0", + "mime": "^1.3.4", + "minimatch": "^3.0.3", + "parse-semver": "^1.1.1", + "read": "^1.0.7", + "semver": "^7.5.2", + "tmp": "^0.2.3", + "typed-rest-client": "^1.8.4", + "url-join": "^4.0.1", + "xml2js": "^0.5.0", + "yauzl": "^2.3.1", + "yazl": "^2.2.2" + }, + "bin": { + "vsce": "vsce" }, "engines": { - "node": "^16.0.0 || >=18.0.0" + "node": ">= 20" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "optionalDependencies": { + "keytar": "^7.7.0" } }, - "node_modules/@typescript-eslint/type-utils": { - "version": "6.13.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.13.1.tgz", - "integrity": "sha512-A2qPlgpxx2v//3meMqQyB1qqTg1h1dJvzca7TugM3Yc2USDY+fsRBiojAEo92HO7f5hW5mjAUF6qobOPzlBCBQ==", + "node_modules/@vscode/vsce-sign": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@vscode/vsce-sign/-/vsce-sign-2.0.5.tgz", + "integrity": "sha512-GfYWrsT/vypTMDMgWDm75iDmAOMe7F71sZECJ+Ws6/xyIfmB3ELVnVN+LwMFAvmXY+e6eWhR2EzNGF/zAhWY3Q==", "dev": true, - "dependencies": { - "@typescript-eslint/typescript-estree": "6.13.1", - "@typescript-eslint/utils": "6.13.1", - "debug": "^4.3.4", - "ts-api-utils": "^1.0.1" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } + "hasInstallScript": true, + "license": "SEE LICENSE IN LICENSE.txt", + "optionalDependencies": { + "@vscode/vsce-sign-alpine-arm64": "2.0.2", + "@vscode/vsce-sign-alpine-x64": "2.0.2", + "@vscode/vsce-sign-darwin-arm64": "2.0.2", + "@vscode/vsce-sign-darwin-x64": "2.0.2", + "@vscode/vsce-sign-linux-arm": "2.0.2", + "@vscode/vsce-sign-linux-arm64": "2.0.2", + "@vscode/vsce-sign-linux-x64": "2.0.2", + "@vscode/vsce-sign-win32-arm64": "2.0.2", + "@vscode/vsce-sign-win32-x64": "2.0.2" + } + }, + "node_modules/@vscode/vsce-sign-alpine-arm64": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@vscode/vsce-sign-alpine-arm64/-/vsce-sign-alpine-arm64-2.0.2.tgz", + "integrity": "sha512-E80YvqhtZCLUv3YAf9+tIbbqoinWLCO/B3j03yQPbjT3ZIHCliKZlsy1peNc4XNZ5uIb87Jn0HWx/ZbPXviuAQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "SEE LICENSE IN LICENSE.txt", + "optional": true, + "os": [ + "alpine" + ] }, - "node_modules/@typescript-eslint/types": { - "version": "6.13.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.13.1.tgz", - "integrity": "sha512-gjeEskSmiEKKFIbnhDXUyiqVma1gRCQNbVZ1C8q7Zjcxh3WZMbzWVfGE9rHfWd1msQtPS0BVD9Jz9jded44eKg==", + "node_modules/@vscode/vsce-sign-alpine-x64": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@vscode/vsce-sign-alpine-x64/-/vsce-sign-alpine-x64-2.0.2.tgz", + "integrity": "sha512-n1WC15MSMvTaeJ5KjWCzo0nzjydwxLyoHiMJHu1Ov0VWTZiddasmOQHekA47tFRycnt4FsQrlkSCTdgHppn6bw==", + "cpu": [ + "x64" + ], "dev": true, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } + "license": "SEE LICENSE IN LICENSE.txt", + "optional": true, + "os": [ + "alpine" + ] }, - "node_modules/@typescript-eslint/typescript-estree": { - "version": "6.13.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.13.1.tgz", - "integrity": "sha512-sBLQsvOC0Q7LGcUHO5qpG1HxRgePbT6wwqOiGLpR8uOJvPJbfs0mW3jPA3ujsDvfiVwVlWUDESNXv44KtINkUQ==", + "node_modules/@vscode/vsce-sign-darwin-arm64": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@vscode/vsce-sign-darwin-arm64/-/vsce-sign-darwin-arm64-2.0.2.tgz", + "integrity": "sha512-rz8F4pMcxPj8fjKAJIfkUT8ycG9CjIp888VY/6pq6cuI2qEzQ0+b5p3xb74CJnBbSC0p2eRVoe+WgNCAxCLtzQ==", + "cpu": [ + "arm64" + ], "dev": true, - "dependencies": { - "@typescript-eslint/types": "6.13.1", - "@typescript-eslint/visitor-keys": "6.13.1", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "semver": "^7.5.4", - "ts-api-utils": "^1.0.1" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } + "license": "SEE LICENSE IN LICENSE.txt", + "optional": true, + "os": [ + "darwin" + ] }, - "node_modules/@typescript-eslint/utils": { - "version": "6.13.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.13.1.tgz", - "integrity": "sha512-ouPn/zVoan92JgAegesTXDB/oUp6BP1v8WpfYcqh649ejNc9Qv+B4FF2Ff626kO1xg0wWwwG48lAJ4JuesgdOw==", + "node_modules/@vscode/vsce-sign-darwin-x64": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@vscode/vsce-sign-darwin-x64/-/vsce-sign-darwin-x64-2.0.2.tgz", + "integrity": "sha512-MCjPrQ5MY/QVoZ6n0D92jcRb7eYvxAujG/AH2yM6lI0BspvJQxp0o9s5oiAM9r32r9tkLpiy5s2icsbwefAQIw==", + "cpu": [ + "x64" + ], "dev": true, - "dependencies": { - "@eslint-community/eslint-utils": "^4.4.0", - "@types/json-schema": "^7.0.12", - "@types/semver": "^7.5.0", - "@typescript-eslint/scope-manager": "6.13.1", - "@typescript-eslint/types": "6.13.1", - "@typescript-eslint/typescript-estree": "6.13.1", - "semver": "^7.5.4" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0" - } + "license": "SEE LICENSE IN LICENSE.txt", + "optional": true, + "os": [ + "darwin" + ] }, - "node_modules/@typescript-eslint/visitor-keys": { - "version": "6.13.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.13.1.tgz", - "integrity": "sha512-NDhQUy2tg6XGNBGDRm1XybOHSia8mcXmlbKWoQP+nm1BIIMxa55shyJfZkHpEBN62KNPLrocSM2PdPcaLgDKMQ==", + "node_modules/@vscode/vsce-sign-linux-arm": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@vscode/vsce-sign-linux-arm/-/vsce-sign-linux-arm-2.0.2.tgz", + "integrity": "sha512-Fkb5jpbfhZKVw3xwR6t7WYfwKZktVGNXdg1m08uEx1anO0oUPUkoQRsNm4QniL3hmfw0ijg00YA6TrxCRkPVOQ==", + "cpu": [ + "arm" + ], "dev": true, - "dependencies": { - "@typescript-eslint/types": "6.13.1", - "eslint-visitor-keys": "^3.4.1" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } + "license": "SEE LICENSE IN LICENSE.txt", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@vscode/vsce-sign-linux-arm64": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@vscode/vsce-sign-linux-arm64/-/vsce-sign-linux-arm64-2.0.2.tgz", + "integrity": "sha512-Ybeu7cA6+/koxszsORXX0OJk9N0GgfHq70Wqi4vv2iJCZvBrOWwcIrxKjvFtwyDgdeQzgPheH5nhLVl5eQy7WA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "SEE LICENSE IN LICENSE.txt", + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/@ungap/structured-clone": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", - "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", - "dev": true + "node_modules/@vscode/vsce-sign-linux-x64": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@vscode/vsce-sign-linux-x64/-/vsce-sign-linux-x64-2.0.2.tgz", + "integrity": "sha512-NsPPFVtLaTlVJKOiTnO8Cl78LZNWy0Q8iAg+LlBiCDEgC12Gt4WXOSs2pmcIjDYzj2kY4NwdeN1mBTaujYZaPg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "SEE LICENSE IN LICENSE.txt", + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/@vscode/test-electron": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/@vscode/test-electron/-/test-electron-2.3.8.tgz", - "integrity": "sha512-b4aZZsBKtMGdDljAsOPObnAi7+VWIaYl3ylCz1jTs+oV6BZ4TNHcVNC3xUn0azPeszBmwSBDQYfFESIaUQnrOg==", + "node_modules/@vscode/vsce-sign-win32-arm64": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@vscode/vsce-sign-win32-arm64/-/vsce-sign-win32-arm64-2.0.2.tgz", + "integrity": "sha512-wPs848ymZ3Ny+Y1Qlyi7mcT6VSigG89FWQnp2qRYCyMhdJxOpA4lDwxzlpL8fG6xC8GjQjGDkwbkWUcCobvksQ==", + "cpu": [ + "arm64" + ], "dev": true, - "dependencies": { - "http-proxy-agent": "^4.0.1", - "https-proxy-agent": "^5.0.0", - "jszip": "^3.10.1", - "semver": "^7.5.2" - }, - "engines": { - "node": ">=16" - } + "license": "SEE LICENSE IN LICENSE.txt", + "optional": true, + "os": [ + "win32" + ] }, - "node_modules/@vscode/vsce": { - "version": "2.22.0", - "resolved": "https://registry.npmjs.org/@vscode/vsce/-/vsce-2.22.0.tgz", - "integrity": "sha512-8df4uJiM3C6GZ2Sx/KilSKVxsetrTBBIUb3c0W4B1EWHcddioVs5mkyDKtMNP0khP/xBILVSzlXxhV+nm2rC9A==", + "node_modules/@vscode/vsce-sign-win32-x64": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@vscode/vsce-sign-win32-x64/-/vsce-sign-win32-x64-2.0.2.tgz", + "integrity": "sha512-pAiRN6qSAhDM5SVOIxgx+2xnoVUePHbRNC7OD2aOR3WltTKxxF25OfpK8h8UQ7A0BuRkSgREbB59DBlFk4iAeg==", + "cpu": [ + "x64" + ], "dev": true, - "dependencies": { - "azure-devops-node-api": "^11.0.1", - "chalk": "^2.4.2", - "cheerio": "^1.0.0-rc.9", - "commander": "^6.2.1", - "glob": "^7.0.6", - "hosted-git-info": "^4.0.2", - "jsonc-parser": "^3.2.0", - "leven": "^3.1.0", - "markdown-it": "^12.3.2", - "mime": "^1.3.4", - "minimatch": "^3.0.3", - "parse-semver": "^1.1.1", - "read": "^1.0.7", - "semver": "^7.5.2", - "tmp": "^0.2.1", - "typed-rest-client": "^1.8.4", - "url-join": "^4.0.1", - "xml2js": "^0.5.0", - "yauzl": "^2.3.1", - "yazl": "^2.2.2" - }, - "bin": { - "vsce": "vsce" - }, - "engines": { - "node": ">= 14" - }, - "optionalDependencies": { - "keytar": "^7.7.0" - } + "license": "SEE LICENSE IN LICENSE.txt", + "optional": true, + "os": [ + "win32" + ] }, "node_modules/@vscode/vsce/node_modules/ansi-styles": { "version": "3.2.1", @@ -907,26 +1163,6 @@ "node": ">=0.8.0" } }, - "node_modules/@vscode/vsce/node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/@vscode/vsce/node_modules/has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", @@ -949,10 +1185,11 @@ } }, "node_modules/acorn": { - "version": "8.11.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.2.tgz", - "integrity": "sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==", + "version": "8.14.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz", + "integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==", "dev": true, + "license": "MIT", "bin": { "acorn": "bin/acorn" }, @@ -965,20 +1202,22 @@ "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", "dev": true, + "license": "MIT", "peerDependencies": { "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, "node_modules/agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz", + "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==", "dev": true, + "license": "MIT", "dependencies": { - "debug": "4" + "debug": "^4.3.4" }, "engines": { - "node": ">= 6.0.0" + "node": ">= 14" } }, "node_modules/ajv": { @@ -986,6 +1225,7 @@ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, + "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -998,10 +1238,11 @@ } }, "node_modules/ansi-colors": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", - "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", + "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } @@ -1049,20 +1290,19 @@ "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", "dev": true }, - "node_modules/array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", "dev": true, - "engines": { - "node": ">=8" - } + "license": "MIT" }, "node_modules/azure-devops-node-api": { - "version": "11.2.0", - "resolved": "https://registry.npmjs.org/azure-devops-node-api/-/azure-devops-node-api-11.2.0.tgz", - "integrity": "sha512-XdiGPhrpaT5J8wdERRKs5g8E0Zy1pvOYTli7z9E8nmOn3YGp4FhtjhrOyFmX/8veWCwdI69mCHKJw6l+4J/bHA==", + "version": "12.5.0", + "resolved": "https://registry.npmjs.org/azure-devops-node-api/-/azure-devops-node-api-12.5.0.tgz", + "integrity": "sha512-R5eFskGvOm3U/GzeAuxRkUsAl0hrAwGgWn6zAd2KrZmrEhWZVqLew4OOupbQlXUuojUzpGtq62SmdhJ06N88og==", "dev": true, + "license": "MIT", "dependencies": { "tunnel": "0.0.6", "typed-rest-client": "^1.8.4" @@ -1091,8 +1331,7 @@ "type": "consulting", "url": "https://feross.org/support" } - ], - "optional": true + ] }, "node_modules/binary-extensions": { "version": "2.2.0", @@ -1147,12 +1386,13 @@ } }, "node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", "dev": true, + "license": "MIT", "dependencies": { - "fill-range": "^7.0.1" + "fill-range": "^7.1.1" }, "engines": { "node": ">=8" @@ -1198,15 +1438,28 @@ "node": "*" } }, + "node_modules/buffer-equal-constant-time": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", + "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==", + "dev": true, + "license": "BSD-3-Clause" + }, "node_modules/call-bind": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.5.tgz", - "integrity": "sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", "dev": true, + "license": "MIT", "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.1", - "set-function-length": "^1.1.1" + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -1217,6 +1470,7 @@ "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } @@ -1333,6 +1587,35 @@ "dev": true, "optional": true }, + "node_modules/cli-cursor": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-4.0.0.tgz", + "integrity": "sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg==", + "dev": true, + "license": "MIT", + "dependencies": { + "restore-cursor": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-spinners": { + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz", + "integrity": "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/cliui": { "version": "7.0.4", "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", @@ -1381,6 +1664,16 @@ "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, + "node_modules/cockatiel": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/cockatiel/-/cockatiel-3.2.1.tgz", + "integrity": "sha512-gfrHV6ZPkquExvMh9IOkKsBzNDk6sDuZ6DdBGUBkvFnTCqCxzpuq48RySgP0AnaqQkw2zynOFj9yly6T1Q2G5Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=16" + } + }, "node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -1399,6 +1692,19 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dev": true, + "license": "MIT", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, "node_modules/commander": { "version": "6.2.1", "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz", @@ -1421,10 +1727,11 @@ "dev": true }, "node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", "dev": true, + "license": "MIT", "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", @@ -1463,12 +1770,13 @@ } }, "node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", "dev": true, + "license": "MIT", "dependencies": { - "ms": "2.1.2" + "ms": "^2.1.3" }, "engines": { "node": ">=6.0" @@ -1524,60 +1832,61 @@ "dev": true }, "node_modules/define-data-property": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz", - "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", "dev": true, + "license": "MIT", "dependencies": { - "get-intrinsic": "^1.2.1", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.0" + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" }, "engines": { "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/detect-libc": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.2.tgz", - "integrity": "sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw==", + "node_modules/define-lazy-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", "dev": true, - "optional": true, + "license": "MIT", "engines": { "node": ">=8" } }, - "node_modules/diff": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", - "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==", + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", "dev": true, + "license": "MIT", "engines": { - "node": ">=0.3.1" + "node": ">=0.4.0" } }, - "node_modules/dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "node_modules/detect-libc": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.2.tgz", + "integrity": "sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw==", "dev": true, - "dependencies": { - "path-type": "^4.0.0" - }, + "optional": true, "engines": { "node": ">=8" } }, - "node_modules/doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "node_modules/diff": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.2.0.tgz", + "integrity": "sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==", "dev": true, - "dependencies": { - "esutils": "^2.0.2" - }, + "license": "BSD-3-Clause", "engines": { - "node": ">=6.0.0" + "node": ">=0.3.1" } }, "node_modules/dom-serializer": { @@ -1639,13 +1948,25 @@ "version": "0.2.0", "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", - "dev": true + "dev": true, + "license": "MIT" + }, + "node_modules/ecdsa-sig-formatter": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", + "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "safe-buffer": "^5.0.1" + } }, "node_modules/emoji-regex": { "version": "9.2.2", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/end-of-stream": { "version": "1.4.4", @@ -1669,41 +1990,67 @@ "url": "https://github.com/fb55/entities?sponsor=1" } }, + "node_modules/es-define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", + "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, "node_modules/esbuild": { - "version": "0.19.8", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.19.8.tgz", - "integrity": "sha512-l7iffQpT2OrZfH2rXIp7/FkmaeZM0vxbxN9KfiCwGYuZqzMg/JdvX26R31Zxn/Pxvsrg3Y9N6XTcnknqDyyv4w==", + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.24.0.tgz", + "integrity": "sha512-FuLPevChGDshgSicjisSooU0cemp/sGXR841D5LHMB7mTVOmsEHcAxaH3irL53+8YDIeVNQEySh4DaYU/iuPqQ==", "dev": true, "hasInstallScript": true, + "license": "MIT", "bin": { "esbuild": "bin/esbuild" }, "engines": { - "node": ">=12" + "node": ">=18" }, "optionalDependencies": { - "@esbuild/android-arm": "0.19.8", - "@esbuild/android-arm64": "0.19.8", - "@esbuild/android-x64": "0.19.8", - "@esbuild/darwin-arm64": "0.19.8", - "@esbuild/darwin-x64": "0.19.8", - "@esbuild/freebsd-arm64": "0.19.8", - "@esbuild/freebsd-x64": "0.19.8", - "@esbuild/linux-arm": "0.19.8", - "@esbuild/linux-arm64": "0.19.8", - "@esbuild/linux-ia32": "0.19.8", - "@esbuild/linux-loong64": "0.19.8", - "@esbuild/linux-mips64el": "0.19.8", - "@esbuild/linux-ppc64": "0.19.8", - "@esbuild/linux-riscv64": "0.19.8", - "@esbuild/linux-s390x": "0.19.8", - "@esbuild/linux-x64": "0.19.8", - "@esbuild/netbsd-x64": "0.19.8", - "@esbuild/openbsd-x64": "0.19.8", - "@esbuild/sunos-x64": "0.19.8", - "@esbuild/win32-arm64": "0.19.8", - "@esbuild/win32-ia32": "0.19.8", - "@esbuild/win32-x64": "0.19.8" + "@esbuild/aix-ppc64": "0.24.0", + "@esbuild/android-arm": "0.24.0", + "@esbuild/android-arm64": "0.24.0", + "@esbuild/android-x64": "0.24.0", + "@esbuild/darwin-arm64": "0.24.0", + "@esbuild/darwin-x64": "0.24.0", + "@esbuild/freebsd-arm64": "0.24.0", + "@esbuild/freebsd-x64": "0.24.0", + "@esbuild/linux-arm": "0.24.0", + "@esbuild/linux-arm64": "0.24.0", + "@esbuild/linux-ia32": "0.24.0", + "@esbuild/linux-loong64": "0.24.0", + "@esbuild/linux-mips64el": "0.24.0", + "@esbuild/linux-ppc64": "0.24.0", + "@esbuild/linux-riscv64": "0.24.0", + "@esbuild/linux-s390x": "0.24.0", + "@esbuild/linux-x64": "0.24.0", + "@esbuild/netbsd-x64": "0.24.0", + "@esbuild/openbsd-arm64": "0.24.0", + "@esbuild/openbsd-x64": "0.24.0", + "@esbuild/sunos-x64": "0.24.0", + "@esbuild/win32-arm64": "0.24.0", + "@esbuild/win32-ia32": "0.24.0", + "@esbuild/win32-x64": "0.24.0" } }, "node_modules/escalade": { @@ -1728,71 +2075,77 @@ } }, "node_modules/eslint": { - "version": "8.54.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.54.0.tgz", - "integrity": "sha512-NY0DfAkM8BIZDVl6PgSa1ttZbx3xHgJzSNJKYcQglem6CppHyMhRIQkBVSSMaSRnLhig3jsDbEzOjwCVt4AmmA==", + "version": "9.16.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.16.0.tgz", + "integrity": "sha512-whp8mSQI4C8VXd+fLgSM0lh3UlmcFtVwUQjyKCFfsp+2ItAIYhlq/hqGahGqHE6cv9unM41VlqKk2VtKYR2TaA==", "dev": true, + "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.6.1", - "@eslint/eslintrc": "^2.1.3", - "@eslint/js": "8.54.0", - "@humanwhocodes/config-array": "^0.11.13", + "@eslint-community/regexpp": "^4.12.1", + "@eslint/config-array": "^0.19.0", + "@eslint/core": "^0.9.0", + "@eslint/eslintrc": "^3.2.0", + "@eslint/js": "9.16.0", + "@eslint/plugin-kit": "^0.2.3", + "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", - "@nodelib/fs.walk": "^1.2.8", - "@ungap/structured-clone": "^1.2.0", + "@humanwhocodes/retry": "^0.4.1", + "@types/estree": "^1.0.6", + "@types/json-schema": "^7.0.15", "ajv": "^6.12.4", "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", + "cross-spawn": "^7.0.5", "debug": "^4.3.2", - "doctrine": "^3.0.0", "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.2.2", - "eslint-visitor-keys": "^3.4.3", - "espree": "^9.6.1", - "esquery": "^1.4.2", + "eslint-scope": "^8.2.0", + "eslint-visitor-keys": "^4.2.0", + "espree": "^10.3.0", + "esquery": "^1.5.0", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", + "file-entry-cache": "^8.0.0", "find-up": "^5.0.0", "glob-parent": "^6.0.2", - "globals": "^13.19.0", - "graphemer": "^1.4.0", "ignore": "^5.2.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", - "is-path-inside": "^3.0.3", - "js-yaml": "^4.1.0", "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", "lodash.merge": "^4.6.2", "minimatch": "^3.1.2", "natural-compare": "^1.4.0", - "optionator": "^0.9.3", - "strip-ansi": "^6.0.1", - "text-table": "^0.2.0" + "optionator": "^0.9.3" }, "bin": { "eslint": "bin/eslint.js" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { - "url": "https://opencollective.com/eslint" + "url": "https://eslint.org/donate" + }, + "peerDependencies": { + "jiti": "*" + }, + "peerDependenciesMeta": { + "jiti": { + "optional": true + } } }, "node_modules/eslint-scope": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", - "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.2.0.tgz", + "integrity": "sha512-PHlWUfG6lvPc3yvP5A4PNyBL1W8fkDUccmI21JUu/+GKZBoH/W5u6usENXUrWFRsyoW5ACUjFGgAFQp5gUlb/A==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^5.2.0" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "url": "https://opencollective.com/eslint" @@ -1810,18 +2163,45 @@ "url": "https://opencollective.com/eslint" } }, + "node_modules/eslint/node_modules/eslint-visitor-keys": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz", + "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, "node_modules/espree": { - "version": "9.6.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", - "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-10.3.0.tgz", + "integrity": "sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { - "acorn": "^8.9.0", + "acorn": "^8.14.0", "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.4.1" + "eslint-visitor-keys": "^4.2.0" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/espree/node_modules/eslint-visitor-keys": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz", + "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "url": "https://opencollective.com/eslint" @@ -1844,6 +2224,7 @@ "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "estraverse": "^5.2.0" }, @@ -1865,10 +2246,21 @@ "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", "dev": true, + "license": "BSD-2-Clause", "engines": { "node": ">=0.10.0" } }, + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.x" + } + }, "node_modules/expand-template": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz", @@ -1883,7 +2275,8 @@ "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/fast-glob": { "version": "3.3.2", @@ -1917,7 +2310,8 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/fast-levenshtein": { "version": "2.0.6", @@ -1944,22 +2338,24 @@ } }, "node_modules/file-entry-cache": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", + "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", "dev": true, + "license": "MIT", "dependencies": { - "flat-cache": "^3.0.4" + "flat-cache": "^4.0.0" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": ">=16.0.0" } }, "node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", "dev": true, + "license": "MIT", "dependencies": { "to-regex-range": "^5.0.1" }, @@ -1993,24 +2389,25 @@ } }, "node_modules/flat-cache": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", - "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", + "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", "dev": true, + "license": "MIT", "dependencies": { "flatted": "^3.2.9", - "keyv": "^4.5.3", - "rimraf": "^3.0.2" + "keyv": "^4.5.4" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": ">=16" } }, "node_modules/flatted": { - "version": "3.2.9", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.9.tgz", - "integrity": "sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==", - "dev": true + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.2.tgz", + "integrity": "sha512-AiwGJM8YcNOaobumgtng+6NHuOqC3A7MixFeDafM3X9cIUM+xUXoS5Vfgf+OihAYe20fxqNM9yPBXJzRtZ/4eA==", + "dev": true, + "license": "ISC" }, "node_modules/foreground-child": { "version": "3.1.1", @@ -2028,6 +2425,21 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/form-data": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.1.tgz", + "integrity": "sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw==", + "dev": true, + "license": "MIT", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/fs-constants": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", @@ -2039,7 +2451,8 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/fsevents": { "version": "2.3.3", @@ -2060,6 +2473,7 @@ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", "dev": true, + "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -2074,16 +2488,21 @@ } }, "node_modules/get-intrinsic": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz", - "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", "dev": true, + "license": "MIT", "dependencies": { + "es-errors": "^1.3.0", "function-bind": "^1.1.2", "has-proto": "^1.0.1", "has-symbols": "^1.0.3", "hasown": "^2.0.0" }, + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -2096,22 +2515,24 @@ "optional": true }, "node_modules/glob": { - "version": "10.3.10", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", - "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-11.0.0.tgz", + "integrity": "sha512-9UiX/Bl6J2yaBbxKoEBRm4Cipxgok8kQYcOPEhScPwebu2I0HoQOuYdIO6S3hLuWoZgpDpwQZMzTFxgpkyT76g==", "dev": true, + "license": "ISC", "dependencies": { "foreground-child": "^3.1.0", - "jackspeak": "^2.3.5", - "minimatch": "^9.0.1", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", - "path-scurry": "^1.10.1" + "jackspeak": "^4.0.1", + "minimatch": "^10.0.0", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^2.0.0" }, "bin": { "glob": "dist/esm/bin.mjs" }, "engines": { - "node": ">=16 || 14 >=14.17" + "node": "20 || >=22" }, "funding": { "url": "https://github.com/sponsors/isaacs" @@ -2134,67 +2555,51 @@ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dev": true, + "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" } }, "node_modules/glob/node_modules/minimatch": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", - "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.0.1.tgz", + "integrity": "sha512-ethXTt3SGGR+95gudmqJ1eNhRO7eGEGIgYA9vnPatK4/etz2MEVDno5GMCibdMTuBMyElzIlgxMna3K94XDIDQ==", "dev": true, + "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" }, "engines": { - "node": ">=16 || 14 >=14.17" + "node": "20 || >=22" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, "node_modules/globals": { - "version": "13.23.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.23.0.tgz", - "integrity": "sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA==", + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", + "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", "dev": true, - "dependencies": { - "type-fest": "^0.20.2" - }, + "license": "MIT", "engines": { - "node": ">=8" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "node_modules/gopd": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.1.0.tgz", + "integrity": "sha512-FQoVQnqcdk4hVM4JN1eromaun4iuS34oStkdlLENLdpULsuQcTyXj8w7ayhuUfPwEYZ1ZOooOTT6fdA9Vmx/RA==", "dev": true, + "license": "MIT", "dependencies": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" + "get-intrinsic": "^1.2.4" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/gopd": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", - "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", - "dev": true, - "dependencies": { - "get-intrinsic": "^1.1.3" + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -2216,22 +2621,24 @@ } }, "node_modules/has-property-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz", - "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", "dev": true, + "license": "MIT", "dependencies": { - "get-intrinsic": "^1.2.2" + "es-define-property": "^1.0.0" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/has-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", - "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", + "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -2244,6 +2651,7 @@ "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -2252,10 +2660,11 @@ } }, "node_modules/hasown": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", - "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", "dev": true, + "license": "MIT", "dependencies": { "function-bind": "^1.1.2" }, @@ -2316,30 +2725,31 @@ } }, "node_modules/http-proxy-agent": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", - "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", + "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", "dev": true, + "license": "MIT", "dependencies": { - "@tootallnate/once": "1", - "agent-base": "6", - "debug": "4" + "agent-base": "^7.1.0", + "debug": "^4.3.4" }, "engines": { - "node": ">= 6" + "node": ">= 14" } }, "node_modules/https-proxy-agent": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", - "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.5.tgz", + "integrity": "sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw==", "dev": true, + "license": "MIT", "dependencies": { - "agent-base": "6", + "agent-base": "^7.0.2", "debug": "4" }, "engines": { - "node": ">= 6" + "node": ">= 14" } }, "node_modules/ieee754": { @@ -2360,14 +2770,14 @@ "type": "consulting", "url": "https://feross.org/support" } - ], - "optional": true + ] }, "node_modules/ignore": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.0.tgz", - "integrity": "sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg==", + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", "dev": true, + "license": "MIT", "engines": { "node": ">= 4" } @@ -2383,6 +2793,7 @@ "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", "dev": true, + "license": "MIT", "dependencies": { "parent-module": "^1.0.0", "resolve-from": "^4.0.0" @@ -2407,7 +2818,9 @@ "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", "dev": true, + "license": "ISC", "dependencies": { "once": "^1.3.0", "wrappy": "1" @@ -2438,6 +2851,22 @@ "node": ">=8" } }, + "node_modules/is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "dev": true, + "license": "MIT", + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", @@ -2468,24 +2897,29 @@ "node": ">=0.10.0" } }, + "node_modules/is-interactive": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-2.0.0.tgz", + "integrity": "sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.12.0" } }, - "node_modules/is-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/is-plain-obj": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", @@ -2507,6 +2941,19 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-docker": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", @@ -2520,21 +2967,19 @@ "dev": true }, "node_modules/jackspeak": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz", - "integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-4.0.2.tgz", + "integrity": "sha512-bZsjR/iRjl1Nk1UkjGpAzLNfQtzuijhn2g+pbZb98HQ1Gk8vM9hfbxeMBP+M2/UUdwj0RqGG3mlvk2MsAqwvEw==", "dev": true, + "license": "BlueOak-1.0.0", "dependencies": { "@isaacs/cliui": "^8.0.2" }, "engines": { - "node": ">=14" + "node": "20 || >=22" }, "funding": { "url": "https://github.com/sponsors/isaacs" - }, - "optionalDependencies": { - "@pkgjs/parseargs": "^0.11.0" } }, "node_modules/js-yaml": { @@ -2553,13 +2998,15 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/json-stable-stringify-without-jsonify": { "version": "1.0.1", @@ -2573,6 +3020,52 @@ "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==", "dev": true }, + "node_modules/jsonwebtoken": { + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.2.tgz", + "integrity": "sha512-PRp66vJ865SSqOlgqS8hujT5U4AOgMfhrwYIuIhfKaoSCZcirrmASQr8CX7cUg+RMih+hgznrjp99o+W4pJLHQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "jws": "^3.2.2", + "lodash.includes": "^4.3.0", + "lodash.isboolean": "^3.0.3", + "lodash.isinteger": "^4.0.4", + "lodash.isnumber": "^3.0.3", + "lodash.isplainobject": "^4.0.6", + "lodash.isstring": "^4.0.1", + "lodash.once": "^4.0.0", + "ms": "^2.1.1", + "semver": "^7.5.4" + }, + "engines": { + "node": ">=12", + "npm": ">=6" + } + }, + "node_modules/jsonwebtoken/node_modules/jwa": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz", + "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==", + "dev": true, + "license": "MIT", + "dependencies": { + "buffer-equal-constant-time": "1.0.1", + "ecdsa-sig-formatter": "1.0.11", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/jsonwebtoken/node_modules/jws": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz", + "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==", + "dev": true, + "license": "MIT", + "dependencies": { + "jwa": "^1.4.1", + "safe-buffer": "^5.0.1" + } + }, "node_modules/jszip": { "version": "3.10.1", "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.10.1.tgz", @@ -2585,6 +3078,29 @@ "setimmediate": "^1.0.5" } }, + "node_modules/jwa": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/jwa/-/jwa-2.0.0.tgz", + "integrity": "sha512-jrZ2Qx916EA+fq9cEAeCROWPTfCwi1IVHqT2tapuqLEVVDKFDENFw1oL+MwrTvH6msKxsd1YTDVw6uKEcsrLEA==", + "dev": true, + "license": "MIT", + "dependencies": { + "buffer-equal-constant-time": "1.0.1", + "ecdsa-sig-formatter": "1.0.11", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/jws": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jws/-/jws-4.0.0.tgz", + "integrity": "sha512-KDncfTmOZoOMTFG4mBlG0qUIOlc03fmzH+ru6RgYVZhPkyiy/92Owlt/8UEN+a4TXR1FQetfIpJE8ApdvdVxTg==", + "dev": true, + "license": "MIT", + "dependencies": { + "jwa": "^2.0.0", + "safe-buffer": "^5.0.1" + } + }, "node_modules/keytar": { "version": "7.9.0", "resolved": "https://registry.npmjs.org/keytar/-/keytar-7.9.0.tgz", @@ -2602,6 +3118,7 @@ "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", "dev": true, + "license": "MIT", "dependencies": { "json-buffer": "3.0.1" } @@ -2638,12 +3155,13 @@ } }, "node_modules/linkify-it": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-3.0.3.tgz", - "integrity": "sha512-ynTsyrFSdE5oZ/O9GEf00kPngmOfVwazR5GKDq6EYfhlpFug3J2zybX56a2PRRpc9P+FuSoGNAwjlbDs9jJBPQ==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-5.0.0.tgz", + "integrity": "sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==", "dev": true, + "license": "MIT", "dependencies": { - "uc.micro": "^1.0.1" + "uc.micro": "^2.0.0" } }, "node_modules/locate-path": { @@ -2661,12 +3179,61 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/lodash.includes": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", + "integrity": "sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.isboolean": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", + "integrity": "sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.isinteger": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz", + "integrity": "sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.isnumber": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz", + "integrity": "sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.isstring": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", + "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==", + "dev": true, + "license": "MIT" + }, "node_modules/lodash.merge": { "version": "4.6.2", "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", "dev": true }, + "node_modules/lodash.once": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", + "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==", + "dev": true, + "license": "MIT" + }, "node_modules/log-symbols": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", @@ -2684,44 +3251,39 @@ } }, "node_modules/lru-cache": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.1.0.tgz", - "integrity": "sha512-/1clY/ui8CzjKFyjdvwPWJUYKiFVXG2I2cY0ssG7h4+hwk+XOIX7ZSG9Q7TW8TW3Kp3BUSqgFWBLgL4PJ+Blag==", + "version": "11.0.2", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.0.2.tgz", + "integrity": "sha512-123qHRfJBmo2jXDbo/a5YOQrJoHF/GNQTLzQ5+IdK5pWpceK17yRc6ozlWd25FxvGKQbIUs91fDFkXmDHTKcyA==", "dev": true, + "license": "ISC", "engines": { - "node": "14 || >=16.14" + "node": "20 || >=22" } }, "node_modules/markdown-it": { - "version": "12.3.2", - "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-12.3.2.tgz", - "integrity": "sha512-TchMembfxfNVpHkbtriWltGWc+m3xszaRD0CZup7GFFhzIgQqxIfn3eGj1yZpfuflzPvfkt611B2Q/Bsk1YnGg==", + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-14.1.0.tgz", + "integrity": "sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg==", "dev": true, + "license": "MIT", "dependencies": { "argparse": "^2.0.1", - "entities": "~2.1.0", - "linkify-it": "^3.0.1", - "mdurl": "^1.0.1", - "uc.micro": "^1.0.5" + "entities": "^4.4.0", + "linkify-it": "^5.0.0", + "mdurl": "^2.0.0", + "punycode.js": "^2.3.1", + "uc.micro": "^2.1.0" }, "bin": { - "markdown-it": "bin/markdown-it.js" - } - }, - "node_modules/markdown-it/node_modules/entities": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.1.0.tgz", - "integrity": "sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w==", - "dev": true, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" + "markdown-it": "bin/markdown-it.mjs" } }, "node_modules/mdurl": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz", - "integrity": "sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==", - "dev": true + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-2.0.0.tgz", + "integrity": "sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==", + "dev": true, + "license": "MIT" }, "node_modules/merge2": { "version": "1.4.1", @@ -2733,12 +3295,13 @@ } }, "node_modules/micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", "dev": true, + "license": "MIT", "dependencies": { - "braces": "^3.0.2", + "braces": "^3.0.3", "picomatch": "^2.3.1" }, "engines": { @@ -2757,6 +3320,39 @@ "node": ">=4" } }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dev": true, + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, "node_modules/mimic-response": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", @@ -2793,10 +3389,11 @@ } }, "node_modules/minipass": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", - "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", "dev": true, + "license": "ISC", "engines": { "node": ">=16 || 14 >=14.17" } @@ -2809,32 +3406,32 @@ "optional": true }, "node_modules/mocha": { - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.2.0.tgz", - "integrity": "sha512-IDY7fl/BecMwFHzoqF2sg/SHHANeBoMMXFlS9r0OXKDssYE1M5O43wUY/9BVPeIvfH2zmEbBfseqN9gBQZzXkg==", - "dev": true, - "dependencies": { - "ansi-colors": "4.1.1", - "browser-stdout": "1.3.1", - "chokidar": "3.5.3", - "debug": "4.3.4", - "diff": "5.0.0", - "escape-string-regexp": "4.0.0", - "find-up": "5.0.0", - "glob": "7.2.0", - "he": "1.2.0", - "js-yaml": "4.1.0", - "log-symbols": "4.1.0", - "minimatch": "5.0.1", - "ms": "2.1.3", - "nanoid": "3.3.3", - "serialize-javascript": "6.0.0", - "strip-json-comments": "3.1.1", - "supports-color": "8.1.1", - "workerpool": "6.2.1", - "yargs": "16.2.0", - "yargs-parser": "20.2.4", - "yargs-unparser": "2.0.0" + "version": "10.8.2", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.8.2.tgz", + "integrity": "sha512-VZlYo/WE8t1tstuRmqgeyBgCbJc/lEdopaa+axcKzTBJ+UIdlAB9XnmvTCAH4pwR4ElNInaedhEBmZD8iCSVEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-colors": "^4.1.3", + "browser-stdout": "^1.3.1", + "chokidar": "^3.5.3", + "debug": "^4.3.5", + "diff": "^5.2.0", + "escape-string-regexp": "^4.0.0", + "find-up": "^5.0.0", + "glob": "^8.1.0", + "he": "^1.2.0", + "js-yaml": "^4.1.0", + "log-symbols": "^4.1.0", + "minimatch": "^5.1.6", + "ms": "^2.1.3", + "serialize-javascript": "^6.0.2", + "strip-json-comments": "^3.1.1", + "supports-color": "^8.1.1", + "workerpool": "^6.5.1", + "yargs": "^16.2.0", + "yargs-parser": "^20.2.9", + "yargs-unparser": "^2.0.0" }, "bin": { "_mocha": "bin/_mocha", @@ -2842,71 +3439,52 @@ }, "engines": { "node": ">= 14.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/mochajs" + } + }, + "node_modules/mocha/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" } }, "node_modules/mocha/node_modules/glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", + "deprecated": "Glob versions prior to v9 are no longer supported", "dev": true, + "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "minimatch": "^5.0.1", + "once": "^1.3.0" }, "engines": { - "node": "*" + "node": ">=12" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/mocha/node_modules/glob/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, "node_modules/mocha/node_modules/minimatch": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz", - "integrity": "sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==", + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", "dev": true, + "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" }, - "engines": { - "node": ">=10" - } - }, - "node_modules/mocha/node_modules/minimatch/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0" + "engines": { + "node": ">=10" } }, - "node_modules/mocha/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true - }, "node_modules/mocha/node_modules/supports-color": { "version": "8.1.1", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", @@ -2923,10 +3501,11 @@ } }, "node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, + "license": "MIT" }, "node_modules/mute-stream": { "version": "0.0.8", @@ -2934,18 +3513,6 @@ "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", "dev": true }, - "node_modules/nanoid": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.3.tgz", - "integrity": "sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w==", - "dev": true, - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } - }, "node_modules/napi-build-utils": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-1.0.2.tgz", @@ -3001,10 +3568,14 @@ } }, "node_modules/object-inspect": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", - "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", + "version": "1.13.3", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.3.tgz", + "integrity": "sha512-kDCGIbxkDSXE3euJZZXzc6to7fCrKHNI/hSRQnRuQ+BWjFNzZwiFF8fj/6o2t2G9/jTj8PSIYTfCLelLZEeRpA==", "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -3018,6 +3589,40 @@ "wrappy": "1" } }, + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/open": { + "version": "8.4.2", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", + "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/optionator": { "version": "0.9.3", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", @@ -3035,6 +3640,127 @@ "node": ">= 0.8.0" } }, + "node_modules/ora": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/ora/-/ora-7.0.1.tgz", + "integrity": "sha512-0TUxTiFJWv+JnjWm4o9yvuskpEJLXTcng8MJuKd+SzAzp2o+OP3HWqNhB4OdJRt1Vsd9/mR0oyaEYlOnL7XIRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^5.3.0", + "cli-cursor": "^4.0.0", + "cli-spinners": "^2.9.0", + "is-interactive": "^2.0.0", + "is-unicode-supported": "^1.3.0", + "log-symbols": "^5.1.0", + "stdin-discarder": "^0.1.0", + "string-width": "^6.1.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ora/node_modules/ansi-regex": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/ora/node_modules/chalk": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", + "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/ora/node_modules/emoji-regex": { + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.4.0.tgz", + "integrity": "sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==", + "dev": true, + "license": "MIT" + }, + "node_modules/ora/node_modules/is-unicode-supported": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-1.3.0.tgz", + "integrity": "sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ora/node_modules/log-symbols": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-5.1.0.tgz", + "integrity": "sha512-l0x2DvrW294C9uDCoQe1VSU4gf529FkSZ6leBl4TiqZH/e+0R7hSfHQBNut2mNygDgHwvYHfFLn6Oxb3VWj2rA==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^5.0.0", + "is-unicode-supported": "^1.1.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ora/node_modules/string-width": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-6.1.0.tgz", + "integrity": "sha512-k01swCJAgQmuADB0YIc+7TuatfNvTBVOoaUWJjTB9R4VJzR5vNWzf5t42ESVZFPS8xTySF7CAdV4t/aaIm3UnQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^10.2.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ora/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, "node_modules/p-limit": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", @@ -3065,6 +3791,13 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/package-json-from-dist": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", + "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", + "dev": true, + "license": "BlueOak-1.0.0" + }, "node_modules/pako": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", @@ -3076,6 +3809,7 @@ "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", "dev": true, + "license": "MIT", "dependencies": { "callsites": "^3.0.0" }, @@ -3135,15 +3869,6 @@ "node": ">=8" } }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/path-key": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", @@ -3154,30 +3879,22 @@ } }, "node_modules/path-scurry": { - "version": "1.10.1", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.1.tgz", - "integrity": "sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.0.tgz", + "integrity": "sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg==", "dev": true, + "license": "BlueOak-1.0.0", "dependencies": { - "lru-cache": "^9.1.1 || ^10.0.0", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + "lru-cache": "^11.0.0", + "minipass": "^7.1.2" }, "engines": { - "node": ">=16 || 14 >=14.17" + "node": "20 || >=22" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/pend": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", @@ -3254,17 +3971,29 @@ "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/punycode.js": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode.js/-/punycode.js-2.3.1.tgz", + "integrity": "sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==", + "dev": true, + "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/qs": { - "version": "6.11.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.2.tgz", - "integrity": "sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==", + "version": "6.13.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.1.tgz", + "integrity": "sha512-EJPeIn0CYrGu+hli1xilKAPXODtJ12T0sP63Ijx2/khC2JtuaN3JyNIpvmnkmaEtha9ocbG4A4cMcr+TvqvwQg==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { - "side-channel": "^1.0.4" + "side-channel": "^1.0.6" }, "engines": { "node": ">=0.6" @@ -3298,6 +4027,7 @@ "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", "dev": true, + "license": "MIT", "dependencies": { "safe-buffer": "^5.1.0" } @@ -3381,53 +4111,43 @@ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } }, - "node_modules/reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true, - "engines": { - "iojs": ">=1.0.0", - "node": ">=0.10.0" - } - }, - "node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "node_modules/restore-cursor": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-4.0.0.tgz", + "integrity": "sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg==", "dev": true, + "license": "MIT", "dependencies": { - "glob": "^7.1.3" + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" }, - "bin": { - "rimraf": "bin.js" + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/rimraf/node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "node_modules/restore-cursor/node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "iojs": ">=1.0.0", + "node": ">=0.10.0" } }, "node_modules/run-parallel": { @@ -3466,12 +4186,10 @@ "dev": true }, "node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "dependencies": { - "lru-cache": "^6.0.0" - }, + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "license": "ISC", "bin": { "semver": "bin/semver.js" }, @@ -3479,36 +4197,29 @@ "node": ">=10" } }, - "node_modules/semver/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/serialize-javascript": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", - "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", + "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "randombytes": "^2.1.0" } }, "node_modules/set-function-length": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.1.1.tgz", - "integrity": "sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", "dev": true, + "license": "MIT", "dependencies": { - "define-data-property": "^1.1.1", - "get-intrinsic": "^1.2.1", + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.0" + "has-property-descriptors": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -3542,14 +4253,19 @@ } }, "node_modules/side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", + "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", "dev": true, + "license": "MIT", "dependencies": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "object-inspect": "^1.13.1" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -3607,20 +4323,90 @@ "url": "https://feross.org/support" } ], - "optional": true, + "optional": true, + "dependencies": { + "decompress-response": "^6.0.0", + "once": "^1.3.1", + "simple-concat": "^1.0.0" + } + }, + "node_modules/stdin-discarder": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/stdin-discarder/-/stdin-discarder-0.1.0.tgz", + "integrity": "sha512-xhV7w8S+bUwlPTb4bAOUQhv8/cSS5offJuX8GQGq32ONF0ZtDWKfkdomM3HMRA+LhX6um/FZ0COqlwsjD53LeQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "bl": "^5.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/stdin-discarder/node_modules/bl": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-5.1.0.tgz", + "integrity": "sha512-tv1ZJHLfTDnXE6tMHv73YgSJaWR2AFuPwMntBe7XL/GBFHnT0CLnsHMogfk5+GzCDC5ZWarSCYaIGATZt9dNsQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "buffer": "^6.0.3", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "node_modules/stdin-discarder/node_modules/buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", "dependencies": { - "decompress-response": "^6.0.0", - "once": "^1.3.1", - "simple-concat": "^1.0.0" + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" } }, - "node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "node_modules/stdin-discarder/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/stoppable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/stoppable/-/stoppable-1.1.0.tgz", + "integrity": "sha512-KXDYZ9dszj6bzvnEMRYvxgeTHU74QBFL54XKtP3nyMuJ81CFYtABZ3bAzL2EdFUaEwJOBOgENyFj3R7oTzDyyw==", "dev": true, + "license": "MIT", "engines": { - "node": ">=8" + "node": ">=4", + "npm": ">=6" } }, "node_modules/string_decoder": { @@ -3637,6 +4423,7 @@ "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", "dev": true, + "license": "MIT", "dependencies": { "eastasianwidth": "^0.2.0", "emoji-regex": "^9.2.2", @@ -3655,6 +4442,7 @@ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, + "license": "MIT", "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -3668,13 +4456,15 @@ "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/string-width/node_modules/ansi-regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", "dev": true, + "license": "MIT", "engines": { "node": ">=12" }, @@ -3687,6 +4477,7 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", "dev": true, + "license": "MIT", "dependencies": { "ansi-regex": "^6.0.1" }, @@ -3715,6 +4506,7 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, + "license": "MIT", "dependencies": { "ansi-regex": "^5.0.1" }, @@ -3791,22 +4583,14 @@ "node": ">= 6" } }, - "node_modules/text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", - "dev": true - }, "node_modules/tmp": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", - "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.3.tgz", + "integrity": "sha512-nZD7m9iCPC5g0pYmcaxogYKggSfLsdxl8of3Q/oIbqCqLLIO9IAF0GWjX1z9NZRHPiXv8Wex4yDCaZsgEw0Y8w==", "dev": true, - "dependencies": { - "rimraf": "^3.0.0" - }, + "license": "MIT", "engines": { - "node": ">=8.17.0" + "node": ">=14.14" } }, "node_modules/to-regex-range": { @@ -3814,6 +4598,7 @@ "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", "dev": true, + "license": "MIT", "dependencies": { "is-number": "^7.0.0" }, @@ -3822,22 +4607,31 @@ } }, "node_modules/ts-api-utils": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.0.3.tgz", - "integrity": "sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg==", + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.4.3.tgz", + "integrity": "sha512-i3eMG77UTMD0hZhgRS562pv83RC6ukSAC2GMNWc+9dieh/+jDM5u5YG+NHX6VNDRHQcHwmsTHctP9LhbC3WxVw==", "dev": true, + "license": "MIT", "engines": { - "node": ">=16.13.0" + "node": ">=16" }, "peerDependencies": { "typescript": ">=4.2.0" } }, + "node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "dev": true, + "license": "0BSD" + }, "node_modules/tunnel": { "version": "0.0.6", "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz", "integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.6.11 <=0.7.0 || >=0.7.3" } @@ -3867,23 +4661,12 @@ "node": ">= 0.8.0" } }, - "node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/typed-rest-client": { "version": "1.8.11", "resolved": "https://registry.npmjs.org/typed-rest-client/-/typed-rest-client-1.8.11.tgz", "integrity": "sha512-5UvfMpd1oelmUPRbbaVnq+rHP7ng2cE4qoQkQeAqxRL6PklkxsM0g32/HL0yfvruK6ojQ5x8EE+HF4YV6DtuCA==", "dev": true, + "license": "MIT", "dependencies": { "qs": "^6.9.1", "tunnel": "0.0.6", @@ -3891,10 +4674,11 @@ } }, "node_modules/typescript": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.2.tgz", - "integrity": "sha512-6l+RyNy7oAHDfxC4FzSJcz9vnjTKxrLpDG5M2Vu4SHRVNg6xzqZp6LYSR9zjqQTu8DU/f5xwxUdADOkbrIX2gQ==", + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.2.tgz", + "integrity": "sha512-i5t66RHxDvVN40HfDd1PsEThGNnlMCMT3jMUuoh9/0TaqWevNontacunWyN02LA9/fIbEWlcHZcgTKb9QoaLfg==", "dev": true, + "license": "Apache-2.0", "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -3903,29 +4687,297 @@ "node": ">=14.17" } }, + "node_modules/typescript-eslint": { + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.16.0.tgz", + "integrity": "sha512-wDkVmlY6O2do4V+lZd0GtRfbtXbeD0q9WygwXXSJnC1xorE8eqyC2L1tJimqpSeFrOzRlYtWnUp/uzgHQOgfBQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/eslint-plugin": "8.16.0", + "@typescript-eslint/parser": "8.16.0", + "@typescript-eslint/utils": "8.16.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/typescript-eslint/node_modules/@typescript-eslint/eslint-plugin": { + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.16.0.tgz", + "integrity": "sha512-5YTHKV8MYlyMI6BaEG7crQ9BhSc8RxzshOReKwZwRWN0+XvvTOm+L/UYLCYxFpfwYuAAqhxiq4yae0CMFwbL7Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/regexpp": "^4.10.0", + "@typescript-eslint/scope-manager": "8.16.0", + "@typescript-eslint/type-utils": "8.16.0", + "@typescript-eslint/utils": "8.16.0", + "@typescript-eslint/visitor-keys": "8.16.0", + "graphemer": "^1.4.0", + "ignore": "^5.3.1", + "natural-compare": "^1.4.0", + "ts-api-utils": "^1.3.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^8.0.0 || ^8.0.0-alpha.0", + "eslint": "^8.57.0 || ^9.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/typescript-eslint/node_modules/@typescript-eslint/parser": { + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.16.0.tgz", + "integrity": "sha512-D7DbgGFtsqIPIFMPJwCad9Gfi/hC0PWErRRHFnaCWoEDYi5tQUDiJCTmGUbBiLzjqAck4KcXt9Ayj0CNlIrF+w==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "@typescript-eslint/scope-manager": "8.16.0", + "@typescript-eslint/types": "8.16.0", + "@typescript-eslint/typescript-estree": "8.16.0", + "@typescript-eslint/visitor-keys": "8.16.0", + "debug": "^4.3.4" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/typescript-eslint/node_modules/@typescript-eslint/scope-manager": { + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.16.0.tgz", + "integrity": "sha512-mwsZWubQvBki2t5565uxF0EYvG+FwdFb8bMtDuGQLdCCnGPrDEDvm1gtfynuKlnpzeBRqdFCkMf9jg1fnAK8sg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.16.0", + "@typescript-eslint/visitor-keys": "8.16.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/typescript-eslint/node_modules/@typescript-eslint/type-utils": { + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.16.0.tgz", + "integrity": "sha512-IqZHGG+g1XCWX9NyqnI/0CX5LL8/18awQqmkZSl2ynn8F76j579dByc0jhfVSnSnhf7zv76mKBQv9HQFKvDCgg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/typescript-estree": "8.16.0", + "@typescript-eslint/utils": "8.16.0", + "debug": "^4.3.4", + "ts-api-utils": "^1.3.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/typescript-eslint/node_modules/@typescript-eslint/types": { + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.16.0.tgz", + "integrity": "sha512-NzrHj6thBAOSE4d9bsuRNMvk+BvaQvmY4dDglgkgGC0EW/tB3Kelnp3tAKH87GEwzoxgeQn9fNGRyFJM/xd+GQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/typescript-eslint/node_modules/@typescript-eslint/typescript-estree": { + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.16.0.tgz", + "integrity": "sha512-E2+9IzzXMc1iaBy9zmo+UYvluE3TW7bCGWSF41hVWUE01o8nzr1rvOQYSxelxr6StUvRcTMe633eY8mXASMaNw==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "@typescript-eslint/types": "8.16.0", + "@typescript-eslint/visitor-keys": "8.16.0", + "debug": "^4.3.4", + "fast-glob": "^3.3.2", + "is-glob": "^4.0.3", + "minimatch": "^9.0.4", + "semver": "^7.6.0", + "ts-api-utils": "^1.3.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/typescript-eslint/node_modules/@typescript-eslint/utils": { + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.16.0.tgz", + "integrity": "sha512-C1zRy/mOL8Pj157GiX4kaw7iyRLKfJXBR3L82hk5kS/GyHcOFmy4YUq/zfZti72I9wnuQtA/+xzft4wCC8PJdA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.4.0", + "@typescript-eslint/scope-manager": "8.16.0", + "@typescript-eslint/types": "8.16.0", + "@typescript-eslint/typescript-estree": "8.16.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/typescript-eslint/node_modules/@typescript-eslint/visitor-keys": { + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.16.0.tgz", + "integrity": "sha512-pq19gbaMOmFE3CbL0ZB8J8BFCo2ckfHBfaIsaOZgBIF4EoISJIdLX5xRhd0FGB0LlHReNRuzoJoMGpTjq8F2CQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.16.0", + "eslint-visitor-keys": "^4.2.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/typescript-eslint/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/typescript-eslint/node_modules/eslint-visitor-keys": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz", + "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/typescript-eslint/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/uc.micro": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz", - "integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==", - "dev": true + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-2.1.0.tgz", + "integrity": "sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==", + "dev": true, + "license": "MIT" }, "node_modules/underscore": { - "version": "1.13.6", - "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.6.tgz", - "integrity": "sha512-+A5Sja4HP1M08MaXya7p5LvjuM7K6q/2EaC0+iovj/wOcMsTzMvDFbasi/oSapiwOlt252IqsKqPjCl7huKS0A==", - "dev": true + "version": "1.13.7", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.7.tgz", + "integrity": "sha512-GMXzWtsc57XAtguZgaQViUOzs0KTkk8ojr3/xAxXLITqf/3EMwxC0inyETfDFjH/Krbhuep0HNbbjI9i/q3F3g==", + "dev": true, + "license": "MIT" }, "node_modules/undici-types": { - "version": "5.26.5", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", - "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", - "dev": true + "version": "6.20.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz", + "integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==", + "dev": true, + "license": "MIT" }, "node_modules/uri-js": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "punycode": "^2.1.0" } @@ -3942,6 +4994,16 @@ "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", "dev": true }, + "node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "dev": true, + "license": "MIT", + "bin": { + "uuid": "dist/bin/uuid" + } + }, "node_modules/vscode-jsonrpc": { "version": "8.2.0", "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-8.2.0.tgz", @@ -4012,16 +5074,18 @@ } }, "node_modules/workerpool": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.1.tgz", - "integrity": "sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw==", - "dev": true + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.5.1.tgz", + "integrity": "sha512-Fs4dNYcsdpYSAfVxhnl1L5zTksjvOJxtC5hzMNl+1t9B8hTJTdKDyZ5ju7ztgPy+ft9tBFXoOlDNiOT9WUXZlA==", + "dev": true, + "license": "Apache-2.0" }, "node_modules/wrap-ansi": { "version": "8.1.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^6.1.0", "string-width": "^5.0.1", @@ -4040,6 +5104,7 @@ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -4056,13 +5121,15 @@ "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/wrap-ansi-cjs/node_modules/string-width": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, + "license": "MIT", "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -4073,10 +5140,11 @@ } }, "node_modules/wrap-ansi/node_modules/ansi-regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", "dev": true, + "license": "MIT", "engines": { "node": ">=12" }, @@ -4089,6 +5157,7 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", "dev": true, + "license": "MIT", "engines": { "node": ">=12" }, @@ -4101,6 +5170,7 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", "dev": true, + "license": "MIT", "dependencies": { "ansi-regex": "^6.0.1" }, @@ -4151,7 +5221,8 @@ "node_modules/yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true }, "node_modules/yargs": { "version": "16.2.0", @@ -4172,10 +5243,11 @@ } }, "node_modules/yargs-parser": { - "version": "20.2.4", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", - "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", "dev": true, + "license": "ISC", "engines": { "node": ">=10" } diff --git a/editors/vscode/visp-fs/package.json b/editors/vscode/visp-fs/package.json index ab254d6..19e7493 100644 --- a/editors/vscode/visp-fs/package.json +++ b/editors/vscode/visp-fs/package.json @@ -5,7 +5,7 @@ "icon": "icon.png", "version": "0.0.1", "engines": { - "vscode": "^1.84.0" + "vscode": "^1.95.0" }, "publisher": "vipentti", "author": { @@ -111,22 +111,22 @@ "pretest": "npm run compile && npm run lint", "build-base": "esbuild ./src/extension.ts --bundle --outfile=out/extension.js --external:vscode --format=cjs --platform=node", "build": "npm run build-base -- --sourcemap", - "lint": "eslint src --ext ts", + "lint": "eslint src/**", "test": "node ./out/test/runTest.js" }, "devDependencies": { - "@types/mocha": "^10.0.6", - "@types/node": "20.x", - "@types/vscode": "^1.84.2", - "@typescript-eslint/eslint-plugin": "^6.13.1", - "@typescript-eslint/parser": "^6.13.1", - "@vscode/test-electron": "^2.3.8", - "@vscode/vsce": "^2.22.0", - "esbuild": "^0.19.8", - "eslint": "^8.54.0", - "glob": "^10.3.10", - "mocha": "^10.2.0", - "typescript": "^5.3.2" + "@eslint/js": "^9.16.0", + "@types/mocha": "^10.0.10", + "@types/node": "22.x", + "@types/vscode": "^1.95.0", + "@vscode/test-electron": "^2.4.1", + "@vscode/vsce": "^3.2.1", + "esbuild": "^0.24.0", + "eslint": "^9.16.0", + "glob": "^11.0.0", + "mocha": "^10.8.2", + "typescript": "^5.7.2", + "typescript-eslint": "^8.16.0" }, "dependencies": { "vscode-languageclient": "^9.0.1" diff --git a/editors/vscode/visp-fs/src/extension.ts b/editors/vscode/visp-fs/src/extension.ts index dce473a..25345c9 100644 --- a/editors/vscode/visp-fs/src/extension.ts +++ b/editors/vscode/visp-fs/src/extension.ts @@ -17,12 +17,12 @@ function getConfiguredClient(outputChannel: vscode.OutputChannel) { .getConfiguration("visp-fs.server") .get("path", ""); - let command = process.env.VISP_FS_SERVER_PATH ?? languageServerPath; + const command = process.env.VISP_FS_SERVER_PATH ?? languageServerPath; if ((command?.length ?? 0) > 0) { if (fs.existsSync(command)) { // Options to control the language client - let clientOptions: LanguageClientOptions = { + const clientOptions: LanguageClientOptions = { // Register the server for visp-fs documentSelector: [{ scheme: "file", language: "visp-fs" }], synchronize: { @@ -42,7 +42,7 @@ function getConfiguredClient(outputChannel: vscode.OutputChannel) { // If the extension is launched in debug mode then the debug server options are used // Otherwise the run options are used - let serverOptions: ServerOptions = { + const serverOptions: ServerOptions = { run, debug: run, }; diff --git a/global.json b/global.json index c19a2e0..49cfff7 100644 --- a/global.json +++ b/global.json @@ -1,6 +1,6 @@ { "sdk": { - "version": "8.0.100", + "version": "9.0.102", "rollForward": "latestMinor" } } diff --git a/src/Visp.Cli/CliMain.fs b/src/Visp.Cli/CliMain.fs index def0d97..844d098 100644 --- a/src/Visp.Cli/CliMain.fs +++ b/src/Visp.Cli/CliMain.fs @@ -4,7 +4,6 @@ open System.IO.Abstractions open Visp.Compiler.ProjectGenerator -open CliWrap let tryNextArg v args = match Array.tryFindIndex v args with @@ -33,11 +32,11 @@ let main args = else CoreLibs @ mainFile - let release = + let buildConfig = if Array.contains "--release" args then - [| "--configuration"; "Release" |] + DotnetCompiler.BuildConfiguration.Release else - [||] + DotnetCompiler.BuildConfiguration.Debug let pkg = if Array.contains "--package" args then @@ -58,18 +57,10 @@ let main args = generator.WriteVispFiles pkg files options - let dotnet = - Cli - .Wrap("dotnet") - .WithArguments( - Array.concat - [| [| "run"; "--project"; projectPath |]; release; [| "--" |]; cmdArguments |] - ) - .WithWorkingDirectory(cwd) - .WithStandardOutputPipe(PipeTarget.ToDelegate(fun x -> printfn "%s" x)) - .WithStandardErrorPipe(PipeTarget.ToDelegate(fun x -> printfn "%s" x)) - .WithValidation(CommandResultValidation.None) - - let result = dotnet.ExecuteAsync().Task |> Async.AwaitTask |> Async.RunSynchronously + let result = + DotnetCompiler.buildAndRun projectPath cwd buildConfig cmdArguments + |> Async.RunSynchronously + + printfn "%s" result.Output result.ExitCode diff --git a/src/Visp.Cli/Properties/launchSettings.json b/src/Visp.Cli/Properties/launchSettings.json new file mode 100644 index 0000000..774faac --- /dev/null +++ b/src/Visp.Cli/Properties/launchSettings.json @@ -0,0 +1,12 @@ +{ + "profiles": { + "Visp.Cli": { + "commandName": "Project" + }, + "Debug.Cli": { + "commandName": "Project", + "commandLineArgs": ".\\visp\\tests\\include\\include-macros-0.visp --debug-tokens", + "workingDirectory": "$(SolutionDir)" + } + } +} \ No newline at end of file diff --git a/src/Visp.Cli/Visp.Cli.fsproj b/src/Visp.Cli/Visp.Cli.fsproj index 6f0af5e..ffbf58d 100644 --- a/src/Visp.Cli/Visp.Cli.fsproj +++ b/src/Visp.Cli/Visp.Cli.fsproj @@ -1,4 +1,4 @@ - + Exe @@ -9,8 +9,8 @@ - - + + diff --git a/src/Visp.Common/Visp.Common.csproj b/src/Visp.Common/Visp.Common.csproj index 38aa674..73c6e91 100644 --- a/src/Visp.Common/Visp.Common.csproj +++ b/src/Visp.Common/Visp.Common.csproj @@ -1,4 +1,4 @@ - + enable @@ -8,8 +8,8 @@ - - + + diff --git a/src/Visp.Compiler/CoreParser.fs b/src/Visp.Compiler/CoreParser.fs index 27a5aa4..a9c844e 100644 --- a/src/Visp.Compiler/CoreParser.fs +++ b/src/Visp.Compiler/CoreParser.fs @@ -4,13 +4,11 @@ namespace Visp.Compiler.Core -open Visp.Compiler.SyntaxPrinter open System.IO open FSharp.Text.Lexing open Visp.Compiler open Visp.Compiler.SyntaxParser open Visp.Compiler.LexHelpers -open Visp.Compiler.Syntax.Macros type ParserOptions = { DebugTokens: bool @@ -26,8 +24,6 @@ type ParserOptions = { ParserOptions.Default with ReturnLast = false } - - module CoreParser = open Visp.Compiler.Syntax open System.Collections.Generic diff --git a/src/Visp.Compiler/DiagnosticsLogger.fs b/src/Visp.Compiler/DiagnosticsLogger.fs index bd6364f..262d1a4 100644 --- a/src/Visp.Compiler/DiagnosticsLogger.fs +++ b/src/Visp.Compiler/DiagnosticsLogger.fs @@ -9,7 +9,6 @@ open Visp.Compiler.Text open System open System.Diagnostics open System.Reflection -open System.Threading /// Thrown when we want to add some range information to a .NET exception exception WrappedError of exn * range with diff --git a/src/Visp.Compiler/DotnetCompiler.fs b/src/Visp.Compiler/DotnetCompiler.fs new file mode 100644 index 0000000..97d3bce --- /dev/null +++ b/src/Visp.Compiler/DotnetCompiler.fs @@ -0,0 +1,81 @@ +module DotnetCompiler + +open CliWrap +open System.IO +open System.Text + +type BuildConfiguration = + | Debug + | Release + +type BuildResult(exitCode: int, output: string, dllPath: string) = + member _.ExitCode = exitCode + member _.Output = output + member _.DllPath = dllPath + +type RunResult(exitCode: int, output: string) = + member _.ExitCode = exitCode + member _.Output = output + +let buildProject projectPath cwd (config: BuildConfiguration) = + + let outputPath = Path.Combine(projectPath, "output") + + let dllPath = Path.Combine(outputPath, "project.dll") + + let buildSb = new StringBuilder() + + let buildConfig = + [| "--configuration" + match config with + | Debug -> "Debug" + | Release -> "Release" |] + + let dotnetBuild = + Cli + .Wrap("dotnet") + .WithArguments( + Array.concat + [| [| "build"; projectPath; "--output"; outputPath; "--tl:off" |] + buildConfig |] + ) + .WithEnvironmentVariables(fun it -> it.Set("MSBUILDTERMINALLOGGER", "off") |> ignore) + .WithWorkingDirectory(cwd) + .WithStandardOutputPipe(PipeTarget.ToStringBuilder(buildSb)) + .WithStandardErrorPipe(PipeTarget.ToStringBuilder(buildSb)) + .WithValidation(CommandResultValidation.None) + + async { + let! buildResult = dotnetBuild.ExecuteAsync().Task |> Async.AwaitTask + + return BuildResult(buildResult.ExitCode, buildSb.ToString(), dllPath) + } + +let runBuildResult (result: BuildResult) cwd cmdArgs = + + let sb = new StringBuilder() + + let dotnet = + Cli + .Wrap("dotnet") + .WithArguments(Array.concat [| [| result.DllPath |]; [| "--" |]; cmdArgs |]) + .WithWorkingDirectory(cwd) + .WithStandardOutputPipe(PipeTarget.ToStringBuilder(sb)) + .WithStandardErrorPipe(PipeTarget.ToStringBuilder(sb)) + .WithValidation(CommandResultValidation.None) + + async { + let! result = dotnet.ExecuteAsync().Task |> Async.AwaitTask + + return RunResult(result.ExitCode, sb.ToString()) + } + +let buildAndRun projectPath cwd (config: BuildConfiguration) cmdArgs = + async { + let! buildResult = buildProject projectPath cwd config + + if buildResult.ExitCode <> 0 then + failwithf "Build failed: %s" (buildResult.Output) + + return! runBuildResult buildResult cwd cmdArgs + } diff --git a/src/Visp.Compiler/FsharpGenerator.fs b/src/Visp.Compiler/FsharpGenerator.fs index f8307ac..804ad1c 100644 --- a/src/Visp.Compiler/FsharpGenerator.fs +++ b/src/Visp.Compiler/FsharpGenerator.fs @@ -160,7 +160,7 @@ let private generateFsProjectFile Exe - net8.0 + net9.0 en true $(OtherFlags) {flags} diff --git a/src/Visp.Compiler/ParseUtils.fs b/src/Visp.Compiler/ParseUtils.fs index f52bdcd..a0a7df6 100644 --- a/src/Visp.Compiler/ParseUtils.fs +++ b/src/Visp.Compiler/ParseUtils.fs @@ -9,14 +9,29 @@ open Visp.Compiler open Visp.Compiler.SyntaxParser open Visp.Compiler.LexHelpers open Visp.Compiler.Syntax.Macros +open System.Collections.Generic -let mkTokenizerWithArgs args = +type NestedTokenizer = + { mutable index: int + tokens: IReadOnlyList } + + member t.ReadNext() = + if t.index < t.tokens.Count then + let next = Some(t.tokens[t.index]) + t.index <- t.index + 1 + next + else + None + +let rec mkTokenizerWithArgs args = let inline read_next args buf = match args.mode with | LexMode.Default -> Lexer.token args false buf | LexMode.TokenStream _ -> Lexer.tokenStream args false buf let handle_next (args: LexArgs) next = + let mutable actual = next + match next with | QUOTE_SYM -> args.mode <- LexMode.TokenStream TokenStreamMode.QuoteSym | QUOTE_KW -> // args.mode <- LexMode.TokenStream TokenStreamMode.Quote @@ -83,43 +98,128 @@ let mkTokenizerWithArgs args = | _ -> () if args.debugTokens then - eprintfn - "%A %A %i %i %A" - next - args.mode - args.depth - args.ContextCount - args.CurrentContext + if next <> actual then + eprintfn + "%A -> (%A) %A %i %i %A" + next + actual + args.mode + args.depth + args.ContextCount + args.CurrentContext + else + eprintfn + "%A %A %i %i %A" + next + args.mode + args.depth + args.ContextCount + args.CurrentContext - next + actual let next_token = read_next args let handle_token = handle_next args let mutable token_list = [] + let mutable include_tokenizers: NestedTokenizer list = [] + + let read_next_nested_token () = + match include_tokenizers with + | [] -> None + | it :: rest -> + match it.ReadNext() with + | None -> + include_tokenizers <- rest + None + | Some(tok) -> Some(tok) + + let read_next_token_list_token buf = + match token_list with + | [] -> + match next_token buf with + | TOKENLIST toks -> + match toks with + | tok :: rest -> + token_list <- rest + tok + | [] -> (failwith "empty TOKENLIST is not supported") + | it -> it + | tok :: rest -> + token_list <- rest + tok // Nested TOKENLISTS are not supported. + // TODO: Support correct file & ranges for includes let tokenizer buf = let token = - match token_list with - | [] -> - match next_token buf with - | TOKENLIST toks -> - match toks with - | tok :: rest -> - token_list <- rest - tok - | [] -> (failwith "empty TOKENLIST is not supported") - | it -> it - | tok :: rest -> - token_list <- rest - tok - - handle_token token + match read_next_nested_token () with + | Some(tok) -> tok + | None -> read_next_token_list_token buf + + match token with + | INCLUDE -> + let mutable includes = [] + + let mutable loop = true + + while loop do + let next = next_token buf + + match next with + | STRING(it, _, _) -> + includes <- it :: includes + () + | _ -> () + + loop <- next <> RPAREN + () + // includes <- List.rev includes + + loop <- true + + while loop do + match includes with + | [] -> loop <- false + | it :: rest -> + let tokz = getNestedTokens buf.EndPos.FileName it false + include_tokenizers <- tokz :: include_tokenizers + includes <- rest + + () + + // Includes will not be part of the final parse result + // Close the paren which was before the INCLUDE + // NOTE: This assumes correct formatting. + RPAREN + | it -> handle_token it tokenizer -let mkTokenizer dbg = +and private getNestedTokens rootFile filePath dbg = + + let actualPath = + System.IO.Path.GetDirectoryName rootFile + |> System.IO.Path.GetFullPath + |> fun (r) -> System.IO.Path.Combine(r, filePath) + |> System.IO.Path.GetFullPath + + let (stream, reader, lexbuf) = UnicodeFileAsLexbuf(actualPath, None) + use _ = stream + use _ = reader + + let tokenizer = mkTokenizer dbg + let arr = ResizeArray() + + while not lexbuf.IsPastEndOfStream do + let next = tokenizer lexbuf + + if next <> EOF then + arr.Add(next) + + { tokens = arr; index = 0 } + +and mkTokenizer dbg = mkTokenizerWithArgs <| { mkDefaultLextArgs () with debugTokens = dbg } diff --git a/src/Visp.Compiler/Syntax/Macros.fs b/src/Visp.Compiler/Syntax/Macros.fs index 74cd9aa..c493a0a 100644 --- a/src/Visp.Compiler/Syntax/Macros.fs +++ b/src/Visp.Compiler/Syntax/Macros.fs @@ -50,7 +50,10 @@ module Macros = SynMacroBody.Const(SynConst.String(docToStringPooled docs, SynStringKind.Regular, r), r) let inline private builtinMacroFile (SynMacroCall(_, _, r)) = - SynMacroBody.Const(SynConst.String(r.FileName, SynStringKind.Regular, r), r) + SynMacroBody.Const( + SynConst.String(FormatPath.normalizePath r.FileName, SynStringKind.Regular, r), + r + ) let inline private builtinMacroLine (SynMacroCall(_, _, r)) = SynMacroBody.Const(SynConst.Int32(r.StartLine), r) diff --git a/src/Visp.Compiler/Syntax/SynWriter.fs b/src/Visp.Compiler/Syntax/SynWriter.fs index 78b0581..95c0559 100644 --- a/src/Visp.Compiler/Syntax/SynWriter.fs +++ b/src/Visp.Compiler/Syntax/SynWriter.fs @@ -138,10 +138,7 @@ module Write = let newlineIndent: SynWriter -> unit = chain newline indent let lineof (w: SynWriter) (range: range) = - if SyntaxWriteUtilThreadStatics.RunningTests then - fmtprintfn w "// line %i @\"%s\"" range.StartLine ((NormalizedPath range.FileName).Path) - else - fmtprintfn w "// line %i @\"%s\"" range.StartLine range.FileName + fmtprintfn w "// line %i @\"%s\"" range.StartLine (FormatPath.normalizePath range.FileName) let text (w: SynWriter) (txt: Text) = match txt with diff --git a/src/Visp.Compiler/Syntax/Syntax.fs b/src/Visp.Compiler/Syntax/Syntax.fs index 18f089a..f9bf423 100644 --- a/src/Visp.Compiler/Syntax/Syntax.fs +++ b/src/Visp.Compiler/Syntax/Syntax.fs @@ -80,6 +80,28 @@ type Ident(text: string, range: range) = type NormalizedPath(text: string) = let original = text + let originalPlus = + let len = text.Length + + let sb = PooledStringBuilder.Get() + sb.EnsureCapacity(len) |> ignore + + let mutable index = 0 + + while index < len do + let ch = text[index] + index <- index + 1 + + match ch with + | '\\' -> + if index + 1 < len && text[index + 1] = '\\' then + index <- index + 1 + + sb.Append('\\').Append('\\') |> ignore + | it -> sb.Append(it) |> ignore + + sb.ToStringAndReturn() + let normalized = let len = text.Length @@ -107,9 +129,28 @@ type NormalizedPath(text: string) = sb.ToStringAndReturn() member _.Original = original + member _.OriginalDisplay = originalPlus member _.Path = normalized override _.ToString() = normalized +module FormatPath = + let private isTruthy (value: string) = + System.String.Equals(value, "true", System.StringComparison.OrdinalIgnoreCase) + || System.String.Equals(value, "1", System.StringComparison.OrdinalIgnoreCase) + + let private isEnvVarSet (key: string) = + isTruthy <| System.Environment.GetEnvironmentVariable(key) + + let normalizePath text = + let normalized = NormalizedPath text + + if + SyntaxWriteUtilThreadStatics.RunningTests + || (isEnvVarSet "VISP_FS_RUNNING_TESTS") + then + normalized.Path + else + normalized.OriginalDisplay type SynSymbol = | SynSymbol of ident: Ident diff --git a/src/Visp.Compiler/Visp.Compiler.fsproj b/src/Visp.Compiler/Visp.Compiler.fsproj index 43c6153..e6d89ad 100644 --- a/src/Visp.Compiler/Visp.Compiler.fsproj +++ b/src/Visp.Compiler/Visp.Compiler.fsproj @@ -45,6 +45,7 @@ + @@ -52,8 +53,9 @@ - - - + + + + diff --git a/src/Visp.LanguageServer/LanguageServer.fs b/src/Visp.LanguageServer/LanguageServer.fs index 619ae63..c83021f 100644 --- a/src/Visp.LanguageServer/LanguageServer.fs +++ b/src/Visp.LanguageServer/LanguageServer.fs @@ -940,10 +940,8 @@ and LanguageServerTarget(server: LanguageServerClient, traceSource: TraceSource) result member this.LogEnter - ( - arg: obj, - [] memberName: string - ) = + (arg: obj, [] memberName: string) + = if this.LogEnabled then let text = @@ -963,10 +961,7 @@ and LanguageServerTarget(server: LanguageServerClient, traceSource: TraceSource) member this.LogExit - ( - result: obj, - [] memberName: string - ) = + (result: obj, [] memberName: string) = if this.LogEnabled then let text = diff --git a/src/Visp.LanguageServer/Visp.LanguageServer.fsproj b/src/Visp.LanguageServer/Visp.LanguageServer.fsproj index 438819b..08c95ce 100644 --- a/src/Visp.LanguageServer/Visp.LanguageServer.fsproj +++ b/src/Visp.LanguageServer/Visp.LanguageServer.fsproj @@ -1,7 +1,8 @@ - + Exe + true @@ -12,8 +13,8 @@ - - + + diff --git a/src/Visp.Runtime.Library/Visp.Runtime.Library.fsproj b/src/Visp.Runtime.Library/Visp.Runtime.Library.fsproj index 1affba9..2ae69bf 100644 --- a/src/Visp.Runtime.Library/Visp.Runtime.Library.fsproj +++ b/src/Visp.Runtime.Library/Visp.Runtime.Library.fsproj @@ -17,6 +17,6 @@ - + diff --git a/tests/PrettyPrinter.UnitTests/PrettyPrinter.UnitTests.fsproj b/tests/PrettyPrinter.UnitTests/PrettyPrinter.UnitTests.fsproj index 57a0738..1f2c6f9 100644 --- a/tests/PrettyPrinter.UnitTests/PrettyPrinter.UnitTests.fsproj +++ b/tests/PrettyPrinter.UnitTests/PrettyPrinter.UnitTests.fsproj @@ -1,7 +1,7 @@ - net8.0 + net9.0 false false @@ -14,21 +14,21 @@ - - - - + + + + runtime; build; native; contentfiles; analyzers; buildtransitive all - - - - + + + + runtime; build; native; contentfiles; analyzers; buildtransitive all - + runtime; build; native; contentfiles; analyzers; buildtransitive all diff --git a/tests/PrettyPrinter.UnitTests/Tests.fs b/tests/PrettyPrinter.UnitTests/Tests.fs index a415a7c..4caa783 100644 --- a/tests/PrettyPrinter.UnitTests/Tests.fs +++ b/tests/PrettyPrinter.UnitTests/Tests.fs @@ -1,4 +1,3 @@ -[] module Tests open Xunit diff --git a/tests/Visp.Compiler.UnitTests/ParsingTests.generated.fs b/tests/Visp.Compiler.UnitTests/ParsingTests.generated.fs index a58065c..9964889 100644 --- a/tests/Visp.Compiler.UnitTests/ParsingTests.generated.fs +++ b/tests/Visp.Compiler.UnitTests/ParsingTests.generated.fs @@ -10,623 +10,511 @@ namespace ParsingTests open Xunit -[] -module ``tests_while_while-1`` = +module ``tests_arrays_array-0`` = [] - let ``can parse`` () = TestUtils.runTest "tests/while/while-1.visp" + let ``can parse`` () = TestUtils.runTest "tests/arrays/array-0.visp" -[] -module ``tests_while_while-0`` = +module ``tests_arrays_array2d-0`` = [] - let ``can parse`` () = TestUtils.runTest "tests/while/while-0.visp" + let ``can parse`` () = TestUtils.runTest "tests/arrays/array2d-0.visp" -[] -module ``tests_for-to_for-to-0`` = +module ``tests_arrays_array2d-1`` = [] - let ``can parse`` () = TestUtils.runTest "tests/for-to/for-to-0.visp" + let ``can parse`` () = TestUtils.runTest "tests/arrays/array2d-1.visp" -[] -module ``tests_dot_dot-shorthands`` = +module ``tests_atom_atom-0`` = [] - let ``can parse`` () = TestUtils.runTest "tests/dot/dot-shorthands.visp" + let ``can parse`` () = TestUtils.runTest "tests/atom/atom-0.visp" -[] -module ``tests_pats_record-pat-0`` = +module ``tests_attributes_attributes-0`` = [] - let ``can parse`` () = TestUtils.runTest "tests/pats/record-pat-0.visp" + let ``can parse`` () = TestUtils.runTest "tests/attributes/attributes-0.visp" -[] -module ``tests_pats_fn-1`` = +module ``tests_attributes_let-attributes-0`` = [] - let ``can parse`` () = TestUtils.runTest "tests/pats/fn-1.visp" + let ``can parse`` () = TestUtils.runTest "tests/attributes/let-attributes-0.visp" -[] -module ``tests_pats_fn-0`` = +module ``tests_builtin-macros_cond-0`` = [] - let ``can parse`` () = TestUtils.runTest "tests/pats/fn-0.visp" + let ``can parse`` () = TestUtils.runTest "tests/builtin-macros/cond-0.visp" -[] -module ``tests_pats_let-0`` = +module ``tests_builtin-macros_thread-first-0`` = [] - let ``can parse`` () = TestUtils.runTest "tests/pats/let-0.visp" + let ``can parse`` () = TestUtils.runTest "tests/builtin-macros/thread-first-0.visp" -[] -module ``tests_type_member-get-set-0`` = +module ``tests_builtin-macros_thread-first-1`` = [] - let ``can parse`` () = TestUtils.runTest "tests/type/member-get-set-0.visp" + let ``can parse`` () = TestUtils.runTest "tests/builtin-macros/thread-first-1.visp" -[] -module ``tests_type_type-0`` = +module ``tests_builtin-macros_thread-last-0`` = [] - let ``can parse`` () = TestUtils.runTest "tests/type/type-0.visp" + let ``can parse`` () = TestUtils.runTest "tests/builtin-macros/thread-last-0.visp" -[] -module ``tests_type_custom-comparison-0`` = +module ``tests_cexpr_cexpr-0`` = [] - let ``can parse`` () = TestUtils.runTest "tests/type/custom-comparison-0.visp" + let ``can parse`` () = TestUtils.runTest "tests/cexpr/cexpr-0.visp" -[] -module ``tests_type_byrefs-0`` = +module ``tests_cexpr_cexpr-1`` = [] - let ``can parse`` () = TestUtils.runTest "tests/type/byrefs-0.visp" + let ``can parse`` () = TestUtils.runTest "tests/cexpr/cexpr-1.visp" -[] -module ``tests_type_static-members-0`` = +module ``tests_chars_char-0`` = [] - let ``can parse`` () = TestUtils.runTest "tests/type/static-members-0.visp" + let ``can parse`` () = TestUtils.runTest "tests/chars/char-0.visp" -[] -module ``tests_type_record-2`` = +module ``tests_chars_char-1`` = [] - let ``can parse`` () = TestUtils.runTest "tests/type/record-2.visp" + let ``can parse`` () = TestUtils.runTest "tests/chars/char-1.visp" -[] -module ``tests_type_member-fn-0`` = +module ``tests_chars_char-2`` = [] - let ``can parse`` () = TestUtils.runTest "tests/type/member-fn-0.visp" + let ``can parse`` () = TestUtils.runTest "tests/chars/char-2.visp" -[] -module ``tests_type_union-0`` = +module ``tests_collections_list-0`` = [] - let ``can parse`` () = TestUtils.runTest "tests/type/union-0.visp" + let ``can parse`` () = TestUtils.runTest "tests/collections/list-0.visp" -[] -module ``tests_type_record-3`` = +module ``tests_dot_dot-shorthands`` = [] - let ``can parse`` () = TestUtils.runTest "tests/type/record-3.visp" + let ``can parse`` () = TestUtils.runTest "tests/dot/dot-shorthands.visp" -[] -module ``tests_type_type-alias-0`` = +module ``tests_examples_example-0`` = [] - let ``can parse`` () = TestUtils.runTest "tests/type/type-alias-0.visp" + let ``can parse`` () = TestUtils.runTest "tests/examples/example-0.visp" -[] -module ``tests_type_val-ctor-0`` = +module ``tests_examples_example-1`` = [] - let ``can parse`` () = TestUtils.runTest "tests/type/val-ctor-0.visp" + let ``can parse`` () = TestUtils.runTest "tests/examples/example-1.visp" -[] -module ``tests_type_object-exprs-0`` = +module ``tests_examples_example-10`` = [] - let ``can parse`` () = TestUtils.runTest "tests/type/object-exprs-0.visp" + let ``can parse`` () = TestUtils.runTest "tests/examples/example-10.visp" -[] -module ``tests_type_lambda-shorthand-record-0`` = +module ``tests_examples_example-11`` = [] - let ``can parse`` () = TestUtils.runTest "tests/type/lambda-shorthand-record-0.visp" + let ``can parse`` () = TestUtils.runTest "tests/examples/example-11.visp" -[] -module ``tests_type_record-1`` = +module ``tests_examples_example-12`` = [] - let ``can parse`` () = TestUtils.runTest "tests/type/record-1.visp" + let ``can parse`` () = TestUtils.runTest "tests/examples/example-12.visp" -[] -module ``tests_type_record-0`` = +module ``tests_examples_example-13`` = [] - let ``can parse`` () = TestUtils.runTest "tests/type/record-0.visp" + let ``can parse`` () = TestUtils.runTest "tests/examples/example-13.visp" -[] -module ``tests_type_record-4`` = +module ``tests_examples_example-14`` = [] - let ``can parse`` () = TestUtils.runTest "tests/type/record-4.visp" + let ``can parse`` () = TestUtils.runTest "tests/examples/example-14.visp" -[] -module ``tests_type_record-mut-0`` = +module ``tests_examples_example-15`` = [] - let ``can parse`` () = TestUtils.runTest "tests/type/record-mut-0.visp" + let ``can parse`` () = TestUtils.runTest "tests/examples/example-15.visp" -[] -module ``tests_functions_apply-method-args-0`` = +module ``tests_examples_example-16`` = [] - let ``can parse`` () = TestUtils.runTest "tests/functions/apply-method-args-0.visp" + let ``can parse`` () = TestUtils.runTest "tests/examples/example-16.visp" -[] -module ``tests_functions_cons-concat-0`` = +module ``tests_examples_example-17`` = [] - let ``can parse`` () = TestUtils.runTest "tests/functions/cons-concat-0.visp" + let ``can parse`` () = TestUtils.runTest "tests/examples/example-17.visp" -[] -module ``tests_hashset_hashset-0`` = +module ``tests_examples_example-2`` = [] - let ``can parse`` () = TestUtils.runTest "tests/hashset/hashset-0.visp" + let ``can parse`` () = TestUtils.runTest "tests/examples/example-2.visp" -[] -module ``tests_parsing_stars-in-places-0`` = +module ``tests_examples_example-3`` = [] - let ``can parse`` () = TestUtils.runTest "tests/parsing/stars-in-places-0.visp" + let ``can parse`` () = TestUtils.runTest "tests/examples/example-3.visp" -[] -module ``tests_parsing_strings-interpolation-0`` = +module ``tests_examples_example-4`` = [] - let ``can parse`` () = TestUtils.runTest "tests/parsing/strings-interpolation-0.visp" + let ``can parse`` () = TestUtils.runTest "tests/examples/example-4.visp" -[] -module ``tests_parsing_strings-1`` = +module ``tests_examples_example-5`` = [] - let ``can parse`` () = TestUtils.runTest "tests/parsing/strings-1.visp" + let ``can parse`` () = TestUtils.runTest "tests/examples/example-5.visp" -[] -module ``tests_parsing_keyword-strings-0`` = +module ``tests_examples_example-6`` = [] - let ``can parse`` () = TestUtils.runTest "tests/parsing/keyword-strings-0.visp" + let ``can parse`` () = TestUtils.runTest "tests/examples/example-6.visp" -[] -module ``tests_parsing_match-0`` = +module ``tests_examples_example-7`` = [] - let ``can parse`` () = TestUtils.runTest "tests/parsing/match-0.visp" + let ``can parse`` () = TestUtils.runTest "tests/examples/example-7.visp" -[] -module ``tests_parsing_strings-interpolation-3`` = +module ``tests_examples_example-8`` = [] - let ``can parse`` () = TestUtils.runTest "tests/parsing/strings-interpolation-3.visp" + let ``can parse`` () = TestUtils.runTest "tests/examples/example-8.visp" -[] -module ``tests_parsing_sym-with-arrow-in-macro-0`` = +module ``tests_examples_example-9`` = [] - let ``can parse`` () = TestUtils.runTest "tests/parsing/sym-with-arrow-in-macro-0.visp" + let ``can parse`` () = TestUtils.runTest "tests/examples/example-9.visp" -[] -module ``tests_parsing_tuple-0`` = +module ``tests_examples_variables-0`` = [] - let ``can parse`` () = TestUtils.runTest "tests/parsing/tuple-0.visp" + let ``can parse`` () = TestUtils.runTest "tests/examples/variables-0.visp" -[] -module ``tests_parsing_generic-method-or-variable-0`` = +module ``tests_for-in_for-in-0`` = [] - let ``can parse`` () = TestUtils.runTest "tests/parsing/generic-method-or-variable-0.visp" + let ``can parse`` () = TestUtils.runTest "tests/for-in/for-in-0.visp" -[] -module ``tests_parsing_generic-args-0`` = +module ``tests_for-in_for-in-1`` = [] - let ``can parse`` () = TestUtils.runTest "tests/parsing/generic-args-0.visp" + let ``can parse`` () = TestUtils.runTest "tests/for-in/for-in-1.visp" -[] -module ``tests_parsing_strings-0`` = +module ``tests_for-in_for-in-2`` = [] - let ``can parse`` () = TestUtils.runTest "tests/parsing/strings-0.visp" + let ``can parse`` () = TestUtils.runTest "tests/for-in/for-in-2.visp" -[] -module ``tests_parsing_lambda-shorthand-0`` = +module ``tests_for-in_for-in-3`` = [] - let ``can parse`` () = TestUtils.runTest "tests/parsing/lambda-shorthand-0.visp" + let ``can parse`` () = TestUtils.runTest "tests/for-in/for-in-3.visp" -[] -module ``tests_parsing_strings-interpolation-1`` = +module ``tests_for-in_for-in-4`` = [] - let ``can parse`` () = TestUtils.runTest "tests/parsing/strings-interpolation-1.visp" + let ``can parse`` () = TestUtils.runTest "tests/for-in/for-in-4.visp" -[] -module ``tests_parsing_ambiguous-tokens-0`` = +module ``tests_for-to_for-to-0`` = [] - let ``can parse`` () = TestUtils.runTest "tests/parsing/ambiguous-tokens-0.visp" + let ``can parse`` () = TestUtils.runTest "tests/for-to/for-to-0.visp" -[] -module ``tests_parsing_numbers-0`` = +module ``tests_functions_apply-method-args-0`` = [] - let ``can parse`` () = TestUtils.runTest "tests/parsing/numbers-0.visp" + let ``can parse`` () = TestUtils.runTest "tests/functions/apply-method-args-0.visp" -[] -module ``tests_parsing_props`` = +module ``tests_functions_cons-concat-0`` = [] - let ``can parse`` () = TestUtils.runTest "tests/parsing/props.visp" + let ``can parse`` () = TestUtils.runTest "tests/functions/cons-concat-0.visp" -[] -module ``tests_parsing_operators-0`` = +module ``tests_hashmap_hashmap-0`` = [] - let ``can parse`` () = TestUtils.runTest "tests/parsing/operators-0.visp" + let ``can parse`` () = TestUtils.runTest "tests/hashmap/hashmap-0.visp" -[] -module ``tests_parsing_call-tuple-args-0`` = +module ``tests_hashset_hashset-0`` = [] - let ``can parse`` () = TestUtils.runTest "tests/parsing/call-tuple-args-0.visp" + let ``can parse`` () = TestUtils.runTest "tests/hashset/hashset-0.visp" -[] -module ``tests_parsing_span-to-int32-0`` = +module ``tests_if_if-0`` = [] - let ``can parse`` () = TestUtils.runTest "tests/parsing/span-to-int32-0.visp" + let ``can parse`` () = TestUtils.runTest "tests/if/if-0.visp" -[] -module ``tests_parsing_let-values`` = +module ``tests_include_include-0`` = [] - let ``can parse`` () = TestUtils.runTest "tests/parsing/let-values.visp" + let ``can parse`` () = TestUtils.runTest "tests/include/include-0.visp" -[] -module ``tests_parsing_match-1`` = +module ``tests_include_include-1`` = [] - let ``can parse`` () = TestUtils.runTest "tests/parsing/match-1.visp" + let ``can parse`` () = TestUtils.runTest "tests/include/include-1.visp" -[] -module ``tests_parsing_seq-as-generic-0`` = +module ``tests_include_include-macros-0-macros`` = [] - let ``can parse`` () = TestUtils.runTest "tests/parsing/seq-as-generic-0.visp" + let ``can parse`` () = TestUtils.runTest "tests/include/include-macros-0-macros.visp" -[] -module ``tests_parsing_tupled-special-forms-0`` = +module ``tests_include_include-macros-0`` = [] - let ``can parse`` () = TestUtils.runTest "tests/parsing/tupled-special-forms-0.visp" + let ``can parse`` () = TestUtils.runTest "tests/include/include-macros-0.visp" -[] -module ``tests_parsing_strings-interpolation-2`` = +module ``tests_macros_and-example-0`` = [] - let ``can parse`` () = TestUtils.runTest "tests/parsing/strings-interpolation-2.visp" + let ``can parse`` () = TestUtils.runTest "tests/macros/and-example-0.visp" -[] -module ``tests_parsing_operators-1`` = +module ``tests_macros_bar-parens-in-macro-0`` = [] - let ``can parse`` () = TestUtils.runTest "tests/parsing/operators-1.visp" + let ``can parse`` () = TestUtils.runTest "tests/macros/bar-parens-in-macro-0.visp" -[] -module ``tests_arrays_array2d-0`` = +module ``tests_macros_chars-in-macros-0`` = [] - let ``can parse`` () = TestUtils.runTest "tests/arrays/array2d-0.visp" + let ``can parse`` () = TestUtils.runTest "tests/macros/chars-in-macros-0.visp" -[] -module ``tests_arrays_array2d-1`` = +module ``tests_macros_cond-macro-0`` = [] - let ``can parse`` () = TestUtils.runTest "tests/arrays/array2d-1.visp" + let ``can parse`` () = TestUtils.runTest "tests/macros/cond-macro-0.visp" -[] -module ``tests_arrays_array-0`` = +module ``tests_macros_cond-macro-1`` = [] - let ``can parse`` () = TestUtils.runTest "tests/arrays/array-0.visp" + let ``can parse`` () = TestUtils.runTest "tests/macros/cond-macro-1.visp" -[] -module ``tests_atom_atom-0`` = +module ``tests_macros_count-exprs-0`` = [] - let ``can parse`` () = TestUtils.runTest "tests/atom/atom-0.visp" + let ``can parse`` () = TestUtils.runTest "tests/macros/count-exprs-0.visp" -[] -module ``tests_vector_vector-0`` = +module ``tests_macros_dbg-0`` = [] - let ``can parse`` () = TestUtils.runTest "tests/vector/vector-0.visp" + let ``can parse`` () = TestUtils.runTest "tests/macros/dbg-0.visp" -[] -module ``tests_numbers_math-ops-0`` = +module ``tests_macros_dbg-example-0`` = [] - let ``can parse`` () = TestUtils.runTest "tests/numbers/math-ops-0.visp" + let ``can parse`` () = TestUtils.runTest "tests/macros/dbg-example-0.visp" -[] -module ``tests_numbers_int-0`` = +module ``tests_macros_macro-lambda-shorthand-0`` = [] - let ``can parse`` () = TestUtils.runTest "tests/numbers/int-0.visp" + let ``can parse`` () = TestUtils.runTest "tests/macros/macro-lambda-shorthand-0.visp" -[] -module ``tests_collections_list-0`` = +module ``tests_macros_my-const-0`` = [] - let ``can parse`` () = TestUtils.runTest "tests/collections/list-0.visp" + let ``can parse`` () = TestUtils.runTest "tests/macros/my-const-0.visp" -[] -module ``tests_chars_char-1`` = +module ``tests_macros_my-rinit-0`` = [] - let ``can parse`` () = TestUtils.runTest "tests/chars/char-1.visp" + let ``can parse`` () = TestUtils.runTest "tests/macros/my-rinit-0.visp" -[] -module ``tests_chars_char-0`` = +module ``tests_macros_nested-macro-expansion-0`` = [] - let ``can parse`` () = TestUtils.runTest "tests/chars/char-0.visp" + let ``can parse`` () = TestUtils.runTest "tests/macros/nested-macro-expansion-0.visp" -[] -module ``tests_chars_char-2`` = +module ``tests_macros_nested-macro-expansion-1`` = [] - let ``can parse`` () = TestUtils.runTest "tests/chars/char-2.visp" + let ``can parse`` () = TestUtils.runTest "tests/macros/nested-macro-expansion-1.visp" -[] -module ``tests_include_include-0`` = +module ``tests_macros_or-example-0`` = [] - let ``can parse`` () = TestUtils.runTest "tests/include/include-0.visp" + let ``can parse`` () = TestUtils.runTest "tests/macros/or-example-0.visp" -[] -module ``tests_include_include-1`` = +module ``tests_macros_stringify-0`` = [] - let ``can parse`` () = TestUtils.runTest "tests/include/include-1.visp" + let ``can parse`` () = TestUtils.runTest "tests/macros/stringify-0.visp" -[] -module ``tests_hashmap_hashmap-0`` = +module ``tests_macros_struct-example-1`` = [] - let ``can parse`` () = TestUtils.runTest "tests/hashmap/hashmap-0.visp" + let ``can parse`` () = TestUtils.runTest "tests/macros/struct-example-1.visp" -[] -module ``tests_cexpr_cexpr-0`` = +module ``tests_macros_struct-macro-0`` = [] - let ``can parse`` () = TestUtils.runTest "tests/cexpr/cexpr-0.visp" + let ``can parse`` () = TestUtils.runTest "tests/macros/struct-macro-0.visp" -[] -module ``tests_cexpr_cexpr-1`` = +module ``tests_macros_struct-macro-2`` = [] - let ``can parse`` () = TestUtils.runTest "tests/cexpr/cexpr-1.visp" + let ``can parse`` () = TestUtils.runTest "tests/macros/struct-macro-2.visp" -[] -module ``tests_for-in_for-in-0`` = +module ``tests_macros_struct-macro-3`` = [] - let ``can parse`` () = TestUtils.runTest "tests/for-in/for-in-0.visp" + let ``can parse`` () = TestUtils.runTest "tests/macros/struct-macro-3.visp" -[] -module ``tests_for-in_for-in-1`` = +module ``tests_macros_syntax-macro-0`` = [] - let ``can parse`` () = TestUtils.runTest "tests/for-in/for-in-1.visp" + let ``can parse`` () = TestUtils.runTest "tests/macros/syntax-macro-0.visp" -[] -module ``tests_for-in_for-in-2`` = +module ``tests_macros_syntax-macro-2`` = [] - let ``can parse`` () = TestUtils.runTest "tests/for-in/for-in-2.visp" + let ``can parse`` () = TestUtils.runTest "tests/macros/syntax-macro-2.visp" -[] -module ``tests_for-in_for-in-4`` = +module ``tests_macros_up-macro-0`` = [] - let ``can parse`` () = TestUtils.runTest "tests/for-in/for-in-4.visp" + let ``can parse`` () = TestUtils.runTest "tests/macros/up-macro-0.visp" -[] -module ``tests_for-in_for-in-3`` = +module ``tests_macros_when-unless-example-0`` = [] - let ``can parse`` () = TestUtils.runTest "tests/for-in/for-in-3.visp" + let ``can parse`` () = TestUtils.runTest "tests/macros/when-unless-example-0.visp" -[] -module ``tests_attributes_let-attributes-0`` = +module ``tests_macros_while-match-0`` = [] - let ``can parse`` () = TestUtils.runTest "tests/attributes/let-attributes-0.visp" + let ``can parse`` () = TestUtils.runTest "tests/macros/while-match-0.visp" -[] -module ``tests_attributes_attributes-0`` = +module ``tests_numbers_int-0`` = [] - let ``can parse`` () = TestUtils.runTest "tests/attributes/attributes-0.visp" + let ``can parse`` () = TestUtils.runTest "tests/numbers/int-0.visp" -[] -module ``tests_if_if-0`` = +module ``tests_numbers_math-ops-0`` = [] - let ``can parse`` () = TestUtils.runTest "tests/if/if-0.visp" + let ``can parse`` () = TestUtils.runTest "tests/numbers/math-ops-0.visp" -[] -module ``tests_quotation_quote-0`` = +module ``tests_parsing_ambiguous-tokens-0`` = [] - let ``can parse`` () = TestUtils.runTest "tests/quotation/quote-0.visp" + let ``can parse`` () = TestUtils.runTest "tests/parsing/ambiguous-tokens-0.visp" -[] -module ``tests_builtin-macros_thread-first-1`` = +module ``tests_parsing_call-tuple-args-0`` = [] - let ``can parse`` () = TestUtils.runTest "tests/builtin-macros/thread-first-1.visp" + let ``can parse`` () = TestUtils.runTest "tests/parsing/call-tuple-args-0.visp" -[] -module ``tests_builtin-macros_thread-first-0`` = +module ``tests_parsing_generic-args-0`` = [] - let ``can parse`` () = TestUtils.runTest "tests/builtin-macros/thread-first-0.visp" + let ``can parse`` () = TestUtils.runTest "tests/parsing/generic-args-0.visp" -[] -module ``tests_builtin-macros_thread-last-0`` = +module ``tests_parsing_generic-method-or-variable-0`` = [] - let ``can parse`` () = TestUtils.runTest "tests/builtin-macros/thread-last-0.visp" + let ``can parse`` () = TestUtils.runTest "tests/parsing/generic-method-or-variable-0.visp" -[] -module ``tests_builtin-macros_cond-0`` = +module ``tests_parsing_keyword-strings-0`` = [] - let ``can parse`` () = TestUtils.runTest "tests/builtin-macros/cond-0.visp" + let ``can parse`` () = TestUtils.runTest "tests/parsing/keyword-strings-0.visp" -[] -module ``tests_macros_stringify-0`` = +module ``tests_parsing_lambda-shorthand-0`` = [] - let ``can parse`` () = TestUtils.runTest "tests/macros/stringify-0.visp" + let ``can parse`` () = TestUtils.runTest "tests/parsing/lambda-shorthand-0.visp" -[] -module ``tests_macros_up-macro-0`` = +module ``tests_parsing_let-values`` = [] - let ``can parse`` () = TestUtils.runTest "tests/macros/up-macro-0.visp" + let ``can parse`` () = TestUtils.runTest "tests/parsing/let-values.visp" -[] -module ``tests_macros_nested-macro-expansion-0`` = +module ``tests_parsing_match-0`` = [] - let ``can parse`` () = TestUtils.runTest "tests/macros/nested-macro-expansion-0.visp" + let ``can parse`` () = TestUtils.runTest "tests/parsing/match-0.visp" -[] -module ``tests_macros_struct-example-1`` = +module ``tests_parsing_match-1`` = [] - let ``can parse`` () = TestUtils.runTest "tests/macros/struct-example-1.visp" + let ``can parse`` () = TestUtils.runTest "tests/parsing/match-1.visp" -[] -module ``tests_macros_bar-parens-in-macro-0`` = +module ``tests_parsing_numbers-0`` = [] - let ``can parse`` () = TestUtils.runTest "tests/macros/bar-parens-in-macro-0.visp" + let ``can parse`` () = TestUtils.runTest "tests/parsing/numbers-0.visp" -[] -module ``tests_macros_count-exprs-0`` = +module ``tests_parsing_operators-0`` = [] - let ``can parse`` () = TestUtils.runTest "tests/macros/count-exprs-0.visp" + let ``can parse`` () = TestUtils.runTest "tests/parsing/operators-0.visp" -[] -module ``tests_macros_dbg-example-0`` = +module ``tests_parsing_operators-1`` = [] - let ``can parse`` () = TestUtils.runTest "tests/macros/dbg-example-0.visp" + let ``can parse`` () = TestUtils.runTest "tests/parsing/operators-1.visp" -[] -module ``tests_macros_syntax-macro-2`` = +module ``tests_parsing_props`` = [] - let ``can parse`` () = TestUtils.runTest "tests/macros/syntax-macro-2.visp" + let ``can parse`` () = TestUtils.runTest "tests/parsing/props.visp" -[] -module ``tests_macros_syntax-macro-0`` = +module ``tests_parsing_seq-as-generic-0`` = [] - let ``can parse`` () = TestUtils.runTest "tests/macros/syntax-macro-0.visp" + let ``can parse`` () = TestUtils.runTest "tests/parsing/seq-as-generic-0.visp" -[] -module ``tests_macros_nested-macro-expansion-1`` = +module ``tests_parsing_span-to-int32-0`` = [] - let ``can parse`` () = TestUtils.runTest "tests/macros/nested-macro-expansion-1.visp" + let ``can parse`` () = TestUtils.runTest "tests/parsing/span-to-int32-0.visp" -[] -module ``tests_macros_cond-macro-1`` = +module ``tests_parsing_stars-in-places-0`` = [] - let ``can parse`` () = TestUtils.runTest "tests/macros/cond-macro-1.visp" + let ``can parse`` () = TestUtils.runTest "tests/parsing/stars-in-places-0.visp" -[] -module ``tests_macros_struct-macro-2`` = +module ``tests_parsing_strings-0`` = [] - let ``can parse`` () = TestUtils.runTest "tests/macros/struct-macro-2.visp" + let ``can parse`` () = TestUtils.runTest "tests/parsing/strings-0.visp" -[] -module ``tests_macros_chars-in-macros-0`` = +module ``tests_parsing_strings-1`` = [] - let ``can parse`` () = TestUtils.runTest "tests/macros/chars-in-macros-0.visp" + let ``can parse`` () = TestUtils.runTest "tests/parsing/strings-1.visp" -[] -module ``tests_macros_when-unless-example-0`` = +module ``tests_parsing_strings-interpolation-0`` = [] - let ``can parse`` () = TestUtils.runTest "tests/macros/when-unless-example-0.visp" + let ``can parse`` () = TestUtils.runTest "tests/parsing/strings-interpolation-0.visp" -[] -module ``tests_macros_cond-macro-0`` = +module ``tests_parsing_strings-interpolation-1`` = [] - let ``can parse`` () = TestUtils.runTest "tests/macros/cond-macro-0.visp" + let ``can parse`` () = TestUtils.runTest "tests/parsing/strings-interpolation-1.visp" -[] -module ``tests_macros_struct-macro-3`` = +module ``tests_parsing_strings-interpolation-2`` = [] - let ``can parse`` () = TestUtils.runTest "tests/macros/struct-macro-3.visp" + let ``can parse`` () = TestUtils.runTest "tests/parsing/strings-interpolation-2.visp" -[] -module ``tests_macros_my-rinit-0`` = +module ``tests_parsing_strings-interpolation-3`` = [] - let ``can parse`` () = TestUtils.runTest "tests/macros/my-rinit-0.visp" + let ``can parse`` () = TestUtils.runTest "tests/parsing/strings-interpolation-3.visp" -[] -module ``tests_macros_macro-lambda-shorthand-0`` = +module ``tests_parsing_sym-with-arrow-in-macro-0`` = [] - let ``can parse`` () = TestUtils.runTest "tests/macros/macro-lambda-shorthand-0.visp" + let ``can parse`` () = TestUtils.runTest "tests/parsing/sym-with-arrow-in-macro-0.visp" -[] -module ``tests_macros_struct-macro-0`` = +module ``tests_parsing_tuple-0`` = [] - let ``can parse`` () = TestUtils.runTest "tests/macros/struct-macro-0.visp" + let ``can parse`` () = TestUtils.runTest "tests/parsing/tuple-0.visp" -[] -module ``tests_macros_my-const-0`` = +module ``tests_parsing_tupled-special-forms-0`` = [] - let ``can parse`` () = TestUtils.runTest "tests/macros/my-const-0.visp" + let ``can parse`` () = TestUtils.runTest "tests/parsing/tupled-special-forms-0.visp" -[] -module ``tests_macros_and-example-0`` = +module ``tests_pats_fn-0`` = [] - let ``can parse`` () = TestUtils.runTest "tests/macros/and-example-0.visp" + let ``can parse`` () = TestUtils.runTest "tests/pats/fn-0.visp" -[] -module ``tests_macros_while-match-0`` = +module ``tests_pats_fn-1`` = [] - let ``can parse`` () = TestUtils.runTest "tests/macros/while-match-0.visp" + let ``can parse`` () = TestUtils.runTest "tests/pats/fn-1.visp" -[] -module ``tests_macros_or-example-0`` = +module ``tests_pats_let-0`` = [] - let ``can parse`` () = TestUtils.runTest "tests/macros/or-example-0.visp" + let ``can parse`` () = TestUtils.runTest "tests/pats/let-0.visp" -[] -module ``tests_examples_example-4`` = +module ``tests_pats_record-pat-0`` = [] - let ``can parse`` () = TestUtils.runTest "tests/examples/example-4.visp" + let ``can parse`` () = TestUtils.runTest "tests/pats/record-pat-0.visp" -[] -module ``tests_examples_example-11`` = +module ``tests_quotation_quote-0`` = [] - let ``can parse`` () = TestUtils.runTest "tests/examples/example-11.visp" + let ``can parse`` () = TestUtils.runTest "tests/quotation/quote-0.visp" -[] -module ``tests_examples_example-3`` = +module ``tests_type_byrefs-0`` = [] - let ``can parse`` () = TestUtils.runTest "tests/examples/example-3.visp" + let ``can parse`` () = TestUtils.runTest "tests/type/byrefs-0.visp" -[] -module ``tests_examples_example-9`` = +module ``tests_type_custom-comparison-0`` = [] - let ``can parse`` () = TestUtils.runTest "tests/examples/example-9.visp" + let ``can parse`` () = TestUtils.runTest "tests/type/custom-comparison-0.visp" -[] -module ``tests_examples_example-10`` = +module ``tests_type_lambda-shorthand-record-0`` = [] - let ``can parse`` () = TestUtils.runTest "tests/examples/example-10.visp" + let ``can parse`` () = TestUtils.runTest "tests/type/lambda-shorthand-record-0.visp" -[] -module ``tests_examples_example-0`` = +module ``tests_type_member-fn-0`` = [] - let ``can parse`` () = TestUtils.runTest "tests/examples/example-0.visp" + let ``can parse`` () = TestUtils.runTest "tests/type/member-fn-0.visp" -[] -module ``tests_examples_example-15`` = +module ``tests_type_member-get-set-0`` = [] - let ``can parse`` () = TestUtils.runTest "tests/examples/example-15.visp" + let ``can parse`` () = TestUtils.runTest "tests/type/member-get-set-0.visp" -[] -module ``tests_examples_example-16`` = +module ``tests_type_object-exprs-0`` = [] - let ``can parse`` () = TestUtils.runTest "tests/examples/example-16.visp" + let ``can parse`` () = TestUtils.runTest "tests/type/object-exprs-0.visp" -[] -module ``tests_examples_example-1`` = +module ``tests_type_record-0`` = [] - let ``can parse`` () = TestUtils.runTest "tests/examples/example-1.visp" + let ``can parse`` () = TestUtils.runTest "tests/type/record-0.visp" -[] -module ``tests_examples_variables-0`` = +module ``tests_type_record-1`` = [] - let ``can parse`` () = TestUtils.runTest "tests/examples/variables-0.visp" + let ``can parse`` () = TestUtils.runTest "tests/type/record-1.visp" -[] -module ``tests_examples_example-7`` = +module ``tests_type_record-2`` = [] - let ``can parse`` () = TestUtils.runTest "tests/examples/example-7.visp" + let ``can parse`` () = TestUtils.runTest "tests/type/record-2.visp" -[] -module ``tests_examples_example-2`` = +module ``tests_type_record-3`` = [] - let ``can parse`` () = TestUtils.runTest "tests/examples/example-2.visp" + let ``can parse`` () = TestUtils.runTest "tests/type/record-3.visp" -[] -module ``tests_examples_example-13`` = +module ``tests_type_record-4`` = [] - let ``can parse`` () = TestUtils.runTest "tests/examples/example-13.visp" + let ``can parse`` () = TestUtils.runTest "tests/type/record-4.visp" -[] -module ``tests_examples_example-14`` = +module ``tests_type_record-mut-0`` = [] - let ``can parse`` () = TestUtils.runTest "tests/examples/example-14.visp" + let ``can parse`` () = TestUtils.runTest "tests/type/record-mut-0.visp" -[] -module ``tests_examples_example-6`` = +module ``tests_type_static-members-0`` = [] - let ``can parse`` () = TestUtils.runTest "tests/examples/example-6.visp" + let ``can parse`` () = TestUtils.runTest "tests/type/static-members-0.visp" -[] -module ``tests_examples_example-8`` = +module ``tests_type_type-0`` = [] - let ``can parse`` () = TestUtils.runTest "tests/examples/example-8.visp" + let ``can parse`` () = TestUtils.runTest "tests/type/type-0.visp" -[] -module ``tests_examples_example-12`` = +module ``tests_type_type-alias-0`` = [] - let ``can parse`` () = TestUtils.runTest "tests/examples/example-12.visp" + let ``can parse`` () = TestUtils.runTest "tests/type/type-alias-0.visp" -[] -module ``tests_examples_example-17`` = +module ``tests_type_union-0`` = [] - let ``can parse`` () = TestUtils.runTest "tests/examples/example-17.visp" + let ``can parse`` () = TestUtils.runTest "tests/type/union-0.visp" -[] -module ``tests_examples_example-5`` = +module ``tests_type_val-ctor-0`` = [] - let ``can parse`` () = TestUtils.runTest "tests/examples/example-5.visp" + let ``can parse`` () = TestUtils.runTest "tests/type/val-ctor-0.visp" + +module ``tests_vector_vector-0`` = + [] + let ``can parse`` () = TestUtils.runTest "tests/vector/vector-0.visp" + +module ``tests_while_while-0`` = + [] + let ``can parse`` () = TestUtils.runTest "tests/while/while-0.visp" + +module ``tests_while_while-1`` = + [] + let ``can parse`` () = TestUtils.runTest "tests/while/while-1.visp" diff --git a/tests/Visp.Compiler.UnitTests/StructuredOutputTests.generated.fs b/tests/Visp.Compiler.UnitTests/StructuredOutputTests.generated.fs index e3054b0..1e67889 100644 --- a/tests/Visp.Compiler.UnitTests/StructuredOutputTests.generated.fs +++ b/tests/Visp.Compiler.UnitTests/StructuredOutputTests.generated.fs @@ -10,623 +10,511 @@ namespace StructuredOutputTests open Xunit -[] -module ``tests_while_while-1`` = +module ``tests_arrays_array-0`` = [] - let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/while/while-1.visp" + let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/arrays/array-0.visp" -[] -module ``tests_while_while-0`` = +module ``tests_arrays_array2d-0`` = [] - let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/while/while-0.visp" + let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/arrays/array2d-0.visp" -[] -module ``tests_for-to_for-to-0`` = +module ``tests_arrays_array2d-1`` = [] - let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/for-to/for-to-0.visp" + let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/arrays/array2d-1.visp" -[] -module ``tests_dot_dot-shorthands`` = +module ``tests_atom_atom-0`` = [] - let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/dot/dot-shorthands.visp" + let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/atom/atom-0.visp" -[] -module ``tests_pats_record-pat-0`` = +module ``tests_attributes_attributes-0`` = [] - let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/pats/record-pat-0.visp" + let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/attributes/attributes-0.visp" -[] -module ``tests_pats_fn-1`` = +module ``tests_attributes_let-attributes-0`` = [] - let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/pats/fn-1.visp" + let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/attributes/let-attributes-0.visp" -[] -module ``tests_pats_fn-0`` = +module ``tests_builtin-macros_cond-0`` = [] - let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/pats/fn-0.visp" + let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/builtin-macros/cond-0.visp" -[] -module ``tests_pats_let-0`` = +module ``tests_builtin-macros_thread-first-0`` = [] - let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/pats/let-0.visp" + let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/builtin-macros/thread-first-0.visp" -[] -module ``tests_type_member-get-set-0`` = +module ``tests_builtin-macros_thread-first-1`` = [] - let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/type/member-get-set-0.visp" + let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/builtin-macros/thread-first-1.visp" -[] -module ``tests_type_type-0`` = +module ``tests_builtin-macros_thread-last-0`` = [] - let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/type/type-0.visp" + let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/builtin-macros/thread-last-0.visp" -[] -module ``tests_type_custom-comparison-0`` = +module ``tests_cexpr_cexpr-0`` = [] - let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/type/custom-comparison-0.visp" + let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/cexpr/cexpr-0.visp" -[] -module ``tests_type_byrefs-0`` = +module ``tests_cexpr_cexpr-1`` = [] - let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/type/byrefs-0.visp" + let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/cexpr/cexpr-1.visp" -[] -module ``tests_type_static-members-0`` = +module ``tests_chars_char-0`` = [] - let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/type/static-members-0.visp" + let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/chars/char-0.visp" -[] -module ``tests_type_record-2`` = +module ``tests_chars_char-1`` = [] - let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/type/record-2.visp" + let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/chars/char-1.visp" -[] -module ``tests_type_member-fn-0`` = +module ``tests_chars_char-2`` = [] - let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/type/member-fn-0.visp" + let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/chars/char-2.visp" -[] -module ``tests_type_union-0`` = +module ``tests_collections_list-0`` = [] - let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/type/union-0.visp" + let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/collections/list-0.visp" -[] -module ``tests_type_record-3`` = +module ``tests_dot_dot-shorthands`` = [] - let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/type/record-3.visp" + let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/dot/dot-shorthands.visp" -[] -module ``tests_type_type-alias-0`` = +module ``tests_examples_example-0`` = [] - let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/type/type-alias-0.visp" + let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/examples/example-0.visp" -[] -module ``tests_type_val-ctor-0`` = +module ``tests_examples_example-1`` = [] - let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/type/val-ctor-0.visp" + let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/examples/example-1.visp" -[] -module ``tests_type_object-exprs-0`` = +module ``tests_examples_example-10`` = [] - let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/type/object-exprs-0.visp" + let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/examples/example-10.visp" -[] -module ``tests_type_lambda-shorthand-record-0`` = +module ``tests_examples_example-11`` = [] - let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/type/lambda-shorthand-record-0.visp" + let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/examples/example-11.visp" -[] -module ``tests_type_record-1`` = +module ``tests_examples_example-12`` = [] - let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/type/record-1.visp" + let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/examples/example-12.visp" -[] -module ``tests_type_record-0`` = +module ``tests_examples_example-13`` = [] - let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/type/record-0.visp" + let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/examples/example-13.visp" -[] -module ``tests_type_record-4`` = +module ``tests_examples_example-14`` = [] - let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/type/record-4.visp" + let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/examples/example-14.visp" -[] -module ``tests_type_record-mut-0`` = +module ``tests_examples_example-15`` = [] - let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/type/record-mut-0.visp" + let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/examples/example-15.visp" -[] -module ``tests_functions_apply-method-args-0`` = +module ``tests_examples_example-16`` = [] - let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/functions/apply-method-args-0.visp" + let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/examples/example-16.visp" -[] -module ``tests_functions_cons-concat-0`` = +module ``tests_examples_example-17`` = [] - let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/functions/cons-concat-0.visp" + let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/examples/example-17.visp" -[] -module ``tests_hashset_hashset-0`` = +module ``tests_examples_example-2`` = [] - let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/hashset/hashset-0.visp" + let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/examples/example-2.visp" -[] -module ``tests_parsing_stars-in-places-0`` = +module ``tests_examples_example-3`` = [] - let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/parsing/stars-in-places-0.visp" + let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/examples/example-3.visp" -[] -module ``tests_parsing_strings-interpolation-0`` = +module ``tests_examples_example-4`` = [] - let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/parsing/strings-interpolation-0.visp" + let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/examples/example-4.visp" -[] -module ``tests_parsing_strings-1`` = +module ``tests_examples_example-5`` = [] - let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/parsing/strings-1.visp" + let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/examples/example-5.visp" -[] -module ``tests_parsing_keyword-strings-0`` = +module ``tests_examples_example-6`` = [] - let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/parsing/keyword-strings-0.visp" + let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/examples/example-6.visp" -[] -module ``tests_parsing_match-0`` = +module ``tests_examples_example-7`` = [] - let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/parsing/match-0.visp" + let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/examples/example-7.visp" -[] -module ``tests_parsing_strings-interpolation-3`` = +module ``tests_examples_example-8`` = [] - let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/parsing/strings-interpolation-3.visp" + let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/examples/example-8.visp" -[] -module ``tests_parsing_sym-with-arrow-in-macro-0`` = +module ``tests_examples_example-9`` = [] - let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/parsing/sym-with-arrow-in-macro-0.visp" + let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/examples/example-9.visp" -[] -module ``tests_parsing_tuple-0`` = +module ``tests_examples_variables-0`` = [] - let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/parsing/tuple-0.visp" + let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/examples/variables-0.visp" -[] -module ``tests_parsing_generic-method-or-variable-0`` = +module ``tests_for-in_for-in-0`` = [] - let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/parsing/generic-method-or-variable-0.visp" + let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/for-in/for-in-0.visp" -[] -module ``tests_parsing_generic-args-0`` = +module ``tests_for-in_for-in-1`` = [] - let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/parsing/generic-args-0.visp" + let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/for-in/for-in-1.visp" -[] -module ``tests_parsing_strings-0`` = +module ``tests_for-in_for-in-2`` = [] - let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/parsing/strings-0.visp" + let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/for-in/for-in-2.visp" -[] -module ``tests_parsing_lambda-shorthand-0`` = +module ``tests_for-in_for-in-3`` = [] - let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/parsing/lambda-shorthand-0.visp" + let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/for-in/for-in-3.visp" -[] -module ``tests_parsing_strings-interpolation-1`` = +module ``tests_for-in_for-in-4`` = [] - let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/parsing/strings-interpolation-1.visp" + let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/for-in/for-in-4.visp" -[] -module ``tests_parsing_ambiguous-tokens-0`` = +module ``tests_for-to_for-to-0`` = [] - let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/parsing/ambiguous-tokens-0.visp" + let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/for-to/for-to-0.visp" -[] -module ``tests_parsing_numbers-0`` = +module ``tests_functions_apply-method-args-0`` = [] - let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/parsing/numbers-0.visp" + let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/functions/apply-method-args-0.visp" -[] -module ``tests_parsing_props`` = +module ``tests_functions_cons-concat-0`` = [] - let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/parsing/props.visp" + let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/functions/cons-concat-0.visp" -[] -module ``tests_parsing_operators-0`` = +module ``tests_hashmap_hashmap-0`` = [] - let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/parsing/operators-0.visp" + let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/hashmap/hashmap-0.visp" -[] -module ``tests_parsing_call-tuple-args-0`` = +module ``tests_hashset_hashset-0`` = [] - let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/parsing/call-tuple-args-0.visp" + let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/hashset/hashset-0.visp" -[] -module ``tests_parsing_span-to-int32-0`` = +module ``tests_if_if-0`` = [] - let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/parsing/span-to-int32-0.visp" + let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/if/if-0.visp" -[] -module ``tests_parsing_let-values`` = +module ``tests_include_include-0`` = [] - let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/parsing/let-values.visp" + let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/include/include-0.visp" -[] -module ``tests_parsing_match-1`` = +module ``tests_include_include-1`` = [] - let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/parsing/match-1.visp" + let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/include/include-1.visp" -[] -module ``tests_parsing_seq-as-generic-0`` = +module ``tests_include_include-macros-0-macros`` = [] - let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/parsing/seq-as-generic-0.visp" + let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/include/include-macros-0-macros.visp" -[] -module ``tests_parsing_tupled-special-forms-0`` = +module ``tests_include_include-macros-0`` = [] - let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/parsing/tupled-special-forms-0.visp" + let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/include/include-macros-0.visp" -[] -module ``tests_parsing_strings-interpolation-2`` = +module ``tests_macros_and-example-0`` = [] - let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/parsing/strings-interpolation-2.visp" + let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/macros/and-example-0.visp" -[] -module ``tests_parsing_operators-1`` = +module ``tests_macros_bar-parens-in-macro-0`` = [] - let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/parsing/operators-1.visp" + let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/macros/bar-parens-in-macro-0.visp" -[] -module ``tests_arrays_array2d-0`` = +module ``tests_macros_chars-in-macros-0`` = [] - let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/arrays/array2d-0.visp" + let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/macros/chars-in-macros-0.visp" -[] -module ``tests_arrays_array2d-1`` = +module ``tests_macros_cond-macro-0`` = [] - let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/arrays/array2d-1.visp" + let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/macros/cond-macro-0.visp" -[] -module ``tests_arrays_array-0`` = +module ``tests_macros_cond-macro-1`` = [] - let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/arrays/array-0.visp" + let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/macros/cond-macro-1.visp" -[] -module ``tests_atom_atom-0`` = +module ``tests_macros_count-exprs-0`` = [] - let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/atom/atom-0.visp" + let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/macros/count-exprs-0.visp" -[] -module ``tests_vector_vector-0`` = +module ``tests_macros_dbg-0`` = [] - let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/vector/vector-0.visp" + let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/macros/dbg-0.visp" -[] -module ``tests_numbers_math-ops-0`` = +module ``tests_macros_dbg-example-0`` = [] - let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/numbers/math-ops-0.visp" + let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/macros/dbg-example-0.visp" -[] -module ``tests_numbers_int-0`` = +module ``tests_macros_macro-lambda-shorthand-0`` = [] - let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/numbers/int-0.visp" + let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/macros/macro-lambda-shorthand-0.visp" -[] -module ``tests_collections_list-0`` = +module ``tests_macros_my-const-0`` = [] - let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/collections/list-0.visp" + let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/macros/my-const-0.visp" -[] -module ``tests_chars_char-1`` = +module ``tests_macros_my-rinit-0`` = [] - let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/chars/char-1.visp" + let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/macros/my-rinit-0.visp" -[] -module ``tests_chars_char-0`` = +module ``tests_macros_nested-macro-expansion-0`` = [] - let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/chars/char-0.visp" + let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/macros/nested-macro-expansion-0.visp" -[] -module ``tests_chars_char-2`` = +module ``tests_macros_nested-macro-expansion-1`` = [] - let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/chars/char-2.visp" + let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/macros/nested-macro-expansion-1.visp" -[] -module ``tests_include_include-0`` = +module ``tests_macros_or-example-0`` = [] - let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/include/include-0.visp" + let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/macros/or-example-0.visp" -[] -module ``tests_include_include-1`` = +module ``tests_macros_stringify-0`` = [] - let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/include/include-1.visp" + let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/macros/stringify-0.visp" -[] -module ``tests_hashmap_hashmap-0`` = +module ``tests_macros_struct-example-1`` = [] - let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/hashmap/hashmap-0.visp" + let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/macros/struct-example-1.visp" -[] -module ``tests_cexpr_cexpr-0`` = +module ``tests_macros_struct-macro-0`` = [] - let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/cexpr/cexpr-0.visp" + let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/macros/struct-macro-0.visp" -[] -module ``tests_cexpr_cexpr-1`` = +module ``tests_macros_struct-macro-2`` = [] - let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/cexpr/cexpr-1.visp" + let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/macros/struct-macro-2.visp" -[] -module ``tests_for-in_for-in-0`` = +module ``tests_macros_struct-macro-3`` = [] - let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/for-in/for-in-0.visp" + let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/macros/struct-macro-3.visp" -[] -module ``tests_for-in_for-in-1`` = +module ``tests_macros_syntax-macro-0`` = [] - let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/for-in/for-in-1.visp" + let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/macros/syntax-macro-0.visp" -[] -module ``tests_for-in_for-in-2`` = +module ``tests_macros_syntax-macro-2`` = [] - let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/for-in/for-in-2.visp" + let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/macros/syntax-macro-2.visp" -[] -module ``tests_for-in_for-in-4`` = +module ``tests_macros_up-macro-0`` = [] - let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/for-in/for-in-4.visp" + let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/macros/up-macro-0.visp" -[] -module ``tests_for-in_for-in-3`` = +module ``tests_macros_when-unless-example-0`` = [] - let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/for-in/for-in-3.visp" + let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/macros/when-unless-example-0.visp" -[] -module ``tests_attributes_let-attributes-0`` = +module ``tests_macros_while-match-0`` = [] - let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/attributes/let-attributes-0.visp" + let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/macros/while-match-0.visp" -[] -module ``tests_attributes_attributes-0`` = +module ``tests_numbers_int-0`` = [] - let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/attributes/attributes-0.visp" + let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/numbers/int-0.visp" -[] -module ``tests_if_if-0`` = +module ``tests_numbers_math-ops-0`` = [] - let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/if/if-0.visp" + let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/numbers/math-ops-0.visp" -[] -module ``tests_quotation_quote-0`` = +module ``tests_parsing_ambiguous-tokens-0`` = [] - let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/quotation/quote-0.visp" + let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/parsing/ambiguous-tokens-0.visp" -[] -module ``tests_builtin-macros_thread-first-1`` = +module ``tests_parsing_call-tuple-args-0`` = [] - let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/builtin-macros/thread-first-1.visp" + let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/parsing/call-tuple-args-0.visp" -[] -module ``tests_builtin-macros_thread-first-0`` = +module ``tests_parsing_generic-args-0`` = [] - let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/builtin-macros/thread-first-0.visp" + let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/parsing/generic-args-0.visp" -[] -module ``tests_builtin-macros_thread-last-0`` = +module ``tests_parsing_generic-method-or-variable-0`` = [] - let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/builtin-macros/thread-last-0.visp" + let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/parsing/generic-method-or-variable-0.visp" -[] -module ``tests_builtin-macros_cond-0`` = +module ``tests_parsing_keyword-strings-0`` = [] - let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/builtin-macros/cond-0.visp" + let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/parsing/keyword-strings-0.visp" -[] -module ``tests_macros_stringify-0`` = +module ``tests_parsing_lambda-shorthand-0`` = [] - let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/macros/stringify-0.visp" + let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/parsing/lambda-shorthand-0.visp" -[] -module ``tests_macros_up-macro-0`` = +module ``tests_parsing_let-values`` = [] - let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/macros/up-macro-0.visp" + let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/parsing/let-values.visp" -[] -module ``tests_macros_nested-macro-expansion-0`` = +module ``tests_parsing_match-0`` = [] - let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/macros/nested-macro-expansion-0.visp" + let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/parsing/match-0.visp" -[] -module ``tests_macros_struct-example-1`` = +module ``tests_parsing_match-1`` = [] - let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/macros/struct-example-1.visp" + let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/parsing/match-1.visp" -[] -module ``tests_macros_bar-parens-in-macro-0`` = +module ``tests_parsing_numbers-0`` = [] - let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/macros/bar-parens-in-macro-0.visp" + let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/parsing/numbers-0.visp" -[] -module ``tests_macros_count-exprs-0`` = +module ``tests_parsing_operators-0`` = [] - let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/macros/count-exprs-0.visp" + let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/parsing/operators-0.visp" -[] -module ``tests_macros_dbg-example-0`` = +module ``tests_parsing_operators-1`` = [] - let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/macros/dbg-example-0.visp" + let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/parsing/operators-1.visp" -[] -module ``tests_macros_syntax-macro-2`` = +module ``tests_parsing_props`` = [] - let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/macros/syntax-macro-2.visp" + let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/parsing/props.visp" -[] -module ``tests_macros_syntax-macro-0`` = +module ``tests_parsing_seq-as-generic-0`` = [] - let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/macros/syntax-macro-0.visp" + let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/parsing/seq-as-generic-0.visp" -[] -module ``tests_macros_nested-macro-expansion-1`` = +module ``tests_parsing_span-to-int32-0`` = [] - let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/macros/nested-macro-expansion-1.visp" + let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/parsing/span-to-int32-0.visp" -[] -module ``tests_macros_cond-macro-1`` = +module ``tests_parsing_stars-in-places-0`` = [] - let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/macros/cond-macro-1.visp" + let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/parsing/stars-in-places-0.visp" -[] -module ``tests_macros_struct-macro-2`` = +module ``tests_parsing_strings-0`` = [] - let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/macros/struct-macro-2.visp" + let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/parsing/strings-0.visp" -[] -module ``tests_macros_chars-in-macros-0`` = +module ``tests_parsing_strings-1`` = [] - let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/macros/chars-in-macros-0.visp" + let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/parsing/strings-1.visp" -[] -module ``tests_macros_when-unless-example-0`` = +module ``tests_parsing_strings-interpolation-0`` = [] - let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/macros/when-unless-example-0.visp" + let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/parsing/strings-interpolation-0.visp" -[] -module ``tests_macros_cond-macro-0`` = +module ``tests_parsing_strings-interpolation-1`` = [] - let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/macros/cond-macro-0.visp" + let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/parsing/strings-interpolation-1.visp" -[] -module ``tests_macros_struct-macro-3`` = +module ``tests_parsing_strings-interpolation-2`` = [] - let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/macros/struct-macro-3.visp" + let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/parsing/strings-interpolation-2.visp" -[] -module ``tests_macros_my-rinit-0`` = +module ``tests_parsing_strings-interpolation-3`` = [] - let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/macros/my-rinit-0.visp" + let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/parsing/strings-interpolation-3.visp" -[] -module ``tests_macros_macro-lambda-shorthand-0`` = +module ``tests_parsing_sym-with-arrow-in-macro-0`` = [] - let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/macros/macro-lambda-shorthand-0.visp" + let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/parsing/sym-with-arrow-in-macro-0.visp" -[] -module ``tests_macros_struct-macro-0`` = +module ``tests_parsing_tuple-0`` = [] - let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/macros/struct-macro-0.visp" + let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/parsing/tuple-0.visp" -[] -module ``tests_macros_my-const-0`` = +module ``tests_parsing_tupled-special-forms-0`` = [] - let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/macros/my-const-0.visp" + let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/parsing/tupled-special-forms-0.visp" -[] -module ``tests_macros_and-example-0`` = +module ``tests_pats_fn-0`` = [] - let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/macros/and-example-0.visp" + let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/pats/fn-0.visp" -[] -module ``tests_macros_while-match-0`` = +module ``tests_pats_fn-1`` = [] - let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/macros/while-match-0.visp" + let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/pats/fn-1.visp" -[] -module ``tests_macros_or-example-0`` = +module ``tests_pats_let-0`` = [] - let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/macros/or-example-0.visp" + let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/pats/let-0.visp" -[] -module ``tests_examples_example-4`` = +module ``tests_pats_record-pat-0`` = [] - let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/examples/example-4.visp" + let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/pats/record-pat-0.visp" -[] -module ``tests_examples_example-11`` = +module ``tests_quotation_quote-0`` = [] - let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/examples/example-11.visp" + let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/quotation/quote-0.visp" -[] -module ``tests_examples_example-3`` = +module ``tests_type_byrefs-0`` = [] - let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/examples/example-3.visp" + let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/type/byrefs-0.visp" -[] -module ``tests_examples_example-9`` = +module ``tests_type_custom-comparison-0`` = [] - let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/examples/example-9.visp" + let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/type/custom-comparison-0.visp" -[] -module ``tests_examples_example-10`` = +module ``tests_type_lambda-shorthand-record-0`` = [] - let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/examples/example-10.visp" + let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/type/lambda-shorthand-record-0.visp" -[] -module ``tests_examples_example-0`` = +module ``tests_type_member-fn-0`` = [] - let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/examples/example-0.visp" + let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/type/member-fn-0.visp" -[] -module ``tests_examples_example-15`` = +module ``tests_type_member-get-set-0`` = [] - let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/examples/example-15.visp" + let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/type/member-get-set-0.visp" -[] -module ``tests_examples_example-16`` = +module ``tests_type_object-exprs-0`` = [] - let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/examples/example-16.visp" + let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/type/object-exprs-0.visp" -[] -module ``tests_examples_example-1`` = +module ``tests_type_record-0`` = [] - let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/examples/example-1.visp" + let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/type/record-0.visp" -[] -module ``tests_examples_variables-0`` = +module ``tests_type_record-1`` = [] - let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/examples/variables-0.visp" + let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/type/record-1.visp" -[] -module ``tests_examples_example-7`` = +module ``tests_type_record-2`` = [] - let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/examples/example-7.visp" + let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/type/record-2.visp" -[] -module ``tests_examples_example-2`` = +module ``tests_type_record-3`` = [] - let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/examples/example-2.visp" + let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/type/record-3.visp" -[] -module ``tests_examples_example-13`` = +module ``tests_type_record-4`` = [] - let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/examples/example-13.visp" + let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/type/record-4.visp" -[] -module ``tests_examples_example-14`` = +module ``tests_type_record-mut-0`` = [] - let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/examples/example-14.visp" + let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/type/record-mut-0.visp" -[] -module ``tests_examples_example-6`` = +module ``tests_type_static-members-0`` = [] - let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/examples/example-6.visp" + let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/type/static-members-0.visp" -[] -module ``tests_examples_example-8`` = +module ``tests_type_type-0`` = [] - let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/examples/example-8.visp" + let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/type/type-0.visp" -[] -module ``tests_examples_example-12`` = +module ``tests_type_type-alias-0`` = [] - let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/examples/example-12.visp" + let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/type/type-alias-0.visp" -[] -module ``tests_examples_example-17`` = +module ``tests_type_union-0`` = [] - let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/examples/example-17.visp" + let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/type/union-0.visp" -[] -module ``tests_examples_example-5`` = +module ``tests_type_val-ctor-0`` = [] - let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/examples/example-5.visp" + let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/type/val-ctor-0.visp" + +module ``tests_vector_vector-0`` = + [] + let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/vector/vector-0.visp" + +module ``tests_while_while-0`` = + [] + let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/while/while-0.visp" + +module ``tests_while_while-1`` = + [] + let ``structured output`` () = TestUtils.runStructuredOutputTest "tests/while/while-1.visp" diff --git a/tests/Visp.Compiler.UnitTests/TestUtils.fs b/tests/Visp.Compiler.UnitTests/TestUtils.fs index c5fcc3e..6187d51 100644 --- a/tests/Visp.Compiler.UnitTests/TestUtils.fs +++ b/tests/Visp.Compiler.UnitTests/TestUtils.fs @@ -80,6 +80,8 @@ let runStructuredOutputTest (name: string) = let runWriteTest (name: string) = async { + Syntax.SyntaxWriteUtilThreadStatics.RunningTests <- true + parseCoreLibs () let path = getVispFilePath name diff --git a/tests/Visp.Compiler.UnitTests/TokenOutputTests.generated.fs b/tests/Visp.Compiler.UnitTests/TokenOutputTests.generated.fs index 8713845..9b4de4c 100644 --- a/tests/Visp.Compiler.UnitTests/TokenOutputTests.generated.fs +++ b/tests/Visp.Compiler.UnitTests/TokenOutputTests.generated.fs @@ -10,623 +10,511 @@ namespace TokenOutputTests open Xunit -[] -module ``tests_while_while-1`` = +module ``tests_arrays_array-0`` = [] - let ``returns tokens`` () = TestUtils.runTokenTest "tests/while/while-1.visp" + let ``returns tokens`` () = TestUtils.runTokenTest "tests/arrays/array-0.visp" -[] -module ``tests_while_while-0`` = +module ``tests_arrays_array2d-0`` = [] - let ``returns tokens`` () = TestUtils.runTokenTest "tests/while/while-0.visp" + let ``returns tokens`` () = TestUtils.runTokenTest "tests/arrays/array2d-0.visp" -[] -module ``tests_for-to_for-to-0`` = +module ``tests_arrays_array2d-1`` = [] - let ``returns tokens`` () = TestUtils.runTokenTest "tests/for-to/for-to-0.visp" + let ``returns tokens`` () = TestUtils.runTokenTest "tests/arrays/array2d-1.visp" -[] -module ``tests_dot_dot-shorthands`` = +module ``tests_atom_atom-0`` = [] - let ``returns tokens`` () = TestUtils.runTokenTest "tests/dot/dot-shorthands.visp" + let ``returns tokens`` () = TestUtils.runTokenTest "tests/atom/atom-0.visp" -[] -module ``tests_pats_record-pat-0`` = +module ``tests_attributes_attributes-0`` = [] - let ``returns tokens`` () = TestUtils.runTokenTest "tests/pats/record-pat-0.visp" + let ``returns tokens`` () = TestUtils.runTokenTest "tests/attributes/attributes-0.visp" -[] -module ``tests_pats_fn-1`` = +module ``tests_attributes_let-attributes-0`` = [] - let ``returns tokens`` () = TestUtils.runTokenTest "tests/pats/fn-1.visp" + let ``returns tokens`` () = TestUtils.runTokenTest "tests/attributes/let-attributes-0.visp" -[] -module ``tests_pats_fn-0`` = +module ``tests_builtin-macros_cond-0`` = [] - let ``returns tokens`` () = TestUtils.runTokenTest "tests/pats/fn-0.visp" + let ``returns tokens`` () = TestUtils.runTokenTest "tests/builtin-macros/cond-0.visp" -[] -module ``tests_pats_let-0`` = +module ``tests_builtin-macros_thread-first-0`` = [] - let ``returns tokens`` () = TestUtils.runTokenTest "tests/pats/let-0.visp" + let ``returns tokens`` () = TestUtils.runTokenTest "tests/builtin-macros/thread-first-0.visp" -[] -module ``tests_type_member-get-set-0`` = +module ``tests_builtin-macros_thread-first-1`` = [] - let ``returns tokens`` () = TestUtils.runTokenTest "tests/type/member-get-set-0.visp" + let ``returns tokens`` () = TestUtils.runTokenTest "tests/builtin-macros/thread-first-1.visp" -[] -module ``tests_type_type-0`` = +module ``tests_builtin-macros_thread-last-0`` = [] - let ``returns tokens`` () = TestUtils.runTokenTest "tests/type/type-0.visp" + let ``returns tokens`` () = TestUtils.runTokenTest "tests/builtin-macros/thread-last-0.visp" -[] -module ``tests_type_custom-comparison-0`` = +module ``tests_cexpr_cexpr-0`` = [] - let ``returns tokens`` () = TestUtils.runTokenTest "tests/type/custom-comparison-0.visp" + let ``returns tokens`` () = TestUtils.runTokenTest "tests/cexpr/cexpr-0.visp" -[] -module ``tests_type_byrefs-0`` = +module ``tests_cexpr_cexpr-1`` = [] - let ``returns tokens`` () = TestUtils.runTokenTest "tests/type/byrefs-0.visp" + let ``returns tokens`` () = TestUtils.runTokenTest "tests/cexpr/cexpr-1.visp" -[] -module ``tests_type_static-members-0`` = +module ``tests_chars_char-0`` = [] - let ``returns tokens`` () = TestUtils.runTokenTest "tests/type/static-members-0.visp" + let ``returns tokens`` () = TestUtils.runTokenTest "tests/chars/char-0.visp" -[] -module ``tests_type_record-2`` = +module ``tests_chars_char-1`` = [] - let ``returns tokens`` () = TestUtils.runTokenTest "tests/type/record-2.visp" + let ``returns tokens`` () = TestUtils.runTokenTest "tests/chars/char-1.visp" -[] -module ``tests_type_member-fn-0`` = +module ``tests_chars_char-2`` = [] - let ``returns tokens`` () = TestUtils.runTokenTest "tests/type/member-fn-0.visp" + let ``returns tokens`` () = TestUtils.runTokenTest "tests/chars/char-2.visp" -[] -module ``tests_type_union-0`` = +module ``tests_collections_list-0`` = [] - let ``returns tokens`` () = TestUtils.runTokenTest "tests/type/union-0.visp" + let ``returns tokens`` () = TestUtils.runTokenTest "tests/collections/list-0.visp" -[] -module ``tests_type_record-3`` = +module ``tests_dot_dot-shorthands`` = [] - let ``returns tokens`` () = TestUtils.runTokenTest "tests/type/record-3.visp" + let ``returns tokens`` () = TestUtils.runTokenTest "tests/dot/dot-shorthands.visp" -[] -module ``tests_type_type-alias-0`` = +module ``tests_examples_example-0`` = [] - let ``returns tokens`` () = TestUtils.runTokenTest "tests/type/type-alias-0.visp" + let ``returns tokens`` () = TestUtils.runTokenTest "tests/examples/example-0.visp" -[] -module ``tests_type_val-ctor-0`` = +module ``tests_examples_example-1`` = [] - let ``returns tokens`` () = TestUtils.runTokenTest "tests/type/val-ctor-0.visp" + let ``returns tokens`` () = TestUtils.runTokenTest "tests/examples/example-1.visp" -[] -module ``tests_type_object-exprs-0`` = +module ``tests_examples_example-10`` = [] - let ``returns tokens`` () = TestUtils.runTokenTest "tests/type/object-exprs-0.visp" + let ``returns tokens`` () = TestUtils.runTokenTest "tests/examples/example-10.visp" -[] -module ``tests_type_lambda-shorthand-record-0`` = +module ``tests_examples_example-11`` = [] - let ``returns tokens`` () = TestUtils.runTokenTest "tests/type/lambda-shorthand-record-0.visp" + let ``returns tokens`` () = TestUtils.runTokenTest "tests/examples/example-11.visp" -[] -module ``tests_type_record-1`` = +module ``tests_examples_example-12`` = [] - let ``returns tokens`` () = TestUtils.runTokenTest "tests/type/record-1.visp" + let ``returns tokens`` () = TestUtils.runTokenTest "tests/examples/example-12.visp" -[] -module ``tests_type_record-0`` = +module ``tests_examples_example-13`` = [] - let ``returns tokens`` () = TestUtils.runTokenTest "tests/type/record-0.visp" + let ``returns tokens`` () = TestUtils.runTokenTest "tests/examples/example-13.visp" -[] -module ``tests_type_record-4`` = +module ``tests_examples_example-14`` = [] - let ``returns tokens`` () = TestUtils.runTokenTest "tests/type/record-4.visp" + let ``returns tokens`` () = TestUtils.runTokenTest "tests/examples/example-14.visp" -[] -module ``tests_type_record-mut-0`` = +module ``tests_examples_example-15`` = [] - let ``returns tokens`` () = TestUtils.runTokenTest "tests/type/record-mut-0.visp" + let ``returns tokens`` () = TestUtils.runTokenTest "tests/examples/example-15.visp" -[] -module ``tests_functions_apply-method-args-0`` = +module ``tests_examples_example-16`` = [] - let ``returns tokens`` () = TestUtils.runTokenTest "tests/functions/apply-method-args-0.visp" + let ``returns tokens`` () = TestUtils.runTokenTest "tests/examples/example-16.visp" -[] -module ``tests_functions_cons-concat-0`` = +module ``tests_examples_example-17`` = [] - let ``returns tokens`` () = TestUtils.runTokenTest "tests/functions/cons-concat-0.visp" + let ``returns tokens`` () = TestUtils.runTokenTest "tests/examples/example-17.visp" -[] -module ``tests_hashset_hashset-0`` = +module ``tests_examples_example-2`` = [] - let ``returns tokens`` () = TestUtils.runTokenTest "tests/hashset/hashset-0.visp" + let ``returns tokens`` () = TestUtils.runTokenTest "tests/examples/example-2.visp" -[] -module ``tests_parsing_stars-in-places-0`` = +module ``tests_examples_example-3`` = [] - let ``returns tokens`` () = TestUtils.runTokenTest "tests/parsing/stars-in-places-0.visp" + let ``returns tokens`` () = TestUtils.runTokenTest "tests/examples/example-3.visp" -[] -module ``tests_parsing_strings-interpolation-0`` = +module ``tests_examples_example-4`` = [] - let ``returns tokens`` () = TestUtils.runTokenTest "tests/parsing/strings-interpolation-0.visp" + let ``returns tokens`` () = TestUtils.runTokenTest "tests/examples/example-4.visp" -[] -module ``tests_parsing_strings-1`` = +module ``tests_examples_example-5`` = [] - let ``returns tokens`` () = TestUtils.runTokenTest "tests/parsing/strings-1.visp" + let ``returns tokens`` () = TestUtils.runTokenTest "tests/examples/example-5.visp" -[] -module ``tests_parsing_keyword-strings-0`` = +module ``tests_examples_example-6`` = [] - let ``returns tokens`` () = TestUtils.runTokenTest "tests/parsing/keyword-strings-0.visp" + let ``returns tokens`` () = TestUtils.runTokenTest "tests/examples/example-6.visp" -[] -module ``tests_parsing_match-0`` = +module ``tests_examples_example-7`` = [] - let ``returns tokens`` () = TestUtils.runTokenTest "tests/parsing/match-0.visp" + let ``returns tokens`` () = TestUtils.runTokenTest "tests/examples/example-7.visp" -[] -module ``tests_parsing_strings-interpolation-3`` = +module ``tests_examples_example-8`` = [] - let ``returns tokens`` () = TestUtils.runTokenTest "tests/parsing/strings-interpolation-3.visp" + let ``returns tokens`` () = TestUtils.runTokenTest "tests/examples/example-8.visp" -[] -module ``tests_parsing_sym-with-arrow-in-macro-0`` = +module ``tests_examples_example-9`` = [] - let ``returns tokens`` () = TestUtils.runTokenTest "tests/parsing/sym-with-arrow-in-macro-0.visp" + let ``returns tokens`` () = TestUtils.runTokenTest "tests/examples/example-9.visp" -[] -module ``tests_parsing_tuple-0`` = +module ``tests_examples_variables-0`` = [] - let ``returns tokens`` () = TestUtils.runTokenTest "tests/parsing/tuple-0.visp" + let ``returns tokens`` () = TestUtils.runTokenTest "tests/examples/variables-0.visp" -[] -module ``tests_parsing_generic-method-or-variable-0`` = +module ``tests_for-in_for-in-0`` = [] - let ``returns tokens`` () = TestUtils.runTokenTest "tests/parsing/generic-method-or-variable-0.visp" + let ``returns tokens`` () = TestUtils.runTokenTest "tests/for-in/for-in-0.visp" -[] -module ``tests_parsing_generic-args-0`` = +module ``tests_for-in_for-in-1`` = [] - let ``returns tokens`` () = TestUtils.runTokenTest "tests/parsing/generic-args-0.visp" + let ``returns tokens`` () = TestUtils.runTokenTest "tests/for-in/for-in-1.visp" -[] -module ``tests_parsing_strings-0`` = +module ``tests_for-in_for-in-2`` = [] - let ``returns tokens`` () = TestUtils.runTokenTest "tests/parsing/strings-0.visp" + let ``returns tokens`` () = TestUtils.runTokenTest "tests/for-in/for-in-2.visp" -[] -module ``tests_parsing_lambda-shorthand-0`` = +module ``tests_for-in_for-in-3`` = [] - let ``returns tokens`` () = TestUtils.runTokenTest "tests/parsing/lambda-shorthand-0.visp" + let ``returns tokens`` () = TestUtils.runTokenTest "tests/for-in/for-in-3.visp" -[] -module ``tests_parsing_strings-interpolation-1`` = +module ``tests_for-in_for-in-4`` = [] - let ``returns tokens`` () = TestUtils.runTokenTest "tests/parsing/strings-interpolation-1.visp" + let ``returns tokens`` () = TestUtils.runTokenTest "tests/for-in/for-in-4.visp" -[] -module ``tests_parsing_ambiguous-tokens-0`` = +module ``tests_for-to_for-to-0`` = [] - let ``returns tokens`` () = TestUtils.runTokenTest "tests/parsing/ambiguous-tokens-0.visp" + let ``returns tokens`` () = TestUtils.runTokenTest "tests/for-to/for-to-0.visp" -[] -module ``tests_parsing_numbers-0`` = +module ``tests_functions_apply-method-args-0`` = [] - let ``returns tokens`` () = TestUtils.runTokenTest "tests/parsing/numbers-0.visp" + let ``returns tokens`` () = TestUtils.runTokenTest "tests/functions/apply-method-args-0.visp" -[] -module ``tests_parsing_props`` = +module ``tests_functions_cons-concat-0`` = [] - let ``returns tokens`` () = TestUtils.runTokenTest "tests/parsing/props.visp" + let ``returns tokens`` () = TestUtils.runTokenTest "tests/functions/cons-concat-0.visp" -[] -module ``tests_parsing_operators-0`` = +module ``tests_hashmap_hashmap-0`` = [] - let ``returns tokens`` () = TestUtils.runTokenTest "tests/parsing/operators-0.visp" + let ``returns tokens`` () = TestUtils.runTokenTest "tests/hashmap/hashmap-0.visp" -[] -module ``tests_parsing_call-tuple-args-0`` = +module ``tests_hashset_hashset-0`` = [] - let ``returns tokens`` () = TestUtils.runTokenTest "tests/parsing/call-tuple-args-0.visp" + let ``returns tokens`` () = TestUtils.runTokenTest "tests/hashset/hashset-0.visp" -[] -module ``tests_parsing_span-to-int32-0`` = +module ``tests_if_if-0`` = [] - let ``returns tokens`` () = TestUtils.runTokenTest "tests/parsing/span-to-int32-0.visp" + let ``returns tokens`` () = TestUtils.runTokenTest "tests/if/if-0.visp" -[] -module ``tests_parsing_let-values`` = +module ``tests_include_include-0`` = [] - let ``returns tokens`` () = TestUtils.runTokenTest "tests/parsing/let-values.visp" + let ``returns tokens`` () = TestUtils.runTokenTest "tests/include/include-0.visp" -[] -module ``tests_parsing_match-1`` = +module ``tests_include_include-1`` = [] - let ``returns tokens`` () = TestUtils.runTokenTest "tests/parsing/match-1.visp" + let ``returns tokens`` () = TestUtils.runTokenTest "tests/include/include-1.visp" -[] -module ``tests_parsing_seq-as-generic-0`` = +module ``tests_include_include-macros-0-macros`` = [] - let ``returns tokens`` () = TestUtils.runTokenTest "tests/parsing/seq-as-generic-0.visp" + let ``returns tokens`` () = TestUtils.runTokenTest "tests/include/include-macros-0-macros.visp" -[] -module ``tests_parsing_tupled-special-forms-0`` = +module ``tests_include_include-macros-0`` = [] - let ``returns tokens`` () = TestUtils.runTokenTest "tests/parsing/tupled-special-forms-0.visp" + let ``returns tokens`` () = TestUtils.runTokenTest "tests/include/include-macros-0.visp" -[] -module ``tests_parsing_strings-interpolation-2`` = +module ``tests_macros_and-example-0`` = [] - let ``returns tokens`` () = TestUtils.runTokenTest "tests/parsing/strings-interpolation-2.visp" + let ``returns tokens`` () = TestUtils.runTokenTest "tests/macros/and-example-0.visp" -[] -module ``tests_parsing_operators-1`` = +module ``tests_macros_bar-parens-in-macro-0`` = [] - let ``returns tokens`` () = TestUtils.runTokenTest "tests/parsing/operators-1.visp" + let ``returns tokens`` () = TestUtils.runTokenTest "tests/macros/bar-parens-in-macro-0.visp" -[] -module ``tests_arrays_array2d-0`` = +module ``tests_macros_chars-in-macros-0`` = [] - let ``returns tokens`` () = TestUtils.runTokenTest "tests/arrays/array2d-0.visp" + let ``returns tokens`` () = TestUtils.runTokenTest "tests/macros/chars-in-macros-0.visp" -[] -module ``tests_arrays_array2d-1`` = +module ``tests_macros_cond-macro-0`` = [] - let ``returns tokens`` () = TestUtils.runTokenTest "tests/arrays/array2d-1.visp" + let ``returns tokens`` () = TestUtils.runTokenTest "tests/macros/cond-macro-0.visp" -[] -module ``tests_arrays_array-0`` = +module ``tests_macros_cond-macro-1`` = [] - let ``returns tokens`` () = TestUtils.runTokenTest "tests/arrays/array-0.visp" + let ``returns tokens`` () = TestUtils.runTokenTest "tests/macros/cond-macro-1.visp" -[] -module ``tests_atom_atom-0`` = +module ``tests_macros_count-exprs-0`` = [] - let ``returns tokens`` () = TestUtils.runTokenTest "tests/atom/atom-0.visp" + let ``returns tokens`` () = TestUtils.runTokenTest "tests/macros/count-exprs-0.visp" -[] -module ``tests_vector_vector-0`` = +module ``tests_macros_dbg-0`` = [] - let ``returns tokens`` () = TestUtils.runTokenTest "tests/vector/vector-0.visp" + let ``returns tokens`` () = TestUtils.runTokenTest "tests/macros/dbg-0.visp" -[] -module ``tests_numbers_math-ops-0`` = +module ``tests_macros_dbg-example-0`` = [] - let ``returns tokens`` () = TestUtils.runTokenTest "tests/numbers/math-ops-0.visp" + let ``returns tokens`` () = TestUtils.runTokenTest "tests/macros/dbg-example-0.visp" -[] -module ``tests_numbers_int-0`` = +module ``tests_macros_macro-lambda-shorthand-0`` = [] - let ``returns tokens`` () = TestUtils.runTokenTest "tests/numbers/int-0.visp" + let ``returns tokens`` () = TestUtils.runTokenTest "tests/macros/macro-lambda-shorthand-0.visp" -[] -module ``tests_collections_list-0`` = +module ``tests_macros_my-const-0`` = [] - let ``returns tokens`` () = TestUtils.runTokenTest "tests/collections/list-0.visp" + let ``returns tokens`` () = TestUtils.runTokenTest "tests/macros/my-const-0.visp" -[] -module ``tests_chars_char-1`` = +module ``tests_macros_my-rinit-0`` = [] - let ``returns tokens`` () = TestUtils.runTokenTest "tests/chars/char-1.visp" + let ``returns tokens`` () = TestUtils.runTokenTest "tests/macros/my-rinit-0.visp" -[] -module ``tests_chars_char-0`` = +module ``tests_macros_nested-macro-expansion-0`` = [] - let ``returns tokens`` () = TestUtils.runTokenTest "tests/chars/char-0.visp" + let ``returns tokens`` () = TestUtils.runTokenTest "tests/macros/nested-macro-expansion-0.visp" -[] -module ``tests_chars_char-2`` = +module ``tests_macros_nested-macro-expansion-1`` = [] - let ``returns tokens`` () = TestUtils.runTokenTest "tests/chars/char-2.visp" + let ``returns tokens`` () = TestUtils.runTokenTest "tests/macros/nested-macro-expansion-1.visp" -[] -module ``tests_include_include-0`` = +module ``tests_macros_or-example-0`` = [] - let ``returns tokens`` () = TestUtils.runTokenTest "tests/include/include-0.visp" + let ``returns tokens`` () = TestUtils.runTokenTest "tests/macros/or-example-0.visp" -[] -module ``tests_include_include-1`` = +module ``tests_macros_stringify-0`` = [] - let ``returns tokens`` () = TestUtils.runTokenTest "tests/include/include-1.visp" + let ``returns tokens`` () = TestUtils.runTokenTest "tests/macros/stringify-0.visp" -[] -module ``tests_hashmap_hashmap-0`` = +module ``tests_macros_struct-example-1`` = [] - let ``returns tokens`` () = TestUtils.runTokenTest "tests/hashmap/hashmap-0.visp" + let ``returns tokens`` () = TestUtils.runTokenTest "tests/macros/struct-example-1.visp" -[] -module ``tests_cexpr_cexpr-0`` = +module ``tests_macros_struct-macro-0`` = [] - let ``returns tokens`` () = TestUtils.runTokenTest "tests/cexpr/cexpr-0.visp" + let ``returns tokens`` () = TestUtils.runTokenTest "tests/macros/struct-macro-0.visp" -[] -module ``tests_cexpr_cexpr-1`` = +module ``tests_macros_struct-macro-2`` = [] - let ``returns tokens`` () = TestUtils.runTokenTest "tests/cexpr/cexpr-1.visp" + let ``returns tokens`` () = TestUtils.runTokenTest "tests/macros/struct-macro-2.visp" -[] -module ``tests_for-in_for-in-0`` = +module ``tests_macros_struct-macro-3`` = [] - let ``returns tokens`` () = TestUtils.runTokenTest "tests/for-in/for-in-0.visp" + let ``returns tokens`` () = TestUtils.runTokenTest "tests/macros/struct-macro-3.visp" -[] -module ``tests_for-in_for-in-1`` = +module ``tests_macros_syntax-macro-0`` = [] - let ``returns tokens`` () = TestUtils.runTokenTest "tests/for-in/for-in-1.visp" + let ``returns tokens`` () = TestUtils.runTokenTest "tests/macros/syntax-macro-0.visp" -[] -module ``tests_for-in_for-in-2`` = +module ``tests_macros_syntax-macro-2`` = [] - let ``returns tokens`` () = TestUtils.runTokenTest "tests/for-in/for-in-2.visp" + let ``returns tokens`` () = TestUtils.runTokenTest "tests/macros/syntax-macro-2.visp" -[] -module ``tests_for-in_for-in-4`` = +module ``tests_macros_up-macro-0`` = [] - let ``returns tokens`` () = TestUtils.runTokenTest "tests/for-in/for-in-4.visp" + let ``returns tokens`` () = TestUtils.runTokenTest "tests/macros/up-macro-0.visp" -[] -module ``tests_for-in_for-in-3`` = +module ``tests_macros_when-unless-example-0`` = [] - let ``returns tokens`` () = TestUtils.runTokenTest "tests/for-in/for-in-3.visp" + let ``returns tokens`` () = TestUtils.runTokenTest "tests/macros/when-unless-example-0.visp" -[] -module ``tests_attributes_let-attributes-0`` = +module ``tests_macros_while-match-0`` = [] - let ``returns tokens`` () = TestUtils.runTokenTest "tests/attributes/let-attributes-0.visp" + let ``returns tokens`` () = TestUtils.runTokenTest "tests/macros/while-match-0.visp" -[] -module ``tests_attributes_attributes-0`` = +module ``tests_numbers_int-0`` = [] - let ``returns tokens`` () = TestUtils.runTokenTest "tests/attributes/attributes-0.visp" + let ``returns tokens`` () = TestUtils.runTokenTest "tests/numbers/int-0.visp" -[] -module ``tests_if_if-0`` = +module ``tests_numbers_math-ops-0`` = [] - let ``returns tokens`` () = TestUtils.runTokenTest "tests/if/if-0.visp" + let ``returns tokens`` () = TestUtils.runTokenTest "tests/numbers/math-ops-0.visp" -[] -module ``tests_quotation_quote-0`` = +module ``tests_parsing_ambiguous-tokens-0`` = [] - let ``returns tokens`` () = TestUtils.runTokenTest "tests/quotation/quote-0.visp" + let ``returns tokens`` () = TestUtils.runTokenTest "tests/parsing/ambiguous-tokens-0.visp" -[] -module ``tests_builtin-macros_thread-first-1`` = +module ``tests_parsing_call-tuple-args-0`` = [] - let ``returns tokens`` () = TestUtils.runTokenTest "tests/builtin-macros/thread-first-1.visp" + let ``returns tokens`` () = TestUtils.runTokenTest "tests/parsing/call-tuple-args-0.visp" -[] -module ``tests_builtin-macros_thread-first-0`` = +module ``tests_parsing_generic-args-0`` = [] - let ``returns tokens`` () = TestUtils.runTokenTest "tests/builtin-macros/thread-first-0.visp" + let ``returns tokens`` () = TestUtils.runTokenTest "tests/parsing/generic-args-0.visp" -[] -module ``tests_builtin-macros_thread-last-0`` = +module ``tests_parsing_generic-method-or-variable-0`` = [] - let ``returns tokens`` () = TestUtils.runTokenTest "tests/builtin-macros/thread-last-0.visp" + let ``returns tokens`` () = TestUtils.runTokenTest "tests/parsing/generic-method-or-variable-0.visp" -[] -module ``tests_builtin-macros_cond-0`` = +module ``tests_parsing_keyword-strings-0`` = [] - let ``returns tokens`` () = TestUtils.runTokenTest "tests/builtin-macros/cond-0.visp" + let ``returns tokens`` () = TestUtils.runTokenTest "tests/parsing/keyword-strings-0.visp" -[] -module ``tests_macros_stringify-0`` = +module ``tests_parsing_lambda-shorthand-0`` = [] - let ``returns tokens`` () = TestUtils.runTokenTest "tests/macros/stringify-0.visp" + let ``returns tokens`` () = TestUtils.runTokenTest "tests/parsing/lambda-shorthand-0.visp" -[] -module ``tests_macros_up-macro-0`` = +module ``tests_parsing_let-values`` = [] - let ``returns tokens`` () = TestUtils.runTokenTest "tests/macros/up-macro-0.visp" + let ``returns tokens`` () = TestUtils.runTokenTest "tests/parsing/let-values.visp" -[] -module ``tests_macros_nested-macro-expansion-0`` = +module ``tests_parsing_match-0`` = [] - let ``returns tokens`` () = TestUtils.runTokenTest "tests/macros/nested-macro-expansion-0.visp" + let ``returns tokens`` () = TestUtils.runTokenTest "tests/parsing/match-0.visp" -[] -module ``tests_macros_struct-example-1`` = +module ``tests_parsing_match-1`` = [] - let ``returns tokens`` () = TestUtils.runTokenTest "tests/macros/struct-example-1.visp" + let ``returns tokens`` () = TestUtils.runTokenTest "tests/parsing/match-1.visp" -[] -module ``tests_macros_bar-parens-in-macro-0`` = +module ``tests_parsing_numbers-0`` = [] - let ``returns tokens`` () = TestUtils.runTokenTest "tests/macros/bar-parens-in-macro-0.visp" + let ``returns tokens`` () = TestUtils.runTokenTest "tests/parsing/numbers-0.visp" -[] -module ``tests_macros_count-exprs-0`` = +module ``tests_parsing_operators-0`` = [] - let ``returns tokens`` () = TestUtils.runTokenTest "tests/macros/count-exprs-0.visp" + let ``returns tokens`` () = TestUtils.runTokenTest "tests/parsing/operators-0.visp" -[] -module ``tests_macros_dbg-example-0`` = +module ``tests_parsing_operators-1`` = [] - let ``returns tokens`` () = TestUtils.runTokenTest "tests/macros/dbg-example-0.visp" + let ``returns tokens`` () = TestUtils.runTokenTest "tests/parsing/operators-1.visp" -[] -module ``tests_macros_syntax-macro-2`` = +module ``tests_parsing_props`` = [] - let ``returns tokens`` () = TestUtils.runTokenTest "tests/macros/syntax-macro-2.visp" + let ``returns tokens`` () = TestUtils.runTokenTest "tests/parsing/props.visp" -[] -module ``tests_macros_syntax-macro-0`` = +module ``tests_parsing_seq-as-generic-0`` = [] - let ``returns tokens`` () = TestUtils.runTokenTest "tests/macros/syntax-macro-0.visp" + let ``returns tokens`` () = TestUtils.runTokenTest "tests/parsing/seq-as-generic-0.visp" -[] -module ``tests_macros_nested-macro-expansion-1`` = +module ``tests_parsing_span-to-int32-0`` = [] - let ``returns tokens`` () = TestUtils.runTokenTest "tests/macros/nested-macro-expansion-1.visp" + let ``returns tokens`` () = TestUtils.runTokenTest "tests/parsing/span-to-int32-0.visp" -[] -module ``tests_macros_cond-macro-1`` = +module ``tests_parsing_stars-in-places-0`` = [] - let ``returns tokens`` () = TestUtils.runTokenTest "tests/macros/cond-macro-1.visp" + let ``returns tokens`` () = TestUtils.runTokenTest "tests/parsing/stars-in-places-0.visp" -[] -module ``tests_macros_struct-macro-2`` = +module ``tests_parsing_strings-0`` = [] - let ``returns tokens`` () = TestUtils.runTokenTest "tests/macros/struct-macro-2.visp" + let ``returns tokens`` () = TestUtils.runTokenTest "tests/parsing/strings-0.visp" -[] -module ``tests_macros_chars-in-macros-0`` = +module ``tests_parsing_strings-1`` = [] - let ``returns tokens`` () = TestUtils.runTokenTest "tests/macros/chars-in-macros-0.visp" + let ``returns tokens`` () = TestUtils.runTokenTest "tests/parsing/strings-1.visp" -[] -module ``tests_macros_when-unless-example-0`` = +module ``tests_parsing_strings-interpolation-0`` = [] - let ``returns tokens`` () = TestUtils.runTokenTest "tests/macros/when-unless-example-0.visp" + let ``returns tokens`` () = TestUtils.runTokenTest "tests/parsing/strings-interpolation-0.visp" -[] -module ``tests_macros_cond-macro-0`` = +module ``tests_parsing_strings-interpolation-1`` = [] - let ``returns tokens`` () = TestUtils.runTokenTest "tests/macros/cond-macro-0.visp" + let ``returns tokens`` () = TestUtils.runTokenTest "tests/parsing/strings-interpolation-1.visp" -[] -module ``tests_macros_struct-macro-3`` = +module ``tests_parsing_strings-interpolation-2`` = [] - let ``returns tokens`` () = TestUtils.runTokenTest "tests/macros/struct-macro-3.visp" + let ``returns tokens`` () = TestUtils.runTokenTest "tests/parsing/strings-interpolation-2.visp" -[] -module ``tests_macros_my-rinit-0`` = +module ``tests_parsing_strings-interpolation-3`` = [] - let ``returns tokens`` () = TestUtils.runTokenTest "tests/macros/my-rinit-0.visp" + let ``returns tokens`` () = TestUtils.runTokenTest "tests/parsing/strings-interpolation-3.visp" -[] -module ``tests_macros_macro-lambda-shorthand-0`` = +module ``tests_parsing_sym-with-arrow-in-macro-0`` = [] - let ``returns tokens`` () = TestUtils.runTokenTest "tests/macros/macro-lambda-shorthand-0.visp" + let ``returns tokens`` () = TestUtils.runTokenTest "tests/parsing/sym-with-arrow-in-macro-0.visp" -[] -module ``tests_macros_struct-macro-0`` = +module ``tests_parsing_tuple-0`` = [] - let ``returns tokens`` () = TestUtils.runTokenTest "tests/macros/struct-macro-0.visp" + let ``returns tokens`` () = TestUtils.runTokenTest "tests/parsing/tuple-0.visp" -[] -module ``tests_macros_my-const-0`` = +module ``tests_parsing_tupled-special-forms-0`` = [] - let ``returns tokens`` () = TestUtils.runTokenTest "tests/macros/my-const-0.visp" + let ``returns tokens`` () = TestUtils.runTokenTest "tests/parsing/tupled-special-forms-0.visp" -[] -module ``tests_macros_and-example-0`` = +module ``tests_pats_fn-0`` = [] - let ``returns tokens`` () = TestUtils.runTokenTest "tests/macros/and-example-0.visp" + let ``returns tokens`` () = TestUtils.runTokenTest "tests/pats/fn-0.visp" -[] -module ``tests_macros_while-match-0`` = +module ``tests_pats_fn-1`` = [] - let ``returns tokens`` () = TestUtils.runTokenTest "tests/macros/while-match-0.visp" + let ``returns tokens`` () = TestUtils.runTokenTest "tests/pats/fn-1.visp" -[] -module ``tests_macros_or-example-0`` = +module ``tests_pats_let-0`` = [] - let ``returns tokens`` () = TestUtils.runTokenTest "tests/macros/or-example-0.visp" + let ``returns tokens`` () = TestUtils.runTokenTest "tests/pats/let-0.visp" -[] -module ``tests_examples_example-4`` = +module ``tests_pats_record-pat-0`` = [] - let ``returns tokens`` () = TestUtils.runTokenTest "tests/examples/example-4.visp" + let ``returns tokens`` () = TestUtils.runTokenTest "tests/pats/record-pat-0.visp" -[] -module ``tests_examples_example-11`` = +module ``tests_quotation_quote-0`` = [] - let ``returns tokens`` () = TestUtils.runTokenTest "tests/examples/example-11.visp" + let ``returns tokens`` () = TestUtils.runTokenTest "tests/quotation/quote-0.visp" -[] -module ``tests_examples_example-3`` = +module ``tests_type_byrefs-0`` = [] - let ``returns tokens`` () = TestUtils.runTokenTest "tests/examples/example-3.visp" + let ``returns tokens`` () = TestUtils.runTokenTest "tests/type/byrefs-0.visp" -[] -module ``tests_examples_example-9`` = +module ``tests_type_custom-comparison-0`` = [] - let ``returns tokens`` () = TestUtils.runTokenTest "tests/examples/example-9.visp" + let ``returns tokens`` () = TestUtils.runTokenTest "tests/type/custom-comparison-0.visp" -[] -module ``tests_examples_example-10`` = +module ``tests_type_lambda-shorthand-record-0`` = [] - let ``returns tokens`` () = TestUtils.runTokenTest "tests/examples/example-10.visp" + let ``returns tokens`` () = TestUtils.runTokenTest "tests/type/lambda-shorthand-record-0.visp" -[] -module ``tests_examples_example-0`` = +module ``tests_type_member-fn-0`` = [] - let ``returns tokens`` () = TestUtils.runTokenTest "tests/examples/example-0.visp" + let ``returns tokens`` () = TestUtils.runTokenTest "tests/type/member-fn-0.visp" -[] -module ``tests_examples_example-15`` = +module ``tests_type_member-get-set-0`` = [] - let ``returns tokens`` () = TestUtils.runTokenTest "tests/examples/example-15.visp" + let ``returns tokens`` () = TestUtils.runTokenTest "tests/type/member-get-set-0.visp" -[] -module ``tests_examples_example-16`` = +module ``tests_type_object-exprs-0`` = [] - let ``returns tokens`` () = TestUtils.runTokenTest "tests/examples/example-16.visp" + let ``returns tokens`` () = TestUtils.runTokenTest "tests/type/object-exprs-0.visp" -[] -module ``tests_examples_example-1`` = +module ``tests_type_record-0`` = [] - let ``returns tokens`` () = TestUtils.runTokenTest "tests/examples/example-1.visp" + let ``returns tokens`` () = TestUtils.runTokenTest "tests/type/record-0.visp" -[] -module ``tests_examples_variables-0`` = +module ``tests_type_record-1`` = [] - let ``returns tokens`` () = TestUtils.runTokenTest "tests/examples/variables-0.visp" + let ``returns tokens`` () = TestUtils.runTokenTest "tests/type/record-1.visp" -[] -module ``tests_examples_example-7`` = +module ``tests_type_record-2`` = [] - let ``returns tokens`` () = TestUtils.runTokenTest "tests/examples/example-7.visp" + let ``returns tokens`` () = TestUtils.runTokenTest "tests/type/record-2.visp" -[] -module ``tests_examples_example-2`` = +module ``tests_type_record-3`` = [] - let ``returns tokens`` () = TestUtils.runTokenTest "tests/examples/example-2.visp" + let ``returns tokens`` () = TestUtils.runTokenTest "tests/type/record-3.visp" -[] -module ``tests_examples_example-13`` = +module ``tests_type_record-4`` = [] - let ``returns tokens`` () = TestUtils.runTokenTest "tests/examples/example-13.visp" + let ``returns tokens`` () = TestUtils.runTokenTest "tests/type/record-4.visp" -[] -module ``tests_examples_example-14`` = +module ``tests_type_record-mut-0`` = [] - let ``returns tokens`` () = TestUtils.runTokenTest "tests/examples/example-14.visp" + let ``returns tokens`` () = TestUtils.runTokenTest "tests/type/record-mut-0.visp" -[] -module ``tests_examples_example-6`` = +module ``tests_type_static-members-0`` = [] - let ``returns tokens`` () = TestUtils.runTokenTest "tests/examples/example-6.visp" + let ``returns tokens`` () = TestUtils.runTokenTest "tests/type/static-members-0.visp" -[] -module ``tests_examples_example-8`` = +module ``tests_type_type-0`` = [] - let ``returns tokens`` () = TestUtils.runTokenTest "tests/examples/example-8.visp" + let ``returns tokens`` () = TestUtils.runTokenTest "tests/type/type-0.visp" -[] -module ``tests_examples_example-12`` = +module ``tests_type_type-alias-0`` = [] - let ``returns tokens`` () = TestUtils.runTokenTest "tests/examples/example-12.visp" + let ``returns tokens`` () = TestUtils.runTokenTest "tests/type/type-alias-0.visp" -[] -module ``tests_examples_example-17`` = +module ``tests_type_union-0`` = [] - let ``returns tokens`` () = TestUtils.runTokenTest "tests/examples/example-17.visp" + let ``returns tokens`` () = TestUtils.runTokenTest "tests/type/union-0.visp" -[] -module ``tests_examples_example-5`` = +module ``tests_type_val-ctor-0`` = [] - let ``returns tokens`` () = TestUtils.runTokenTest "tests/examples/example-5.visp" + let ``returns tokens`` () = TestUtils.runTokenTest "tests/type/val-ctor-0.visp" + +module ``tests_vector_vector-0`` = + [] + let ``returns tokens`` () = TestUtils.runTokenTest "tests/vector/vector-0.visp" + +module ``tests_while_while-0`` = + [] + let ``returns tokens`` () = TestUtils.runTokenTest "tests/while/while-0.visp" + +module ``tests_while_while-1`` = + [] + let ``returns tokens`` () = TestUtils.runTokenTest "tests/while/while-1.visp" diff --git a/tests/Visp.Compiler.UnitTests/Visp.Compiler.UnitTests.fsproj b/tests/Visp.Compiler.UnitTests/Visp.Compiler.UnitTests.fsproj index b5d1de0..c9fab43 100644 --- a/tests/Visp.Compiler.UnitTests/Visp.Compiler.UnitTests.fsproj +++ b/tests/Visp.Compiler.UnitTests/Visp.Compiler.UnitTests.fsproj @@ -13,19 +13,19 @@ - - + + runtime; build; native; contentfiles; analyzers; buildtransitive all - - - - + + + + runtime; build; native; contentfiles; analyzers; buildtransitive all - + runtime; build; native; contentfiles; analyzers; buildtransitive all diff --git a/tests/Visp.Compiler.UnitTests/WriterTest.fs b/tests/Visp.Compiler.UnitTests/WriterTest.fs index 5d48024..2c67946 100644 --- a/tests/Visp.Compiler.UnitTests/WriterTest.fs +++ b/tests/Visp.Compiler.UnitTests/WriterTest.fs @@ -2,12 +2,10 @@ // Distributed under the MIT License. // https://github.com/vipentti/visp-fs/blob/main/LICENSE.md -[] + module WriterTests -open System open Xunit -open FsUnit.Xunit open VerifyXunit open Visp.Compiler.Core open System.IO diff --git a/tests/Visp.Compiler.UnitTests/parsing-snapshots/tests_include_include-0.structured output.verified.txt b/tests/Visp.Compiler.UnitTests/parsing-snapshots/tests_include_include-0.structured output.verified.txt index 22debd5..c293b26 100644 --- a/tests/Visp.Compiler.UnitTests/parsing-snapshots/tests_include_include-0.structured output.verified.txt +++ b/tests/Visp.Compiler.UnitTests/parsing-snapshots/tests_include_include-0.structured output.verified.txt @@ -3,7 +3,24 @@ ([Expr (FunctionCall (Symbol (SynSymbol printfn), [Const (String ("include-0 loading...", Regular, (8,9--8,31)), (8,9--8,31))], - (8,1--8,31)), (8,0--8,32)); Include ([FilePath ("./skip-same-dir.visp", (10,9--10,31))], (10,1--10,31)); + (8,1--8,31)), (8,0--8,32)); Expr (Const (Unit, (10,0--10,32)), (10,0--10,32)); + Expr + (FunctionCall + (Symbol (SynSymbol printfn), + [Const (String ("skip-same-dir loading", Regular, (10,31--10,32)), (10,31--10,32))], (10,31--10,32)), + (10,31--10,32)); + Expr + (FunctionDef + (SynSymbol IncludedFunction, None, Args (List [], (10,31--10,32)), + [FunctionCall + (Symbol (SynSymbol printfn), + [Const (String ("Calling IncludedFunction", Regular, (10,31--10,32)), (10,31--10,32))], (10,31--10,32))], + None, (10,31--10,32)), (10,31--10,32)); + Expr + (FunctionCall + (Symbol (SynSymbol printfn), + [Const (String ("skip-same-dir loaded...", Regular, (10,31--10,32)), (10,31--10,32))], (10,31--10,32)), + (10,31--10,32)); Expr (FunctionCall (Symbol (SynSymbol printfn), [Const (String ("include-0 loaded", Regular, (12,9--12,27)), (12,9--12,27))], diff --git a/tests/Visp.Compiler.UnitTests/parsing-snapshots/tests_include_include-1.structured output.verified.txt b/tests/Visp.Compiler.UnitTests/parsing-snapshots/tests_include_include-1.structured output.verified.txt index 93f144a..2975771 100644 --- a/tests/Visp.Compiler.UnitTests/parsing-snapshots/tests_include_include-1.structured output.verified.txt +++ b/tests/Visp.Compiler.UnitTests/parsing-snapshots/tests_include_include-1.structured output.verified.txt @@ -3,8 +3,41 @@ ([Expr (FunctionCall (Symbol (SynSymbol printfn), [Const (String ("include-1 loading...", Regular, (8,9--8,31)), (8,9--8,31))], - (8,1--8,31)), (8,0--8,32)); - Include ([FilePath ("./nested/skip-nested-0.visp", (10,9--10,38))], (10,1--10,38)); + (8,1--8,31)), (8,0--8,32)); Expr (Const (Unit, (10,0--10,39)), (10,0--10,39)); + Expr + (FunctionCall + (Symbol (SynSymbol printfn), + [Const (String ("skip-nested-0 loading", Regular, (10,38--10,39)), (10,38--10,39))], (10,38--10,39)), + (10,38--10,39)); + Expr + (FunctionDef + (SynSymbol Nested0IncludedFunction, None, Args (List [], (10,38--10,39)), + [FunctionCall + (Symbol (SynSymbol printfn), + [Const (String ("Calling Nested0IncludedFunction", Regular, (10,38--10,39)), (10,38--10,39))], + (10,38--10,39))], None, (10,38--10,39)), (10,38--10,39)); + Expr + (FunctionCall + (Symbol (SynSymbol printfn), + [Const (String ("skip-nested-0 loaded...", Regular, (10,38--10,39)), (10,38--10,39))], (10,38--10,39)), + (10,38--10,39)); Expr (Const (Unit, (10,38--10,39)), (10,38--10,39)); + Expr + (FunctionCall + (Symbol (SynSymbol printfn), + [Const (String ("skip-nested-1 loading", Regular, (10,38--10,39)), (10,38--10,39))], (10,38--10,39)), + (10,38--10,39)); + Expr + (FunctionDef + (SynSymbol Nested1IncludedFunction, None, Args (List [], (10,38--10,39)), + [FunctionCall + (Symbol (SynSymbol printfn), + [Const (String ("Calling Nested1IncludedFunction", Regular, (10,38--10,39)), (10,38--10,39))], + (10,38--10,39))], None, (10,38--10,39)), (10,38--10,39)); + Expr + (FunctionCall + (Symbol (SynSymbol printfn), + [Const (String ("skip-nested-1 loaded...", Regular, (10,38--10,39)), (10,38--10,39))], (10,38--10,39)), + (10,38--10,39)); Expr (FunctionCall (Symbol (SynSymbol printfn), [Const (String ("include-1 loaded", Regular, (12,9--12,27)), (12,9--12,27))], diff --git a/tests/Visp.Compiler.UnitTests/parsing-snapshots/tests_include_include-macros-0-macros.structured output.verified.txt b/tests/Visp.Compiler.UnitTests/parsing-snapshots/tests_include_include-macros-0-macros.structured output.verified.txt new file mode 100644 index 0000000..3347f0d --- /dev/null +++ b/tests/Visp.Compiler.UnitTests/parsing-snapshots/tests_include_include-macros-0-macros.structured output.verified.txt @@ -0,0 +1,37 @@ +ParsedFile + [AnonModule + ([Expr + (FunctionCall + (Symbol (SynSymbol printfn), + [Const (String ("include-macros-0-macros.visp loading...", Regular, (8,9--8,50)), (8,9--8,50))], + (8,1--8,50)), (8,0--8,51)); + Expr + (SyntaxMacro + (SynMacro + (SynSymbol MyStruct, + [SynMacroCase + ([Discard (11,4--11,5); Symbol (SynSymbol typ, (11,6--11,9)); + List + ([Symbol (SynSymbol arg, (11,11--11,14)); Symbol (SynSymbol ctor, (11,15--11,19)); + Ellipsis (11,20--11,23)], (11,10--11,24)); Symbol (SynSymbol body, (11,25--11,29)); + Ellipsis (11,30--11,33)], + List + (Paren, + [List (HashBracket, [Symbol (SynSymbol Struct)], (12,5--12,14)); Symbol (SynSymbol type); + Symbol (SynSymbol typ); + List + (Paren, [Symbol (SynSymbol arg); Symbol (SynSymbol ctor); Ellipsis (13,25--13,28)], + (13,15--13,29)); Symbol (SynSymbol body); Ellipsis (14,11--14,14)], (12,4--15,5)), + (11,2--16,3))], (10,1--16,3))), (10,0--16,4)); + Expr + (LetOrUse + (Named (SynSymbol visp_result_todo, (18,0--18,47)), + FunctionCall + (Symbol (SynSymbol printfn), + [Const (String ("include-macros-0-macros.visp loaded", Regular, (18,9--18,46)), (18,9--18,46))], + (18,1--18,46)), None, [], (18,0--18,47)), (18,0--18,47)); + Expr + (FunctionCall + (Symbol (SynSymbol printfn), + [Const (String ("%A", Regular, (18,0--18,47)), (18,0--18,47)); Symbol (SynSymbol visp_result_todo)], + (18,0--18,47)), (18,0--18,47))], (8,0--18,47))] \ No newline at end of file diff --git a/tests/Visp.Compiler.UnitTests/parsing-snapshots/tests_include_include-macros-0.structured output.verified.txt b/tests/Visp.Compiler.UnitTests/parsing-snapshots/tests_include_include-macros-0.structured output.verified.txt new file mode 100644 index 0000000..8b4f765 --- /dev/null +++ b/tests/Visp.Compiler.UnitTests/parsing-snapshots/tests_include_include-macros-0.structured output.verified.txt @@ -0,0 +1,97 @@ +ParsedFile + [AnonModule + ([Expr + (FunctionCall + (Symbol (SynSymbol printfn), + [Const (String ("include-macros-0.visp loading...", Regular, (8,9--8,43)), (8,9--8,43))], (8,1--8,43)), + (8,0--8,44)); Expr (Const (Unit, (10,0--10,42)), (10,0--10,42)); + Expr + (FunctionCall + (Symbol (SynSymbol printfn), + [Const (String ("include-macros-0-macros.visp loading...", Regular, (10,41--10,42)), (10,41--10,42))], + (10,41--10,42)), (10,41--10,42)); + Expr + (SyntaxMacro + (SynMacro + (SynSymbol MyStruct, + [SynMacroCase + ([Discard (10,41--10,42); Symbol (SynSymbol typ, (10,41--10,42)); + List + ([Symbol (SynSymbol arg, (10,41--10,42)); Symbol (SynSymbol ctor, (10,41--10,42)); + Ellipsis (10,41--10,42)], (10,41--10,42)); Symbol (SynSymbol body, (10,41--10,42)); + Ellipsis (10,41--10,42)], + List + (Paren, + [List (HashBracket, [Symbol (SynSymbol Struct)], (10,41--10,42)); Symbol (SynSymbol type); + Symbol (SynSymbol typ); + List + (Paren, [Symbol (SynSymbol arg); Symbol (SynSymbol ctor); Ellipsis (10,41--10,42)], + (10,41--10,42)); Symbol (SynSymbol body); Ellipsis (10,41--10,42)], (10,41--10,42)), + (10,41--10,42))], (10,41--10,42))), (10,41--10,42)); + Expr + (FunctionCall + (Symbol (SynSymbol printfn), + [Const (String ("include-macros-0-macros.visp loaded", Regular, (10,41--10,42)), (10,41--10,42))], + (10,41--10,42)), (10,41--10,42)); + Expr + (FunctionCall + (Symbol (SynSymbol printfn), + [Const (String ("include-macros-0.visp loaded", Regular, (12,9--12,39)), (12,9--12,39))], (12,1--12,39)), + (12,0--12,40)); + Expr + (SyntaxMacroCall + (SynMacroCall + (SynSymbol MyStruct, + [Symbol (SynSymbol MyStruct); Symbol (SynSymbol Example); + List + (Paren, + [List + (Bracket, [Symbol (SynSymbol x); Trivia (Colon, (14,21--14,23)); Symbol (SynSymbol int)], + (14,19--14,27)); + List + (Bracket, [Symbol (SynSymbol y); Trivia (Colon, (14,30--14,32)); Symbol (SynSymbol int)], + (14,28--14,36))], (14,18--14,37)); + List (Paren, [Symbol (SynSymbol member); Symbol (SynSymbol _.X); Symbol (SynSymbol x)], (15,2--15,16)); + List (Paren, [Symbol (SynSymbol member); Symbol (SynSymbol _.Y); Symbol (SynSymbol y)], (16,2--16,16)); + List + (Paren, + [Symbol (SynSymbol member); Symbol (SynSymbol fn); Symbol (SynSymbol d.Sum); + Const (Unit, (18,19--18,21)); + List + (Paren, + [Symbol (SynSymbol +); + List (Paren, [Symbol (SynSymbol +X); Symbol (SynSymbol d)], (18,25--18,31)); + List (Paren, [Symbol (SynSymbol +Y); Symbol (SynSymbol d)], (18,32--18,38))], (18,22--18,39))], + (18,2--18,40))], (14,1--18,40))), (14,0--18,41)); + Expr + (LetOrUse + (Named (SynSymbol instance, (20,5--20,13)), + New (Ident Example, [Const (Int32 1, (20,27--20,28)); Const (Int32 2, (20,29--20,30))], (20,15--20,30)), + None, [], (20,1--20,31)), (20,0--20,32)); + Expr + (FunctionCall + (Symbol (SynSymbol printfn), + [Const (String ("Example Struct is %A", Regular, (22,9--22,31)), (22,9--22,31)); + Symbol (SynSymbol instance)], (22,1--22,40)), (22,0--22,41)); + Expr + (FunctionCall + (Symbol (SynSymbol printfn), + [Const (String ("Example IsValueType %A", Regular, (23,9--23,33)), (23,9--23,33)); + ThreadLast + ([Expr (Symbol (SynSymbol instance), (23,39--23,47)); Method (SynSymbol GetType, Tuple, (23,48--23,56)); + Property (SynSymbol IsValueType, (23,57--23,69))], (23,35--23,69))], (23,1--23,70)), (23,0--23,71)); + Expr + (FunctionCall + (Symbol (SynSymbol printfn), + [Const (String ("Example Result is %i", Regular, (24,9--24,31)), (24,9--24,31)); + DotMethod (Symbol (SynSymbol instance), SynSymbol Sum, [], Tuple, (24,33--24,46))], (24,1--24,47)), + (24,0--24,48)); + Expr + (LetOrUse + (Named (SynSymbol visp_result_todo, (26,0--26,2)), Const (Unit, (26,0--26,2)), None, [], (26,0--26,2)), + (26,0--26,2)); + Expr + (FunctionCall + (Symbol (SynSymbol printfn), + [Const (String ("%A", Regular, (26,0--26,2)), (26,0--26,2)); Symbol (SynSymbol visp_result_todo)], + (26,0--26,2)), (26,0--26,2))], (8,0--26,2))] \ No newline at end of file diff --git a/tests/Visp.Compiler.UnitTests/parsing-snapshots/tests_macros_dbg-0.structured output.verified.txt b/tests/Visp.Compiler.UnitTests/parsing-snapshots/tests_macros_dbg-0.structured output.verified.txt new file mode 100644 index 0000000..3375125 --- /dev/null +++ b/tests/Visp.Compiler.UnitTests/parsing-snapshots/tests_macros_dbg-0.structured output.verified.txt @@ -0,0 +1,12 @@ +ParsedFile + [AnonModule + ([Expr + (LetOrUse + (Named (SynSymbol visp_result_todo, (8,0--8,6)), + SyntaxMacroCall (SynMacroCall (SynSymbol dbg!, [Symbol (SynSymbol dbg!)], (8,1--8,5))), None, [], + (8,0--8,6)), (8,0--8,6)); + Expr + (FunctionCall + (Symbol (SynSymbol printfn), + [Const (String ("%A", Regular, (8,0--8,6)), (8,0--8,6)); Symbol (SynSymbol visp_result_todo)], (8,0--8,6)), + (8,0--8,6))], (8,0--8,6))] \ No newline at end of file diff --git a/tests/Visp.Compiler.UnitTests/snapshots/tests_include_include-0.can parse.verified.txt b/tests/Visp.Compiler.UnitTests/snapshots/tests_include_include-0.can parse.verified.txt index 142d9f3..0788b00 100644 --- a/tests/Visp.Compiler.UnitTests/snapshots/tests_include_include-0.can parse.verified.txt +++ b/tests/Visp.Compiler.UnitTests/snapshots/tests_include_include-0.can parse.verified.txt @@ -7,19 +7,16 @@ open Visp.Runtime.Library let state = { Todo = () } // line 8 @"include-0.visp" printfn "include-0 loading..." +() // line 10 @"include-0.visp" -let _ = "./skip-same-dir.visp" -// line 8 @"skip-same-dir.visp" printfn "skip-same-dir loading" -// line 10 @"skip-same-dir.visp" +// line 10 @"include-0.visp" let IncludedFunction () = - // line 11 @"skip-same-dir.visp" + // line 10 @"include-0.visp" printfn "Calling IncludedFunction" -// line 13 @"skip-same-dir.visp" +// line 10 @"include-0.visp" printfn "skip-same-dir loaded..." - - // line 12 @"include-0.visp" printfn "include-0 loaded" // line 14 @"include-0.visp" diff --git a/tests/Visp.Compiler.UnitTests/snapshots/tests_include_include-1.can parse.verified.txt b/tests/Visp.Compiler.UnitTests/snapshots/tests_include_include-1.can parse.verified.txt index e57504d..29ce302 100644 --- a/tests/Visp.Compiler.UnitTests/snapshots/tests_include_include-1.can parse.verified.txt +++ b/tests/Visp.Compiler.UnitTests/snapshots/tests_include_include-1.can parse.verified.txt @@ -7,32 +7,26 @@ open Visp.Runtime.Library let state = { Todo = () } // line 8 @"include-1.visp" printfn "include-1 loading..." +() // line 10 @"include-1.visp" -let _ = "./nested/skip-nested-0.visp" -// line 8 @"nested/skip-nested-0.visp" printfn "skip-nested-0 loading" -// line 10 @"nested/skip-nested-0.visp" +// line 10 @"include-1.visp" let Nested0IncludedFunction () = - // line 11 @"nested/skip-nested-0.visp" + // line 10 @"include-1.visp" printfn "Calling Nested0IncludedFunction" -// line 13 @"nested/skip-nested-0.visp" +// line 10 @"include-1.visp" printfn "skip-nested-0 loaded..." -// line 15 @"nested/skip-nested-0.visp" -let _ = "./skip-nested-1.visp" -// line 8 @"nested/skip-nested-1.visp" +() +// line 10 @"include-1.visp" printfn "skip-nested-1 loading" -// line 10 @"nested/skip-nested-1.visp" +// line 10 @"include-1.visp" let Nested1IncludedFunction () = - // line 11 @"nested/skip-nested-1.visp" + // line 10 @"include-1.visp" printfn "Calling Nested1IncludedFunction" -// line 13 @"nested/skip-nested-1.visp" +// line 10 @"include-1.visp" printfn "skip-nested-1 loaded..." - - - - // line 12 @"include-1.visp" printfn "include-1 loaded" // line 14 @"include-1.visp" diff --git a/tests/Visp.Compiler.UnitTests/snapshots/tests_include_include-macros-0-macros.can parse.verified.txt b/tests/Visp.Compiler.UnitTests/snapshots/tests_include_include-macros-0-macros.can parse.verified.txt new file mode 100644 index 0000000..2bd059d --- /dev/null +++ b/tests/Visp.Compiler.UnitTests/snapshots/tests_include_include-macros-0-macros.can parse.verified.txt @@ -0,0 +1,18 @@ +// This file is auto-generated + +#nowarn "0020" // unused results from functions + +open Visp.Runtime.Library + +let state = { Todo = () } +// line 8 @"include-macros-0-macros.visp" +printfn "include-macros-0-macros.visp loading..." +// line 10 @"include-macros-0-macros.visp" +let macro_MyStruct = "__MACRO_INIT__" +// line 18 @"include-macros-0-macros.visp" +let visp_result_todo = + // line 18 @"include-macros-0-macros.visp" + printfn "include-macros-0-macros.visp loaded" +// line 18 @"include-macros-0-macros.visp" +printfn "%A" visp_result_todo + diff --git a/tests/Visp.Compiler.UnitTests/snapshots/tests_include_include-macros-0.can parse.verified.txt b/tests/Visp.Compiler.UnitTests/snapshots/tests_include_include-macros-0.can parse.verified.txt new file mode 100644 index 0000000..f02d7db --- /dev/null +++ b/tests/Visp.Compiler.UnitTests/snapshots/tests_include_include-macros-0.can parse.verified.txt @@ -0,0 +1,52 @@ +// This file is auto-generated + +#nowarn "0020" // unused results from functions + +open Visp.Runtime.Library + +let state = { Todo = () } +// line 8 @"include-macros-0.visp" +printfn "include-macros-0.visp loading..." +() +// line 10 @"include-macros-0.visp" +printfn "include-macros-0-macros.visp loading..." +// line 10 @"include-macros-0.visp" +let macro_MyStruct = "__MACRO_INIT__" +// line 10 @"include-macros-0.visp" +printfn "include-macros-0-macros.visp loaded" +// line 12 @"include-macros-0.visp" +printfn "include-macros-0.visp loaded" +[] +// line 14 @"include-macros-0.visp" +type Example (x: int , y: int) = + // line 14 @"include-macros-0.visp" + member _.X = + x + // line 14 @"include-macros-0.visp" + member _.Y = + y + // line 14 @"include-macros-0.visp" + member d.Sum () = + // line 14 @"include-macros-0.visp" + ((d.X) + (d.Y)) +// line 20 @"include-macros-0.visp" +let instance = + // line 20 @"include-macros-0.visp" + (new Example(1, 2)) +// line 22 @"include-macros-0.visp" +printfn "Example Struct is %A" instance +// line 23 @"include-macros-0.visp" +printfn "Example IsValueType %A" (instance + |> (fun a1 -> + // line 23 @"include-macros-0.visp" + a1.GetType()) + |> (fun a1 -> + // line 23 @"include-macros-0.visp" + (a1.IsValueType))) +// line 24 @"include-macros-0.visp" +printfn "Example Result is %i" ((instance.Sum())) +// line 26 @"include-macros-0.visp" +let visp_result_todo = () +// line 26 @"include-macros-0.visp" +printfn "%A" visp_result_todo + diff --git a/tests/Visp.Compiler.UnitTests/snapshots/tests_macros_dbg-0.can parse.verified.txt b/tests/Visp.Compiler.UnitTests/snapshots/tests_macros_dbg-0.can parse.verified.txt new file mode 100644 index 0000000..a37fde5 --- /dev/null +++ b/tests/Visp.Compiler.UnitTests/snapshots/tests_macros_dbg-0.can parse.verified.txt @@ -0,0 +1,14 @@ +// This file is auto-generated + +#nowarn "0020" // unused results from functions + +open Visp.Runtime.Library + +let state = { Todo = () } +// line 8 @"dbg-0.visp" +let visp_result_todo = + // line 8 @"dbg-0.visp" + eprintfn "[%s:%i]" "dbg-0.visp" 8 +// line 8 @"dbg-0.visp" +printfn "%A" visp_result_todo + diff --git a/tests/Visp.Compiler.UnitTests/token-snapshots/tests_include_include-0.returns tokens.verified.txt b/tests/Visp.Compiler.UnitTests/token-snapshots/tests_include_include-0.returns tokens.verified.txt index ce9b7b0..865eddb 100644 --- a/tests/Visp.Compiler.UnitTests/token-snapshots/tests_include_include-0.returns tokens.verified.txt +++ b/tests/Visp.Compiler.UnitTests/token-snapshots/tests_include_include-0.returns tokens.verified.txt @@ -3,14 +3,30 @@ SYMBOL "printfn" Default 0 1 LParen STRING ("include-0 loading...", Regular, Token []) Default 0 1 LParen RPAREN Default 0 0 Default LPAREN Default 0 1 LParen -INCLUDE Default 0 1 LParen -STRING ("./skip-same-dir.visp", Regular, Token []) Default 0 1 LParen -RPAREN Default 0 0 Default -LPAREN Default 0 1 LParen -SYMBOL "printfn" Default 0 1 LParen -STRING ("include-0 loaded", Regular, Token []) Default 0 1 LParen -RPAREN Default 0 0 Default -LPAREN Default 0 1 LParen -SYMBOL "IncludedFunction" Default 0 1 LParen -RPAREN Default 0 0 Default -EOF Default 0 0 Default \ No newline at end of file +RPAREN Default 0 1 LParen +LPAREN Default 0 2 LParen +SYMBOL "printfn" Default 0 2 LParen +STRING ("skip-same-dir loading", Regular, Token []) Default 0 2 LParen +RPAREN Default 0 1 LParen +LPAREN Default 0 2 LParen +FN Default 0 2 LParen +SYMBOL "IncludedFunction" Default 0 2 LParen +LPAREN Default 0 3 LParen +RPAREN Default 0 2 LParen +LPAREN Default 0 3 LParen +SYMBOL "printfn" Default 0 3 LParen +STRING ("Calling IncludedFunction", Regular, Token []) Default 0 3 LParen +RPAREN Default 0 2 LParen +RPAREN Default 0 1 LParen +LPAREN Default 0 2 LParen +SYMBOL "printfn" Default 0 2 LParen +STRING ("skip-same-dir loaded...", Regular, Token []) Default 0 2 LParen +RPAREN Default 0 1 LParen +LPAREN Default 0 2 LParen +SYMBOL "printfn" Default 0 2 LParen +STRING ("include-0 loaded", Regular, Token []) Default 0 2 LParen +RPAREN Default 0 1 LParen +LPAREN Default 0 2 LParen +SYMBOL "IncludedFunction" Default 0 2 LParen +RPAREN Default 0 1 LParen +EOF Default 0 1 LParen \ No newline at end of file diff --git a/tests/Visp.Compiler.UnitTests/token-snapshots/tests_include_include-1.returns tokens.verified.txt b/tests/Visp.Compiler.UnitTests/token-snapshots/tests_include_include-1.returns tokens.verified.txt index 535b6b3..7554cfa 100644 --- a/tests/Visp.Compiler.UnitTests/token-snapshots/tests_include_include-1.returns tokens.verified.txt +++ b/tests/Visp.Compiler.UnitTests/token-snapshots/tests_include_include-1.returns tokens.verified.txt @@ -3,19 +3,55 @@ SYMBOL "printfn" Default 0 1 LParen STRING ("include-1 loading...", Regular, Token []) Default 0 1 LParen RPAREN Default 0 0 Default LPAREN Default 0 1 LParen -INCLUDE Default 0 1 LParen -STRING ("./nested/skip-nested-0.visp", Regular, Token []) Default 0 1 LParen -RPAREN Default 0 0 Default -LPAREN Default 0 1 LParen -SYMBOL "printfn" Default 0 1 LParen -STRING ("include-1 loaded", Regular, Token []) Default 0 1 LParen -RPAREN Default 0 0 Default -LPAREN Default 0 1 LParen -SYMBOL "Nested0IncludedFunction" Default 0 1 LParen -RPAREN Default 0 0 Default -LPAREN Default 0 1 LParen -SYMBOL "Nested1IncludedFunction" Default 0 1 LParen -RPAREN Default 0 0 Default -LPAREN Default 0 1 LParen -RPAREN Default 0 0 Default -EOF Default 0 0 Default \ No newline at end of file +RPAREN Default 0 1 LParen +LPAREN Default 0 2 LParen +SYMBOL "printfn" Default 0 2 LParen +STRING ("skip-nested-0 loading", Regular, Token []) Default 0 2 LParen +RPAREN Default 0 1 LParen +LPAREN Default 0 2 LParen +FN Default 0 2 LParen +SYMBOL "Nested0IncludedFunction" Default 0 2 LParen +LPAREN Default 0 3 LParen +RPAREN Default 0 2 LParen +LPAREN Default 0 3 LParen +SYMBOL "printfn" Default 0 3 LParen +STRING ("Calling Nested0IncludedFunction", Regular, Token []) Default 0 3 LParen +RPAREN Default 0 2 LParen +RPAREN Default 0 1 LParen +LPAREN Default 0 2 LParen +SYMBOL "printfn" Default 0 2 LParen +STRING ("skip-nested-0 loaded...", Regular, Token []) Default 0 2 LParen +RPAREN Default 0 1 LParen +LPAREN Default 0 2 LParen +RPAREN Default 0 1 LParen +LPAREN Default 0 2 LParen +SYMBOL "printfn" Default 0 2 LParen +STRING ("skip-nested-1 loading", Regular, Token []) Default 0 2 LParen +RPAREN Default 0 1 LParen +LPAREN Default 0 2 LParen +FN Default 0 2 LParen +SYMBOL "Nested1IncludedFunction" Default 0 2 LParen +LPAREN Default 0 3 LParen +RPAREN Default 0 2 LParen +LPAREN Default 0 3 LParen +SYMBOL "printfn" Default 0 3 LParen +STRING ("Calling Nested1IncludedFunction", Regular, Token []) Default 0 3 LParen +RPAREN Default 0 2 LParen +RPAREN Default 0 1 LParen +LPAREN Default 0 2 LParen +SYMBOL "printfn" Default 0 2 LParen +STRING ("skip-nested-1 loaded...", Regular, Token []) Default 0 2 LParen +RPAREN Default 0 1 LParen +LPAREN Default 0 2 LParen +SYMBOL "printfn" Default 0 2 LParen +STRING ("include-1 loaded", Regular, Token []) Default 0 2 LParen +RPAREN Default 0 1 LParen +LPAREN Default 0 2 LParen +SYMBOL "Nested0IncludedFunction" Default 0 2 LParen +RPAREN Default 0 1 LParen +LPAREN Default 0 2 LParen +SYMBOL "Nested1IncludedFunction" Default 0 2 LParen +RPAREN Default 0 1 LParen +LPAREN Default 0 2 LParen +RPAREN Default 0 1 LParen +EOF Default 0 1 LParen \ No newline at end of file diff --git a/tests/Visp.Compiler.UnitTests/token-snapshots/tests_include_include-macros-0-macros.returns tokens.verified.txt b/tests/Visp.Compiler.UnitTests/token-snapshots/tests_include_include-macros-0-macros.returns tokens.verified.txt new file mode 100644 index 0000000..c3cfe0c --- /dev/null +++ b/tests/Visp.Compiler.UnitTests/token-snapshots/tests_include_include-macros-0-macros.returns tokens.verified.txt @@ -0,0 +1,40 @@ +LPAREN Default 0 1 LParen +SYMBOL "printfn" Default 0 1 LParen +STRING ("include-macros-0-macros.visp loading...", Regular, Token []) Default 0 1 LParen +RPAREN Default 0 0 Default +LPAREN Default 0 1 LParen +SYNTAX_MACRO TokenStream SyntaxMacroStart 1 1 LParen +SYMBOL "MyStruct" TokenStream Macro 1 1 LParen +LBRACKET TokenStream Macro 2 1 LParen +LPAREN TokenStream Macro 3 2 LParen +SYMBOL "_" TokenStream Macro 3 2 LParen +SYMBOL "typ" TokenStream Macro 3 2 LParen +LPAREN TokenStream Macro 4 3 LParen +SYMBOL "arg" TokenStream Macro 4 3 LParen +SYMBOL "ctor" TokenStream Macro 4 3 LParen +SYMBOL "..." TokenStream Macro 4 3 LParen +RPAREN TokenStream Macro 3 2 LParen +SYMBOL "body" TokenStream Macro 3 2 LParen +SYMBOL "..." TokenStream Macro 3 2 LParen +RPAREN TokenStream Macro 2 1 LParen +LPAREN TokenStream Macro 3 2 LParen +HASH_BRACKET TokenStream Macro 4 2 LParen +SYMBOL "Struct" TokenStream Macro 4 2 LParen +RBRACKET TokenStream Macro 3 2 LParen +SYMBOL "type" TokenStream Macro 3 2 LParen +SYMBOL "typ" TokenStream Macro 3 2 LParen +LPAREN TokenStream Macro 4 3 LParen +SYMBOL "arg" TokenStream Macro 4 3 LParen +SYMBOL "ctor" TokenStream Macro 4 3 LParen +SYMBOL "..." TokenStream Macro 4 3 LParen +RPAREN TokenStream Macro 3 2 LParen +SYMBOL "body" TokenStream Macro 3 2 LParen +SYMBOL "..." TokenStream Macro 3 2 LParen +RPAREN TokenStream Macro 2 1 LParen +RBRACKET TokenStream Macro 1 1 LParen +RPAREN Default 0 0 Default +LPAREN Default 0 1 LParen +SYMBOL "printfn" Default 0 1 LParen +STRING ("include-macros-0-macros.visp loaded", Regular, Token []) Default 0 1 LParen +RPAREN Default 0 0 Default +EOF Default 0 0 Default \ No newline at end of file diff --git a/tests/Visp.Compiler.UnitTests/token-snapshots/tests_include_include-macros-0.returns tokens.verified.txt b/tests/Visp.Compiler.UnitTests/token-snapshots/tests_include_include-macros-0.returns tokens.verified.txt new file mode 100644 index 0000000..9543678 --- /dev/null +++ b/tests/Visp.Compiler.UnitTests/token-snapshots/tests_include_include-macros-0.returns tokens.verified.txt @@ -0,0 +1,128 @@ +LPAREN Default 0 1 LParen +SYMBOL "printfn" Default 0 1 LParen +STRING ("include-macros-0.visp loading...", Regular, Token []) Default 0 1 LParen +RPAREN Default 0 0 Default +LPAREN Default 0 1 LParen +RPAREN Default 0 1 LParen +LPAREN Default 0 2 LParen +SYMBOL "printfn" Default 0 2 LParen +STRING ("include-macros-0-macros.visp loading...", Regular, Token []) Default 0 2 LParen +RPAREN Default 0 1 LParen +LPAREN Default 0 2 LParen +SYNTAX_MACRO TokenStream SyntaxMacroStart 1 2 LParen +SYMBOL "MyStruct" TokenStream Macro 1 2 LParen +LBRACKET TokenStream Macro 2 2 LParen +LPAREN TokenStream Macro 3 3 LParen +SYMBOL "_" TokenStream Macro 3 3 LParen +SYMBOL "typ" TokenStream Macro 3 3 LParen +LPAREN TokenStream Macro 4 4 LParen +SYMBOL "arg" TokenStream Macro 4 4 LParen +SYMBOL "ctor" TokenStream Macro 4 4 LParen +SYMBOL "..." TokenStream Macro 4 4 LParen +RPAREN TokenStream Macro 3 3 LParen +SYMBOL "body" TokenStream Macro 3 3 LParen +SYMBOL "..." TokenStream Macro 3 3 LParen +RPAREN TokenStream Macro 2 2 LParen +LPAREN TokenStream Macro 3 3 LParen +HASH_BRACKET TokenStream Macro 4 3 LParen +SYMBOL "Struct" TokenStream Macro 4 3 LParen +RBRACKET TokenStream Macro 3 3 LParen +SYMBOL "type" TokenStream Macro 3 3 LParen +SYMBOL "typ" TokenStream Macro 3 3 LParen +LPAREN TokenStream Macro 4 4 LParen +SYMBOL "arg" TokenStream Macro 4 4 LParen +SYMBOL "ctor" TokenStream Macro 4 4 LParen +SYMBOL "..." TokenStream Macro 4 4 LParen +RPAREN TokenStream Macro 3 3 LParen +SYMBOL "body" TokenStream Macro 3 3 LParen +SYMBOL "..." TokenStream Macro 3 3 LParen +RPAREN TokenStream Macro 2 2 LParen +RBRACKET TokenStream Macro 1 2 LParen +RPAREN Default 0 1 LParen +LPAREN Default 0 2 LParen +SYMBOL "printfn" Default 0 2 LParen +STRING ("include-macros-0-macros.visp loaded", Regular, Token []) Default 0 2 LParen +RPAREN Default 0 1 LParen +LPAREN Default 0 2 LParen +SYMBOL "printfn" Default 0 2 LParen +STRING ("include-macros-0.visp loaded", Regular, Token []) Default 0 2 LParen +RPAREN Default 0 1 LParen +LPAREN Default 0 2 LParen +MACRO_NAME "MyStruct" TokenStream Macro 1 2 LParen +SYMBOL "Example" TokenStream Macro 1 2 LParen +LPAREN TokenStream Macro 2 3 LParen +LBRACKET TokenStream Macro 3 3 LParen +SYMBOL "x" TokenStream Macro 3 3 LParen +COLON TokenStream Macro 3 3 LParen +SYMBOL "int" TokenStream Macro 3 3 LParen +RBRACKET TokenStream Macro 2 3 LParen +LBRACKET TokenStream Macro 3 3 LParen +SYMBOL "y" TokenStream Macro 3 3 LParen +COLON TokenStream Macro 3 3 LParen +SYMBOL "int" TokenStream Macro 3 3 LParen +RBRACKET TokenStream Macro 2 3 LParen +RPAREN TokenStream Macro 1 2 LParen +LPAREN TokenStream Macro 2 3 LParen +SYMBOL "member" TokenStream Macro 2 3 LParen +SYMBOL "_.X" TokenStream Macro 2 3 LParen +SYMBOL "x" TokenStream Macro 2 3 LParen +RPAREN TokenStream Macro 1 2 LParen +LPAREN TokenStream Macro 2 3 LParen +SYMBOL "member" TokenStream Macro 2 3 LParen +SYMBOL "_.Y" TokenStream Macro 2 3 LParen +SYMBOL "y" TokenStream Macro 2 3 LParen +RPAREN TokenStream Macro 1 2 LParen +LPAREN TokenStream Macro 2 3 LParen +SYMBOL "member" TokenStream Macro 2 3 LParen +SYMBOL "fn" TokenStream Macro 2 3 LParen +SYMBOL "d.Sum" TokenStream Macro 2 3 LParen +UNIT TokenStream Macro 2 3 LParen +LPAREN TokenStream Macro 3 4 LParen +SYMBOL "+" TokenStream Macro 3 4 LParen +LPAREN TokenStream Macro 4 5 LParen +SYMBOL "+X" TokenStream Macro 4 5 LParen +SYMBOL "d" TokenStream Macro 4 5 LParen +RPAREN TokenStream Macro 3 4 LParen +LPAREN TokenStream Macro 4 5 LParen +SYMBOL "+Y" TokenStream Macro 4 5 LParen +SYMBOL "d" TokenStream Macro 4 5 LParen +RPAREN TokenStream Macro 3 4 LParen +RPAREN TokenStream Macro 2 3 LParen +RPAREN TokenStream Macro 1 2 LParen +RPAREN Default 0 1 LParen +LPAREN Default 0 2 LParen +LET Default 0 2 LParen +SYMBOL "instance" Default 0 2 LParen +LPAREN Default 0 3 LParen +NEW Default 0 3 LParen +SYMBOL "Example" Default 0 3 LParen +INT32 (1, false) Default 0 3 LParen +INT32 (2, false) Default 0 3 LParen +RPAREN Default 0 2 LParen +RPAREN Default 0 1 LParen +LPAREN Default 0 2 LParen +SYMBOL "printfn" Default 0 2 LParen +STRING ("Example Struct is %A", Regular, Token []) Default 0 2 LParen +SYMBOL "instance" Default 0 2 LParen +RPAREN Default 0 1 LParen +LPAREN Default 0 2 LParen +SYMBOL "printfn" Default 0 2 LParen +STRING ("Example IsValueType %A", Regular, Token []) Default 0 2 LParen +LPAREN Default 0 3 LParen +THREAD_LAST Default 0 3 LParen +SYMBOL "instance" Default 0 3 LParen +DOT_METHOD ".GetType" Default 0 3 LParen +PROP_PLUS "+IsValueType" Default 0 3 LParen +RPAREN Default 0 2 LParen +RPAREN Default 0 1 LParen +LPAREN Default 0 2 LParen +SYMBOL "printfn" Default 0 2 LParen +STRING ("Example Result is %i", Regular, Token []) Default 0 2 LParen +LPAREN Default 0 3 LParen +DOT_METHOD ".Sum" Default 0 3 LParen +SYMBOL "instance" Default 0 3 LParen +RPAREN Default 0 2 LParen +RPAREN Default 0 1 LParen +LPAREN Default 0 2 LParen +RPAREN Default 0 1 LParen +EOF Default 0 1 LParen \ No newline at end of file diff --git a/tests/Visp.Compiler.UnitTests/token-snapshots/tests_macros_dbg-0.returns tokens.verified.txt b/tests/Visp.Compiler.UnitTests/token-snapshots/tests_macros_dbg-0.returns tokens.verified.txt new file mode 100644 index 0000000..be78627 --- /dev/null +++ b/tests/Visp.Compiler.UnitTests/token-snapshots/tests_macros_dbg-0.returns tokens.verified.txt @@ -0,0 +1,4 @@ +LPAREN Default 0 1 LParen +MACRO_NAME "dbg!" TokenStream Macro 1 1 LParen +RPAREN Default 0 0 Default +EOF Default 0 0 Default \ No newline at end of file diff --git a/tests/Visp.ExecutionTests/ExecutionTests.generated.fs b/tests/Visp.ExecutionTests/ExecutionTests.generated.fs index e76d846..0b3fc02 100644 --- a/tests/Visp.ExecutionTests/ExecutionTests.generated.fs +++ b/tests/Visp.ExecutionTests/ExecutionTests.generated.fs @@ -10,623 +10,511 @@ namespace ExecutionTests open Xunit -[] -module ``tests_while_while-1`` = +module ``tests_arrays_array-0`` = [] - let ``can execute`` () = TestUtils.runTest "tests/while/while-1.visp" + let ``can execute`` () = TestUtils.runTest "tests/arrays/array-0.visp" -[] -module ``tests_while_while-0`` = +module ``tests_arrays_array2d-0`` = [] - let ``can execute`` () = TestUtils.runTest "tests/while/while-0.visp" + let ``can execute`` () = TestUtils.runTest "tests/arrays/array2d-0.visp" -[] -module ``tests_for-to_for-to-0`` = +module ``tests_arrays_array2d-1`` = [] - let ``can execute`` () = TestUtils.runTest "tests/for-to/for-to-0.visp" + let ``can execute`` () = TestUtils.runTest "tests/arrays/array2d-1.visp" -[] -module ``tests_dot_dot-shorthands`` = +module ``tests_atom_atom-0`` = [] - let ``can execute`` () = TestUtils.runTest "tests/dot/dot-shorthands.visp" + let ``can execute`` () = TestUtils.runTest "tests/atom/atom-0.visp" -[] -module ``tests_pats_record-pat-0`` = +module ``tests_attributes_attributes-0`` = [] - let ``can execute`` () = TestUtils.runTest "tests/pats/record-pat-0.visp" + let ``can execute`` () = TestUtils.runTest "tests/attributes/attributes-0.visp" -[] -module ``tests_pats_fn-1`` = +module ``tests_attributes_let-attributes-0`` = [] - let ``can execute`` () = TestUtils.runTest "tests/pats/fn-1.visp" + let ``can execute`` () = TestUtils.runTest "tests/attributes/let-attributes-0.visp" -[] -module ``tests_pats_fn-0`` = +module ``tests_builtin-macros_cond-0`` = [] - let ``can execute`` () = TestUtils.runTest "tests/pats/fn-0.visp" + let ``can execute`` () = TestUtils.runTest "tests/builtin-macros/cond-0.visp" -[] -module ``tests_pats_let-0`` = +module ``tests_builtin-macros_thread-first-0`` = [] - let ``can execute`` () = TestUtils.runTest "tests/pats/let-0.visp" + let ``can execute`` () = TestUtils.runTest "tests/builtin-macros/thread-first-0.visp" -[] -module ``tests_type_member-get-set-0`` = +module ``tests_builtin-macros_thread-first-1`` = [] - let ``can execute`` () = TestUtils.runTest "tests/type/member-get-set-0.visp" + let ``can execute`` () = TestUtils.runTest "tests/builtin-macros/thread-first-1.visp" -[] -module ``tests_type_type-0`` = +module ``tests_builtin-macros_thread-last-0`` = [] - let ``can execute`` () = TestUtils.runTest "tests/type/type-0.visp" + let ``can execute`` () = TestUtils.runTest "tests/builtin-macros/thread-last-0.visp" -[] -module ``tests_type_custom-comparison-0`` = +module ``tests_cexpr_cexpr-0`` = [] - let ``can execute`` () = TestUtils.runTest "tests/type/custom-comparison-0.visp" + let ``can execute`` () = TestUtils.runTest "tests/cexpr/cexpr-0.visp" -[] -module ``tests_type_byrefs-0`` = +module ``tests_cexpr_cexpr-1`` = [] - let ``can execute`` () = TestUtils.runTest "tests/type/byrefs-0.visp" + let ``can execute`` () = TestUtils.runTest "tests/cexpr/cexpr-1.visp" -[] -module ``tests_type_static-members-0`` = +module ``tests_chars_char-0`` = [] - let ``can execute`` () = TestUtils.runTest "tests/type/static-members-0.visp" + let ``can execute`` () = TestUtils.runTest "tests/chars/char-0.visp" -[] -module ``tests_type_record-2`` = +module ``tests_chars_char-1`` = [] - let ``can execute`` () = TestUtils.runTest "tests/type/record-2.visp" + let ``can execute`` () = TestUtils.runTest "tests/chars/char-1.visp" -[] -module ``tests_type_member-fn-0`` = +module ``tests_chars_char-2`` = [] - let ``can execute`` () = TestUtils.runTest "tests/type/member-fn-0.visp" + let ``can execute`` () = TestUtils.runTest "tests/chars/char-2.visp" -[] -module ``tests_type_union-0`` = +module ``tests_collections_list-0`` = [] - let ``can execute`` () = TestUtils.runTest "tests/type/union-0.visp" + let ``can execute`` () = TestUtils.runTest "tests/collections/list-0.visp" -[] -module ``tests_type_record-3`` = +module ``tests_dot_dot-shorthands`` = [] - let ``can execute`` () = TestUtils.runTest "tests/type/record-3.visp" + let ``can execute`` () = TestUtils.runTest "tests/dot/dot-shorthands.visp" -[] -module ``tests_type_type-alias-0`` = +module ``tests_examples_example-0`` = [] - let ``can execute`` () = TestUtils.runTest "tests/type/type-alias-0.visp" + let ``can execute`` () = TestUtils.runTest "tests/examples/example-0.visp" -[] -module ``tests_type_val-ctor-0`` = +module ``tests_examples_example-1`` = [] - let ``can execute`` () = TestUtils.runTest "tests/type/val-ctor-0.visp" + let ``can execute`` () = TestUtils.runTest "tests/examples/example-1.visp" -[] -module ``tests_type_object-exprs-0`` = +module ``tests_examples_example-10`` = [] - let ``can execute`` () = TestUtils.runTest "tests/type/object-exprs-0.visp" + let ``can execute`` () = TestUtils.runTest "tests/examples/example-10.visp" -[] -module ``tests_type_lambda-shorthand-record-0`` = +module ``tests_examples_example-11`` = [] - let ``can execute`` () = TestUtils.runTest "tests/type/lambda-shorthand-record-0.visp" + let ``can execute`` () = TestUtils.runTest "tests/examples/example-11.visp" -[] -module ``tests_type_record-1`` = +module ``tests_examples_example-12`` = [] - let ``can execute`` () = TestUtils.runTest "tests/type/record-1.visp" + let ``can execute`` () = TestUtils.runTest "tests/examples/example-12.visp" -[] -module ``tests_type_record-0`` = +module ``tests_examples_example-13`` = [] - let ``can execute`` () = TestUtils.runTest "tests/type/record-0.visp" + let ``can execute`` () = TestUtils.runTest "tests/examples/example-13.visp" -[] -module ``tests_type_record-4`` = +module ``tests_examples_example-14`` = [] - let ``can execute`` () = TestUtils.runTest "tests/type/record-4.visp" + let ``can execute`` () = TestUtils.runTest "tests/examples/example-14.visp" -[] -module ``tests_type_record-mut-0`` = +module ``tests_examples_example-15`` = [] - let ``can execute`` () = TestUtils.runTest "tests/type/record-mut-0.visp" + let ``can execute`` () = TestUtils.runTest "tests/examples/example-15.visp" -[] -module ``tests_functions_apply-method-args-0`` = +module ``tests_examples_example-16`` = [] - let ``can execute`` () = TestUtils.runTest "tests/functions/apply-method-args-0.visp" + let ``can execute`` () = TestUtils.runTest "tests/examples/example-16.visp" -[] -module ``tests_functions_cons-concat-0`` = +module ``tests_examples_example-17`` = [] - let ``can execute`` () = TestUtils.runTest "tests/functions/cons-concat-0.visp" + let ``can execute`` () = TestUtils.runTest "tests/examples/example-17.visp" -[] -module ``tests_hashset_hashset-0`` = +module ``tests_examples_example-2`` = [] - let ``can execute`` () = TestUtils.runTest "tests/hashset/hashset-0.visp" + let ``can execute`` () = TestUtils.runTest "tests/examples/example-2.visp" -[] -module ``tests_parsing_stars-in-places-0`` = +module ``tests_examples_example-3`` = [] - let ``can execute`` () = TestUtils.runTest "tests/parsing/stars-in-places-0.visp" + let ``can execute`` () = TestUtils.runTest "tests/examples/example-3.visp" -[] -module ``tests_parsing_strings-interpolation-0`` = +module ``tests_examples_example-4`` = [] - let ``can execute`` () = TestUtils.runTest "tests/parsing/strings-interpolation-0.visp" + let ``can execute`` () = TestUtils.runTest "tests/examples/example-4.visp" -[] -module ``tests_parsing_strings-1`` = +module ``tests_examples_example-5`` = [] - let ``can execute`` () = TestUtils.runTest "tests/parsing/strings-1.visp" + let ``can execute`` () = TestUtils.runTest "tests/examples/example-5.visp" -[] -module ``tests_parsing_keyword-strings-0`` = +module ``tests_examples_example-6`` = [] - let ``can execute`` () = TestUtils.runTest "tests/parsing/keyword-strings-0.visp" + let ``can execute`` () = TestUtils.runTest "tests/examples/example-6.visp" -[] -module ``tests_parsing_match-0`` = +module ``tests_examples_example-7`` = [] - let ``can execute`` () = TestUtils.runTest "tests/parsing/match-0.visp" + let ``can execute`` () = TestUtils.runTest "tests/examples/example-7.visp" -[] -module ``tests_parsing_strings-interpolation-3`` = +module ``tests_examples_example-8`` = [] - let ``can execute`` () = TestUtils.runTest "tests/parsing/strings-interpolation-3.visp" + let ``can execute`` () = TestUtils.runTest "tests/examples/example-8.visp" -[] -module ``tests_parsing_sym-with-arrow-in-macro-0`` = +module ``tests_examples_example-9`` = [] - let ``can execute`` () = TestUtils.runTest "tests/parsing/sym-with-arrow-in-macro-0.visp" + let ``can execute`` () = TestUtils.runTest "tests/examples/example-9.visp" -[] -module ``tests_parsing_tuple-0`` = +module ``tests_examples_variables-0`` = [] - let ``can execute`` () = TestUtils.runTest "tests/parsing/tuple-0.visp" + let ``can execute`` () = TestUtils.runTest "tests/examples/variables-0.visp" -[] -module ``tests_parsing_generic-method-or-variable-0`` = +module ``tests_for-in_for-in-0`` = [] - let ``can execute`` () = TestUtils.runTest "tests/parsing/generic-method-or-variable-0.visp" + let ``can execute`` () = TestUtils.runTest "tests/for-in/for-in-0.visp" -[] -module ``tests_parsing_generic-args-0`` = +module ``tests_for-in_for-in-1`` = [] - let ``can execute`` () = TestUtils.runTest "tests/parsing/generic-args-0.visp" + let ``can execute`` () = TestUtils.runTest "tests/for-in/for-in-1.visp" -[] -module ``tests_parsing_strings-0`` = +module ``tests_for-in_for-in-2`` = [] - let ``can execute`` () = TestUtils.runTest "tests/parsing/strings-0.visp" + let ``can execute`` () = TestUtils.runTest "tests/for-in/for-in-2.visp" -[] -module ``tests_parsing_lambda-shorthand-0`` = +module ``tests_for-in_for-in-3`` = [] - let ``can execute`` () = TestUtils.runTest "tests/parsing/lambda-shorthand-0.visp" + let ``can execute`` () = TestUtils.runTest "tests/for-in/for-in-3.visp" -[] -module ``tests_parsing_strings-interpolation-1`` = +module ``tests_for-in_for-in-4`` = [] - let ``can execute`` () = TestUtils.runTest "tests/parsing/strings-interpolation-1.visp" + let ``can execute`` () = TestUtils.runTest "tests/for-in/for-in-4.visp" -[] -module ``tests_parsing_ambiguous-tokens-0`` = +module ``tests_for-to_for-to-0`` = [] - let ``can execute`` () = TestUtils.runTest "tests/parsing/ambiguous-tokens-0.visp" + let ``can execute`` () = TestUtils.runTest "tests/for-to/for-to-0.visp" -[] -module ``tests_parsing_numbers-0`` = +module ``tests_functions_apply-method-args-0`` = [] - let ``can execute`` () = TestUtils.runTest "tests/parsing/numbers-0.visp" + let ``can execute`` () = TestUtils.runTest "tests/functions/apply-method-args-0.visp" -[] -module ``tests_parsing_props`` = +module ``tests_functions_cons-concat-0`` = [] - let ``can execute`` () = TestUtils.runTest "tests/parsing/props.visp" + let ``can execute`` () = TestUtils.runTest "tests/functions/cons-concat-0.visp" -[] -module ``tests_parsing_operators-0`` = +module ``tests_hashmap_hashmap-0`` = [] - let ``can execute`` () = TestUtils.runTest "tests/parsing/operators-0.visp" + let ``can execute`` () = TestUtils.runTest "tests/hashmap/hashmap-0.visp" -[] -module ``tests_parsing_call-tuple-args-0`` = +module ``tests_hashset_hashset-0`` = [] - let ``can execute`` () = TestUtils.runTest "tests/parsing/call-tuple-args-0.visp" + let ``can execute`` () = TestUtils.runTest "tests/hashset/hashset-0.visp" -[] -module ``tests_parsing_span-to-int32-0`` = +module ``tests_if_if-0`` = [] - let ``can execute`` () = TestUtils.runTest "tests/parsing/span-to-int32-0.visp" + let ``can execute`` () = TestUtils.runTest "tests/if/if-0.visp" -[] -module ``tests_parsing_let-values`` = +module ``tests_include_include-0`` = [] - let ``can execute`` () = TestUtils.runTest "tests/parsing/let-values.visp" + let ``can execute`` () = TestUtils.runTest "tests/include/include-0.visp" -[] -module ``tests_parsing_match-1`` = +module ``tests_include_include-1`` = [] - let ``can execute`` () = TestUtils.runTest "tests/parsing/match-1.visp" + let ``can execute`` () = TestUtils.runTest "tests/include/include-1.visp" -[] -module ``tests_parsing_seq-as-generic-0`` = +module ``tests_include_include-macros-0-macros`` = [] - let ``can execute`` () = TestUtils.runTest "tests/parsing/seq-as-generic-0.visp" + let ``can execute`` () = TestUtils.runTest "tests/include/include-macros-0-macros.visp" -[] -module ``tests_parsing_tupled-special-forms-0`` = +module ``tests_include_include-macros-0`` = [] - let ``can execute`` () = TestUtils.runTest "tests/parsing/tupled-special-forms-0.visp" + let ``can execute`` () = TestUtils.runTest "tests/include/include-macros-0.visp" -[] -module ``tests_parsing_strings-interpolation-2`` = +module ``tests_macros_and-example-0`` = [] - let ``can execute`` () = TestUtils.runTest "tests/parsing/strings-interpolation-2.visp" + let ``can execute`` () = TestUtils.runTest "tests/macros/and-example-0.visp" -[] -module ``tests_parsing_operators-1`` = +module ``tests_macros_bar-parens-in-macro-0`` = [] - let ``can execute`` () = TestUtils.runTest "tests/parsing/operators-1.visp" + let ``can execute`` () = TestUtils.runTest "tests/macros/bar-parens-in-macro-0.visp" -[] -module ``tests_arrays_array2d-0`` = +module ``tests_macros_chars-in-macros-0`` = [] - let ``can execute`` () = TestUtils.runTest "tests/arrays/array2d-0.visp" + let ``can execute`` () = TestUtils.runTest "tests/macros/chars-in-macros-0.visp" -[] -module ``tests_arrays_array2d-1`` = +module ``tests_macros_cond-macro-0`` = [] - let ``can execute`` () = TestUtils.runTest "tests/arrays/array2d-1.visp" + let ``can execute`` () = TestUtils.runTest "tests/macros/cond-macro-0.visp" -[] -module ``tests_arrays_array-0`` = +module ``tests_macros_cond-macro-1`` = [] - let ``can execute`` () = TestUtils.runTest "tests/arrays/array-0.visp" + let ``can execute`` () = TestUtils.runTest "tests/macros/cond-macro-1.visp" -[] -module ``tests_atom_atom-0`` = +module ``tests_macros_count-exprs-0`` = [] - let ``can execute`` () = TestUtils.runTest "tests/atom/atom-0.visp" + let ``can execute`` () = TestUtils.runTest "tests/macros/count-exprs-0.visp" -[] -module ``tests_vector_vector-0`` = +module ``tests_macros_dbg-0`` = [] - let ``can execute`` () = TestUtils.runTest "tests/vector/vector-0.visp" + let ``can execute`` () = TestUtils.runTest "tests/macros/dbg-0.visp" -[] -module ``tests_numbers_math-ops-0`` = +module ``tests_macros_dbg-example-0`` = [] - let ``can execute`` () = TestUtils.runTest "tests/numbers/math-ops-0.visp" + let ``can execute`` () = TestUtils.runTest "tests/macros/dbg-example-0.visp" -[] -module ``tests_numbers_int-0`` = +module ``tests_macros_macro-lambda-shorthand-0`` = [] - let ``can execute`` () = TestUtils.runTest "tests/numbers/int-0.visp" + let ``can execute`` () = TestUtils.runTest "tests/macros/macro-lambda-shorthand-0.visp" -[] -module ``tests_collections_list-0`` = +module ``tests_macros_my-const-0`` = [] - let ``can execute`` () = TestUtils.runTest "tests/collections/list-0.visp" + let ``can execute`` () = TestUtils.runTest "tests/macros/my-const-0.visp" -[] -module ``tests_chars_char-1`` = +module ``tests_macros_my-rinit-0`` = [] - let ``can execute`` () = TestUtils.runTest "tests/chars/char-1.visp" + let ``can execute`` () = TestUtils.runTest "tests/macros/my-rinit-0.visp" -[] -module ``tests_chars_char-0`` = +module ``tests_macros_nested-macro-expansion-0`` = [] - let ``can execute`` () = TestUtils.runTest "tests/chars/char-0.visp" + let ``can execute`` () = TestUtils.runTest "tests/macros/nested-macro-expansion-0.visp" -[] -module ``tests_chars_char-2`` = +module ``tests_macros_nested-macro-expansion-1`` = [] - let ``can execute`` () = TestUtils.runTest "tests/chars/char-2.visp" + let ``can execute`` () = TestUtils.runTest "tests/macros/nested-macro-expansion-1.visp" -[] -module ``tests_include_include-0`` = +module ``tests_macros_or-example-0`` = [] - let ``can execute`` () = TestUtils.runTest "tests/include/include-0.visp" + let ``can execute`` () = TestUtils.runTest "tests/macros/or-example-0.visp" -[] -module ``tests_include_include-1`` = +module ``tests_macros_stringify-0`` = [] - let ``can execute`` () = TestUtils.runTest "tests/include/include-1.visp" + let ``can execute`` () = TestUtils.runTest "tests/macros/stringify-0.visp" -[] -module ``tests_hashmap_hashmap-0`` = +module ``tests_macros_struct-example-1`` = [] - let ``can execute`` () = TestUtils.runTest "tests/hashmap/hashmap-0.visp" + let ``can execute`` () = TestUtils.runTest "tests/macros/struct-example-1.visp" -[] -module ``tests_cexpr_cexpr-0`` = +module ``tests_macros_struct-macro-0`` = [] - let ``can execute`` () = TestUtils.runTest "tests/cexpr/cexpr-0.visp" + let ``can execute`` () = TestUtils.runTest "tests/macros/struct-macro-0.visp" -[] -module ``tests_cexpr_cexpr-1`` = +module ``tests_macros_struct-macro-2`` = [] - let ``can execute`` () = TestUtils.runTest "tests/cexpr/cexpr-1.visp" + let ``can execute`` () = TestUtils.runTest "tests/macros/struct-macro-2.visp" -[] -module ``tests_for-in_for-in-0`` = +module ``tests_macros_struct-macro-3`` = [] - let ``can execute`` () = TestUtils.runTest "tests/for-in/for-in-0.visp" + let ``can execute`` () = TestUtils.runTest "tests/macros/struct-macro-3.visp" -[] -module ``tests_for-in_for-in-1`` = +module ``tests_macros_syntax-macro-0`` = [] - let ``can execute`` () = TestUtils.runTest "tests/for-in/for-in-1.visp" + let ``can execute`` () = TestUtils.runTest "tests/macros/syntax-macro-0.visp" -[] -module ``tests_for-in_for-in-2`` = +module ``tests_macros_syntax-macro-2`` = [] - let ``can execute`` () = TestUtils.runTest "tests/for-in/for-in-2.visp" + let ``can execute`` () = TestUtils.runTest "tests/macros/syntax-macro-2.visp" -[] -module ``tests_for-in_for-in-4`` = +module ``tests_macros_up-macro-0`` = [] - let ``can execute`` () = TestUtils.runTest "tests/for-in/for-in-4.visp" + let ``can execute`` () = TestUtils.runTest "tests/macros/up-macro-0.visp" -[] -module ``tests_for-in_for-in-3`` = +module ``tests_macros_when-unless-example-0`` = [] - let ``can execute`` () = TestUtils.runTest "tests/for-in/for-in-3.visp" + let ``can execute`` () = TestUtils.runTest "tests/macros/when-unless-example-0.visp" -[] -module ``tests_attributes_let-attributes-0`` = +module ``tests_macros_while-match-0`` = [] - let ``can execute`` () = TestUtils.runTest "tests/attributes/let-attributes-0.visp" + let ``can execute`` () = TestUtils.runTest "tests/macros/while-match-0.visp" -[] -module ``tests_attributes_attributes-0`` = +module ``tests_numbers_int-0`` = [] - let ``can execute`` () = TestUtils.runTest "tests/attributes/attributes-0.visp" + let ``can execute`` () = TestUtils.runTest "tests/numbers/int-0.visp" -[] -module ``tests_if_if-0`` = +module ``tests_numbers_math-ops-0`` = [] - let ``can execute`` () = TestUtils.runTest "tests/if/if-0.visp" + let ``can execute`` () = TestUtils.runTest "tests/numbers/math-ops-0.visp" -[] -module ``tests_quotation_quote-0`` = +module ``tests_parsing_ambiguous-tokens-0`` = [] - let ``can execute`` () = TestUtils.runTest "tests/quotation/quote-0.visp" + let ``can execute`` () = TestUtils.runTest "tests/parsing/ambiguous-tokens-0.visp" -[] -module ``tests_builtin-macros_thread-first-1`` = +module ``tests_parsing_call-tuple-args-0`` = [] - let ``can execute`` () = TestUtils.runTest "tests/builtin-macros/thread-first-1.visp" + let ``can execute`` () = TestUtils.runTest "tests/parsing/call-tuple-args-0.visp" -[] -module ``tests_builtin-macros_thread-first-0`` = +module ``tests_parsing_generic-args-0`` = [] - let ``can execute`` () = TestUtils.runTest "tests/builtin-macros/thread-first-0.visp" + let ``can execute`` () = TestUtils.runTest "tests/parsing/generic-args-0.visp" -[] -module ``tests_builtin-macros_thread-last-0`` = +module ``tests_parsing_generic-method-or-variable-0`` = [] - let ``can execute`` () = TestUtils.runTest "tests/builtin-macros/thread-last-0.visp" + let ``can execute`` () = TestUtils.runTest "tests/parsing/generic-method-or-variable-0.visp" -[] -module ``tests_builtin-macros_cond-0`` = +module ``tests_parsing_keyword-strings-0`` = [] - let ``can execute`` () = TestUtils.runTest "tests/builtin-macros/cond-0.visp" + let ``can execute`` () = TestUtils.runTest "tests/parsing/keyword-strings-0.visp" -[] -module ``tests_macros_stringify-0`` = +module ``tests_parsing_lambda-shorthand-0`` = [] - let ``can execute`` () = TestUtils.runTest "tests/macros/stringify-0.visp" + let ``can execute`` () = TestUtils.runTest "tests/parsing/lambda-shorthand-0.visp" -[] -module ``tests_macros_up-macro-0`` = +module ``tests_parsing_let-values`` = [] - let ``can execute`` () = TestUtils.runTest "tests/macros/up-macro-0.visp" + let ``can execute`` () = TestUtils.runTest "tests/parsing/let-values.visp" -[] -module ``tests_macros_nested-macro-expansion-0`` = +module ``tests_parsing_match-0`` = [] - let ``can execute`` () = TestUtils.runTest "tests/macros/nested-macro-expansion-0.visp" + let ``can execute`` () = TestUtils.runTest "tests/parsing/match-0.visp" -[] -module ``tests_macros_struct-example-1`` = +module ``tests_parsing_match-1`` = [] - let ``can execute`` () = TestUtils.runTest "tests/macros/struct-example-1.visp" + let ``can execute`` () = TestUtils.runTest "tests/parsing/match-1.visp" -[] -module ``tests_macros_bar-parens-in-macro-0`` = +module ``tests_parsing_numbers-0`` = [] - let ``can execute`` () = TestUtils.runTest "tests/macros/bar-parens-in-macro-0.visp" + let ``can execute`` () = TestUtils.runTest "tests/parsing/numbers-0.visp" -[] -module ``tests_macros_count-exprs-0`` = +module ``tests_parsing_operators-0`` = [] - let ``can execute`` () = TestUtils.runTest "tests/macros/count-exprs-0.visp" + let ``can execute`` () = TestUtils.runTest "tests/parsing/operators-0.visp" -[] -module ``tests_macros_dbg-example-0`` = +module ``tests_parsing_operators-1`` = [] - let ``can execute`` () = TestUtils.runTest "tests/macros/dbg-example-0.visp" + let ``can execute`` () = TestUtils.runTest "tests/parsing/operators-1.visp" -[] -module ``tests_macros_syntax-macro-2`` = +module ``tests_parsing_props`` = [] - let ``can execute`` () = TestUtils.runTest "tests/macros/syntax-macro-2.visp" + let ``can execute`` () = TestUtils.runTest "tests/parsing/props.visp" -[] -module ``tests_macros_syntax-macro-0`` = +module ``tests_parsing_seq-as-generic-0`` = [] - let ``can execute`` () = TestUtils.runTest "tests/macros/syntax-macro-0.visp" + let ``can execute`` () = TestUtils.runTest "tests/parsing/seq-as-generic-0.visp" -[] -module ``tests_macros_nested-macro-expansion-1`` = +module ``tests_parsing_span-to-int32-0`` = [] - let ``can execute`` () = TestUtils.runTest "tests/macros/nested-macro-expansion-1.visp" + let ``can execute`` () = TestUtils.runTest "tests/parsing/span-to-int32-0.visp" -[] -module ``tests_macros_cond-macro-1`` = +module ``tests_parsing_stars-in-places-0`` = [] - let ``can execute`` () = TestUtils.runTest "tests/macros/cond-macro-1.visp" + let ``can execute`` () = TestUtils.runTest "tests/parsing/stars-in-places-0.visp" -[] -module ``tests_macros_struct-macro-2`` = +module ``tests_parsing_strings-0`` = [] - let ``can execute`` () = TestUtils.runTest "tests/macros/struct-macro-2.visp" + let ``can execute`` () = TestUtils.runTest "tests/parsing/strings-0.visp" -[] -module ``tests_macros_chars-in-macros-0`` = +module ``tests_parsing_strings-1`` = [] - let ``can execute`` () = TestUtils.runTest "tests/macros/chars-in-macros-0.visp" + let ``can execute`` () = TestUtils.runTest "tests/parsing/strings-1.visp" -[] -module ``tests_macros_when-unless-example-0`` = +module ``tests_parsing_strings-interpolation-0`` = [] - let ``can execute`` () = TestUtils.runTest "tests/macros/when-unless-example-0.visp" + let ``can execute`` () = TestUtils.runTest "tests/parsing/strings-interpolation-0.visp" -[] -module ``tests_macros_cond-macro-0`` = +module ``tests_parsing_strings-interpolation-1`` = [] - let ``can execute`` () = TestUtils.runTest "tests/macros/cond-macro-0.visp" + let ``can execute`` () = TestUtils.runTest "tests/parsing/strings-interpolation-1.visp" -[] -module ``tests_macros_struct-macro-3`` = +module ``tests_parsing_strings-interpolation-2`` = [] - let ``can execute`` () = TestUtils.runTest "tests/macros/struct-macro-3.visp" + let ``can execute`` () = TestUtils.runTest "tests/parsing/strings-interpolation-2.visp" -[] -module ``tests_macros_my-rinit-0`` = +module ``tests_parsing_strings-interpolation-3`` = [] - let ``can execute`` () = TestUtils.runTest "tests/macros/my-rinit-0.visp" + let ``can execute`` () = TestUtils.runTest "tests/parsing/strings-interpolation-3.visp" -[] -module ``tests_macros_macro-lambda-shorthand-0`` = +module ``tests_parsing_sym-with-arrow-in-macro-0`` = [] - let ``can execute`` () = TestUtils.runTest "tests/macros/macro-lambda-shorthand-0.visp" + let ``can execute`` () = TestUtils.runTest "tests/parsing/sym-with-arrow-in-macro-0.visp" -[] -module ``tests_macros_struct-macro-0`` = +module ``tests_parsing_tuple-0`` = [] - let ``can execute`` () = TestUtils.runTest "tests/macros/struct-macro-0.visp" + let ``can execute`` () = TestUtils.runTest "tests/parsing/tuple-0.visp" -[] -module ``tests_macros_my-const-0`` = +module ``tests_parsing_tupled-special-forms-0`` = [] - let ``can execute`` () = TestUtils.runTest "tests/macros/my-const-0.visp" + let ``can execute`` () = TestUtils.runTest "tests/parsing/tupled-special-forms-0.visp" -[] -module ``tests_macros_and-example-0`` = +module ``tests_pats_fn-0`` = [] - let ``can execute`` () = TestUtils.runTest "tests/macros/and-example-0.visp" + let ``can execute`` () = TestUtils.runTest "tests/pats/fn-0.visp" -[] -module ``tests_macros_while-match-0`` = +module ``tests_pats_fn-1`` = [] - let ``can execute`` () = TestUtils.runTest "tests/macros/while-match-0.visp" + let ``can execute`` () = TestUtils.runTest "tests/pats/fn-1.visp" -[] -module ``tests_macros_or-example-0`` = +module ``tests_pats_let-0`` = [] - let ``can execute`` () = TestUtils.runTest "tests/macros/or-example-0.visp" + let ``can execute`` () = TestUtils.runTest "tests/pats/let-0.visp" -[] -module ``tests_examples_example-4`` = +module ``tests_pats_record-pat-0`` = [] - let ``can execute`` () = TestUtils.runTest "tests/examples/example-4.visp" + let ``can execute`` () = TestUtils.runTest "tests/pats/record-pat-0.visp" -[] -module ``tests_examples_example-11`` = +module ``tests_quotation_quote-0`` = [] - let ``can execute`` () = TestUtils.runTest "tests/examples/example-11.visp" + let ``can execute`` () = TestUtils.runTest "tests/quotation/quote-0.visp" -[] -module ``tests_examples_example-3`` = +module ``tests_type_byrefs-0`` = [] - let ``can execute`` () = TestUtils.runTest "tests/examples/example-3.visp" + let ``can execute`` () = TestUtils.runTest "tests/type/byrefs-0.visp" -[] -module ``tests_examples_example-9`` = +module ``tests_type_custom-comparison-0`` = [] - let ``can execute`` () = TestUtils.runTest "tests/examples/example-9.visp" + let ``can execute`` () = TestUtils.runTest "tests/type/custom-comparison-0.visp" -[] -module ``tests_examples_example-10`` = +module ``tests_type_lambda-shorthand-record-0`` = [] - let ``can execute`` () = TestUtils.runTest "tests/examples/example-10.visp" + let ``can execute`` () = TestUtils.runTest "tests/type/lambda-shorthand-record-0.visp" -[] -module ``tests_examples_example-0`` = +module ``tests_type_member-fn-0`` = [] - let ``can execute`` () = TestUtils.runTest "tests/examples/example-0.visp" + let ``can execute`` () = TestUtils.runTest "tests/type/member-fn-0.visp" -[] -module ``tests_examples_example-15`` = +module ``tests_type_member-get-set-0`` = [] - let ``can execute`` () = TestUtils.runTest "tests/examples/example-15.visp" + let ``can execute`` () = TestUtils.runTest "tests/type/member-get-set-0.visp" -[] -module ``tests_examples_example-16`` = +module ``tests_type_object-exprs-0`` = [] - let ``can execute`` () = TestUtils.runTest "tests/examples/example-16.visp" + let ``can execute`` () = TestUtils.runTest "tests/type/object-exprs-0.visp" -[] -module ``tests_examples_example-1`` = +module ``tests_type_record-0`` = [] - let ``can execute`` () = TestUtils.runTest "tests/examples/example-1.visp" + let ``can execute`` () = TestUtils.runTest "tests/type/record-0.visp" -[] -module ``tests_examples_variables-0`` = +module ``tests_type_record-1`` = [] - let ``can execute`` () = TestUtils.runTest "tests/examples/variables-0.visp" + let ``can execute`` () = TestUtils.runTest "tests/type/record-1.visp" -[] -module ``tests_examples_example-7`` = +module ``tests_type_record-2`` = [] - let ``can execute`` () = TestUtils.runTest "tests/examples/example-7.visp" + let ``can execute`` () = TestUtils.runTest "tests/type/record-2.visp" -[] -module ``tests_examples_example-2`` = +module ``tests_type_record-3`` = [] - let ``can execute`` () = TestUtils.runTest "tests/examples/example-2.visp" + let ``can execute`` () = TestUtils.runTest "tests/type/record-3.visp" -[] -module ``tests_examples_example-13`` = +module ``tests_type_record-4`` = [] - let ``can execute`` () = TestUtils.runTest "tests/examples/example-13.visp" + let ``can execute`` () = TestUtils.runTest "tests/type/record-4.visp" -[] -module ``tests_examples_example-14`` = +module ``tests_type_record-mut-0`` = [] - let ``can execute`` () = TestUtils.runTest "tests/examples/example-14.visp" + let ``can execute`` () = TestUtils.runTest "tests/type/record-mut-0.visp" -[] -module ``tests_examples_example-6`` = +module ``tests_type_static-members-0`` = [] - let ``can execute`` () = TestUtils.runTest "tests/examples/example-6.visp" + let ``can execute`` () = TestUtils.runTest "tests/type/static-members-0.visp" -[] -module ``tests_examples_example-8`` = +module ``tests_type_type-0`` = [] - let ``can execute`` () = TestUtils.runTest "tests/examples/example-8.visp" + let ``can execute`` () = TestUtils.runTest "tests/type/type-0.visp" -[] -module ``tests_examples_example-12`` = +module ``tests_type_type-alias-0`` = [] - let ``can execute`` () = TestUtils.runTest "tests/examples/example-12.visp" + let ``can execute`` () = TestUtils.runTest "tests/type/type-alias-0.visp" -[] -module ``tests_examples_example-17`` = +module ``tests_type_union-0`` = [] - let ``can execute`` () = TestUtils.runTest "tests/examples/example-17.visp" + let ``can execute`` () = TestUtils.runTest "tests/type/union-0.visp" -[] -module ``tests_examples_example-5`` = +module ``tests_type_val-ctor-0`` = [] - let ``can execute`` () = TestUtils.runTest "tests/examples/example-5.visp" + let ``can execute`` () = TestUtils.runTest "tests/type/val-ctor-0.visp" + +module ``tests_vector_vector-0`` = + [] + let ``can execute`` () = TestUtils.runTest "tests/vector/vector-0.visp" + +module ``tests_while_while-0`` = + [] + let ``can execute`` () = TestUtils.runTest "tests/while/while-0.visp" + +module ``tests_while_while-1`` = + [] + let ``can execute`` () = TestUtils.runTest "tests/while/while-1.visp" diff --git a/tests/Visp.ExecutionTests/TestUtils.fs b/tests/Visp.ExecutionTests/TestUtils.fs index b7f8a1d..9b81f7a 100644 --- a/tests/Visp.ExecutionTests/TestUtils.fs +++ b/tests/Visp.ExecutionTests/TestUtils.fs @@ -1,12 +1,12 @@ module TestUtils open FsUnit.Xunit -open CliWrap open System.IO open System.IO.Abstractions open System.Text open VerifyXunit open Visp.Compiler.ProjectGenerator +open Visp.Compiler let getVispFilePath name = let src_dir = __SOURCE_DIRECTORY__ @@ -41,6 +41,8 @@ let CreateAndRunProject filePath = let sb = new StringBuilder() + Syntax.SyntaxWriteUtilThreadStatics.RunningTests <- true + // https://learn.microsoft.com/en-us/dotnet/fsharp/language-reference/compiler-options#compiler-options-listed-alphabetically generator.WriteVispFiles RuntimeLibraryReference.Package @@ -48,27 +50,32 @@ let CreateAndRunProject filePath = { WriteOptions.Default with Flags = (Some "--debug- --nooptimizationdata --optimize-") } - let dotnet = - Cli - .Wrap("dotnet") - .WithArguments(Array.concat [| [| "run"; "--project"; projectPath |] |]) - .WithWorkingDirectory(cwd) - .WithStandardOutputPipe(PipeTarget.ToStringBuilder(sb)) - .WithStandardErrorPipe(PipeTarget.ToStringBuilder(sb)) - .WithValidation(CommandResultValidation.None) - async { let mutable succeed = false try - let! result = dotnet.ExecuteAsync().Task |> Async.AwaitTask - - sb.AppendLine().Append("ExitCode: ").Append(result.ExitCode).AppendLine() + let! result = + DotnetCompiler.buildAndRun + projectPath + cwd + DotnetCompiler.BuildConfiguration.Debug + [||] + + sb + .Append(result.Output) + .AppendLine() + .Append("ExitCode: ") + .Append(result.ExitCode) + .AppendLine() |> ignore succeed <- result.ExitCode = 0 - return (result.ExitCode, sb.ToString()) + // Remove once https://github.com/dotnet/msbuild/issues/10998 is fixed + // https://github.com/dotnet/runtime/issues/109815 + return + (result.ExitCode, + sb.ToString().Replace("\x1b]9;4;3;\x1b\\", "").Replace("\x1b]9;4;0;\x1b\\", "")) finally try if succeed && Directory.Exists(projectPath) then diff --git a/tests/Visp.ExecutionTests/Tests.fs b/tests/Visp.ExecutionTests/Tests.fs index 961255d..988d03c 100644 --- a/tests/Visp.ExecutionTests/Tests.fs +++ b/tests/Visp.ExecutionTests/Tests.fs @@ -1,4 +1,3 @@ -[] module Tests open Xunit diff --git a/tests/Visp.ExecutionTests/Visp.ExecutionTests.fsproj b/tests/Visp.ExecutionTests/Visp.ExecutionTests.fsproj index 3621e0b..63c2500 100644 --- a/tests/Visp.ExecutionTests/Visp.ExecutionTests.fsproj +++ b/tests/Visp.ExecutionTests/Visp.ExecutionTests.fsproj @@ -1,7 +1,7 @@ - net8.0 + net9.0 false false @@ -16,21 +16,21 @@ - - - - + + + + runtime; build; native; contentfiles; analyzers; buildtransitive all - - - - + + + + runtime; build; native; contentfiles; analyzers; buildtransitive all - + runtime; build; native; contentfiles; analyzers; buildtransitive all diff --git a/tests/Visp.ExecutionTests/snapshots/tests_include_include-macros-0-macros.can execute.verified.txt b/tests/Visp.ExecutionTests/snapshots/tests_include_include-macros-0-macros.can execute.verified.txt new file mode 100644 index 0000000..7563906 --- /dev/null +++ b/tests/Visp.ExecutionTests/snapshots/tests_include_include-macros-0-macros.can execute.verified.txt @@ -0,0 +1,5 @@ +include-macros-0-macros.visp loading... +include-macros-0-macros.visp loaded +() + +ExitCode: 0 diff --git a/tests/Visp.ExecutionTests/snapshots/tests_include_include-macros-0.can execute.verified.txt b/tests/Visp.ExecutionTests/snapshots/tests_include_include-macros-0.can execute.verified.txt new file mode 100644 index 0000000..762c01c --- /dev/null +++ b/tests/Visp.ExecutionTests/snapshots/tests_include_include-macros-0.can execute.verified.txt @@ -0,0 +1,10 @@ +include-macros-0.visp loading... +include-macros-0-macros.visp loading... +include-macros-0-macros.visp loaded +include-macros-0.visp loaded +Example Struct is include-macros-0+Example +Example IsValueType true +Example Result is 3 +() + +ExitCode: 0 diff --git a/tests/Visp.ExecutionTests/snapshots/tests_macros_dbg-0.can execute.verified.txt b/tests/Visp.ExecutionTests/snapshots/tests_macros_dbg-0.can execute.verified.txt new file mode 100644 index 0000000..fa2a97e --- /dev/null +++ b/tests/Visp.ExecutionTests/snapshots/tests_macros_dbg-0.can execute.verified.txt @@ -0,0 +1,4 @@ +[{SolutionDirectory}visp/tests/macros/dbg-0.visp:8] +() + +ExitCode: 0 diff --git a/visp/tests/include/include-macros-0-macros.visp b/visp/tests/include/include-macros-0-macros.visp new file mode 100644 index 0000000..fccdbcb --- /dev/null +++ b/visp/tests/include/include-macros-0-macros.visp @@ -0,0 +1,18 @@ +;; Copyright 2024 Ville Penttinen +;; Distributed under the MIT License. +;; https://github.com/vipentti/visp-fs/blob/main/LICENSE.md +;; +;; for basic syntax highlighting +;; vim: set syntax=clojure: + +(printfn "include-macros-0-macros.visp loading...") + +(syntax-macro MyStruct + [(_ typ (arg ctor ...) body ...) + (#[Struct] + type typ (arg ctor ...) + body ... + ) + ]) + +(printfn "include-macros-0-macros.visp loaded") diff --git a/visp/tests/include/include-macros-0.visp b/visp/tests/include/include-macros-0.visp new file mode 100644 index 0000000..63136ae --- /dev/null +++ b/visp/tests/include/include-macros-0.visp @@ -0,0 +1,26 @@ +;; Copyright 2024 Ville Penttinen +;; Distributed under the MIT License. +;; https://github.com/vipentti/visp-fs/blob/main/LICENSE.md +;; +;; for basic syntax highlighting +;; vim: set syntax=clojure: + +(printfn "include-macros-0.visp loading...") + +(include "./include-macros-0-macros.visp") + +(printfn "include-macros-0.visp loaded") + +(MyStruct Example ([x: int] [y: int]) + (member _.X x) + (member _.Y y) + + (member fn d.Sum () (+ (+X d) (+Y d)))) + +(let instance (new Example 1 2)) + +(printfn "Example Struct is %A" instance) +(printfn "Example IsValueType %A" (->> instance .GetType +IsValueType)) +(printfn "Example Result is %i" (.Sum instance)) + +() diff --git a/visp/tests/macros/dbg-0.visp b/visp/tests/macros/dbg-0.visp new file mode 100644 index 0000000..08e7166 --- /dev/null +++ b/visp/tests/macros/dbg-0.visp @@ -0,0 +1,8 @@ +;; Copyright 2024 Ville Penttinen +;; Distributed under the MIT License. +;; https://github.com/vipentti/visp-fs/blob/main/LICENSE.md +;; +;; for basic syntax highlighting +;; vim: set syntax=clojure: + +(dbg!) diff --git a/visp/utils/test-generator.visp b/visp/utils/test-generator.visp index a0e97cf..edae9b1 100644 --- a/visp/utils/test-generator.visp +++ b/visp/utils/test-generator.visp @@ -73,7 +73,7 @@ let ``%s %s`` () = TestUtils.runTest "%s" (let write (write writer)) (let writeln (writeln writer)) - (writeln "[]") + (writeln "") (writeln (sprintf "module ``%s`` =" id)) (for/in [[file: string] files] @@ -98,7 +98,6 @@ let ``%s %s`` () = TestUtils.runTest "%s" (let file (GetTestFilePath parent file)) (let id (NormalizeTestName parent file)) - (writeln "[]") (writeln (sprintf "module ``%s`` =" (.Replace id ".visp" ""))) ;; (let name (->> (.Replace file "\\" "/") #(.Replace %1 "/" "_"))) @@ -243,8 +242,12 @@ let ``%s %s`` () = TestUtils.runTest "%s" (let files (->> (.GetFiles Directory vispTests "*.visp" (+AllDirectories SearchOption)) (List.ofSeq))) (let projectRoot (+FullName projectRoot)) + (fn OrdComp ([lhs: string] [rhs: string]) + (.Compare System.StringComparer.OrdinalIgnoreCase lhs rhs)) + (let groups (->> files + (List.sortWith OrdComp) (List.filter #(not (IsIgnoredFile %1))) ))