commit f21a53f088a379cd893f69377eac90d1cfd5e5aa Author: alina sireneva Date: Sun Jan 12 20:20:36 2025 +0300 feat: initial mvp diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..a547bf3 --- /dev/null +++ b/.gitignore @@ -0,0 +1,24 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + +node_modules +dist +dist-ssr +*.local + +# Editor directories and files +.vscode/* +!.vscode/extensions.json +.idea +.DS_Store +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? diff --git a/README.md b/README.md new file mode 100644 index 0000000..99613fc --- /dev/null +++ b/README.md @@ -0,0 +1,28 @@ +## Usage + +```bash +$ npm install # or pnpm install or yarn install +``` + +### Learn more on the [Solid Website](https://solidjs.com) and come chat with us on our [Discord](https://discord.com/invite/solidjs) + +## Available Scripts + +In the project directory, you can run: + +### `npm run dev` + +Runs the app in the development mode.
+Open [http://localhost:5173](http://localhost:5173) to view it in the browser. + +### `npm run build` + +Builds the app for production to the `dist` folder.
+It correctly bundles Solid in production mode and optimizes the build for the best performance. + +The build is minified and the filenames include the hashes.
+Your app is ready to be deployed! + +## Deployment + +Learn more about deploying your application with the [documentations](https://vitejs.dev/guide/static-deploy.html) diff --git a/eslint.config.js b/eslint.config.js new file mode 100644 index 0000000..081f9e9 --- /dev/null +++ b/eslint.config.js @@ -0,0 +1,28 @@ +import antfu from '@antfu/eslint-config' +import tailwind from 'eslint-plugin-tailwindcss' + +export default antfu({ + ignores: [ + 'src/components/Editor/utils/*.json', + 'vendor', + ], + typescript: true, + solid: true, + yaml: false, + rules: { + 'style/multiline-ternary': 'off', + 'curly': ['error', 'multi-line'], + 'style/brace-style': ['error', '1tbs', { allowSingleLine: true }], + 'n/prefer-global/buffer': 'off', + 'style/quotes': ['error', 'single', { avoidEscape: true }], + 'antfu/if-newline': 'off', + 'import/no-relative-packages': 'error', + 'style/max-statements-per-line': ['error', { max: 2 }], + 'ts/no-redeclare': 'off', + 'unused-imports/no-unused-imports': 'error', + 'ts/no-empty-object-type': 'off', + }, + plugins: { + tw: tailwind, + }, +}, tailwind.configs['flat/recommended']) diff --git a/index.html b/index.html new file mode 100644 index 0000000..d812434 --- /dev/null +++ b/index.html @@ -0,0 +1,13 @@ + + + + + + + @mtcute/repl + + +
+ + + diff --git a/package.json b/package.json new file mode 100644 index 0000000..59c1295 --- /dev/null +++ b/package.json @@ -0,0 +1,68 @@ +{ + "name": "mtcute-repl", + "type": "module", + "version": "0.0.0", + "private": true, + "packageManager": "pnpm@9.5.0", + "scripts": { + "dev": "vite", + "build": "tsc -b && vite build", + "preview": "vite preview" + }, + "dependencies": { + "@badrap/valita": "^0.4.2", + "@corvu/otp-field": "^0.1.4", + "@corvu/resizable": "^0.2.3", + "@fuman/fetch": "^0.0.8", + "@fuman/io": "0.0.8", + "@fuman/utils": "0.0.4", + "@kobalte/core": "^0.13.7", + "@mtcute/convert": "^0.19.4", + "@mtcute/web": "^0.19.5", + "@nanostores/persistent": "^0.10.2", + "class-variance-authority": "^0.7.1", + "clsx": "^2.1.1", + "esbuild": "^0.24.2", + "fflate": "^0.8.2", + "filesize": "^10.1.6", + "idb": "^8.0.1", + "lucide-solid": "^0.445.0", + "memfs": "^4.17.0", + "monaco-editor": "0.52.0", + "monaco-editor-core": "0.52.0", + "monaco-editor-textmate": "^4.0.0", + "monaco-textmate": "^3.0.1", + "nanoid": "^5.0.9", + "nanostores": "^0.11.3", + "onigasm": "^2.2.5", + "semver": "^7.6.3", + "solid-icons": "^1.1.0", + "solid-js": "^1.9.4", + "solid-transition-group": "^0.2.3", + "tailwind-merge": "^2.6.0", + "tailwindcss-animate": "^1.0.7", + "ts-blank-space": "^0.4.4", + "uqr": "^0.1.2" + }, + "devDependencies": { + "@antfu/eslint-config": "^3.13.0", + "@catppuccin/vscode": "^3.16.0", + "@types/node": "^22.10.5", + "@types/semver": "^7.5.8", + "autoprefixer": "^10.4.20", + "eslint-plugin-solid": "^0.14.5", + "eslint-plugin-tailwindcss": "^3.17.5", + "monaco-vscode-textmate-theme-converter": "^0.1.7", + "plist2": "^1.1.4", + "postcss": "^8.4.49", + "tailwindcss": "^3.4.17", + "typescript": "^5.7.3", + "vite": "^5.4.11", + "vite-plugin-solid": "^2.11.0" + }, + "pnpm": { + "patchedDependencies": { + "vite-plugin-externalize-dependencies@1.0.1": "patches/vite-plugin-externalize-dependencies@1.0.1.patch" + } + } +} diff --git a/patches/vite-plugin-externalize-dependencies@1.0.1.patch b/patches/vite-plugin-externalize-dependencies@1.0.1.patch new file mode 100644 index 0000000..43c4559 --- /dev/null +++ b/patches/vite-plugin-externalize-dependencies@1.0.1.patch @@ -0,0 +1,16 @@ +diff --git a/dist/index.js b/dist/index.js +index 4b5eff9ae46b5fa0af75b16ef21f5b93142a7251..bc1651dfd82210b69ec9b5709c5f6a6320ca31b0 100644 +--- a/dist/index.js ++++ b/dist/index.js +@@ -14,9 +14,9 @@ const r = /* @__PURE__ */ new Set(), s = (n, e) => e.some((t) => typeof t == "st + if (r.size === 0) + return e; + const t = "@id/", u = new RegExp( +- `${n}${t}(${[...r].join( ++ `${n}${t}(${[...r].map(it => it.replace(/\?/g, "\\?")).join( + "|" +- )})`, ++ )})(?:\\?external)?`, + "g" + ); + return u.test(e) ? e.replace( diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml new file mode 100644 index 0000000..d198f0d --- /dev/null +++ b/pnpm-lock.yaml @@ -0,0 +1,5815 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +patchedDependencies: + vite-plugin-externalize-dependencies@1.0.1: + hash: 5hvukli72fmd6w753a6bzflwga + path: patches/vite-plugin-externalize-dependencies@1.0.1.patch + +importers: + + .: + dependencies: + '@badrap/valita': + specifier: ^0.4.2 + version: 0.4.2 + '@corvu/otp-field': + specifier: ^0.1.4 + version: 0.1.4(solid-js@1.9.4) + '@corvu/resizable': + specifier: ^0.2.3 + version: 0.2.3(solid-js@1.9.4) + '@fuman/fetch': + specifier: ^0.0.8 + version: 0.0.8(@badrap/valita@0.4.2)(zod@3.24.1) + '@fuman/io': + specifier: 0.0.8 + version: 0.0.8 + '@fuman/utils': + specifier: 0.0.4 + version: 0.0.4 + '@kobalte/core': + specifier: ^0.13.7 + version: 0.13.7(solid-js@1.9.4) + '@mtcute/convert': + specifier: ^0.19.4 + version: 0.19.4 + '@mtcute/web': + specifier: ^0.19.5 + version: 0.19.5 + '@nanostores/persistent': + specifier: ^0.10.2 + version: 0.10.2(nanostores@0.11.3) + class-variance-authority: + specifier: ^0.7.1 + version: 0.7.1 + clsx: + specifier: ^2.1.1 + version: 2.1.1 + esbuild: + specifier: ^0.24.2 + version: 0.24.2 + fflate: + specifier: ^0.8.2 + version: 0.8.2 + filesize: + specifier: ^10.1.6 + version: 10.1.6 + idb: + specifier: ^8.0.1 + version: 8.0.1 + lucide-solid: + specifier: ^0.445.0 + version: 0.445.0(solid-js@1.9.4) + memfs: + specifier: ^4.17.0 + version: 4.17.0 + monaco-editor: + specifier: 0.52.0 + version: 0.52.0 + monaco-editor-core: + specifier: 0.52.0 + version: 0.52.0 + monaco-editor-textmate: + specifier: ^4.0.0 + version: 4.0.0(monaco-editor@0.52.0)(monaco-textmate@3.0.1(onigasm@2.2.5)) + monaco-textmate: + specifier: ^3.0.1 + version: 3.0.1(onigasm@2.2.5) + nanoid: + specifier: ^5.0.9 + version: 5.0.9 + nanostores: + specifier: ^0.11.3 + version: 0.11.3 + onigasm: + specifier: ^2.2.5 + version: 2.2.5 + semver: + specifier: ^7.6.3 + version: 7.6.3 + solid-icons: + specifier: ^1.1.0 + version: 1.1.0(solid-js@1.9.4) + solid-js: + specifier: ^1.9.4 + version: 1.9.4 + solid-transition-group: + specifier: ^0.2.3 + version: 0.2.3(solid-js@1.9.4) + tailwind-merge: + specifier: ^2.6.0 + version: 2.6.0 + tailwindcss-animate: + specifier: ^1.0.7 + version: 1.0.7(tailwindcss@3.4.17) + ts-blank-space: + specifier: ^0.4.4 + version: 0.4.4 + uqr: + specifier: ^0.1.2 + version: 0.1.2 + devDependencies: + '@antfu/eslint-config': + specifier: ^3.13.0 + version: 3.13.0(@typescript-eslint/utils@8.19.1(eslint@9.11.0(jiti@1.21.7))(typescript@5.7.3))(@vue/compiler-sfc@3.5.7)(eslint-plugin-solid@0.14.5(eslint@9.11.0(jiti@1.21.7))(typescript@5.7.3))(eslint@9.11.0(jiti@1.21.7))(typescript@5.7.3) + '@catppuccin/vscode': + specifier: ^3.16.0 + version: 3.16.0 + '@types/node': + specifier: ^22.10.5 + version: 22.10.5 + '@types/semver': + specifier: ^7.5.8 + version: 7.5.8 + autoprefixer: + specifier: ^10.4.20 + version: 10.4.20(postcss@8.4.49) + eslint-plugin-solid: + specifier: ^0.14.5 + version: 0.14.5(eslint@9.11.0(jiti@1.21.7))(typescript@5.7.3) + eslint-plugin-tailwindcss: + specifier: ^3.17.5 + version: 3.17.5(tailwindcss@3.4.17) + monaco-vscode-textmate-theme-converter: + specifier: ^0.1.7 + version: 0.1.7(tslib@2.8.1) + plist2: + specifier: ^1.1.4 + version: 1.1.4 + postcss: + specifier: ^8.4.49 + version: 8.4.49 + tailwindcss: + specifier: ^3.4.17 + version: 3.4.17 + typescript: + specifier: ^5.7.3 + version: 5.7.3 + vite: + specifier: ^5.4.11 + version: 5.4.11(@types/node@22.10.5) + vite-plugin-solid: + specifier: ^2.11.0 + version: 2.11.0(solid-js@1.9.4)(vite@5.4.11(@types/node@22.10.5)) + + ../fuman/packages/bun: + dependencies: + '@fuman/io': + specifier: workspace:^ + version: link:../io + '@fuman/net': + specifier: workspace:^ + version: link:../net + '@fuman/utils': + specifier: workspace:^ + version: link:../utils + + ../fuman/packages/deno: + dependencies: + '@fuman/io': + specifier: workspace:^ + version: link:../io + '@fuman/net': + specifier: workspace:^ + version: link:../net + '@fuman/utils': + specifier: workspace:^ + version: link:../utils + + ../fuman/packages/gzip-web: + dependencies: + '@fuman/io': + specifier: workspace:^ + version: link:../io + '@fuman/utils': + specifier: workspace:^ + version: link:../utils + fflate: + specifier: ^0.8.2 + version: 0.8.2 + + ../fuman/packages/io: + dependencies: + '@fuman/utils': + specifier: workspace:^ + version: link:../utils + + ../fuman/packages/jsr: + dependencies: + '@fuman/node': + specifier: workspace:^ + version: link:../node + '@fuman/utils': + specifier: workspace:^ + version: link:../utils + gunzip-maybe: + specifier: 1.4.2 + version: 1.4.2 + semver: + specifier: 7.6.3 + version: 7.6.3 + tar-stream: + specifier: 3.1.7 + version: 3.1.7 + typescript: + specifier: 5.2.2 + version: 5.2.2 + devDependencies: + '@types/gunzip-maybe': + specifier: 1.4.0 + version: 1.4.0 + '@types/semver': + specifier: 7.5.4 + version: 7.5.4 + '@types/tar-stream': + specifier: 3.1.2 + version: 3.1.2 + + ../fuman/packages/net: + dependencies: + '@fuman/io': + specifier: workspace:^ + version: link:../io + '@fuman/utils': + specifier: workspace:^ + version: link:../utils + devDependencies: + ipaddr.js: + specifier: 2.2.0 + version: 2.2.0 + + ../fuman/packages/node: + dependencies: + '@fuman/io': + specifier: workspace:^ + version: link:../io + '@fuman/net': + specifier: workspace:^ + version: link:../net + '@fuman/utils': + specifier: workspace:^ + version: link:../utils + + ../fuman/packages/tar: + dependencies: + '@fuman/io': + specifier: workspace:^ + version: link:../io + '@fuman/utils': + specifier: workspace:^ + version: link:../utils + + ../fuman/packages/utils: {} + +packages: + + '@alloc/quick-lru@5.2.0': + resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==} + engines: {node: '>=10'} + + '@ampproject/remapping@2.3.0': + resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} + engines: {node: '>=6.0.0'} + + '@antfu/eslint-config@3.13.0': + resolution: {integrity: sha512-QO2B+w9JAfMRaXOquD7mMIggqrcdZHeRsTzxgvTYkq6YeTPfQHMQNG7wVKZh5+w0Z5c8JgTOVtf1eo5+fSYFmA==} + hasBin: true + peerDependencies: + '@eslint-react/eslint-plugin': ^1.19.0 + '@prettier/plugin-xml': ^3.4.1 + '@unocss/eslint-plugin': '>=0.50.0' + astro-eslint-parser: ^1.0.2 + eslint: ^9.10.0 + eslint-plugin-astro: ^1.2.0 + eslint-plugin-format: '>=0.1.0' + eslint-plugin-react-hooks: ^5.0.0 + eslint-plugin-react-refresh: ^0.4.4 + eslint-plugin-solid: ^0.14.3 + eslint-plugin-svelte: '>=2.35.1' + prettier-plugin-astro: ^0.14.0 + prettier-plugin-slidev: ^1.0.5 + svelte-eslint-parser: '>=0.37.0' + peerDependenciesMeta: + '@eslint-react/eslint-plugin': + optional: true + '@prettier/plugin-xml': + optional: true + '@unocss/eslint-plugin': + optional: true + astro-eslint-parser: + optional: true + eslint-plugin-astro: + optional: true + eslint-plugin-format: + optional: true + eslint-plugin-react-hooks: + optional: true + eslint-plugin-react-refresh: + optional: true + eslint-plugin-solid: + optional: true + eslint-plugin-svelte: + optional: true + prettier-plugin-astro: + optional: true + prettier-plugin-slidev: + optional: true + svelte-eslint-parser: + optional: true + + '@antfu/install-pkg@1.0.0': + resolution: {integrity: sha512-xvX6P/lo1B3ej0OsaErAjqgFYzYVcJpamjLAFLYh9vRJngBrMoUG7aVnrGTeqM7yxbyTD5p3F2+0/QUEh8Vzhw==} + + '@antfu/utils@0.7.10': + resolution: {integrity: sha512-+562v9k4aI80m1+VuMHehNJWLOFjBnXn3tdOitzD0il5b7smkSBal4+a3oKiQTbrwMmN/TBUMDvbdoWDehgOww==} + + '@babel/code-frame@7.26.2': + resolution: {integrity: sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==} + engines: {node: '>=6.9.0'} + + '@babel/compat-data@7.26.5': + resolution: {integrity: sha512-XvcZi1KWf88RVbF9wn8MN6tYFloU5qX8KjuF3E1PVBmJ9eypXfs4GRiJwLuTZL0iSnJUKn1BFPa5BPZZJyFzPg==} + engines: {node: '>=6.9.0'} + + '@babel/core@7.26.0': + resolution: {integrity: sha512-i1SLeK+DzNnQ3LL/CswPCa/E5u4lh1k6IAEphON8F+cXt0t9euTshDru0q7/IqMa1PMPz5RnHuHscF8/ZJsStg==} + engines: {node: '>=6.9.0'} + + '@babel/generator@7.26.5': + resolution: {integrity: sha512-2caSP6fN9I7HOe6nqhtft7V4g7/V/gfDsC3Ag4W7kEzzvRGKqiv0pu0HogPiZ3KaVSoNDhUws6IJjDjpfmYIXw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-compilation-targets@7.26.5': + resolution: {integrity: sha512-IXuyn5EkouFJscIDuFF5EsiSolseme1s0CZB+QxVugqJLYmKdxI1VfIBOst0SUu4rnk2Z7kqTwmoO1lp3HIfnA==} + engines: {node: '>=6.9.0'} + + '@babel/helper-module-imports@7.18.6': + resolution: {integrity: sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==} + engines: {node: '>=6.9.0'} + + '@babel/helper-module-imports@7.25.9': + resolution: {integrity: sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-module-transforms@7.26.0': + resolution: {integrity: sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-plugin-utils@7.26.5': + resolution: {integrity: sha512-RS+jZcRdZdRFzMyr+wcsaqOmld1/EqTghfaBGQQd/WnRdzdlvSZ//kF7U8VQTxf1ynZ4cjUcYgjVGx13ewNPMg==} + engines: {node: '>=6.9.0'} + + '@babel/helper-string-parser@7.25.9': + resolution: {integrity: sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-identifier@7.25.9': + resolution: {integrity: sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-option@7.25.9': + resolution: {integrity: sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==} + engines: {node: '>=6.9.0'} + + '@babel/helpers@7.26.0': + resolution: {integrity: sha512-tbhNuIxNcVb21pInl3ZSjksLCvgdZy9KwJ8brv993QtIVKJBBkYXz4q4ZbAv31GdnC+R90np23L5FbEBlthAEw==} + engines: {node: '>=6.9.0'} + + '@babel/parser@7.26.5': + resolution: {integrity: sha512-SRJ4jYmXRqV1/Xc+TIVG84WjHBXKlxO9sHQnA2Pf12QQEAp1LOh6kDzNHXcUnbH1QI0FDoPPVOt+vyUDucxpaw==} + engines: {node: '>=6.0.0'} + hasBin: true + + '@babel/plugin-syntax-jsx@7.25.9': + resolution: {integrity: sha512-ld6oezHQMZsZfp6pWtbjaNDF2tiiCYYDqQszHt5VV437lewP9aSi2Of99CK0D0XB21k7FLgnLcmQKyKzynfeAA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/template@7.25.9': + resolution: {integrity: sha512-9DGttpmPvIxBb/2uwpVo3dqJ+O6RooAFOS+lB+xDqoE2PVCE8nfoHMdZLpfCQRLwvohzXISPZcgxt80xLfsuwg==} + engines: {node: '>=6.9.0'} + + '@babel/traverse@7.26.5': + resolution: {integrity: sha512-rkOSPOw+AXbgtwUga3U4u8RpoK9FEFWBNAlTpcnkLFjL5CT+oyHNuUUC/xx6XefEJ16r38r8Bc/lfp6rYuHeJQ==} + engines: {node: '>=6.9.0'} + + '@babel/types@7.26.5': + resolution: {integrity: sha512-L6mZmwFDK6Cjh1nRCLXpa6no13ZIioJDz7mdkzHv399pThrTa/k0nUlNaenOeh2kWu/iaOQYElEpKPUswUa9Vg==} + engines: {node: '>=6.9.0'} + + '@badrap/valita@0.4.2': + resolution: {integrity: sha512-Mwmr7k2iK0Yy0POLnAFUgab2mxKYeIsYXHY7sg3jo8XFsFHbG0SBmTcktXD0uW8N4WZePKf8s68QV7QDTGSdHA==} + engines: {node: '>= 18'} + + '@catppuccin/palette@1.7.1': + resolution: {integrity: sha512-aRc1tbzrevOTV7nFTT9SRdF26w/MIwT4Jwt4fDMc9itRZUDXCuEDBLyz4TQMlqO9ZP8mf5Hu4Jr6D03NLFc6Gw==} + + '@catppuccin/vscode@3.16.0': + resolution: {integrity: sha512-7XyBXzNwrEHMB2/4jPe/bDx0FSUdTZTFzS6Tg3oTSFlOHikNbSr/Nhl9Zrs2aSoYa49hF9Gn5fhQSvdyqWHMdg==} + + '@clack/core@0.4.1': + resolution: {integrity: sha512-Pxhij4UXg8KSr7rPek6Zowm+5M22rbd2g1nfojHJkxp5YkFqiZ2+YLEM/XGVIzvGOcM0nqjIFxrpDwWRZYWYjA==} + + '@clack/prompts@0.9.1': + resolution: {integrity: sha512-JIpyaboYZeWYlyP0H+OoPPxd6nqueG/CmN6ixBiNFsIDHREevjIf0n0Ohh5gr5C8pEDknzgvz+pIJ8dMhzWIeg==} + + '@corvu/otp-field@0.1.4': + resolution: {integrity: sha512-3eG7OoUt6CfVqGujIYfqImdrhGR/s4DpKr5ZQT10zzw3nawIlcwVpqoHTam0v4cgv+NXXvl6I8DoA3J+WgW2YA==} + peerDependencies: + solid-js: ^1.8 + + '@corvu/resizable@0.2.3': + resolution: {integrity: sha512-UwpObxqKlx1mc3G496Daz9NjK25Gx1V5fB8zIGazbq5tJs7aU8RjPW4png5OoNpMyxV7GQWjQtVc59zaAEVAJg==} + peerDependencies: + solid-js: ^1.8 + + '@corvu/utils@0.4.2': + resolution: {integrity: sha512-Ox2kYyxy7NoXdKWdHeDEjZxClwzO4SKM8plAaVwmAJPxHMqA0rLOoAsa+hBDwRLpctf+ZRnAd/ykguuJidnaTA==} + peerDependencies: + solid-js: ^1.8 + + '@es-joy/jsdoccomment@0.49.0': + resolution: {integrity: sha512-xjZTSFgECpb9Ohuk5yMX5RhUEbfeQcuOp8IF60e+wyzWEF0M5xeSgqsfLtvPEX8BIyOX9saZqzuGPmZ8oWc+5Q==} + engines: {node: '>=16'} + + '@es-joy/jsdoccomment@0.50.0': + resolution: {integrity: sha512-+zZymuVLH6zVwXPtCAtC+bDymxmEwEqDftdAK+f407IF1bnX49anIxvBhCA1AqUIfD6egj1jM1vUnSuijjNyYg==} + engines: {node: '>=18'} + + '@esbuild/aix-ppc64@0.21.5': + resolution: {integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [aix] + + '@esbuild/aix-ppc64@0.24.2': + resolution: {integrity: sha512-thpVCb/rhxE/BnMLQ7GReQLLN8q9qbHmI55F4489/ByVg2aQaQ6kbcLb6FHkocZzQhxc4gx0sCk0tJkKBFzDhA==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [aix] + + '@esbuild/android-arm64@0.21.5': + resolution: {integrity: sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + + '@esbuild/android-arm64@0.24.2': + resolution: {integrity: sha512-cNLgeqCqV8WxfcTIOeL4OAtSmL8JjcN6m09XIgro1Wi7cF4t/THaWEa7eL5CMoMBdjoHOTh/vwTO/o2TRXIyzg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [android] + + '@esbuild/android-arm@0.21.5': + resolution: {integrity: sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + + '@esbuild/android-arm@0.24.2': + resolution: {integrity: sha512-tmwl4hJkCfNHwFB3nBa8z1Uy3ypZpxqxfTQOcHX+xRByyYgunVbZ9MzUUfb0RxaHIMnbHagwAxuTL+tnNM+1/Q==} + engines: {node: '>=18'} + cpu: [arm] + os: [android] + + '@esbuild/android-x64@0.21.5': + resolution: {integrity: sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + + '@esbuild/android-x64@0.24.2': + resolution: {integrity: sha512-B6Q0YQDqMx9D7rvIcsXfmJfvUYLoP722bgfBlO5cGvNVb5V/+Y7nhBE3mHV9OpxBf4eAS2S68KZztiPaWq4XYw==} + engines: {node: '>=18'} + cpu: [x64] + os: [android] + + '@esbuild/darwin-arm64@0.21.5': + resolution: {integrity: sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-arm64@0.24.2': + resolution: {integrity: sha512-kj3AnYWc+CekmZnS5IPu9D+HWtUI49hbnyqk0FLEJDbzCIQt7hg7ucF1SQAilhtYpIujfaHr6O0UHlzzSPdOeA==} + engines: {node: '>=18'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-x64@0.21.5': + resolution: {integrity: sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + + '@esbuild/darwin-x64@0.24.2': + resolution: {integrity: sha512-WeSrmwwHaPkNR5H3yYfowhZcbriGqooyu3zI/3GGpF8AyUdsrrP0X6KumITGA9WOyiJavnGZUwPGvxvwfWPHIA==} + engines: {node: '>=18'} + cpu: [x64] + os: [darwin] + + '@esbuild/freebsd-arm64@0.21.5': + resolution: {integrity: sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-arm64@0.24.2': + resolution: {integrity: sha512-UN8HXjtJ0k/Mj6a9+5u6+2eZ2ERD7Edt1Q9IZiB5UZAIdPnVKDoG7mdTVGhHJIeEml60JteamR3qhsr1r8gXvg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.21.5': + resolution: {integrity: sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.24.2': + resolution: {integrity: sha512-TvW7wE/89PYW+IevEJXZ5sF6gJRDY/14hyIGFXdIucxCsbRmLUcjseQu1SyTko+2idmCw94TgyaEZi9HUSOe3Q==} + engines: {node: '>=18'} + cpu: [x64] + os: [freebsd] + + '@esbuild/linux-arm64@0.21.5': + resolution: {integrity: sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm64@0.24.2': + resolution: {integrity: sha512-7HnAD6074BW43YvvUmE/35Id9/NB7BeX5EoNkK9obndmZBUk8xmJJeU7DwmUeN7tkysslb2eSl6CTrYz6oEMQg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm@0.21.5': + resolution: {integrity: sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-arm@0.24.2': + resolution: {integrity: sha512-n0WRM/gWIdU29J57hJyUdIsk0WarGd6To0s+Y+LwvlC55wt+GT/OgkwoXCXvIue1i1sSNWblHEig00GBWiJgfA==} + engines: {node: '>=18'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-ia32@0.21.5': + resolution: {integrity: sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-ia32@0.24.2': + resolution: {integrity: sha512-sfv0tGPQhcZOgTKO3oBE9xpHuUqguHvSo4jl+wjnKwFpapx+vUDcawbwPNuBIAYdRAvIDBfZVvXprIj3HA+Ugw==} + engines: {node: '>=18'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-loong64@0.21.5': + resolution: {integrity: sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + + '@esbuild/linux-loong64@0.24.2': + resolution: {integrity: sha512-CN9AZr8kEndGooS35ntToZLTQLHEjtVB5n7dl8ZcTZMonJ7CCfStrYhrzF97eAecqVbVJ7APOEe18RPI4KLhwQ==} + engines: {node: '>=18'} + cpu: [loong64] + os: [linux] + + '@esbuild/linux-mips64el@0.21.5': + resolution: {integrity: sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-mips64el@0.24.2': + resolution: {integrity: sha512-iMkk7qr/wl3exJATwkISxI7kTcmHKE+BlymIAbHO8xanq/TjHaaVThFF6ipWzPHryoFsesNQJPE/3wFJw4+huw==} + engines: {node: '>=18'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-ppc64@0.21.5': + resolution: {integrity: sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-ppc64@0.24.2': + resolution: {integrity: sha512-shsVrgCZ57Vr2L8mm39kO5PPIb+843FStGt7sGGoqiiWYconSxwTiuswC1VJZLCjNiMLAMh34jg4VSEQb+iEbw==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-riscv64@0.21.5': + resolution: {integrity: sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-riscv64@0.24.2': + resolution: {integrity: sha512-4eSFWnU9Hhd68fW16GD0TINewo1L6dRrB+oLNNbYyMUAeOD2yCK5KXGK1GH4qD/kT+bTEXjsyTCiJGHPZ3eM9Q==} + engines: {node: '>=18'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-s390x@0.21.5': + resolution: {integrity: sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-s390x@0.24.2': + resolution: {integrity: sha512-S0Bh0A53b0YHL2XEXC20bHLuGMOhFDO6GN4b3YjRLK//Ep3ql3erpNcPlEFed93hsQAjAQDNsvcK+hV90FubSw==} + engines: {node: '>=18'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-x64@0.21.5': + resolution: {integrity: sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + + '@esbuild/linux-x64@0.24.2': + resolution: {integrity: sha512-8Qi4nQcCTbLnK9WoMjdC9NiTG6/E38RNICU6sUNqK0QFxCYgoARqVqxdFmWkdonVsvGqWhmm7MO0jyTqLqwj0Q==} + engines: {node: '>=18'} + cpu: [x64] + os: [linux] + + '@esbuild/netbsd-arm64@0.24.2': + resolution: {integrity: sha512-wuLK/VztRRpMt9zyHSazyCVdCXlpHkKm34WUyinD2lzK07FAHTq0KQvZZlXikNWkDGoT6x3TD51jKQ7gMVpopw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [netbsd] + + '@esbuild/netbsd-x64@0.21.5': + resolution: {integrity: sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + + '@esbuild/netbsd-x64@0.24.2': + resolution: {integrity: sha512-VefFaQUc4FMmJuAxmIHgUmfNiLXY438XrL4GDNV1Y1H/RW3qow68xTwjZKfj/+Plp9NANmzbH5R40Meudu8mmw==} + engines: {node: '>=18'} + cpu: [x64] + os: [netbsd] + + '@esbuild/openbsd-arm64@0.24.2': + resolution: {integrity: sha512-YQbi46SBct6iKnszhSvdluqDmxCJA+Pu280Av9WICNwQmMxV7nLRHZfjQzwbPs3jeWnuAhE9Jy0NrnJ12Oz+0A==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openbsd] + + '@esbuild/openbsd-x64@0.21.5': + resolution: {integrity: sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + + '@esbuild/openbsd-x64@0.24.2': + resolution: {integrity: sha512-+iDS6zpNM6EnJyWv0bMGLWSWeXGN/HTaF/LXHXHwejGsVi+ooqDfMCCTerNFxEkM3wYVcExkeGXNqshc9iMaOA==} + engines: {node: '>=18'} + cpu: [x64] + os: [openbsd] + + '@esbuild/sunos-x64@0.21.5': + resolution: {integrity: sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + + '@esbuild/sunos-x64@0.24.2': + resolution: {integrity: sha512-hTdsW27jcktEvpwNHJU4ZwWFGkz2zRJUz8pvddmXPtXDzVKTTINmlmga3ZzwcuMpUvLw7JkLy9QLKyGpD2Yxig==} + engines: {node: '>=18'} + cpu: [x64] + os: [sunos] + + '@esbuild/win32-arm64@0.21.5': + resolution: {integrity: sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-arm64@0.24.2': + resolution: {integrity: sha512-LihEQ2BBKVFLOC9ZItT9iFprsE9tqjDjnbulhHoFxYQtQfai7qfluVODIYxt1PgdoyQkz23+01rzwNwYfutxUQ==} + engines: {node: '>=18'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-ia32@0.21.5': + resolution: {integrity: sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + + '@esbuild/win32-ia32@0.24.2': + resolution: {integrity: sha512-q+iGUwfs8tncmFC9pcnD5IvRHAzmbwQ3GPS5/ceCyHdjXubwQWI12MKWSNSMYLJMq23/IUCvJMS76PDqXe1fxA==} + engines: {node: '>=18'} + cpu: [ia32] + os: [win32] + + '@esbuild/win32-x64@0.21.5': + resolution: {integrity: sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + + '@esbuild/win32-x64@0.24.2': + resolution: {integrity: sha512-7VTgWzgMGvup6aSqDPLiW5zHaxYJGTO4OokMjIlrCtf+VpEL+cXKtCvg723iguPYI5oaUNdS+/V7OU2gvXVWEg==} + engines: {node: '>=18'} + cpu: [x64] + os: [win32] + + '@eslint-community/eslint-plugin-eslint-comments@4.4.1': + resolution: {integrity: sha512-lb/Z/MzbTf7CaVYM9WCFNQZ4L1yi3ev2fsFPF99h31ljhSEyUoyEsKsNWiU+qD1glbYTDJdqgyaLKtyTkkqtuQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 || ^9.0.0 + + '@eslint-community/eslint-utils@4.4.1': + resolution: {integrity: sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + + '@eslint-community/regexpp@4.12.1': + resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + + '@eslint/compat@1.2.5': + resolution: {integrity: sha512-5iuG/StT+7OfvhoBHPlmxkPA9om6aDUFgmD4+mWKAGsYt4vCe8rypneG03AuseyRHBmcCLXQtIH5S26tIoggLg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^9.10.0 + peerDependenciesMeta: + eslint: + optional: true + + '@eslint/config-array@0.18.0': + resolution: {integrity: sha512-fTxvnS1sRMu3+JjXwJG0j/i4RT9u4qJ+lqS/yCGap4lH4zZGzQ7tu+xZqQmcMZq5OBZDL4QRxQzRjkWcGt8IVw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/core@0.10.0': + resolution: {integrity: sha512-gFHJ+xBOo4G3WRlR1e/3G8A6/KZAH6zcE/hkLRCZTi/B9avAG365QhFA8uOGzTMqgTghpn7/fSnscW++dpMSAw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/eslintrc@3.2.0': + resolution: {integrity: sha512-grOjVNN8P3hjJn/eIETF1wwd12DdnwFDoyceUJLYYdkpbwq3nLi+4fqrTAONx7XDALqlL220wC/RHSC/QTI/0w==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/js@9.11.0': + resolution: {integrity: sha512-LPkkenkDqyzTFauZLLAPhIb48fj6drrfMvRGSL9tS3AcZBSVTllemLSNyCvHNNL2t797S/6DJNSIwRwXgMO/eQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/markdown@6.2.1': + resolution: {integrity: sha512-cKVd110hG4ICHmWhIwZJfKmmJBvbiDWyrHODJknAtudKgZtlROGoLX9UEOA0o746zC0hCY4UV4vR+aOGW9S6JQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/object-schema@2.1.5': + resolution: {integrity: sha512-o0bhxnL89h5Bae5T318nFoFzGy+YE5i/gGkoPAgkmTVdRKTiv3p8JHevPiPaMwoloKfEiiaHlawCqaZMqRm+XQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/plugin-kit@0.2.5': + resolution: {integrity: sha512-lB05FkqEdUg2AA0xEbUz0SnkXT1LcCTa438W4IWTUh4hdOnVbQyOJ81OrDXsJk/LSiJHubgGEFoR5EHq1NsH1A==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@floating-ui/core@1.6.9': + resolution: {integrity: sha512-uMXCuQ3BItDUbAMhIXw7UPXRfAlOAvZzdK9BWpE60MCn+Svt3aLn9jsPTi/WNGlRUu2uI0v5S7JiIUsbsvh3fw==} + + '@floating-ui/dom@1.6.13': + resolution: {integrity: sha512-umqzocjDgNRGTuO7Q8CU32dkHkECqI8ZdMZ5Swb6QAM0t5rnlrN3lGo1hdpscRd3WS8T6DKYK4ephgIH9iRh3w==} + + '@floating-ui/utils@0.2.9': + resolution: {integrity: sha512-MDWhGtE+eHw5JW7lq4qhc5yRLS11ERl1c7Z6Xd0a58DozHES6EnNNwUWbMiG4J9Cgj053Bhk8zvlhFYKVhULwg==} + + '@fuman/fetch@0.0.8': + resolution: {integrity: sha512-ih3JYHJ9xTUoCz67TVeFP6ZkwOrZNHstWXaR1/4EQ/lZSEJJj+tvm9UGjXyEbh3HIgN7Oqc5Fu6w5JpH/zChDQ==} + peerDependencies: + '@badrap/valita': '>=0.4.0' + tough-cookie: ^5.0.0 || ^4.0.0 + valibot: ^0.42.0 + yup: ^1.0.0 + zod: ^3.0.0 + peerDependenciesMeta: + '@badrap/valita': + optional: true + tough-cookie: + optional: true + valibot: + optional: true + yup: + optional: true + zod: + optional: true + + '@fuman/io@0.0.8': + resolution: {integrity: sha512-+cRZ2JOMYceNQ2Rh6UYro5XVa11j29Sdd3Yhi4GfxAx6ZwCNIw3P80xcTRwCZSfMPLDNN9Etkq7NIc5v9lpItw==} + + '@fuman/net@0.0.9': + resolution: {integrity: sha512-asn7VJbT8woVXAFCUMZrdyNZCSsXZclraeVZ6RYJ+T3RwQ+JfMMZtXLLTZ7XHrBPxk8x8hoHOJa/Fnyfm+ggbQ==} + + '@fuman/utils@0.0.4': + resolution: {integrity: sha512-YBZIlGDbM8s9G85pWFZJ9wQrDY4511XLHZ06/uxZfXBY0eSStwje8JFNmRMNF0SjRk4D3iRmPl9wirHKTkg89w==} + + '@humanwhocodes/module-importer@1.0.1': + resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} + engines: {node: '>=12.22'} + + '@humanwhocodes/retry@0.3.1': + resolution: {integrity: sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==} + engines: {node: '>=18.18'} + + '@internationalized/date@3.6.0': + resolution: {integrity: sha512-+z6ti+CcJnRlLHok/emGEsWQhe7kfSmEW+/6qCzvKY67YPh7YOBfvc7+/+NXq+zJlbArg30tYpqLjNgcAYv2YQ==} + + '@internationalized/number@3.6.0': + resolution: {integrity: sha512-PtrRcJVy7nw++wn4W2OuePQQfTqDzfusSuY1QTtui4wa7r+rGVtR75pO8CyKvHvzyQYi3Q1uO5sY0AsB4e65Bw==} + + '@isaacs/cliui@8.0.2': + resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} + engines: {node: '>=12'} + + '@jridgewell/gen-mapping@0.3.8': + resolution: {integrity: sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==} + engines: {node: '>=6.0.0'} + + '@jridgewell/resolve-uri@3.1.2': + resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} + engines: {node: '>=6.0.0'} + + '@jridgewell/set-array@1.2.1': + resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} + engines: {node: '>=6.0.0'} + + '@jridgewell/sourcemap-codec@1.5.0': + resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} + + '@jridgewell/trace-mapping@0.3.25': + resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} + + '@jsonjoy.com/base64@1.1.2': + resolution: {integrity: sha512-q6XAnWQDIMA3+FTiOYajoYqySkO+JSat0ytXGSuRdq9uXE7o92gzuQwQM14xaCRlBLGq3v5miDGC4vkVTn54xA==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: '2' + + '@jsonjoy.com/json-pack@1.1.1': + resolution: {integrity: sha512-osjeBqMJ2lb/j/M8NCPjs1ylqWIcTRTycIhVB5pt6LgzgeRSb0YRZ7j9RfA8wIUrsr/medIuhVyonXRZWLyfdw==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: '2' + + '@jsonjoy.com/util@1.5.0': + resolution: {integrity: sha512-ojoNsrIuPI9g6o8UxhraZQSyF2ByJanAY4cTFbc8Mf2AXEF4aQRGY1dJxyJpuyav8r9FGflEt/Ff3u5Nt6YMPA==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: '2' + + '@kobalte/core@0.13.7': + resolution: {integrity: sha512-COhjWk1KnCkl3qMJDvdrOsvpTlJ9gMLdemkAn5SWfbPn/lxJYabejnNOk+b/ILGg7apzQycgbuo48qb8ppqsAg==} + peerDependencies: + solid-js: ^1.8.15 + + '@kobalte/utils@0.9.1': + resolution: {integrity: sha512-eeU60A3kprIiBDAfv9gUJX1tXGLuZiKMajUfSQURAF2pk4ZoMYiqIzmrMBvzcxP39xnYttgTyQEVLwiTZnrV4w==} + peerDependencies: + solid-js: ^1.8.8 + + '@mtcute/convert@0.19.4': + resolution: {integrity: sha512-Elqomoif50GMYhjt03kp4iOuQcK8elSlKPfS9gRnY5weAJxhHU6rcc+Qa+OZdnLSNoFRf0vjf0ZZNGvb4f2mmA==} + + '@mtcute/core@0.19.6': + resolution: {integrity: sha512-cBm8kdZglHm40nksF2wXn5RkKzlyo+9iJKi/mTk2fRRfCBgUSuP5f7l5OqA7HaJcwVRtbB46k9BLKs2H/jqhZg==} + + '@mtcute/file-id@0.19.0': + resolution: {integrity: sha512-r9r5JxchoVtYYMLPsf/wSnd5+KB4KmilWHywKQenf0DgKD+LCEN2FJpzY44RFE5dpy+eV5OHZ85zxA6EyYz/mA==} + + '@mtcute/tl-runtime@0.19.0': + resolution: {integrity: sha512-5nqzQexx4/at+lWnd8G5zCsuI7k+vw/cr3IecRaZ+cOyNKLYQX9zqK2n6Lx+A9K1/M9L33YSAVPSPQnC+q0QjQ==} + + '@mtcute/tl@196.0.0': + resolution: {integrity: sha512-/FEoLfGk7VatEMkBWn4naRQnolodJX0CL0C2rPJr+gmhLSVMQs1a9HqLMIUFYRlEvZ4ayk4ujOWvF9G64xvW5g==} + + '@mtcute/wasm@0.19.0': + resolution: {integrity: sha512-QvSCjNR3/Y4knRMfccNXAdPUCgnQfjmOD/LGGHgQq/5/7SfA7f4/wk7G/TdlnBPArqk58EvyrC5qeKEy81y9Xw==} + + '@mtcute/web@0.19.5': + resolution: {integrity: sha512-NtO9fKGLobAbm+Nm3OAy0gmY1sphz+Rv+JbUGBoPKY6PQUuT2uBCoRvutoHraBZd91Y2hExHMg2juWHgmJ6QPg==} + + '@nanostores/persistent@0.10.2': + resolution: {integrity: sha512-BEndnLhRC+yP7gXTESepBbSj8XNl8OXK9hu4xAgKC7MWJHKXnEqJMqY47LUyHxK6vYgFnisyHmqq+vq8AUFyIg==} + engines: {node: ^18.0.0 || >=20.0.0} + peerDependencies: + nanostores: ^0.9.0 || ^0.10.0 || ^0.11.0 + + '@nodelib/fs.scandir@2.1.5': + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} + engines: {node: '>= 8'} + + '@nodelib/fs.stat@2.0.5': + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} + engines: {node: '>= 8'} + + '@nodelib/fs.walk@1.2.8': + resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} + engines: {node: '>= 8'} + + '@pkgjs/parseargs@0.11.0': + resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} + engines: {node: '>=14'} + + '@pkgr/core@0.1.1': + resolution: {integrity: sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==} + engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} + + '@rollup/rollup-android-arm-eabi@4.30.1': + resolution: {integrity: sha512-pSWY+EVt3rJ9fQ3IqlrEUtXh3cGqGtPDH1FQlNZehO2yYxCHEX1SPsz1M//NXwYfbTlcKr9WObLnJX9FsS9K1Q==} + cpu: [arm] + os: [android] + + '@rollup/rollup-android-arm64@4.30.1': + resolution: {integrity: sha512-/NA2qXxE3D/BRjOJM8wQblmArQq1YoBVJjrjoTSBS09jgUisq7bqxNHJ8kjCHeV21W/9WDGwJEWSN0KQ2mtD/w==} + cpu: [arm64] + os: [android] + + '@rollup/rollup-darwin-arm64@4.30.1': + resolution: {integrity: sha512-r7FQIXD7gB0WJ5mokTUgUWPl0eYIH0wnxqeSAhuIwvnnpjdVB8cRRClyKLQr7lgzjctkbp5KmswWszlwYln03Q==} + cpu: [arm64] + os: [darwin] + + '@rollup/rollup-darwin-x64@4.30.1': + resolution: {integrity: sha512-x78BavIwSH6sqfP2xeI1hd1GpHL8J4W2BXcVM/5KYKoAD3nNsfitQhvWSw+TFtQTLZ9OmlF+FEInEHyubut2OA==} + cpu: [x64] + os: [darwin] + + '@rollup/rollup-freebsd-arm64@4.30.1': + resolution: {integrity: sha512-HYTlUAjbO1z8ywxsDFWADfTRfTIIy/oUlfIDmlHYmjUP2QRDTzBuWXc9O4CXM+bo9qfiCclmHk1x4ogBjOUpUQ==} + cpu: [arm64] + os: [freebsd] + + '@rollup/rollup-freebsd-x64@4.30.1': + resolution: {integrity: sha512-1MEdGqogQLccphhX5myCJqeGNYTNcmTyaic9S7CG3JhwuIByJ7J05vGbZxsizQthP1xpVx7kd3o31eOogfEirw==} + cpu: [x64] + os: [freebsd] + + '@rollup/rollup-linux-arm-gnueabihf@4.30.1': + resolution: {integrity: sha512-PaMRNBSqCx7K3Wc9QZkFx5+CX27WFpAMxJNiYGAXfmMIKC7jstlr32UhTgK6T07OtqR+wYlWm9IxzennjnvdJg==} + cpu: [arm] + os: [linux] + + '@rollup/rollup-linux-arm-musleabihf@4.30.1': + resolution: {integrity: sha512-B8Rcyj9AV7ZlEFqvB5BubG5iO6ANDsRKlhIxySXcF1axXYUyqwBok+XZPgIYGBgs7LDXfWfifxhw0Ik57T0Yug==} + cpu: [arm] + os: [linux] + + '@rollup/rollup-linux-arm64-gnu@4.30.1': + resolution: {integrity: sha512-hqVyueGxAj3cBKrAI4aFHLV+h0Lv5VgWZs9CUGqr1z0fZtlADVV1YPOij6AhcK5An33EXaxnDLmJdQikcn5NEw==} + cpu: [arm64] + os: [linux] + + '@rollup/rollup-linux-arm64-musl@4.30.1': + resolution: {integrity: sha512-i4Ab2vnvS1AE1PyOIGp2kXni69gU2DAUVt6FSXeIqUCPIR3ZlheMW3oP2JkukDfu3PsexYRbOiJrY+yVNSk9oA==} + cpu: [arm64] + os: [linux] + + '@rollup/rollup-linux-loongarch64-gnu@4.30.1': + resolution: {integrity: sha512-fARcF5g296snX0oLGkVxPmysetwUk2zmHcca+e9ObOovBR++9ZPOhqFUM61UUZ2EYpXVPN1redgqVoBB34nTpQ==} + cpu: [loong64] + os: [linux] + + '@rollup/rollup-linux-powerpc64le-gnu@4.30.1': + resolution: {integrity: sha512-GLrZraoO3wVT4uFXh67ElpwQY0DIygxdv0BNW9Hkm3X34wu+BkqrDrkcsIapAY+N2ATEbvak0XQ9gxZtCIA5Rw==} + cpu: [ppc64] + os: [linux] + + '@rollup/rollup-linux-riscv64-gnu@4.30.1': + resolution: {integrity: sha512-0WKLaAUUHKBtll0wvOmh6yh3S0wSU9+yas923JIChfxOaaBarmb/lBKPF0w/+jTVozFnOXJeRGZ8NvOxvk/jcw==} + cpu: [riscv64] + os: [linux] + + '@rollup/rollup-linux-s390x-gnu@4.30.1': + resolution: {integrity: sha512-GWFs97Ruxo5Bt+cvVTQkOJ6TIx0xJDD/bMAOXWJg8TCSTEK8RnFeOeiFTxKniTc4vMIaWvCplMAFBt9miGxgkA==} + cpu: [s390x] + os: [linux] + + '@rollup/rollup-linux-x64-gnu@4.30.1': + resolution: {integrity: sha512-UtgGb7QGgXDIO+tqqJ5oZRGHsDLO8SlpE4MhqpY9Llpzi5rJMvrK6ZGhsRCST2abZdBqIBeXW6WPD5fGK5SDwg==} + cpu: [x64] + os: [linux] + + '@rollup/rollup-linux-x64-musl@4.30.1': + resolution: {integrity: sha512-V9U8Ey2UqmQsBT+xTOeMzPzwDzyXmnAoO4edZhL7INkwQcaW1Ckv3WJX3qrrp/VHaDkEWIBWhRwP47r8cdrOow==} + cpu: [x64] + os: [linux] + + '@rollup/rollup-win32-arm64-msvc@4.30.1': + resolution: {integrity: sha512-WabtHWiPaFF47W3PkHnjbmWawnX/aE57K47ZDT1BXTS5GgrBUEpvOzq0FI0V/UYzQJgdb8XlhVNH8/fwV8xDjw==} + cpu: [arm64] + os: [win32] + + '@rollup/rollup-win32-ia32-msvc@4.30.1': + resolution: {integrity: sha512-pxHAU+Zv39hLUTdQQHUVHf4P+0C47y/ZloorHpzs2SXMRqeAWmGghzAhfOlzFHHwjvgokdFAhC4V+6kC1lRRfw==} + cpu: [ia32] + os: [win32] + + '@rollup/rollup-win32-x64-msvc@4.30.1': + resolution: {integrity: sha512-D6qjsXGcvhTjv0kI4fU8tUuBDF/Ueee4SVX79VfNDXZa64TfCW1Slkb6Z7O1p7vflqZjcmOVdZlqf8gvJxc6og==} + cpu: [x64] + os: [win32] + + '@solid-primitives/event-listener@2.3.3': + resolution: {integrity: sha512-DAJbl+F0wrFW2xmcV8dKMBhk9QLVLuBSW+TR4JmIfTaObxd13PuL7nqaXnaYKDWOYa6otB00qcCUIGbuIhSUgQ==} + peerDependencies: + solid-js: ^1.6.12 + + '@solid-primitives/keyed@1.4.0': + resolution: {integrity: sha512-mYbYAyyDofdcoReCBDVjZu3D6WrglHBIOaQQKVhcHTmHnpfEWJ4a2qG7f+dMASoss9p5hBnsEgUdsPAm6oIY1g==} + peerDependencies: + solid-js: ^1.6.12 + + '@solid-primitives/map@0.4.13': + resolution: {integrity: sha512-B1zyFbsiTQvqPr+cuPCXO72sRuczG9Swncqk5P74NCGw1VE8qa/Ry9GlfI1e/VdeQYHjan+XkbE3rO2GW/qKew==} + peerDependencies: + solid-js: ^1.6.12 + + '@solid-primitives/media@2.2.10': + resolution: {integrity: sha512-zICx9lXvevycyHmzUp1AfrxmUsF27JGvDygf51mHUpvy/Y2SmxkM6UHKstBDlRSpLUhPTnF0iHCfdfne6g4Fow==} + peerDependencies: + solid-js: ^1.6.12 + + '@solid-primitives/props@3.1.11': + resolution: {integrity: sha512-jZAKWwvDRHjiydIumDgMj68qviIbowQ1ci7nkEAgzgvanNkhKSQV8iPgR2jMk1uv7S2ZqXYHslVQTgJel/TEyg==} + peerDependencies: + solid-js: ^1.6.12 + + '@solid-primitives/refs@1.0.8': + resolution: {integrity: sha512-+jIsWG8/nYvhaCoG2Vg6CJOLgTmPKFbaCrNQKWfChalgUf9WrVxWw0CdJb3yX15n5lUcQ0jBo6qYtuVVmBLpBw==} + peerDependencies: + solid-js: ^1.6.12 + + '@solid-primitives/resize-observer@2.0.27': + resolution: {integrity: sha512-RmusjHqoA4U6MKI/T9yBJVDttASHpWBki1+YwM9zGXEDBqbysTa3lZpnlB244LzphQmobgeXVS78v0KtXVsF9g==} + peerDependencies: + solid-js: ^1.6.12 + + '@solid-primitives/rootless@1.4.5': + resolution: {integrity: sha512-GFJE9GC3ojx0aUKqAUZmQPyU8fOVMtnVNrkdk2yS4kd17WqVSpXpoTmo9CnOwA+PG7FTzdIkogvfLQSLs4lrww==} + peerDependencies: + solid-js: ^1.6.12 + + '@solid-primitives/static-store@0.0.9': + resolution: {integrity: sha512-8zaTXTEnQFqdwfkqWmGVb/OYgSTbRgxJSWQNfLuA+KnuW4RzTRQE2jzgnNJjJjaloruv9EHGvikmJzQJ5aOrEw==} + peerDependencies: + solid-js: ^1.6.12 + + '@solid-primitives/transition-group@1.0.5': + resolution: {integrity: sha512-G3FuqvL13kQ55WzWPX2ewiXdZ/1iboiX53195sq7bbkDbXqP6TYKiadwEdsaDogW5rPnPYAym3+xnsNplQJRKQ==} + peerDependencies: + solid-js: ^1.6.12 + + '@solid-primitives/trigger@1.1.0': + resolution: {integrity: sha512-00BbAiXV66WwjHuKZc3wr0+GLb9C24mMUmi3JdTpNFgHBbrQGrIHubmZDg36c5/7wH+E0GQtOOanwQS063PO+A==} + peerDependencies: + solid-js: ^1.6.12 + + '@solid-primitives/utils@6.2.3': + resolution: {integrity: sha512-CqAwKb2T5Vi72+rhebSsqNZ9o67buYRdEJrIFzRXz3U59QqezuuxPsyzTSVCacwS5Pf109VRsgCJQoxKRoECZQ==} + peerDependencies: + solid-js: ^1.6.12 + + '@stylistic/eslint-plugin@2.12.1': + resolution: {integrity: sha512-fubZKIHSPuo07FgRTn6S4Nl0uXPRPYVNpyZzIDGfp7Fny6JjNus6kReLD7NI380JXi4HtUTSOZ34LBuNPO1XLQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: '>=8.40.0' + + '@swc/helpers@0.5.15': + resolution: {integrity: sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==} + + '@types/babel__core@7.20.5': + resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} + + '@types/babel__generator@7.6.8': + resolution: {integrity: sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==} + + '@types/babel__template@7.4.4': + resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==} + + '@types/babel__traverse@7.20.6': + resolution: {integrity: sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==} + + '@types/debug@4.1.12': + resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==} + + '@types/doctrine@0.0.9': + resolution: {integrity: sha512-eOIHzCUSH7SMfonMG1LsC2f8vxBFtho6NGBznK41R84YzPuvSBzrhEps33IsQiOW9+VL6NQ9DbjQJznk/S4uRA==} + + '@types/eslint@9.6.1': + resolution: {integrity: sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==} + + '@types/estree@1.0.6': + resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==} + + '@types/events@3.0.0': + resolution: {integrity: sha512-EaObqwIvayI5a8dCzhFrjKzVwKLxjoG9T6Ppd5CEo07LRKfQ8Yokw54r5+Wq7FaBQ+yXRvQAYPrHwya1/UFt9g==} + + '@types/gunzip-maybe@1.4.0': + resolution: {integrity: sha512-dFP9GrYAR9KhsjTkWJ8q8Gsfql75YIKcg9DuQOj/IrlPzR7W+1zX+cclw1McV82UXAQ+Lpufvgk3e9bC8+HzgA==} + + '@types/json-schema@7.0.15': + resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} + + '@types/mdast@4.0.4': + resolution: {integrity: sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==} + + '@types/ms@0.7.34': + resolution: {integrity: sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==} + + '@types/node@22.10.5': + resolution: {integrity: sha512-F8Q+SeGimwOo86fiovQh8qiXfFEh2/ocYv7tU5pJ3EXMSSxk1Joj5wefpFK2fHTf/N6HKGSxIDBT9f3gCxXPkQ==} + + '@types/node@22.5.5': + resolution: {integrity: sha512-Xjs4y5UPO/CLdzpgR6GirZJx36yScjh73+2NlLlkFRSoQN8B0DpfXPdZGnvVmLRLOsqDpOfTNv7D9trgGhmOIA==} + + '@types/normalize-package-data@2.4.4': + resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==} + + '@types/semver@7.5.4': + resolution: {integrity: sha512-MMzuxN3GdFwskAnb6fz0orFvhfqi752yjaXylr0Rp4oDg5H0Zn1IuyRhDVvYOwAXoJirx2xuS16I3WjxnAIHiQ==} + + '@types/semver@7.5.8': + resolution: {integrity: sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==} + + '@types/tar-stream@3.1.2': + resolution: {integrity: sha512-qnIpUItVb5u8jl3kbrHofkM40ggO3YKSzc7TWqLYjDdwlrL7CiEAkDySaGfeUBLtC50RTfh2acdz51ItUbV7pQ==} + + '@types/unist@3.0.3': + resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==} + + '@typescript-eslint/eslint-plugin@8.19.1': + resolution: {integrity: sha512-tJzcVyvvb9h/PB96g30MpxACd9IrunT7GF9wfA9/0TJ1LxGOJx1TdPzSbBBnNED7K9Ka8ybJsnEpiXPktolTLg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + '@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0 + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <5.8.0' + + '@typescript-eslint/parser@8.19.1': + resolution: {integrity: sha512-67gbfv8rAwawjYx3fYArwldTQKoYfezNUT4D5ioWetr/xCrxXxvleo3uuiFuKfejipvq+og7mjz3b0G2bVyUCw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <5.8.0' + + '@typescript-eslint/scope-manager@8.19.1': + resolution: {integrity: sha512-60L9KIuN/xgmsINzonOcMDSB8p82h95hoBfSBtXuO4jlR1R9L1xSkmVZKgCPVfavDlXihh4ARNjXhh1gGnLC7Q==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@typescript-eslint/type-utils@8.19.1': + resolution: {integrity: sha512-Rp7k9lhDKBMRJB/nM9Ksp1zs4796wVNyihG9/TU9R6KCJDNkQbc2EOKjrBtLYh3396ZdpXLtr/MkaSEmNMtykw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <5.8.0' + + '@typescript-eslint/types@8.19.1': + resolution: {integrity: sha512-JBVHMLj7B1K1v1051ZaMMgLW4Q/jre5qGK0Ew6UgXz1Rqh+/xPzV1aW581OM00X6iOfyr1be+QyW8LOUf19BbA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@typescript-eslint/typescript-estree@8.19.1': + resolution: {integrity: sha512-jk/TZwSMJlxlNnqhy0Eod1PNEvCkpY6MXOXE/WLlblZ6ibb32i2We4uByoKPv1d0OD2xebDv4hbs3fm11SMw8Q==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <5.8.0' + + '@typescript-eslint/utils@8.19.1': + resolution: {integrity: sha512-IxG5gLO0Ne+KaUc8iW1A+XuKLd63o4wlbI1Zp692n1xojCl/THvgIKXJXBZixTh5dd5+yTJ/VXH7GJaaw21qXA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <5.8.0' + + '@typescript-eslint/visitor-keys@8.19.1': + resolution: {integrity: sha512-fzmjU8CHK853V/avYZAvuVut3ZTfwN5YtMaoi+X9Y9MA9keaWNHC3zEQ9zvyX/7Hj+5JkNyK1l7TOR2hevHB6Q==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@vitest/eslint-plugin@1.1.24': + resolution: {integrity: sha512-7IaENe4NNy33g0iuuy5bHY69JYYRjpv4lMx6H5Wp30W7ez2baLHwxsXF5TM4wa8JDYZt8ut99Ytoj7GiDO01hw==} + peerDependencies: + '@typescript-eslint/utils': '>= 8.0' + eslint: '>= 8.57.0' + typescript: '>= 5.0.0' + vitest: '*' + peerDependenciesMeta: + typescript: + optional: true + vitest: + optional: true + + '@vue/compiler-core@3.5.7': + resolution: {integrity: sha512-A0gay3lK71MddsSnGlBxRPOugIVdACze9L/rCo5X5srCyjQfZOfYtSFMJc3aOZCM+xN55EQpb4R97rYn/iEbSw==} + + '@vue/compiler-dom@3.5.7': + resolution: {integrity: sha512-GYWl3+gO8/g0ZdYaJ18fYHdI/WVic2VuuUd1NsPp60DWXKy+XjdhFsDW7FbUto8siYYZcosBGn9yVBkjhq1M8Q==} + + '@vue/compiler-sfc@3.5.7': + resolution: {integrity: sha512-EjOJtCWJrC7HqoCEzOwpIYHm+JH7YmkxC1hG6VkqIukYRqj8KFUlTLK6hcT4nGgtVov2+ZfrdrRlcaqS78HnBA==} + + '@vue/compiler-ssr@3.5.7': + resolution: {integrity: sha512-oZx+jXP2k5arV/8Ly3TpQbfFyimMw2ANrRqvHJoKjPqtEzazxQGZjCLOfq8TnZ3wy2TOXdqfmVp4q7FyYeHV4g==} + + '@vue/shared@3.5.7': + resolution: {integrity: sha512-NBE1PBIvzIedxIc2RZiKXvGbJkrZ2/hLf3h8GlS4/sP9xcXEZMFWOazFkNd6aGeUCMaproe5MHVYB3/4AW9q9g==} + + acorn-jsx@5.3.2: + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + + acorn@8.14.0: + resolution: {integrity: sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==} + engines: {node: '>=0.4.0'} + hasBin: true + + ajv@6.12.6: + resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} + + ansi-regex@5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} + + ansi-regex@6.1.0: + resolution: {integrity: sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==} + engines: {node: '>=12'} + + ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} + + ansi-styles@6.2.1: + resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} + engines: {node: '>=12'} + + any-promise@1.3.0: + resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} + + anymatch@3.1.3: + resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} + engines: {node: '>= 8'} + + are-docs-informative@0.0.2: + resolution: {integrity: sha512-ixiS0nLNNG5jNQzgZJNoUpBKdo9yTYZMGJ+QgT2jmjR7G7+QHRCc4v6LQ3NgE7EBJq+o0ams3waJwkrlBom8Ig==} + engines: {node: '>=14'} + + arg@5.0.2: + resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} + + argparse@2.0.1: + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + + autoprefixer@10.4.20: + resolution: {integrity: sha512-XY25y5xSv/wEoqzDyXXME4AFfkZI0P23z6Fs3YgymDnKJkCGOnkL0iTxCa85UTqaSgfcqyf3UA6+c7wUvx/16g==} + engines: {node: ^10 || ^12 || >=14} + hasBin: true + peerDependencies: + postcss: ^8.1.0 + + b4a@1.6.6: + resolution: {integrity: sha512-5Tk1HLk6b6ctmjIkAcU/Ujv/1WqiDl0F0JdRCR80VsOcUlHcu7pWeWRlOqQLHfDEsVx9YH/aif5AG4ehoCtTmg==} + + babel-plugin-jsx-dom-expressions@0.39.5: + resolution: {integrity: sha512-dwyVkszHRsZCXfFusu3xq1DJS7twhgLrjEpMC1gtTfJG1xSrMMKWWhdl1SFFFNXrvYDsoHiRxSbku/TzLxHNxg==} + peerDependencies: + '@babel/core': ^7.20.12 + + babel-preset-solid@1.9.3: + resolution: {integrity: sha512-jvlx5wDp8s+bEF9sGFw/84SInXOA51ttkUEroQziKMbxplXThVKt83qB6bDTa1HuLNatdU9FHpFOiQWs1tLQIg==} + peerDependencies: + '@babel/core': ^7.0.0 + + balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + + bare-events@2.5.0: + resolution: {integrity: sha512-/E8dDe9dsbLyh2qrZ64PEPadOQ0F4gbl1sUJOrmph7xOiIxfY8vwab/4bFLh4Y88/Hk/ujKcrQKc+ps0mv873A==} + + binary-extensions@2.3.0: + resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} + engines: {node: '>=8'} + + boolbase@1.0.0: + resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} + + brace-expansion@1.1.11: + resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} + + brace-expansion@2.0.1: + resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} + + braces@3.0.3: + resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} + engines: {node: '>=8'} + + browserify-zlib@0.1.4: + resolution: {integrity: sha512-19OEpq7vWgsH6WkvkBJQDFvJS1uPcbFOQ4v9CU839dO+ZZXUZO6XpE6hNCqvlIIj+4fZvRiJ6DsAQ382GwiyTQ==} + + browserslist@4.24.4: + resolution: {integrity: sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + + buffer-from@1.1.2: + resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} + + builtin-modules@3.3.0: + resolution: {integrity: sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==} + engines: {node: '>=6'} + + callsites@3.1.0: + resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} + engines: {node: '>=6'} + + camelcase-css@2.0.1: + resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} + engines: {node: '>= 6'} + + caniuse-lite@1.0.30001692: + resolution: {integrity: sha512-A95VKan0kdtrsnMubMKxEKUKImOPSuCpYgxSQBo036P5YYgVIcOYJEgt/txJWqObiRQeISNCfef9nvlQ0vbV7A==} + + ccount@2.0.1: + resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} + + chalk@4.1.2: + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} + + character-entities@2.0.2: + resolution: {integrity: sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==} + + chokidar@3.6.0: + resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} + engines: {node: '>= 8.10.0'} + + ci-info@4.1.0: + resolution: {integrity: sha512-HutrvTNsF48wnxkzERIXOe5/mlcfFcbfCmwcg6CJnizbSue78AbDt+1cgl26zwn61WFxhcPykPfZrbqjGmBb4A==} + engines: {node: '>=8'} + + class-variance-authority@0.7.1: + resolution: {integrity: sha512-Ka+9Trutv7G8M6WT6SeiRWz792K5qEqIGEGzXKhAE6xOWAY6pPH8U+9IY3oCMv6kqTmLsv7Xh/2w2RigkePMsg==} + + clean-regexp@1.0.0: + resolution: {integrity: sha512-GfisEZEJvzKrmGWkvfhgzcz/BllN1USeqD2V6tg14OAOgaCD2Z/PUEuxnAZ/nPvmaHRG7a8y77p1T/IRQ4D1Hw==} + engines: {node: '>=4'} + + cliui@8.0.1: + resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} + engines: {node: '>=12'} + + clsx@2.1.1: + resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==} + engines: {node: '>=6'} + + color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} + + color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + + commander@4.1.1: + resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} + engines: {node: '>= 6'} + + commander@8.3.0: + resolution: {integrity: sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==} + engines: {node: '>= 12'} + + comment-parser@1.4.1: + resolution: {integrity: sha512-buhp5kePrmda3vhc5B9t7pUQXAb2Tnd0qgpkIhPhkHXxJpiPJ11H0ZEU0oBpJ2QztSbzG/ZxMj/CHsYJqRHmyg==} + engines: {node: '>= 12.0.0'} + + concat-map@0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + + confbox@0.1.8: + resolution: {integrity: sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==} + + convert-source-map@2.0.0: + resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} + + core-js-compat@3.40.0: + resolution: {integrity: sha512-0XEDpr5y5mijvw8Lbc6E5AkjrHfp7eEoPlu36SWeAbcL8fn1G1ANe8DBlo2XoNN89oVpxWwOjYIPVzR4ZvsKCQ==} + + core-util-is@1.0.3: + resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} + + cross-spawn@7.0.6: + resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} + engines: {node: '>= 8'} + + cssesc@3.0.0: + resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} + engines: {node: '>=4'} + hasBin: true + + csstype@3.1.3: + resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} + + debug@3.2.7: + resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + debug@4.4.0: + resolution: {integrity: sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + decode-named-character-reference@1.0.2: + resolution: {integrity: sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==} + + deep-is@0.1.4: + resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} + + dequal@2.0.3: + resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} + engines: {node: '>=6'} + + devlop@1.1.0: + resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==} + + didyoumean@1.2.2: + resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} + + dlv@1.1.3: + resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} + + doctrine@3.0.0: + resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} + engines: {node: '>=6.0.0'} + + duplexify@3.7.1: + resolution: {integrity: sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==} + + eastasianwidth@0.2.0: + resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} + + electron-to-chromium@1.5.80: + resolution: {integrity: sha512-LTrKpW0AqIuHwmlVNV+cjFYTnXtM9K37OGhpe0ZI10ScPSxqVSryZHIY3WnCS5NSYbBODRTZyhRMS2h5FAEqAw==} + + emoji-regex@8.0.0: + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + + emoji-regex@9.2.2: + resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + + end-of-stream@1.4.4: + resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} + + enhanced-resolve@5.18.0: + resolution: {integrity: sha512-0/r0MySGYG8YqlayBZ6MuCfECmHFdJ5qyPh8s8wa5Hnm6SaFLSK1VYCbj+NKp090Nm1caZhD+QTnmxO7esYGyQ==} + engines: {node: '>=10.13.0'} + + entities@4.5.0: + resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} + engines: {node: '>=0.12'} + + error-ex@1.3.2: + resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} + + es-module-lexer@1.6.0: + resolution: {integrity: sha512-qqnD1yMU6tk/jnaMosogGySTZP8YtUgAffA9nMN+E/rjxcfRQ6IEk7IiozUjgxKoFHBGjTLnrHB/YC45r/59EQ==} + + esbuild@0.21.5: + resolution: {integrity: sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==} + engines: {node: '>=12'} + hasBin: true + + esbuild@0.24.2: + resolution: {integrity: sha512-+9egpBW8I3CD5XPe0n6BfT5fxLzxrlDzqydF3aviG+9ni1lDC/OvMHcxqEFV0+LANZG5R1bFMWfUrjVsdwxJvA==} + engines: {node: '>=18'} + hasBin: true + + escalade@3.2.0: + resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} + engines: {node: '>=6'} + + escape-string-regexp@1.0.5: + resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} + engines: {node: '>=0.8.0'} + + escape-string-regexp@4.0.0: + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} + engines: {node: '>=10'} + + escape-string-regexp@5.0.0: + resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} + engines: {node: '>=12'} + + eslint-compat-utils@0.5.1: + resolution: {integrity: sha512-3z3vFexKIEnjHE3zCMRo6fn/e44U7T1khUjg+Hp0ZQMCigh28rALD0nPFBcGZuiLC5rLZa2ubQHDRln09JfU2Q==} + engines: {node: '>=12'} + peerDependencies: + eslint: '>=6.0.0' + + eslint-compat-utils@0.6.4: + resolution: {integrity: sha512-/u+GQt8NMfXO8w17QendT4gvO5acfxQsAKirAt0LVxDnr2N8YLCVbregaNc/Yhp7NM128DwCaRvr8PLDfeNkQw==} + engines: {node: '>=12'} + peerDependencies: + eslint: '>=6.0.0' + + eslint-config-flat-gitignore@1.0.0: + resolution: {integrity: sha512-EWpSLrAP80IdcYK5sIhq/qAY0pmUdBnbzqzpE3QAn6H6wLBN26cMRoMNU9Di8upTzUSL6TXeYRxWhTYuz8+UQA==} + peerDependencies: + eslint: ^9.5.0 + + eslint-flat-config-utils@1.0.0: + resolution: {integrity: sha512-tmzcXeCsa24/u3glyw1Mo7KfC/r9a5Vsu1nPCkX7uefD7C5Z4x922Q2KP/drhTLbOI5lcFHYpfXjKhqqnUWObw==} + + eslint-import-resolver-node@0.3.9: + resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==} + + eslint-json-compat-utils@0.2.1: + resolution: {integrity: sha512-YzEodbDyW8DX8bImKhAcCeu/L31Dd/70Bidx2Qex9OFUtgzXLqtfWL4Hr5fM/aCCB8QUZLuJur0S9k6UfgFkfg==} + engines: {node: '>=12'} + peerDependencies: + '@eslint/json': '*' + eslint: '*' + jsonc-eslint-parser: ^2.4.0 + peerDependenciesMeta: + '@eslint/json': + optional: true + + eslint-merge-processors@1.0.0: + resolution: {integrity: sha512-4GybyHmhXtT7/W8RAouQzNM0791sYasJCTYHIAYjuiJvbNFY0jMKkoESREhX+mjX37dxiN6v4EqhZ1nc0tJF7A==} + peerDependencies: + eslint: '*' + + eslint-plugin-antfu@2.7.0: + resolution: {integrity: sha512-gZM3jq3ouqaoHmUNszb1Zo2Ux7RckSvkGksjLWz9ipBYGSv1EwwBETN6AdiUXn+RpVHXTbEMPAPlXJazcA6+iA==} + peerDependencies: + eslint: '*' + + eslint-plugin-command@2.1.0: + resolution: {integrity: sha512-S3gvDSCRHLdRG7NYaevLvGA0g/txOju7NEB2di7SE80NtbCwsvpi/fft045YuTZpOzqCRUfuye39raldmpXXYQ==} + peerDependencies: + eslint: '*' + + eslint-plugin-es-x@7.8.0: + resolution: {integrity: sha512-7Ds8+wAAoV3T+LAKeu39Y5BzXCrGKrcISfgKEqTS4BDN8SFEDQd0S43jiQ8vIa3wUKD07qitZdfzlenSi8/0qQ==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + eslint: '>=8' + + eslint-plugin-import-x@4.6.1: + resolution: {integrity: sha512-wluSUifMIb7UfwWXqx7Yx0lE/SGCcGXECLx/9bCmbY2nneLwvAZ4vkd1IXDjPKFvdcdUgr1BaRnaRpx3k2+Pfw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + + eslint-plugin-jsdoc@50.6.1: + resolution: {integrity: sha512-UWyaYi6iURdSfdVVqvfOs2vdCVz0J40O/z/HTsv2sFjdjmdlUI/qlKLOTmwbPQ2tAfQnE5F9vqx+B+poF71DBQ==} + engines: {node: '>=18'} + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 || ^9.0.0 + + eslint-plugin-jsonc@2.18.2: + resolution: {integrity: sha512-SDhJiSsWt3nItl/UuIv+ti4g3m4gpGkmnUJS9UWR3TrpyNsIcnJoBRD7Kof6cM4Rk3L0wrmY5Tm3z7ZPjR2uGg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: '>=6.0.0' + + eslint-plugin-n@17.15.1: + resolution: {integrity: sha512-KFw7x02hZZkBdbZEFQduRGH4VkIH4MW97ClsbAM4Y4E6KguBJWGfWG1P4HEIpZk2bkoWf0bojpnjNAhYQP8beA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: '>=8.23.0' + + eslint-plugin-no-only-tests@3.3.0: + resolution: {integrity: sha512-brcKcxGnISN2CcVhXJ/kEQlNa0MEfGRtwKtWA16SkqXHKitaKIMrfemJKLKX1YqDU5C/5JY3PvZXd5jEW04e0Q==} + engines: {node: '>=5.0.0'} + + eslint-plugin-perfectionist@4.6.0: + resolution: {integrity: sha512-kOswTebUK0LlYExRwqz7YQtvyTUIRsKfp8XrwBBeHGh2e8MBOS6K+7VvG6HpmNckyKySi1I96uPeAlptMFGcRQ==} + engines: {node: ^18.0.0 || >=20.0.0} + peerDependencies: + eslint: '>=8.0.0' + + eslint-plugin-regexp@2.7.0: + resolution: {integrity: sha512-U8oZI77SBtH8U3ulZ05iu0qEzIizyEDXd+BWHvyVxTOjGwcDcvy/kEpgFG4DYca2ByRLiVPFZ2GeH7j1pdvZTA==} + engines: {node: ^18 || >=20} + peerDependencies: + eslint: '>=8.44.0' + + eslint-plugin-solid@0.14.5: + resolution: {integrity: sha512-nfuYK09ah5aJG/oEN6P1qziy1zLgW4PDWe75VNPi4CEFYk1x2AEqwFeQfEPR7gNn0F2jOeqKhx2E+5oNCOBYWQ==} + engines: {node: '>=18.0.0'} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 || ^9.0.0 + typescript: '>=4.8.4' + + eslint-plugin-tailwindcss@3.17.5: + resolution: {integrity: sha512-8Mi7p7dm+mO1dHgRHHFdPu4RDTBk69Cn4P0B40vRQR+MrguUpwmKwhZy1kqYe3Km8/4nb+cyrCF+5SodOEmaow==} + engines: {node: '>=18.12.0'} + peerDependencies: + tailwindcss: ^3.4.0 + + eslint-plugin-toml@0.12.0: + resolution: {integrity: sha512-+/wVObA9DVhwZB1nG83D2OAQRrcQZXy+drqUnFJKymqnmbnbfg/UPmEMCKrJNcEboUGxUjYrJlgy+/Y930mURQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: '>=6.0.0' + + eslint-plugin-unicorn@56.0.1: + resolution: {integrity: sha512-FwVV0Uwf8XPfVnKSGpMg7NtlZh0G0gBarCaFcMUOoqPxXryxdYxTRRv4kH6B9TFCVIrjRXG+emcxIk2ayZilog==} + engines: {node: '>=18.18'} + peerDependencies: + eslint: '>=8.56.0' + + eslint-plugin-unused-imports@4.1.4: + resolution: {integrity: sha512-YptD6IzQjDardkl0POxnnRBhU1OEePMV0nd6siHaRBbd+lyh6NAhFEobiznKU7kTsSsDeSD62Pe7kAM1b7dAZQ==} + peerDependencies: + '@typescript-eslint/eslint-plugin': ^8.0.0-0 || ^7.0.0 || ^6.0.0 || ^5.0.0 + eslint: ^9.0.0 || ^8.0.0 + peerDependenciesMeta: + '@typescript-eslint/eslint-plugin': + optional: true + + eslint-plugin-vue@9.32.0: + resolution: {integrity: sha512-b/Y05HYmnB/32wqVcjxjHZzNpwxj1onBOvqW89W+V+XNG1dRuaFbNd3vT9CLbr2LXjEoq+3vn8DanWf7XU22Ug==} + engines: {node: ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.2.0 || ^7.0.0 || ^8.0.0 || ^9.0.0 + + eslint-plugin-yml@1.16.0: + resolution: {integrity: sha512-t4MNCetPjTn18/fUDlQ/wKkcYjnuLYKChBrZ0qUaNqRigVqChHWzTP8SrfFi5s4keX3vdlkWRSu8zHJMdKwxWQ==} + engines: {node: ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: '>=6.0.0' + + eslint-processor-vue-blocks@1.0.0: + resolution: {integrity: sha512-q+Wn9bCml65NwYtuINVCE5dUqZa/uVoY4jfc8qEDwWbcGqdRyfJJmAONNZsreA4Q9EJqjYGjk8Hk1QuwAktgkw==} + peerDependencies: + '@vue/compiler-sfc': ^3.3.0 + eslint: ^8.50.0 || ^9.0.0 + + eslint-scope@7.2.2: + resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + eslint-scope@8.2.0: + resolution: {integrity: sha512-PHlWUfG6lvPc3yvP5A4PNyBL1W8fkDUccmI21JUu/+GKZBoH/W5u6usENXUrWFRsyoW5ACUjFGgAFQp5gUlb/A==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + eslint-visitor-keys@3.4.3: + resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + eslint-visitor-keys@4.2.0: + resolution: {integrity: sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + eslint@9.11.0: + resolution: {integrity: sha512-yVS6XODx+tMFMDFcG4+Hlh+qG7RM6cCJXtQhCKLSsr3XkLvWggHjCqjfh0XsPPnt1c56oaT6PMgW9XWQQjdHXA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + hasBin: true + peerDependencies: + jiti: '*' + peerDependenciesMeta: + jiti: + optional: true + + espree@10.3.0: + resolution: {integrity: sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + espree@9.6.1: + resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + esquery@1.6.0: + resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==} + engines: {node: '>=0.10'} + + esrecurse@4.3.0: + resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} + engines: {node: '>=4.0'} + + estraverse@5.3.0: + resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} + engines: {node: '>=4.0'} + + estree-walker@2.0.2: + resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} + + esutils@2.0.3: + resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} + engines: {node: '>=0.10.0'} + + fast-deep-equal@3.1.3: + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + + fast-fifo@1.3.2: + resolution: {integrity: sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==} + + fast-glob@3.3.3: + resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==} + engines: {node: '>=8.6.0'} + + fast-json-stable-stringify@2.1.0: + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + + fast-levenshtein@2.0.6: + resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} + + fast-plist@0.1.3: + resolution: {integrity: sha512-d9cEfo/WcOezgPLAC/8t8wGb6YOD6JTCPMw2QcG2nAdFmyY+9rTUizCTaGjIZAloWENTEUMAPpkUAIJJJ0i96A==} + + fastq@1.18.0: + resolution: {integrity: sha512-QKHXPW0hD8g4UET03SdOdunzSouc9N4AuHdsX8XNcTsuz+yYFILVNIX4l9yHABMhiEI9Db0JTTIpu0wB+Y1QQw==} + + fflate@0.8.2: + resolution: {integrity: sha512-cPJU47OaAoCbg0pBvzsgpTPhmhqI5eJjh/JIu8tPj5q+T7iLvW/JAYUqmE7KOB4R1ZyEhzBaIQpQpardBF5z8A==} + + file-entry-cache@8.0.0: + resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} + engines: {node: '>=16.0.0'} + + filesize@10.1.6: + resolution: {integrity: sha512-sJslQKU2uM33qH5nqewAwVB2QgR6w1aMNsYUp3aN5rMRyXEwJGmZvaWzeJFNTOXWlHQyBFCWrdj3fV/fsTOX8w==} + engines: {node: '>= 10.4.0'} + + fill-range@7.1.1: + resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} + engines: {node: '>=8'} + + find-up-simple@1.0.0: + resolution: {integrity: sha512-q7Us7kcjj2VMePAa02hDAF6d+MzsdsAWEwYyOpwUtlerRBkOEPBCRZrAV4XfcSN8fHAgaD0hP7miwoay6DCprw==} + engines: {node: '>=18'} + + find-up@4.1.0: + resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} + engines: {node: '>=8'} + + find-up@5.0.0: + resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} + engines: {node: '>=10'} + + flat-cache@4.0.1: + resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} + engines: {node: '>=16'} + + flatted@3.3.2: + resolution: {integrity: sha512-AiwGJM8YcNOaobumgtng+6NHuOqC3A7MixFeDafM3X9cIUM+xUXoS5Vfgf+OihAYe20fxqNM9yPBXJzRtZ/4eA==} + + foreground-child@3.3.0: + resolution: {integrity: sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==} + engines: {node: '>=14'} + + fraction.js@4.3.7: + resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==} + + fs-extra@7.0.1: + resolution: {integrity: sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==} + engines: {node: '>=6 <7 || >=8'} + + fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + + function-bind@1.1.2: + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + + gensync@1.0.0-beta.2: + resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} + engines: {node: '>=6.9.0'} + + get-caller-file@2.0.5: + resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} + engines: {node: 6.* || 8.* || >= 10.*} + + get-tsconfig@4.8.1: + resolution: {integrity: sha512-k9PN+cFBmaLWtVz29SkUoqU5O0slLuHJXt/2P+tMVFT+phsSGXGkp9t3rQIqdz0e+06EHNGs3oM6ZX1s2zHxRg==} + + glob-parent@5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} + + glob-parent@6.0.2: + resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} + engines: {node: '>=10.13.0'} + + glob@10.4.5: + resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==} + hasBin: true + + globals@11.12.0: + resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} + engines: {node: '>=4'} + + globals@13.24.0: + resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==} + engines: {node: '>=8'} + + globals@14.0.0: + resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} + engines: {node: '>=18'} + + globals@15.14.0: + resolution: {integrity: sha512-OkToC372DtlQeje9/zHIo5CT8lRP/FUgEOKBEhU4e0abL7J7CD24fD9ohiLN5hagG/kWCYj4K5oaxxtj2Z0Dig==} + engines: {node: '>=18'} + + graceful-fs@4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + + graphemer@1.4.0: + resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} + + gunzip-maybe@1.4.2: + resolution: {integrity: sha512-4haO1M4mLO91PW57BMsDFf75UmwoRX0GkdD+Faw+Lr+r/OZrOCS0pIBwOL1xCKQqnQzbNFGgK2V2CpBUPeFNTw==} + hasBin: true + + has-flag@4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} + + hasown@2.0.2: + resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} + engines: {node: '>= 0.4'} + + hosted-git-info@2.8.9: + resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} + + html-entities@2.3.3: + resolution: {integrity: sha512-DV5Ln36z34NNTDgnz0EWGBLZENelNAtkiFA4kyNOG2tDI6Mz1uSWiq1wAKdyjnJwyDiDO7Fa2SO1CTxPXL8VxA==} + + html-tags@3.3.1: + resolution: {integrity: sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==} + engines: {node: '>=8'} + + hyperdyperid@1.2.0: + resolution: {integrity: sha512-Y93lCzHYgGWdrJ66yIktxiaGULYc6oGiABxhcO5AufBeOyoIdZF7bIfLaOrbM0iGIOXQQgxxRrFEnb+Y6w1n4A==} + engines: {node: '>=10.18'} + + idb@8.0.1: + resolution: {integrity: sha512-EkBCzUZSdhJV8PxMSbeEV//xguVKZu9hZZulM+2gHXI0t2hGVU3eYE6/XnH77DS6FM2FY8wl17aDcu9vXpvLWQ==} + + ignore@5.3.2: + resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} + engines: {node: '>= 4'} + + import-fresh@3.3.0: + resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} + engines: {node: '>=6'} + + imurmurhash@0.1.4: + resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} + engines: {node: '>=0.8.19'} + + indent-string@4.0.0: + resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} + engines: {node: '>=8'} + + inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + + inline-style-parser@0.2.4: + resolution: {integrity: sha512-0aO8FkhNZlj/ZIbNi7Lxxr12obT7cL1moPfE4tg1LkX7LlLfC6DeX4l2ZEud1ukP9jNQyNnfzQVqwbwmAATY4Q==} + + ipaddr.js@2.2.0: + resolution: {integrity: sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA==} + engines: {node: '>= 10'} + + is-arrayish@0.2.1: + resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} + + is-binary-path@2.1.0: + resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} + engines: {node: '>=8'} + + is-builtin-module@3.2.1: + resolution: {integrity: sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==} + engines: {node: '>=6'} + + is-core-module@2.16.1: + resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==} + engines: {node: '>= 0.4'} + + is-deflate@1.0.0: + resolution: {integrity: sha512-YDoFpuZWu1VRXlsnlYMzKyVRITXj7Ej/V9gXQ2/pAe7X1J7M/RNOqaIYi6qUn+B7nGyB9pDXrv02dsB58d2ZAQ==} + + is-extglob@2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} + + is-fullwidth-code-point@3.0.0: + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} + + is-glob@4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} + + is-gzip@1.0.0: + resolution: {integrity: sha512-rcfALRIb1YewtnksfRIHGcIY93QnK8BIQ/2c9yDYcG/Y6+vRoJuTWBmmSEbyLLYtXm7q35pHOHbZFQBaLrhlWQ==} + engines: {node: '>=0.10.0'} + + is-html@2.0.0: + resolution: {integrity: sha512-S+OpgB5i7wzIue/YSE5hg0e5ZYfG3hhpNh9KGl6ayJ38p7ED6wxQLd1TV91xHpcTvw90KMJ9EwN3F/iNflHBVg==} + engines: {node: '>=8'} + + is-number@7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + + is-path-inside@3.0.3: + resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} + engines: {node: '>=8'} + + is-what@4.1.16: + resolution: {integrity: sha512-ZhMwEosbFJkA0YhFnNDgTM4ZxDRsS6HqTo7qsZM08fehyRYIYa0yHu5R6mgo1n/8MgaPBXiPimPD77baVFYg+A==} + engines: {node: '>=12.13'} + + isarray@1.0.0: + resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} + + isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + + jackspeak@3.4.3: + resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} + + jiti@1.21.7: + resolution: {integrity: sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==} + hasBin: true + + js-tokens@4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + + js-yaml@4.1.0: + resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} + hasBin: true + + jsdoc-type-pratt-parser@4.1.0: + resolution: {integrity: sha512-Hicd6JK5Njt2QB6XYFS7ok9e37O8AYk3jTcppG4YVQnYjOemymvTcmc7OWsmq/Qqj5TdRFO5/x/tIPmBeRtGHg==} + engines: {node: '>=12.0.0'} + + jsesc@0.5.0: + resolution: {integrity: sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==} + hasBin: true + + jsesc@3.1.0: + resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==} + engines: {node: '>=6'} + hasBin: true + + json-buffer@3.0.1: + resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} + + json-parse-even-better-errors@2.3.1: + resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} + + json-schema-traverse@0.4.1: + resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} + + json-stable-stringify-without-jsonify@1.0.1: + resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} + + json5@2.2.3: + resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} + engines: {node: '>=6'} + hasBin: true + + jsonc-eslint-parser@2.4.0: + resolution: {integrity: sha512-WYDyuc/uFcGp6YtM2H0uKmUwieOuzeE/5YocFJLnLfclZ4inf3mRn8ZVy1s7Hxji7Jxm6Ss8gqpexD/GlKoGgg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + jsonfile@4.0.0: + resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} + + kebab-case@1.0.2: + resolution: {integrity: sha512-7n6wXq4gNgBELfDCpzKc+mRrZFs7D+wgfF5WRFLNAr4DA/qtr9Js8uOAVAfHhuLMfAcQ0pRKqbpjx+TcJVdE1Q==} + + keyv@4.5.4: + resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} + + known-css-properties@0.30.0: + resolution: {integrity: sha512-VSWXYUnsPu9+WYKkfmJyLKtIvaRJi1kXUqVmBACORXZQxT5oZDsoZ2vQP+bQFDnWtpI/4eq3MLoRMjI2fnLzTQ==} + + levn@0.4.1: + resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} + engines: {node: '>= 0.8.0'} + + lilconfig@3.1.3: + resolution: {integrity: sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==} + engines: {node: '>=14'} + + lines-and-columns@1.2.4: + resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + + local-pkg@1.0.0: + resolution: {integrity: sha512-bbgPw/wmroJsil/GgL4qjDzs5YLTBMQ99weRsok1XCDccQeehbHA/I1oRvk2NPtr7KGZgT/Y5tPRnAtMqeG2Kg==} + engines: {node: '>=14'} + + locate-path@5.0.0: + resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} + engines: {node: '>=8'} + + locate-path@6.0.0: + resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} + engines: {node: '>=10'} + + lodash.merge@4.6.2: + resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} + + lodash@4.17.21: + resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} + + long@5.2.3: + resolution: {integrity: sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q==} + + longest-streak@3.1.0: + resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==} + + lru-cache@10.4.3: + resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} + + lru-cache@5.1.1: + resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} + + lucide-solid@0.445.0: + resolution: {integrity: sha512-YnrhONLbyFuJX8gVE0SUOQ9slugOghLzJyWf7HvOr3Ngkb0vm0tNQ9iGxqxY9iDwuratxkkOj82Q3C29aJoZkA==} + peerDependencies: + solid-js: ^1.4.7 + + magic-string@0.30.17: + resolution: {integrity: sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==} + + markdown-table@3.0.4: + resolution: {integrity: sha512-wiYz4+JrLyb/DqW2hkFJxP7Vd7JuTDm77fvbM8VfEQdmSMqcImWeeRbHwZjBjIFki/VaMK2BhFi7oUUZeM5bqw==} + + mdast-util-find-and-replace@3.0.2: + resolution: {integrity: sha512-Tmd1Vg/m3Xz43afeNxDIhWRtFZgM2VLyaf4vSTYwudTyeuTneoL3qtWMA5jeLyz/O1vDJmmV4QuScFCA2tBPwg==} + + mdast-util-from-markdown@2.0.2: + resolution: {integrity: sha512-uZhTV/8NBuw0WHkPTrCqDOl0zVe1BIng5ZtHoDk49ME1qqcjYmmLmOf0gELgcRMxN4w2iuIeVso5/6QymSrgmA==} + + mdast-util-gfm-autolink-literal@2.0.1: + resolution: {integrity: sha512-5HVP2MKaP6L+G6YaxPNjuL0BPrq9orG3TsrZ9YXbA3vDw/ACI4MEsnoDpn6ZNm7GnZgtAcONJyPhOP8tNJQavQ==} + + mdast-util-gfm-footnote@2.0.0: + resolution: {integrity: sha512-5jOT2boTSVkMnQ7LTrd6n/18kqwjmuYqo7JUPe+tRCY6O7dAuTFMtTPauYYrMPpox9hlN0uOx/FL8XvEfG9/mQ==} + + mdast-util-gfm-strikethrough@2.0.0: + resolution: {integrity: sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg==} + + mdast-util-gfm-table@2.0.0: + resolution: {integrity: sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg==} + + mdast-util-gfm-task-list-item@2.0.0: + resolution: {integrity: sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ==} + + mdast-util-gfm@3.0.0: + resolution: {integrity: sha512-dgQEX5Amaq+DuUqf26jJqSK9qgixgd6rYDHAv4aTBuA92cTknZlKpPfa86Z/s8Dj8xsAQpFfBmPUHWJBWqS4Bw==} + + mdast-util-phrasing@4.1.0: + resolution: {integrity: sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==} + + mdast-util-to-markdown@2.1.2: + resolution: {integrity: sha512-xj68wMTvGXVOKonmog6LwyJKrYXZPvlwabaryTjLh9LuvovB/KAH+kvi8Gjj+7rJjsFi23nkUxRQv1KqSroMqA==} + + mdast-util-to-string@4.0.0: + resolution: {integrity: sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==} + + memfs@4.17.0: + resolution: {integrity: sha512-4eirfZ7thblFmqFjywlTmuWVSvccHAJbn1r8qQLzmTO11qcqpohOjmY2mFce6x7x7WtskzRqApPD0hv+Oa74jg==} + engines: {node: '>= 4.0.0'} + + merge-anything@5.1.7: + resolution: {integrity: sha512-eRtbOb1N5iyH0tkQDAoQ4Ipsp/5qSR79Dzrz8hEPxRX10RWWR/iQXdoKmBSRCThY1Fh5EhISDtpSc93fpxUniQ==} + engines: {node: '>=12.13'} + + merge2@1.4.1: + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} + + micromark-core-commonmark@2.0.2: + resolution: {integrity: sha512-FKjQKbxd1cibWMM1P9N+H8TwlgGgSkWZMmfuVucLCHaYqeSvJ0hFeHsIa65pA2nYbes0f8LDHPMrd9X7Ujxg9w==} + + micromark-extension-gfm-autolink-literal@2.1.0: + resolution: {integrity: sha512-oOg7knzhicgQ3t4QCjCWgTmfNhvQbDDnJeVu9v81r7NltNCVmhPy1fJRX27pISafdjL+SVc4d3l48Gb6pbRypw==} + + micromark-extension-gfm-footnote@2.1.0: + resolution: {integrity: sha512-/yPhxI1ntnDNsiHtzLKYnE3vf9JZ6cAisqVDauhp4CEHxlb4uoOTxOCJ+9s51bIB8U1N1FJ1RXOKTIlD5B/gqw==} + + micromark-extension-gfm-strikethrough@2.1.0: + resolution: {integrity: sha512-ADVjpOOkjz1hhkZLlBiYA9cR2Anf8F4HqZUO6e5eDcPQd0Txw5fxLzzxnEkSkfnD0wziSGiv7sYhk/ktvbf1uw==} + + micromark-extension-gfm-table@2.1.0: + resolution: {integrity: sha512-Ub2ncQv+fwD70/l4ou27b4YzfNaCJOvyX4HxXU15m7mpYY+rjuWzsLIPZHJL253Z643RpbcP1oeIJlQ/SKW67g==} + + micromark-extension-gfm-tagfilter@2.0.0: + resolution: {integrity: sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg==} + + micromark-extension-gfm-task-list-item@2.1.0: + resolution: {integrity: sha512-qIBZhqxqI6fjLDYFTBIa4eivDMnP+OZqsNwmQ3xNLE4Cxwc+zfQEfbs6tzAo2Hjq+bh6q5F+Z8/cksrLFYWQQw==} + + micromark-extension-gfm@3.0.0: + resolution: {integrity: sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w==} + + micromark-factory-destination@2.0.1: + resolution: {integrity: sha512-Xe6rDdJlkmbFRExpTOmRj9N3MaWmbAgdpSrBQvCFqhezUn4AHqJHbaEnfbVYYiexVSs//tqOdY/DxhjdCiJnIA==} + + micromark-factory-label@2.0.1: + resolution: {integrity: sha512-VFMekyQExqIW7xIChcXn4ok29YE3rnuyveW3wZQWWqF4Nv9Wk5rgJ99KzPvHjkmPXF93FXIbBp6YdW3t71/7Vg==} + + micromark-factory-space@2.0.1: + resolution: {integrity: sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==} + + micromark-factory-title@2.0.1: + resolution: {integrity: sha512-5bZ+3CjhAd9eChYTHsjy6TGxpOFSKgKKJPJxr293jTbfry2KDoWkhBb6TcPVB4NmzaPhMs1Frm9AZH7OD4Cjzw==} + + micromark-factory-whitespace@2.0.1: + resolution: {integrity: sha512-Ob0nuZ3PKt/n0hORHyvoD9uZhr+Za8sFoP+OnMcnWK5lngSzALgQYKMr9RJVOWLqQYuyn6ulqGWSXdwf6F80lQ==} + + micromark-util-character@2.1.1: + resolution: {integrity: sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==} + + micromark-util-chunked@2.0.1: + resolution: {integrity: sha512-QUNFEOPELfmvv+4xiNg2sRYeS/P84pTW0TCgP5zc9FpXetHY0ab7SxKyAQCNCc1eK0459uoLI1y5oO5Vc1dbhA==} + + micromark-util-classify-character@2.0.1: + resolution: {integrity: sha512-K0kHzM6afW/MbeWYWLjoHQv1sgg2Q9EccHEDzSkxiP/EaagNzCm7T/WMKZ3rjMbvIpvBiZgwR3dKMygtA4mG1Q==} + + micromark-util-combine-extensions@2.0.1: + resolution: {integrity: sha512-OnAnH8Ujmy59JcyZw8JSbK9cGpdVY44NKgSM7E9Eh7DiLS2E9RNQf0dONaGDzEG9yjEl5hcqeIsj4hfRkLH/Bg==} + + micromark-util-decode-numeric-character-reference@2.0.2: + resolution: {integrity: sha512-ccUbYk6CwVdkmCQMyr64dXz42EfHGkPQlBj5p7YVGzq8I7CtjXZJrubAYezf7Rp+bjPseiROqe7G6foFd+lEuw==} + + micromark-util-decode-string@2.0.1: + resolution: {integrity: sha512-nDV/77Fj6eH1ynwscYTOsbK7rR//Uj0bZXBwJZRfaLEJ1iGBR6kIfNmlNqaqJf649EP0F3NWNdeJi03elllNUQ==} + + micromark-util-encode@2.0.1: + resolution: {integrity: sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==} + + micromark-util-html-tag-name@2.0.1: + resolution: {integrity: sha512-2cNEiYDhCWKI+Gs9T0Tiysk136SnR13hhO8yW6BGNyhOC4qYFnwF1nKfD3HFAIXA5c45RrIG1ub11GiXeYd1xA==} + + micromark-util-normalize-identifier@2.0.1: + resolution: {integrity: sha512-sxPqmo70LyARJs0w2UclACPUUEqltCkJ6PhKdMIDuJ3gSf/Q+/GIe3WKl0Ijb/GyH9lOpUkRAO2wp0GVkLvS9Q==} + + micromark-util-resolve-all@2.0.1: + resolution: {integrity: sha512-VdQyxFWFT2/FGJgwQnJYbe1jjQoNTS4RjglmSjTUlpUMa95Htx9NHeYW4rGDJzbjvCsl9eLjMQwGeElsqmzcHg==} + + micromark-util-sanitize-uri@2.0.1: + resolution: {integrity: sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==} + + micromark-util-subtokenize@2.0.3: + resolution: {integrity: sha512-VXJJuNxYWSoYL6AJ6OQECCFGhIU2GGHMw8tahogePBrjkG8aCCas3ibkp7RnVOSTClg2is05/R7maAhF1XyQMg==} + + micromark-util-symbol@2.0.1: + resolution: {integrity: sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==} + + micromark-util-types@2.0.1: + resolution: {integrity: sha512-534m2WhVTddrcKVepwmVEVnUAmtrx9bfIjNoQHRqfnvdaHQiFytEhJoTgpWJvDEXCO5gLTQh3wYC1PgOJA4NSQ==} + + micromark@4.0.1: + resolution: {integrity: sha512-eBPdkcoCNvYcxQOAKAlceo5SNdzZWfF+FcSupREAzdAh9rRmE239CEQAiTwIgblwnoM8zzj35sZ5ZwvSEOF6Kw==} + + micromatch@4.0.8: + resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} + engines: {node: '>=8.6'} + + min-indent@1.0.1: + resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} + engines: {node: '>=4'} + + minimatch@3.1.2: + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + + minimatch@9.0.5: + resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} + engines: {node: '>=16 || 14 >=14.17'} + + minipass@7.1.2: + resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} + engines: {node: '>=16 || 14 >=14.17'} + + mlly@1.7.3: + resolution: {integrity: sha512-xUsx5n/mN0uQf4V548PKQ+YShA4/IW0KI1dZhrNrPCLG+xizETbHTkOa1f8/xut9JRPp8kQuMnz0oqwkTiLo/A==} + + monaco-editor-core@0.52.0: + resolution: {integrity: sha512-Ur6BNCVgBcmOc4ZizEBl+rGiYtuozztOi4fgRFnAV64sRgKOxkwC1RxGfvJa3pHedoJ2eepV8Frjnr4PbhLcYA==} + + monaco-editor-textmate@4.0.0: + resolution: {integrity: sha512-Clwup5LJzVfwURQrS+odSEC5/hZBEG36pQnvBKt4OtBndF8r2xLeXUZcK/AqEBK2u0Npy7frFp9hG7m66Ol9hA==} + peerDependencies: + monaco-editor: 0.x.x + monaco-textmate: ^3.0.0 + + monaco-editor@0.52.0: + resolution: {integrity: sha512-OeWhNpABLCeTqubfqLMXGsqf6OmPU6pHM85kF3dhy6kq5hnhuVS1p3VrEW/XhWHc71P2tHyS5JFySD8mgs1crw==} + + monaco-textmate@3.0.1: + resolution: {integrity: sha512-ZxxY3OsqUczYP1sGqo97tu+CJmMBwuSW+dL0WEBdDhOZ5G1zntw72hvBc68ZQAirosWvbDKgN1dL5k173QtFww==} + peerDependencies: + onigasm: ^2.0.0 + + monaco-vscode-textmate-theme-converter@0.1.7: + resolution: {integrity: sha512-ZMsq1RPWwOD3pvXD0n+9ddnhfzZoiUMwNIWPNUqYqEiQeH2HjyZ9KYOdt/pqe0kkN8WnYWLrxT9C/SrtIsAu2Q==} + hasBin: true + peerDependencies: + tslib: ^2.0.1 + + ms@2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + + mz@2.7.0: + resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} + + nanoid@3.3.8: + resolution: {integrity: sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + + nanoid@5.0.9: + resolution: {integrity: sha512-Aooyr6MXU6HpvvWXKoVoXwKMs/KyVakWwg7xQfv5/S/RIgJMy0Ifa45H9qqYy7pTCszrHzP21Uk4PZq2HpEM8Q==} + engines: {node: ^18 || >=20} + hasBin: true + + nanostores@0.11.3: + resolution: {integrity: sha512-TUes3xKIX33re4QzdxwZ6tdbodjmn3tWXCEc1uokiEmo14sI1EaGYNs2k3bU2pyyGNmBqFGAVl6jAGWd06AVIg==} + engines: {node: ^18.0.0 || >=20.0.0} + + natural-compare@1.4.0: + resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + + natural-orderby@5.0.0: + resolution: {integrity: sha512-kKHJhxwpR/Okycz4HhQKKlhWe4ASEfPgkSWNmKFHd7+ezuQlxkA5cM3+XkBPvm1gmHen3w53qsYAv+8GwRrBlg==} + engines: {node: '>=18'} + + node-releases@2.0.19: + resolution: {integrity: sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==} + + normalize-package-data@2.5.0: + resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} + + normalize-path@3.0.0: + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} + engines: {node: '>=0.10.0'} + + normalize-range@0.1.2: + resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} + engines: {node: '>=0.10.0'} + + nth-check@2.1.1: + resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} + + object-assign@4.1.1: + resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} + engines: {node: '>=0.10.0'} + + object-hash@3.0.0: + resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} + engines: {node: '>= 6'} + + once@1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + + onigasm@2.2.5: + resolution: {integrity: sha512-F+th54mPc0l1lp1ZcFMyL/jTs2Tlq4SqIHKIXGZOR/VkHkF9A7Fr5rRr5+ZG/lWeRsyrClLYRq7s/yFQ/XhWCA==} + + optionator@0.9.4: + resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} + engines: {node: '>= 0.8.0'} + + p-limit@2.3.0: + resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} + engines: {node: '>=6'} + + p-limit@3.1.0: + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} + engines: {node: '>=10'} + + p-locate@4.1.0: + resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} + engines: {node: '>=8'} + + p-locate@5.0.0: + resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} + engines: {node: '>=10'} + + p-try@2.2.0: + resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} + engines: {node: '>=6'} + + package-json-from-dist@1.0.1: + resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} + + package-manager-detector@0.2.8: + resolution: {integrity: sha512-ts9KSdroZisdvKMWVAVCXiKqnqNfXz4+IbrBG8/BWx/TR5le+jfenvoBuIZ6UWM9nz47W7AbD9qYfAwfWMIwzA==} + + pako@0.2.9: + resolution: {integrity: sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA==} + + parent-module@1.0.1: + resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} + engines: {node: '>=6'} + + parse-gitignore@2.0.0: + resolution: {integrity: sha512-RmVuCHWsfu0QPNW+mraxh/xjQVw/lhUCUru8Zni3Ctq3AoMhpDTq0OVdKS6iesd6Kqb7viCV3isAL43dciOSog==} + engines: {node: '>=14'} + + parse-imports@2.2.1: + resolution: {integrity: sha512-OL/zLggRp8mFhKL0rNORUTR4yBYujK/uU+xZL+/0Rgm2QE4nLO9v8PzEweSJEbMGKmDRjJE4R3IMJlL2di4JeQ==} + engines: {node: '>= 18'} + + parse-json@5.2.0: + resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} + engines: {node: '>=8'} + + parse5@7.2.1: + resolution: {integrity: sha512-BuBYQYlv1ckiPdQi/ohiivi9Sagc9JG+Ozs0r7b/0iK3sKmrb0b9FdWdBbOdx6hBCM/F9Ir82ofnBhtZOjCRPQ==} + + path-exists@4.0.0: + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} + + path-key@3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} + + path-parse@1.0.7: + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + + path-scurry@1.11.1: + resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} + engines: {node: '>=16 || 14 >=14.18'} + + pathe@1.1.2: + resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==} + + pathe@2.0.1: + resolution: {integrity: sha512-6jpjMpOth5S9ITVu5clZ7NOgHNsv5vRQdheL9ztp2vZmM6fRbLvyua1tiBIL4lk8SAe3ARzeXEly6siXCjDHDw==} + + peek-stream@1.1.3: + resolution: {integrity: sha512-FhJ+YbOSBb9/rIl2ZeE/QHEsWn7PqNYt8ARAY3kIgNGOk13g9FGyIY6JIl/xB/3TFRVoTv5as0l11weORrTekA==} + + picocolors@1.1.1: + resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} + + picomatch@2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} + + picomatch@4.0.2: + resolution: {integrity: sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==} + engines: {node: '>=12'} + + pify@2.3.0: + resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} + engines: {node: '>=0.10.0'} + + pirates@4.0.6: + resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} + engines: {node: '>= 6'} + + pkg-types@1.3.0: + resolution: {integrity: sha512-kS7yWjVFCkIw9hqdJBoMxDdzEngmkr5FXeWZZfQ6GoYacjVnsW6l2CcYW/0ThD0vF4LPJgVYnrg4d0uuhwYQbg==} + + plist2@1.1.4: + resolution: {integrity: sha512-rpYLf4nxagM5dkxBkoMi2sBdEPSDv2FWSrzuz43uOCaOxqqsRpK7u/qPE4c1Cv+sp0EKl3Kq08qYG0fBqCeIjg==} + hasBin: true + + pluralize@8.0.0: + resolution: {integrity: sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==} + engines: {node: '>=4'} + + postcss-import@15.1.0: + resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==} + engines: {node: '>=14.0.0'} + peerDependencies: + postcss: ^8.0.0 + + postcss-js@4.0.1: + resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==} + engines: {node: ^12 || ^14 || >= 16} + peerDependencies: + postcss: ^8.4.21 + + postcss-load-config@4.0.2: + resolution: {integrity: sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==} + engines: {node: '>= 14'} + peerDependencies: + postcss: '>=8.0.9' + ts-node: '>=9.0.0' + peerDependenciesMeta: + postcss: + optional: true + ts-node: + optional: true + + postcss-nested@6.2.0: + resolution: {integrity: sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==} + engines: {node: '>=12.0'} + peerDependencies: + postcss: ^8.2.14 + + postcss-selector-parser@6.1.2: + resolution: {integrity: sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==} + engines: {node: '>=4'} + + postcss-value-parser@4.2.0: + resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} + + postcss@8.4.49: + resolution: {integrity: sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==} + engines: {node: ^10 || ^12 || >=14} + + prelude-ls@1.2.1: + resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} + engines: {node: '>= 0.8.0'} + + process-nextick-args@2.0.1: + resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} + + pump@2.0.1: + resolution: {integrity: sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==} + + pumpify@1.5.1: + resolution: {integrity: sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==} + + punycode@2.3.1: + resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} + engines: {node: '>=6'} + + queue-microtask@1.2.3: + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + + queue-tick@1.0.1: + resolution: {integrity: sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag==} + + read-cache@1.0.0: + resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==} + + read-pkg-up@7.0.1: + resolution: {integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==} + engines: {node: '>=8'} + + read-pkg@5.2.0: + resolution: {integrity: sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==} + engines: {node: '>=8'} + + readable-stream@2.3.8: + resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} + + readdirp@3.6.0: + resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} + engines: {node: '>=8.10.0'} + + refa@0.12.1: + resolution: {integrity: sha512-J8rn6v4DBb2nnFqkqwy6/NnTYMcgLA+sLr0iIO41qpv0n+ngb7ksag2tMRl0inb1bbO/esUwzW1vbJi7K0sI0g==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + + regexp-ast-analysis@0.7.1: + resolution: {integrity: sha512-sZuz1dYW/ZsfG17WSAG7eS85r5a0dDsvg+7BiiYR5o6lKCAtUrEwdmRmaGF6rwVj3LcmAeYkOWKEPlbPzN3Y3A==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + + regexp-tree@0.1.27: + resolution: {integrity: sha512-iETxpjK6YoRWJG5o6hXLwvjYAoW+FEZn9os0PD/b6AP6xQwsa/Y7lCVgIixBbUPMfhu+i2LtdeAqVTgGlQarfA==} + hasBin: true + + regjsparser@0.10.0: + resolution: {integrity: sha512-qx+xQGZVsy55CH0a1hiVwHmqjLryfh7wQyF5HO07XJ9f7dQMY/gPQHhlyDkIzJKC+x2fUCpCcUODUUUFrm7SHA==} + hasBin: true + + require-directory@2.1.1: + resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} + engines: {node: '>=0.10.0'} + + resolve-from@4.0.0: + resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} + engines: {node: '>=4'} + + resolve-pkg-maps@1.0.0: + resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} + + resolve@1.22.10: + resolution: {integrity: sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==} + engines: {node: '>= 0.4'} + hasBin: true + + reusify@1.0.4: + resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + + rollup@4.30.1: + resolution: {integrity: sha512-mlJ4glW020fPuLi7DkM/lN97mYEZGWeqBnrljzN0gs7GLctqX3lNWxKQ7Gl712UAX+6fog/L3jh4gb7R6aVi3w==} + engines: {node: '>=18.0.0', npm: '>=8.0.0'} + hasBin: true + + run-parallel@1.2.0: + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + + safe-buffer@5.1.2: + resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} + + scslre@0.3.0: + resolution: {integrity: sha512-3A6sD0WYP7+QrjbfNA2FN3FsOaGGFoekCVgTyypy53gPxhbkCIjtO6YWgdrfM+n/8sI8JeXZOIxsHjMTNxQ4nQ==} + engines: {node: ^14.0.0 || >=16.0.0} + + semver@5.7.2: + resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} + hasBin: true + + semver@6.3.1: + resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} + hasBin: true + + semver@7.6.3: + resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==} + engines: {node: '>=10'} + hasBin: true + + seroval-plugins@1.2.0: + resolution: {integrity: sha512-hULTbfzSe81jGWLH8TAJjkEvw6JWMqOo9Uq+4V4vg+HNq53hyHldM9ZOfjdzokcFysiTp9aFdV2vJpZFqKeDjQ==} + engines: {node: '>=10'} + peerDependencies: + seroval: ^1.0 + + seroval@1.2.0: + resolution: {integrity: sha512-GURoU99ko2UiAgUC3qDCk59Jb3Ss4Po8VIMGkG8j5PFo2Q7y0YSMP8QG9NuL/fJCoTz9V1XZUbpNIMXPOfaGpA==} + engines: {node: '>=10'} + + shebang-command@2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} + + shebang-regex@3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} + + signal-exit@4.1.0: + resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} + engines: {node: '>=14'} + + sisteransi@1.0.5: + resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} + + slashes@3.0.12: + resolution: {integrity: sha512-Q9VME8WyGkc7pJf6QEkj3wE+2CnvZMI+XJhwdTPR8Z/kWQRXi7boAWLDibRPyHRTUTPx5FaU7MsyrjI3yLB4HA==} + + solid-icons@1.1.0: + resolution: {integrity: sha512-IesTfr/F1ElVwH2E1110s2RPXH4pujKfSs+koT8rwuTAdleO5s26lNSpqJV7D1+QHooJj18mcOiz2PIKs0ic+A==} + peerDependencies: + solid-js: '*' + + solid-js@1.9.4: + resolution: {integrity: sha512-ipQl8FJ31bFUoBNScDQTG3BjN6+9Rg+Q+f10bUbnO6EOTTf5NGerJeHc7wyu5I4RMHEl/WwZwUmy/PTRgxxZ8g==} + + solid-presence@0.1.8: + resolution: {integrity: sha512-pWGtXUFWYYUZNbg5YpG5vkQJyOtzn2KXhxYaMx/4I+lylTLYkITOLevaCwMRN+liCVk0pqB6EayLWojNqBFECA==} + peerDependencies: + solid-js: ^1.8 + + solid-prevent-scroll@0.1.10: + resolution: {integrity: sha512-KplGPX2GHiWJLZ6AXYRql4M127PdYzfwvLJJXMkO+CMb8Np4VxqDAg5S8jLdwlEuBis/ia9DKw2M8dFx5u8Mhw==} + peerDependencies: + solid-js: ^1.8 + + solid-refresh@0.6.3: + resolution: {integrity: sha512-F3aPsX6hVw9ttm5LYlth8Q15x6MlI/J3Dn+o3EQyRTtTxidepSTwAYdozt01/YA+7ObcciagGEyXIopGZzQtbA==} + peerDependencies: + solid-js: ^1.3 + + solid-transition-group@0.2.3: + resolution: {integrity: sha512-iB72c9N5Kz9ykRqIXl0lQohOau4t0dhel9kjwFvx81UZJbVwaChMuBuyhiZmK24b8aKEK0w3uFM96ZxzcyZGdg==} + engines: {node: '>=18.0.0', pnpm: '>=8.6.0'} + peerDependencies: + solid-js: ^1.6.12 + + source-map-js@1.2.1: + resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} + engines: {node: '>=0.10.0'} + + spdx-correct@3.2.0: + resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==} + + spdx-exceptions@2.5.0: + resolution: {integrity: sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==} + + spdx-expression-parse@3.0.1: + resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} + + spdx-expression-parse@4.0.0: + resolution: {integrity: sha512-Clya5JIij/7C6bRR22+tnGXbc4VKlibKSVj2iHvVeX5iMW7s1SIQlqu699JkODJJIhh/pUu8L0/VLh8xflD+LQ==} + + spdx-license-ids@3.0.20: + resolution: {integrity: sha512-jg25NiDV/1fLtSgEgyvVyDunvaNHbuwF9lfNV17gSmPFAlYzdfNBlLtLzXTevwkPj7DhGbmN9VnmJIgLnhvaBw==} + + stable-hash@0.0.4: + resolution: {integrity: sha512-LjdcbuBeLcdETCrPn9i8AYAZ1eCtu4ECAWtP7UleOiZ9LzVxRzzUZEoZ8zB24nhkQnDWyET0I+3sWokSDS3E7g==} + + stream-shift@1.0.3: + resolution: {integrity: sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ==} + + streamx@2.20.1: + resolution: {integrity: sha512-uTa0mU6WUC65iUvzKH4X9hEdvSW7rbPxPtwfWiLMSj3qTdQbAiUboZTxauKfpFuGIGa1C2BYijZ7wgdUXICJhA==} + + string-width@4.2.3: + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} + engines: {node: '>=8'} + + string-width@5.1.2: + resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} + engines: {node: '>=12'} + + string_decoder@1.1.1: + resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} + + strip-ansi@6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} + + strip-ansi@7.1.0: + resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} + engines: {node: '>=12'} + + strip-indent@3.0.0: + resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} + engines: {node: '>=8'} + + strip-json-comments@3.1.1: + resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} + engines: {node: '>=8'} + + style-to-object@1.0.8: + resolution: {integrity: sha512-xT47I/Eo0rwJmaXC4oilDGDWLohVhR6o/xAQcPQN8q6QBuZVL8qMYL85kLmST5cPjAorwvqIA4qXTRQoYHaL6g==} + + sucrase@3.35.0: + resolution: {integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==} + engines: {node: '>=16 || 14 >=14.17'} + hasBin: true + + supports-color@7.2.0: + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} + + supports-preserve-symlinks-flag@1.0.0: + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} + + synckit@0.6.2: + resolution: {integrity: sha512-Vhf+bUa//YSTYKseDiiEuQmhGCoIF3CVBhunm3r/DQnYiGT4JssmnKQc44BIyOZRK2pKjXXAgbhfmbeoC9CJpA==} + engines: {node: '>=12.20'} + + synckit@0.9.2: + resolution: {integrity: sha512-vrozgXDQwYO72vHjUb/HnFbQx1exDjoKzqx23aXEg2a9VIg2TSFZ8FmeZpTjUCFMYw7mpX4BE2SFu8wI7asYsw==} + engines: {node: ^14.18.0 || >=16.0.0} + + tailwind-merge@2.6.0: + resolution: {integrity: sha512-P+Vu1qXfzediirmHOC3xKGAYeZtPcV9g76X+xg2FD4tYgR71ewMA35Y3sCz3zhiN/dwefRpJX0yBcgwi1fXNQA==} + + tailwindcss-animate@1.0.7: + resolution: {integrity: sha512-bl6mpH3T7I3UFxuvDEXLxy/VuFxBk5bbzplh7tXI68mwMokNYd1t9qPBHlnyTwfa4JGC4zP516I1hYYtQ/vspA==} + peerDependencies: + tailwindcss: '>=3.0.0 || insiders' + + tailwindcss@3.4.17: + resolution: {integrity: sha512-w33E2aCvSDP0tW9RZuNXadXlkHXqFzSkQew/aIa2i/Sj8fThxwovwlXHSPXTbAHwEIhBFXAedUhP2tueAKP8Og==} + engines: {node: '>=14.0.0'} + hasBin: true + + tapable@2.2.1: + resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} + engines: {node: '>=6'} + + tar-stream@3.1.7: + resolution: {integrity: sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==} + + text-decoder@1.2.0: + resolution: {integrity: sha512-n1yg1mOj9DNpk3NeZOx7T6jchTbyJS3i3cucbNN6FcdPriMZx7NsgrGpWWdWZZGxD7ES1XB+3uoqHMgOKaN+fg==} + + text-table@0.2.0: + resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} + + thenify-all@1.6.0: + resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} + engines: {node: '>=0.8'} + + thenify@3.3.1: + resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} + + thingies@1.21.0: + resolution: {integrity: sha512-hsqsJsFMsV+aD4s3CWKk85ep/3I9XzYV/IXaSouJMYIoDlgyi11cBhsqYe9/geRfB0YIikBQg6raRaM+nIMP9g==} + engines: {node: '>=10.18'} + peerDependencies: + tslib: ^2 + + through2@2.0.5: + resolution: {integrity: sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==} + + tinyexec@0.3.2: + resolution: {integrity: sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==} + + to-regex-range@5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} + + toml-eslint-parser@0.10.0: + resolution: {integrity: sha512-khrZo4buq4qVmsGzS5yQjKe/WsFvV8fGfOjDQN0q4iy9FjRfPWRgTFrU8u1R2iu/SfWLhY9WnCi4Jhdrcbtg+g==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + tree-dump@1.0.2: + resolution: {integrity: sha512-dpev9ABuLWdEubk+cIaI9cHwRNNDjkBBLXTwI4UCUFdQ5xXKqNXoK4FEciw/vxf+NQ7Cb7sGUyeUtORvHIdRXQ==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: '2' + + ts-api-utils@2.0.0: + resolution: {integrity: sha512-xCt/TOAc+EOHS1XPnijD3/yzpH6qg2xppZO1YDqGoVsNXfQfzHpOdNuXwrwOU8u4ITXJyDCTyt8w5g1sZv9ynQ==} + engines: {node: '>=18.12'} + peerDependencies: + typescript: '>=4.8.4' + + ts-blank-space@0.4.4: + resolution: {integrity: sha512-G6GkD6oEJ7j5gG2e5qAizfE4Ap7JXMpnN0CEp9FEt4LExdaqsdwB90aQsaAwcKhiSxVk5KoqFW9xfxTQ4lBUnQ==} + engines: {node: '>=18.0.0'} + + ts-interface-checker@0.1.13: + resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} + + tslib@2.8.1: + resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} + + type-check@0.4.0: + resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} + engines: {node: '>= 0.8.0'} + + type-fest@0.20.2: + resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} + engines: {node: '>=10'} + + type-fest@0.6.0: + resolution: {integrity: sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==} + engines: {node: '>=8'} + + type-fest@0.8.1: + resolution: {integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==} + engines: {node: '>=8'} + + typescript@5.2.2: + resolution: {integrity: sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==} + engines: {node: '>=14.17'} + hasBin: true + + typescript@5.7.3: + resolution: {integrity: sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==} + engines: {node: '>=14.17'} + hasBin: true + + ufo@1.5.4: + resolution: {integrity: sha512-UsUk3byDzKd04EyoZ7U4DOlxQaD14JUKQl6/P7wiX4FNvUfm3XL246n9W5AmqwW5RSFJ27NAuM0iLscAOYUiGQ==} + + undici-types@6.19.8: + resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==} + + undici-types@6.20.0: + resolution: {integrity: sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==} + + unist-util-is@6.0.0: + resolution: {integrity: sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==} + + unist-util-stringify-position@4.0.0: + resolution: {integrity: sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==} + + unist-util-visit-parents@6.0.1: + resolution: {integrity: sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==} + + unist-util-visit@5.0.0: + resolution: {integrity: sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==} + + universalify@0.1.2: + resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} + engines: {node: '>= 4.0.0'} + + update-browserslist-db@1.1.2: + resolution: {integrity: sha512-PPypAm5qvlD7XMZC3BujecnaOxwhrtoFR+Dqkk5Aa/6DssiH0ibKoketaj9w8LP7Bont1rYeoV5plxD7RTEPRg==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + + uqr@0.1.2: + resolution: {integrity: sha512-MJu7ypHq6QasgF5YRTjqscSzQp/W11zoUk6kvmlH+fmWEs63Y0Eib13hYFwAzagRJcVY8WVnlV+eBDUGMJ5IbA==} + + uri-js@4.4.1: + resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + + util-deprecate@1.0.2: + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + + validate-html-nesting@1.2.2: + resolution: {integrity: sha512-hGdgQozCsQJMyfK5urgFcWEqsSSrK63Awe0t/IMR0bZ0QMtnuaiHzThW81guu3qx9abLi99NEuiaN6P9gVYsNg==} + + validate-npm-package-license@3.0.4: + resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} + + vite-plugin-solid@2.11.0: + resolution: {integrity: sha512-G+NiwDj4EAeUE0wt3Ur9f+Lt9oMUuLd0FIxYuqwJSqRacKQRteCwUFzNy8zMEt88xWokngQhiFjfJMhjc1fDXw==} + peerDependencies: + '@testing-library/jest-dom': ^5.16.6 || ^5.17.0 || ^6.* + solid-js: ^1.7.2 + vite: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 + peerDependenciesMeta: + '@testing-library/jest-dom': + optional: true + + vite@5.4.11: + resolution: {integrity: sha512-c7jFQRklXua0mTzneGW9QVyxFjUgwcihC4bXEtujIo2ouWCe1Ajt/amn2PCxYnhYfd5k09JX3SB7OYWFKYqj8Q==} + engines: {node: ^18.0.0 || >=20.0.0} + hasBin: true + peerDependencies: + '@types/node': ^18.0.0 || >=20.0.0 + less: '*' + lightningcss: ^1.21.0 + sass: '*' + sass-embedded: '*' + stylus: '*' + sugarss: '*' + terser: ^5.4.0 + peerDependenciesMeta: + '@types/node': + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + sass-embedded: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + + vitefu@1.0.5: + resolution: {integrity: sha512-h4Vflt9gxODPFNGPwp4zAMZRpZR7eslzwH2c5hn5kNZ5rhnKyRJ50U+yGCdc2IRaBs8O4haIgLNGrV5CrpMsCA==} + peerDependencies: + vite: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 + peerDependenciesMeta: + vite: + optional: true + + vue-eslint-parser@9.4.3: + resolution: {integrity: sha512-2rYRLWlIpaiN8xbPiDyXZXRgLGOtWxERV7ND5fFAv5qo1D2N9Fu9MNajBNc6o13lZ+24DAWCkQCvj4klgmcITg==} + engines: {node: ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: '>=6.0.0' + + which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true + + word-wrap@1.2.5: + resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} + engines: {node: '>=0.10.0'} + + wrap-ansi@7.0.0: + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} + engines: {node: '>=10'} + + wrap-ansi@8.1.0: + resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} + engines: {node: '>=12'} + + wrappy@1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + + xml-name-validator@4.0.0: + resolution: {integrity: sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==} + engines: {node: '>=12'} + + xtend@4.0.2: + resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} + engines: {node: '>=0.4'} + + y18n@5.0.8: + resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} + engines: {node: '>=10'} + + yallist@3.1.1: + resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} + + yaml-eslint-parser@1.2.3: + resolution: {integrity: sha512-4wZWvE398hCP7O8n3nXKu/vdq1HcH01ixYlCREaJL5NUMwQ0g3MaGFUBNSlmBtKmhbtVG/Cm6lyYmSVTEVil8A==} + engines: {node: ^14.17.0 || >=16.0.0} + + yaml@1.10.2: + resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} + engines: {node: '>= 6'} + + yaml@2.7.0: + resolution: {integrity: sha512-+hSoy/QHluxmC9kCIJyL/uyFmLmc+e5CFR5Wa+bpIhIj85LVb9ZH2nVnqrHoSvKogwODv0ClqZkmiSSaIH5LTA==} + engines: {node: '>= 14'} + hasBin: true + + yargs-parser@21.1.1: + resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} + engines: {node: '>=12'} + + yargs@17.7.2: + resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} + engines: {node: '>=12'} + + yocto-queue@0.1.0: + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} + engines: {node: '>=10'} + + zod@3.24.1: + resolution: {integrity: sha512-muH7gBL9sI1nciMZV67X5fTKKBLtwpZ5VBp1vsOQzj1MhrBZ4wlVCm3gedKZWLp0Oyel8sIGfeiz54Su+OVT+A==} + + zwitch@2.0.4: + resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==} + +snapshots: + + '@alloc/quick-lru@5.2.0': {} + + '@ampproject/remapping@2.3.0': + dependencies: + '@jridgewell/gen-mapping': 0.3.8 + '@jridgewell/trace-mapping': 0.3.25 + + '@antfu/eslint-config@3.13.0(@typescript-eslint/utils@8.19.1(eslint@9.11.0(jiti@1.21.7))(typescript@5.7.3))(@vue/compiler-sfc@3.5.7)(eslint-plugin-solid@0.14.5(eslint@9.11.0(jiti@1.21.7))(typescript@5.7.3))(eslint@9.11.0(jiti@1.21.7))(typescript@5.7.3)': + dependencies: + '@antfu/install-pkg': 1.0.0 + '@clack/prompts': 0.9.1 + '@eslint-community/eslint-plugin-eslint-comments': 4.4.1(eslint@9.11.0(jiti@1.21.7)) + '@eslint/markdown': 6.2.1 + '@stylistic/eslint-plugin': 2.12.1(eslint@9.11.0(jiti@1.21.7))(typescript@5.7.3) + '@typescript-eslint/eslint-plugin': 8.19.1(@typescript-eslint/parser@8.19.1(eslint@9.11.0(jiti@1.21.7))(typescript@5.7.3))(eslint@9.11.0(jiti@1.21.7))(typescript@5.7.3) + '@typescript-eslint/parser': 8.19.1(eslint@9.11.0(jiti@1.21.7))(typescript@5.7.3) + '@vitest/eslint-plugin': 1.1.24(@typescript-eslint/utils@8.19.1(eslint@9.11.0(jiti@1.21.7))(typescript@5.7.3))(eslint@9.11.0(jiti@1.21.7))(typescript@5.7.3) + eslint: 9.11.0(jiti@1.21.7) + eslint-config-flat-gitignore: 1.0.0(eslint@9.11.0(jiti@1.21.7)) + eslint-flat-config-utils: 1.0.0 + eslint-merge-processors: 1.0.0(eslint@9.11.0(jiti@1.21.7)) + eslint-plugin-antfu: 2.7.0(eslint@9.11.0(jiti@1.21.7)) + eslint-plugin-command: 2.1.0(eslint@9.11.0(jiti@1.21.7)) + eslint-plugin-import-x: 4.6.1(eslint@9.11.0(jiti@1.21.7))(typescript@5.7.3) + eslint-plugin-jsdoc: 50.6.1(eslint@9.11.0(jiti@1.21.7)) + eslint-plugin-jsonc: 2.18.2(eslint@9.11.0(jiti@1.21.7)) + eslint-plugin-n: 17.15.1(eslint@9.11.0(jiti@1.21.7)) + eslint-plugin-no-only-tests: 3.3.0 + eslint-plugin-perfectionist: 4.6.0(eslint@9.11.0(jiti@1.21.7))(typescript@5.7.3) + eslint-plugin-regexp: 2.7.0(eslint@9.11.0(jiti@1.21.7)) + eslint-plugin-toml: 0.12.0(eslint@9.11.0(jiti@1.21.7)) + eslint-plugin-unicorn: 56.0.1(eslint@9.11.0(jiti@1.21.7)) + eslint-plugin-unused-imports: 4.1.4(@typescript-eslint/eslint-plugin@8.19.1(@typescript-eslint/parser@8.19.1(eslint@9.11.0(jiti@1.21.7))(typescript@5.7.3))(eslint@9.11.0(jiti@1.21.7))(typescript@5.7.3))(eslint@9.11.0(jiti@1.21.7)) + eslint-plugin-vue: 9.32.0(eslint@9.11.0(jiti@1.21.7)) + eslint-plugin-yml: 1.16.0(eslint@9.11.0(jiti@1.21.7)) + eslint-processor-vue-blocks: 1.0.0(@vue/compiler-sfc@3.5.7)(eslint@9.11.0(jiti@1.21.7)) + globals: 15.14.0 + jsonc-eslint-parser: 2.4.0 + local-pkg: 1.0.0 + parse-gitignore: 2.0.0 + picocolors: 1.1.1 + toml-eslint-parser: 0.10.0 + vue-eslint-parser: 9.4.3(eslint@9.11.0(jiti@1.21.7)) + yaml-eslint-parser: 1.2.3 + yargs: 17.7.2 + optionalDependencies: + eslint-plugin-solid: 0.14.5(eslint@9.11.0(jiti@1.21.7))(typescript@5.7.3) + transitivePeerDependencies: + - '@eslint/json' + - '@typescript-eslint/utils' + - '@vue/compiler-sfc' + - supports-color + - typescript + - vitest + + '@antfu/install-pkg@1.0.0': + dependencies: + package-manager-detector: 0.2.8 + tinyexec: 0.3.2 + + '@antfu/utils@0.7.10': {} + + '@babel/code-frame@7.26.2': + dependencies: + '@babel/helper-validator-identifier': 7.25.9 + js-tokens: 4.0.0 + picocolors: 1.1.1 + + '@babel/compat-data@7.26.5': {} + + '@babel/core@7.26.0': + dependencies: + '@ampproject/remapping': 2.3.0 + '@babel/code-frame': 7.26.2 + '@babel/generator': 7.26.5 + '@babel/helper-compilation-targets': 7.26.5 + '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.0) + '@babel/helpers': 7.26.0 + '@babel/parser': 7.26.5 + '@babel/template': 7.25.9 + '@babel/traverse': 7.26.5 + '@babel/types': 7.26.5 + convert-source-map: 2.0.0 + debug: 4.4.0 + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + '@babel/generator@7.26.5': + dependencies: + '@babel/parser': 7.26.5 + '@babel/types': 7.26.5 + '@jridgewell/gen-mapping': 0.3.8 + '@jridgewell/trace-mapping': 0.3.25 + jsesc: 3.1.0 + + '@babel/helper-compilation-targets@7.26.5': + dependencies: + '@babel/compat-data': 7.26.5 + '@babel/helper-validator-option': 7.25.9 + browserslist: 4.24.4 + lru-cache: 5.1.1 + semver: 6.3.1 + + '@babel/helper-module-imports@7.18.6': + dependencies: + '@babel/types': 7.26.5 + + '@babel/helper-module-imports@7.25.9': + dependencies: + '@babel/traverse': 7.26.5 + '@babel/types': 7.26.5 + transitivePeerDependencies: + - supports-color + + '@babel/helper-module-transforms@7.26.0(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-module-imports': 7.25.9 + '@babel/helper-validator-identifier': 7.25.9 + '@babel/traverse': 7.26.5 + transitivePeerDependencies: + - supports-color + + '@babel/helper-plugin-utils@7.26.5': {} + + '@babel/helper-string-parser@7.25.9': {} + + '@babel/helper-validator-identifier@7.25.9': {} + + '@babel/helper-validator-option@7.25.9': {} + + '@babel/helpers@7.26.0': + dependencies: + '@babel/template': 7.25.9 + '@babel/types': 7.26.5 + + '@babel/parser@7.26.5': + dependencies: + '@babel/types': 7.26.5 + + '@babel/plugin-syntax-jsx@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/template@7.25.9': + dependencies: + '@babel/code-frame': 7.26.2 + '@babel/parser': 7.26.5 + '@babel/types': 7.26.5 + + '@babel/traverse@7.26.5': + dependencies: + '@babel/code-frame': 7.26.2 + '@babel/generator': 7.26.5 + '@babel/parser': 7.26.5 + '@babel/template': 7.25.9 + '@babel/types': 7.26.5 + debug: 4.4.0 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + + '@babel/types@7.26.5': + dependencies: + '@babel/helper-string-parser': 7.25.9 + '@babel/helper-validator-identifier': 7.25.9 + + '@badrap/valita@0.4.2': {} + + '@catppuccin/palette@1.7.1': {} + + '@catppuccin/vscode@3.16.0': + dependencies: + '@catppuccin/palette': 1.7.1 + + '@clack/core@0.4.1': + dependencies: + picocolors: 1.1.1 + sisteransi: 1.0.5 + + '@clack/prompts@0.9.1': + dependencies: + '@clack/core': 0.4.1 + picocolors: 1.1.1 + sisteransi: 1.0.5 + + '@corvu/otp-field@0.1.4(solid-js@1.9.4)': + dependencies: + '@corvu/utils': 0.4.2(solid-js@1.9.4) + solid-js: 1.9.4 + + '@corvu/resizable@0.2.3(solid-js@1.9.4)': + dependencies: + '@corvu/utils': 0.4.2(solid-js@1.9.4) + solid-js: 1.9.4 + + '@corvu/utils@0.4.2(solid-js@1.9.4)': + dependencies: + '@floating-ui/dom': 1.6.13 + solid-js: 1.9.4 + + '@es-joy/jsdoccomment@0.49.0': + dependencies: + comment-parser: 1.4.1 + esquery: 1.6.0 + jsdoc-type-pratt-parser: 4.1.0 + + '@es-joy/jsdoccomment@0.50.0': + dependencies: + '@types/eslint': 9.6.1 + '@types/estree': 1.0.6 + '@typescript-eslint/types': 8.19.1 + comment-parser: 1.4.1 + esquery: 1.6.0 + jsdoc-type-pratt-parser: 4.1.0 + + '@esbuild/aix-ppc64@0.21.5': + optional: true + + '@esbuild/aix-ppc64@0.24.2': + optional: true + + '@esbuild/android-arm64@0.21.5': + optional: true + + '@esbuild/android-arm64@0.24.2': + optional: true + + '@esbuild/android-arm@0.21.5': + optional: true + + '@esbuild/android-arm@0.24.2': + optional: true + + '@esbuild/android-x64@0.21.5': + optional: true + + '@esbuild/android-x64@0.24.2': + optional: true + + '@esbuild/darwin-arm64@0.21.5': + optional: true + + '@esbuild/darwin-arm64@0.24.2': + optional: true + + '@esbuild/darwin-x64@0.21.5': + optional: true + + '@esbuild/darwin-x64@0.24.2': + optional: true + + '@esbuild/freebsd-arm64@0.21.5': + optional: true + + '@esbuild/freebsd-arm64@0.24.2': + optional: true + + '@esbuild/freebsd-x64@0.21.5': + optional: true + + '@esbuild/freebsd-x64@0.24.2': + optional: true + + '@esbuild/linux-arm64@0.21.5': + optional: true + + '@esbuild/linux-arm64@0.24.2': + optional: true + + '@esbuild/linux-arm@0.21.5': + optional: true + + '@esbuild/linux-arm@0.24.2': + optional: true + + '@esbuild/linux-ia32@0.21.5': + optional: true + + '@esbuild/linux-ia32@0.24.2': + optional: true + + '@esbuild/linux-loong64@0.21.5': + optional: true + + '@esbuild/linux-loong64@0.24.2': + optional: true + + '@esbuild/linux-mips64el@0.21.5': + optional: true + + '@esbuild/linux-mips64el@0.24.2': + optional: true + + '@esbuild/linux-ppc64@0.21.5': + optional: true + + '@esbuild/linux-ppc64@0.24.2': + optional: true + + '@esbuild/linux-riscv64@0.21.5': + optional: true + + '@esbuild/linux-riscv64@0.24.2': + optional: true + + '@esbuild/linux-s390x@0.21.5': + optional: true + + '@esbuild/linux-s390x@0.24.2': + optional: true + + '@esbuild/linux-x64@0.21.5': + optional: true + + '@esbuild/linux-x64@0.24.2': + optional: true + + '@esbuild/netbsd-arm64@0.24.2': + optional: true + + '@esbuild/netbsd-x64@0.21.5': + optional: true + + '@esbuild/netbsd-x64@0.24.2': + optional: true + + '@esbuild/openbsd-arm64@0.24.2': + optional: true + + '@esbuild/openbsd-x64@0.21.5': + optional: true + + '@esbuild/openbsd-x64@0.24.2': + optional: true + + '@esbuild/sunos-x64@0.21.5': + optional: true + + '@esbuild/sunos-x64@0.24.2': + optional: true + + '@esbuild/win32-arm64@0.21.5': + optional: true + + '@esbuild/win32-arm64@0.24.2': + optional: true + + '@esbuild/win32-ia32@0.21.5': + optional: true + + '@esbuild/win32-ia32@0.24.2': + optional: true + + '@esbuild/win32-x64@0.21.5': + optional: true + + '@esbuild/win32-x64@0.24.2': + optional: true + + '@eslint-community/eslint-plugin-eslint-comments@4.4.1(eslint@9.11.0(jiti@1.21.7))': + dependencies: + escape-string-regexp: 4.0.0 + eslint: 9.11.0(jiti@1.21.7) + ignore: 5.3.2 + + '@eslint-community/eslint-utils@4.4.1(eslint@9.11.0(jiti@1.21.7))': + dependencies: + eslint: 9.11.0(jiti@1.21.7) + eslint-visitor-keys: 3.4.3 + + '@eslint-community/regexpp@4.12.1': {} + + '@eslint/compat@1.2.5(eslint@9.11.0(jiti@1.21.7))': + optionalDependencies: + eslint: 9.11.0(jiti@1.21.7) + + '@eslint/config-array@0.18.0': + dependencies: + '@eslint/object-schema': 2.1.5 + debug: 4.4.0 + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color + + '@eslint/core@0.10.0': + dependencies: + '@types/json-schema': 7.0.15 + + '@eslint/eslintrc@3.2.0': + dependencies: + ajv: 6.12.6 + debug: 4.4.0 + espree: 10.3.0 + globals: 14.0.0 + ignore: 5.3.2 + import-fresh: 3.3.0 + js-yaml: 4.1.0 + minimatch: 3.1.2 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color + + '@eslint/js@9.11.0': {} + + '@eslint/markdown@6.2.1': + dependencies: + '@eslint/plugin-kit': 0.2.5 + mdast-util-from-markdown: 2.0.2 + mdast-util-gfm: 3.0.0 + micromark-extension-gfm: 3.0.0 + transitivePeerDependencies: + - supports-color + + '@eslint/object-schema@2.1.5': {} + + '@eslint/plugin-kit@0.2.5': + dependencies: + '@eslint/core': 0.10.0 + levn: 0.4.1 + + '@floating-ui/core@1.6.9': + dependencies: + '@floating-ui/utils': 0.2.9 + + '@floating-ui/dom@1.6.13': + dependencies: + '@floating-ui/core': 1.6.9 + '@floating-ui/utils': 0.2.9 + + '@floating-ui/utils@0.2.9': {} + + '@fuman/fetch@0.0.8(@badrap/valita@0.4.2)(zod@3.24.1)': + dependencies: + '@fuman/utils': 0.0.4 + optionalDependencies: + '@badrap/valita': 0.4.2 + zod: 3.24.1 + + '@fuman/io@0.0.8': + dependencies: + '@fuman/utils': 0.0.4 + + '@fuman/net@0.0.9': + dependencies: + '@fuman/io': 0.0.8 + '@fuman/utils': 0.0.4 + + '@fuman/utils@0.0.4': {} + + '@humanwhocodes/module-importer@1.0.1': {} + + '@humanwhocodes/retry@0.3.1': {} + + '@internationalized/date@3.6.0': + dependencies: + '@swc/helpers': 0.5.15 + + '@internationalized/number@3.6.0': + dependencies: + '@swc/helpers': 0.5.15 + + '@isaacs/cliui@8.0.2': + dependencies: + string-width: 5.1.2 + string-width-cjs: string-width@4.2.3 + strip-ansi: 7.1.0 + strip-ansi-cjs: strip-ansi@6.0.1 + wrap-ansi: 8.1.0 + wrap-ansi-cjs: wrap-ansi@7.0.0 + + '@jridgewell/gen-mapping@0.3.8': + dependencies: + '@jridgewell/set-array': 1.2.1 + '@jridgewell/sourcemap-codec': 1.5.0 + '@jridgewell/trace-mapping': 0.3.25 + + '@jridgewell/resolve-uri@3.1.2': {} + + '@jridgewell/set-array@1.2.1': {} + + '@jridgewell/sourcemap-codec@1.5.0': {} + + '@jridgewell/trace-mapping@0.3.25': + dependencies: + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.5.0 + + '@jsonjoy.com/base64@1.1.2(tslib@2.8.1)': + dependencies: + tslib: 2.8.1 + + '@jsonjoy.com/json-pack@1.1.1(tslib@2.8.1)': + dependencies: + '@jsonjoy.com/base64': 1.1.2(tslib@2.8.1) + '@jsonjoy.com/util': 1.5.0(tslib@2.8.1) + hyperdyperid: 1.2.0 + thingies: 1.21.0(tslib@2.8.1) + tslib: 2.8.1 + + '@jsonjoy.com/util@1.5.0(tslib@2.8.1)': + dependencies: + tslib: 2.8.1 + + '@kobalte/core@0.13.7(solid-js@1.9.4)': + dependencies: + '@floating-ui/dom': 1.6.13 + '@internationalized/date': 3.6.0 + '@internationalized/number': 3.6.0 + '@kobalte/utils': 0.9.1(solid-js@1.9.4) + '@solid-primitives/props': 3.1.11(solid-js@1.9.4) + '@solid-primitives/resize-observer': 2.0.27(solid-js@1.9.4) + solid-js: 1.9.4 + solid-presence: 0.1.8(solid-js@1.9.4) + solid-prevent-scroll: 0.1.10(solid-js@1.9.4) + + '@kobalte/utils@0.9.1(solid-js@1.9.4)': + dependencies: + '@solid-primitives/event-listener': 2.3.3(solid-js@1.9.4) + '@solid-primitives/keyed': 1.4.0(solid-js@1.9.4) + '@solid-primitives/map': 0.4.13(solid-js@1.9.4) + '@solid-primitives/media': 2.2.10(solid-js@1.9.4) + '@solid-primitives/props': 3.1.11(solid-js@1.9.4) + '@solid-primitives/refs': 1.0.8(solid-js@1.9.4) + '@solid-primitives/utils': 6.2.3(solid-js@1.9.4) + solid-js: 1.9.4 + + '@mtcute/convert@0.19.4': + dependencies: + '@fuman/io': 0.0.8 + '@fuman/net': 0.0.9 + '@fuman/utils': 0.0.4 + '@mtcute/core': 0.19.6 + + '@mtcute/core@0.19.6': + dependencies: + '@fuman/io': 0.0.8 + '@fuman/net': 0.0.9 + '@fuman/utils': 0.0.4 + '@mtcute/file-id': 0.19.0 + '@mtcute/tl': 196.0.0 + '@mtcute/tl-runtime': 0.19.0 + '@types/events': 3.0.0 + long: 5.2.3 + + '@mtcute/file-id@0.19.0': + dependencies: + '@fuman/utils': 0.0.4 + '@mtcute/tl-runtime': 0.19.0 + long: 5.2.3 + + '@mtcute/tl-runtime@0.19.0': + dependencies: + '@fuman/utils': 0.0.4 + long: 5.2.3 + + '@mtcute/tl@196.0.0': + dependencies: + long: 5.2.3 + + '@mtcute/wasm@0.19.0': {} + + '@mtcute/web@0.19.5': + dependencies: + '@fuman/net': 0.0.9 + '@mtcute/core': 0.19.6 + '@mtcute/wasm': 0.19.0 + + '@nanostores/persistent@0.10.2(nanostores@0.11.3)': + dependencies: + nanostores: 0.11.3 + + '@nodelib/fs.scandir@2.1.5': + dependencies: + '@nodelib/fs.stat': 2.0.5 + run-parallel: 1.2.0 + + '@nodelib/fs.stat@2.0.5': {} + + '@nodelib/fs.walk@1.2.8': + dependencies: + '@nodelib/fs.scandir': 2.1.5 + fastq: 1.18.0 + + '@pkgjs/parseargs@0.11.0': + optional: true + + '@pkgr/core@0.1.1': {} + + '@rollup/rollup-android-arm-eabi@4.30.1': + optional: true + + '@rollup/rollup-android-arm64@4.30.1': + optional: true + + '@rollup/rollup-darwin-arm64@4.30.1': + optional: true + + '@rollup/rollup-darwin-x64@4.30.1': + optional: true + + '@rollup/rollup-freebsd-arm64@4.30.1': + optional: true + + '@rollup/rollup-freebsd-x64@4.30.1': + optional: true + + '@rollup/rollup-linux-arm-gnueabihf@4.30.1': + optional: true + + '@rollup/rollup-linux-arm-musleabihf@4.30.1': + optional: true + + '@rollup/rollup-linux-arm64-gnu@4.30.1': + optional: true + + '@rollup/rollup-linux-arm64-musl@4.30.1': + optional: true + + '@rollup/rollup-linux-loongarch64-gnu@4.30.1': + optional: true + + '@rollup/rollup-linux-powerpc64le-gnu@4.30.1': + optional: true + + '@rollup/rollup-linux-riscv64-gnu@4.30.1': + optional: true + + '@rollup/rollup-linux-s390x-gnu@4.30.1': + optional: true + + '@rollup/rollup-linux-x64-gnu@4.30.1': + optional: true + + '@rollup/rollup-linux-x64-musl@4.30.1': + optional: true + + '@rollup/rollup-win32-arm64-msvc@4.30.1': + optional: true + + '@rollup/rollup-win32-ia32-msvc@4.30.1': + optional: true + + '@rollup/rollup-win32-x64-msvc@4.30.1': + optional: true + + '@solid-primitives/event-listener@2.3.3(solid-js@1.9.4)': + dependencies: + '@solid-primitives/utils': 6.2.3(solid-js@1.9.4) + solid-js: 1.9.4 + + '@solid-primitives/keyed@1.4.0(solid-js@1.9.4)': + dependencies: + solid-js: 1.9.4 + + '@solid-primitives/map@0.4.13(solid-js@1.9.4)': + dependencies: + '@solid-primitives/trigger': 1.1.0(solid-js@1.9.4) + solid-js: 1.9.4 + + '@solid-primitives/media@2.2.10(solid-js@1.9.4)': + dependencies: + '@solid-primitives/event-listener': 2.3.3(solid-js@1.9.4) + '@solid-primitives/rootless': 1.4.5(solid-js@1.9.4) + '@solid-primitives/static-store': 0.0.9(solid-js@1.9.4) + '@solid-primitives/utils': 6.2.3(solid-js@1.9.4) + solid-js: 1.9.4 + + '@solid-primitives/props@3.1.11(solid-js@1.9.4)': + dependencies: + '@solid-primitives/utils': 6.2.3(solid-js@1.9.4) + solid-js: 1.9.4 + + '@solid-primitives/refs@1.0.8(solid-js@1.9.4)': + dependencies: + '@solid-primitives/utils': 6.2.3(solid-js@1.9.4) + solid-js: 1.9.4 + + '@solid-primitives/resize-observer@2.0.27(solid-js@1.9.4)': + dependencies: + '@solid-primitives/event-listener': 2.3.3(solid-js@1.9.4) + '@solid-primitives/rootless': 1.4.5(solid-js@1.9.4) + '@solid-primitives/static-store': 0.0.9(solid-js@1.9.4) + '@solid-primitives/utils': 6.2.3(solid-js@1.9.4) + solid-js: 1.9.4 + + '@solid-primitives/rootless@1.4.5(solid-js@1.9.4)': + dependencies: + '@solid-primitives/utils': 6.2.3(solid-js@1.9.4) + solid-js: 1.9.4 + + '@solid-primitives/static-store@0.0.9(solid-js@1.9.4)': + dependencies: + '@solid-primitives/utils': 6.2.3(solid-js@1.9.4) + solid-js: 1.9.4 + + '@solid-primitives/transition-group@1.0.5(solid-js@1.9.4)': + dependencies: + solid-js: 1.9.4 + + '@solid-primitives/trigger@1.1.0(solid-js@1.9.4)': + dependencies: + '@solid-primitives/utils': 6.2.3(solid-js@1.9.4) + solid-js: 1.9.4 + + '@solid-primitives/utils@6.2.3(solid-js@1.9.4)': + dependencies: + solid-js: 1.9.4 + + '@stylistic/eslint-plugin@2.12.1(eslint@9.11.0(jiti@1.21.7))(typescript@5.7.3)': + dependencies: + '@typescript-eslint/utils': 8.19.1(eslint@9.11.0(jiti@1.21.7))(typescript@5.7.3) + eslint: 9.11.0(jiti@1.21.7) + eslint-visitor-keys: 4.2.0 + espree: 10.3.0 + estraverse: 5.3.0 + picomatch: 4.0.2 + transitivePeerDependencies: + - supports-color + - typescript + + '@swc/helpers@0.5.15': + dependencies: + tslib: 2.8.1 + + '@types/babel__core@7.20.5': + dependencies: + '@babel/parser': 7.26.5 + '@babel/types': 7.26.5 + '@types/babel__generator': 7.6.8 + '@types/babel__template': 7.4.4 + '@types/babel__traverse': 7.20.6 + + '@types/babel__generator@7.6.8': + dependencies: + '@babel/types': 7.26.5 + + '@types/babel__template@7.4.4': + dependencies: + '@babel/parser': 7.26.5 + '@babel/types': 7.26.5 + + '@types/babel__traverse@7.20.6': + dependencies: + '@babel/types': 7.26.5 + + '@types/debug@4.1.12': + dependencies: + '@types/ms': 0.7.34 + + '@types/doctrine@0.0.9': {} + + '@types/eslint@9.6.1': + dependencies: + '@types/estree': 1.0.6 + '@types/json-schema': 7.0.15 + + '@types/estree@1.0.6': {} + + '@types/events@3.0.0': {} + + '@types/gunzip-maybe@1.4.0': + dependencies: + '@types/node': 22.5.5 + + '@types/json-schema@7.0.15': {} + + '@types/mdast@4.0.4': + dependencies: + '@types/unist': 3.0.3 + + '@types/ms@0.7.34': {} + + '@types/node@22.10.5': + dependencies: + undici-types: 6.20.0 + + '@types/node@22.5.5': + dependencies: + undici-types: 6.19.8 + + '@types/normalize-package-data@2.4.4': {} + + '@types/semver@7.5.4': {} + + '@types/semver@7.5.8': {} + + '@types/tar-stream@3.1.2': + dependencies: + '@types/node': 22.5.5 + + '@types/unist@3.0.3': {} + + '@typescript-eslint/eslint-plugin@8.19.1(@typescript-eslint/parser@8.19.1(eslint@9.11.0(jiti@1.21.7))(typescript@5.7.3))(eslint@9.11.0(jiti@1.21.7))(typescript@5.7.3)': + dependencies: + '@eslint-community/regexpp': 4.12.1 + '@typescript-eslint/parser': 8.19.1(eslint@9.11.0(jiti@1.21.7))(typescript@5.7.3) + '@typescript-eslint/scope-manager': 8.19.1 + '@typescript-eslint/type-utils': 8.19.1(eslint@9.11.0(jiti@1.21.7))(typescript@5.7.3) + '@typescript-eslint/utils': 8.19.1(eslint@9.11.0(jiti@1.21.7))(typescript@5.7.3) + '@typescript-eslint/visitor-keys': 8.19.1 + eslint: 9.11.0(jiti@1.21.7) + graphemer: 1.4.0 + ignore: 5.3.2 + natural-compare: 1.4.0 + ts-api-utils: 2.0.0(typescript@5.7.3) + typescript: 5.7.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/parser@8.19.1(eslint@9.11.0(jiti@1.21.7))(typescript@5.7.3)': + dependencies: + '@typescript-eslint/scope-manager': 8.19.1 + '@typescript-eslint/types': 8.19.1 + '@typescript-eslint/typescript-estree': 8.19.1(typescript@5.7.3) + '@typescript-eslint/visitor-keys': 8.19.1 + debug: 4.4.0 + eslint: 9.11.0(jiti@1.21.7) + typescript: 5.7.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/scope-manager@8.19.1': + dependencies: + '@typescript-eslint/types': 8.19.1 + '@typescript-eslint/visitor-keys': 8.19.1 + + '@typescript-eslint/type-utils@8.19.1(eslint@9.11.0(jiti@1.21.7))(typescript@5.7.3)': + dependencies: + '@typescript-eslint/typescript-estree': 8.19.1(typescript@5.7.3) + '@typescript-eslint/utils': 8.19.1(eslint@9.11.0(jiti@1.21.7))(typescript@5.7.3) + debug: 4.4.0 + eslint: 9.11.0(jiti@1.21.7) + ts-api-utils: 2.0.0(typescript@5.7.3) + typescript: 5.7.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/types@8.19.1': {} + + '@typescript-eslint/typescript-estree@8.19.1(typescript@5.7.3)': + dependencies: + '@typescript-eslint/types': 8.19.1 + '@typescript-eslint/visitor-keys': 8.19.1 + debug: 4.4.0 + fast-glob: 3.3.3 + is-glob: 4.0.3 + minimatch: 9.0.5 + semver: 7.6.3 + ts-api-utils: 2.0.0(typescript@5.7.3) + typescript: 5.7.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/utils@8.19.1(eslint@9.11.0(jiti@1.21.7))(typescript@5.7.3)': + dependencies: + '@eslint-community/eslint-utils': 4.4.1(eslint@9.11.0(jiti@1.21.7)) + '@typescript-eslint/scope-manager': 8.19.1 + '@typescript-eslint/types': 8.19.1 + '@typescript-eslint/typescript-estree': 8.19.1(typescript@5.7.3) + eslint: 9.11.0(jiti@1.21.7) + typescript: 5.7.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/visitor-keys@8.19.1': + dependencies: + '@typescript-eslint/types': 8.19.1 + eslint-visitor-keys: 4.2.0 + + '@vitest/eslint-plugin@1.1.24(@typescript-eslint/utils@8.19.1(eslint@9.11.0(jiti@1.21.7))(typescript@5.7.3))(eslint@9.11.0(jiti@1.21.7))(typescript@5.7.3)': + dependencies: + '@typescript-eslint/utils': 8.19.1(eslint@9.11.0(jiti@1.21.7))(typescript@5.7.3) + eslint: 9.11.0(jiti@1.21.7) + optionalDependencies: + typescript: 5.7.3 + + '@vue/compiler-core@3.5.7': + dependencies: + '@babel/parser': 7.26.5 + '@vue/shared': 3.5.7 + entities: 4.5.0 + estree-walker: 2.0.2 + source-map-js: 1.2.1 + + '@vue/compiler-dom@3.5.7': + dependencies: + '@vue/compiler-core': 3.5.7 + '@vue/shared': 3.5.7 + + '@vue/compiler-sfc@3.5.7': + dependencies: + '@babel/parser': 7.26.5 + '@vue/compiler-core': 3.5.7 + '@vue/compiler-dom': 3.5.7 + '@vue/compiler-ssr': 3.5.7 + '@vue/shared': 3.5.7 + estree-walker: 2.0.2 + magic-string: 0.30.17 + postcss: 8.4.49 + source-map-js: 1.2.1 + + '@vue/compiler-ssr@3.5.7': + dependencies: + '@vue/compiler-dom': 3.5.7 + '@vue/shared': 3.5.7 + + '@vue/shared@3.5.7': {} + + acorn-jsx@5.3.2(acorn@8.14.0): + dependencies: + acorn: 8.14.0 + + acorn@8.14.0: {} + + ajv@6.12.6: + dependencies: + fast-deep-equal: 3.1.3 + fast-json-stable-stringify: 2.1.0 + json-schema-traverse: 0.4.1 + uri-js: 4.4.1 + + ansi-regex@5.0.1: {} + + ansi-regex@6.1.0: {} + + ansi-styles@4.3.0: + dependencies: + color-convert: 2.0.1 + + ansi-styles@6.2.1: {} + + any-promise@1.3.0: {} + + anymatch@3.1.3: + dependencies: + normalize-path: 3.0.0 + picomatch: 2.3.1 + + are-docs-informative@0.0.2: {} + + arg@5.0.2: {} + + argparse@2.0.1: {} + + autoprefixer@10.4.20(postcss@8.4.49): + dependencies: + browserslist: 4.24.4 + caniuse-lite: 1.0.30001692 + fraction.js: 4.3.7 + normalize-range: 0.1.2 + picocolors: 1.1.1 + postcss: 8.4.49 + postcss-value-parser: 4.2.0 + + b4a@1.6.6: {} + + babel-plugin-jsx-dom-expressions@0.39.5(@babel/core@7.26.0): + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-module-imports': 7.18.6 + '@babel/plugin-syntax-jsx': 7.25.9(@babel/core@7.26.0) + '@babel/types': 7.26.5 + html-entities: 2.3.3 + parse5: 7.2.1 + validate-html-nesting: 1.2.2 + + babel-preset-solid@1.9.3(@babel/core@7.26.0): + dependencies: + '@babel/core': 7.26.0 + babel-plugin-jsx-dom-expressions: 0.39.5(@babel/core@7.26.0) + + balanced-match@1.0.2: {} + + bare-events@2.5.0: + optional: true + + binary-extensions@2.3.0: {} + + boolbase@1.0.0: {} + + brace-expansion@1.1.11: + dependencies: + balanced-match: 1.0.2 + concat-map: 0.0.1 + + brace-expansion@2.0.1: + dependencies: + balanced-match: 1.0.2 + + braces@3.0.3: + dependencies: + fill-range: 7.1.1 + + browserify-zlib@0.1.4: + dependencies: + pako: 0.2.9 + + browserslist@4.24.4: + dependencies: + caniuse-lite: 1.0.30001692 + electron-to-chromium: 1.5.80 + node-releases: 2.0.19 + update-browserslist-db: 1.1.2(browserslist@4.24.4) + + buffer-from@1.1.2: {} + + builtin-modules@3.3.0: {} + + callsites@3.1.0: {} + + camelcase-css@2.0.1: {} + + caniuse-lite@1.0.30001692: {} + + ccount@2.0.1: {} + + chalk@4.1.2: + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + + character-entities@2.0.2: {} + + chokidar@3.6.0: + dependencies: + anymatch: 3.1.3 + braces: 3.0.3 + glob-parent: 5.1.2 + is-binary-path: 2.1.0 + is-glob: 4.0.3 + normalize-path: 3.0.0 + readdirp: 3.6.0 + optionalDependencies: + fsevents: 2.3.3 + + ci-info@4.1.0: {} + + class-variance-authority@0.7.1: + dependencies: + clsx: 2.1.1 + + clean-regexp@1.0.0: + dependencies: + escape-string-regexp: 1.0.5 + + cliui@8.0.1: + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 7.0.0 + + clsx@2.1.1: {} + + color-convert@2.0.1: + dependencies: + color-name: 1.1.4 + + color-name@1.1.4: {} + + commander@4.1.1: {} + + commander@8.3.0: {} + + comment-parser@1.4.1: {} + + concat-map@0.0.1: {} + + confbox@0.1.8: {} + + convert-source-map@2.0.0: {} + + core-js-compat@3.40.0: + dependencies: + browserslist: 4.24.4 + + core-util-is@1.0.3: {} + + cross-spawn@7.0.6: + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + + cssesc@3.0.0: {} + + csstype@3.1.3: {} + + debug@3.2.7: + dependencies: + ms: 2.1.3 + + debug@4.4.0: + dependencies: + ms: 2.1.3 + + decode-named-character-reference@1.0.2: + dependencies: + character-entities: 2.0.2 + + deep-is@0.1.4: {} + + dequal@2.0.3: {} + + devlop@1.1.0: + dependencies: + dequal: 2.0.3 + + didyoumean@1.2.2: {} + + dlv@1.1.3: {} + + doctrine@3.0.0: + dependencies: + esutils: 2.0.3 + + duplexify@3.7.1: + dependencies: + end-of-stream: 1.4.4 + inherits: 2.0.4 + readable-stream: 2.3.8 + stream-shift: 1.0.3 + + eastasianwidth@0.2.0: {} + + electron-to-chromium@1.5.80: {} + + emoji-regex@8.0.0: {} + + emoji-regex@9.2.2: {} + + end-of-stream@1.4.4: + dependencies: + once: 1.4.0 + + enhanced-resolve@5.18.0: + dependencies: + graceful-fs: 4.2.11 + tapable: 2.2.1 + + entities@4.5.0: {} + + error-ex@1.3.2: + dependencies: + is-arrayish: 0.2.1 + + es-module-lexer@1.6.0: {} + + esbuild@0.21.5: + optionalDependencies: + '@esbuild/aix-ppc64': 0.21.5 + '@esbuild/android-arm': 0.21.5 + '@esbuild/android-arm64': 0.21.5 + '@esbuild/android-x64': 0.21.5 + '@esbuild/darwin-arm64': 0.21.5 + '@esbuild/darwin-x64': 0.21.5 + '@esbuild/freebsd-arm64': 0.21.5 + '@esbuild/freebsd-x64': 0.21.5 + '@esbuild/linux-arm': 0.21.5 + '@esbuild/linux-arm64': 0.21.5 + '@esbuild/linux-ia32': 0.21.5 + '@esbuild/linux-loong64': 0.21.5 + '@esbuild/linux-mips64el': 0.21.5 + '@esbuild/linux-ppc64': 0.21.5 + '@esbuild/linux-riscv64': 0.21.5 + '@esbuild/linux-s390x': 0.21.5 + '@esbuild/linux-x64': 0.21.5 + '@esbuild/netbsd-x64': 0.21.5 + '@esbuild/openbsd-x64': 0.21.5 + '@esbuild/sunos-x64': 0.21.5 + '@esbuild/win32-arm64': 0.21.5 + '@esbuild/win32-ia32': 0.21.5 + '@esbuild/win32-x64': 0.21.5 + + esbuild@0.24.2: + optionalDependencies: + '@esbuild/aix-ppc64': 0.24.2 + '@esbuild/android-arm': 0.24.2 + '@esbuild/android-arm64': 0.24.2 + '@esbuild/android-x64': 0.24.2 + '@esbuild/darwin-arm64': 0.24.2 + '@esbuild/darwin-x64': 0.24.2 + '@esbuild/freebsd-arm64': 0.24.2 + '@esbuild/freebsd-x64': 0.24.2 + '@esbuild/linux-arm': 0.24.2 + '@esbuild/linux-arm64': 0.24.2 + '@esbuild/linux-ia32': 0.24.2 + '@esbuild/linux-loong64': 0.24.2 + '@esbuild/linux-mips64el': 0.24.2 + '@esbuild/linux-ppc64': 0.24.2 + '@esbuild/linux-riscv64': 0.24.2 + '@esbuild/linux-s390x': 0.24.2 + '@esbuild/linux-x64': 0.24.2 + '@esbuild/netbsd-arm64': 0.24.2 + '@esbuild/netbsd-x64': 0.24.2 + '@esbuild/openbsd-arm64': 0.24.2 + '@esbuild/openbsd-x64': 0.24.2 + '@esbuild/sunos-x64': 0.24.2 + '@esbuild/win32-arm64': 0.24.2 + '@esbuild/win32-ia32': 0.24.2 + '@esbuild/win32-x64': 0.24.2 + + escalade@3.2.0: {} + + escape-string-regexp@1.0.5: {} + + escape-string-regexp@4.0.0: {} + + escape-string-regexp@5.0.0: {} + + eslint-compat-utils@0.5.1(eslint@9.11.0(jiti@1.21.7)): + dependencies: + eslint: 9.11.0(jiti@1.21.7) + semver: 7.6.3 + + eslint-compat-utils@0.6.4(eslint@9.11.0(jiti@1.21.7)): + dependencies: + eslint: 9.11.0(jiti@1.21.7) + semver: 7.6.3 + + eslint-config-flat-gitignore@1.0.0(eslint@9.11.0(jiti@1.21.7)): + dependencies: + '@eslint/compat': 1.2.5(eslint@9.11.0(jiti@1.21.7)) + eslint: 9.11.0(jiti@1.21.7) + find-up-simple: 1.0.0 + + eslint-flat-config-utils@1.0.0: + dependencies: + pathe: 2.0.1 + + eslint-import-resolver-node@0.3.9: + dependencies: + debug: 3.2.7 + is-core-module: 2.16.1 + resolve: 1.22.10 + transitivePeerDependencies: + - supports-color + + eslint-json-compat-utils@0.2.1(eslint@9.11.0(jiti@1.21.7))(jsonc-eslint-parser@2.4.0): + dependencies: + eslint: 9.11.0(jiti@1.21.7) + esquery: 1.6.0 + jsonc-eslint-parser: 2.4.0 + + eslint-merge-processors@1.0.0(eslint@9.11.0(jiti@1.21.7)): + dependencies: + eslint: 9.11.0(jiti@1.21.7) + + eslint-plugin-antfu@2.7.0(eslint@9.11.0(jiti@1.21.7)): + dependencies: + '@antfu/utils': 0.7.10 + eslint: 9.11.0(jiti@1.21.7) + + eslint-plugin-command@2.1.0(eslint@9.11.0(jiti@1.21.7)): + dependencies: + '@es-joy/jsdoccomment': 0.50.0 + eslint: 9.11.0(jiti@1.21.7) + + eslint-plugin-es-x@7.8.0(eslint@9.11.0(jiti@1.21.7)): + dependencies: + '@eslint-community/eslint-utils': 4.4.1(eslint@9.11.0(jiti@1.21.7)) + '@eslint-community/regexpp': 4.12.1 + eslint: 9.11.0(jiti@1.21.7) + eslint-compat-utils: 0.5.1(eslint@9.11.0(jiti@1.21.7)) + + eslint-plugin-import-x@4.6.1(eslint@9.11.0(jiti@1.21.7))(typescript@5.7.3): + dependencies: + '@types/doctrine': 0.0.9 + '@typescript-eslint/scope-manager': 8.19.1 + '@typescript-eslint/utils': 8.19.1(eslint@9.11.0(jiti@1.21.7))(typescript@5.7.3) + debug: 4.4.0 + doctrine: 3.0.0 + enhanced-resolve: 5.18.0 + eslint: 9.11.0(jiti@1.21.7) + eslint-import-resolver-node: 0.3.9 + get-tsconfig: 4.8.1 + is-glob: 4.0.3 + minimatch: 9.0.5 + semver: 7.6.3 + stable-hash: 0.0.4 + tslib: 2.8.1 + transitivePeerDependencies: + - supports-color + - typescript + + eslint-plugin-jsdoc@50.6.1(eslint@9.11.0(jiti@1.21.7)): + dependencies: + '@es-joy/jsdoccomment': 0.49.0 + are-docs-informative: 0.0.2 + comment-parser: 1.4.1 + debug: 4.4.0 + escape-string-regexp: 4.0.0 + eslint: 9.11.0(jiti@1.21.7) + espree: 10.3.0 + esquery: 1.6.0 + parse-imports: 2.2.1 + semver: 7.6.3 + spdx-expression-parse: 4.0.0 + synckit: 0.9.2 + transitivePeerDependencies: + - supports-color + + eslint-plugin-jsonc@2.18.2(eslint@9.11.0(jiti@1.21.7)): + dependencies: + '@eslint-community/eslint-utils': 4.4.1(eslint@9.11.0(jiti@1.21.7)) + eslint: 9.11.0(jiti@1.21.7) + eslint-compat-utils: 0.6.4(eslint@9.11.0(jiti@1.21.7)) + eslint-json-compat-utils: 0.2.1(eslint@9.11.0(jiti@1.21.7))(jsonc-eslint-parser@2.4.0) + espree: 9.6.1 + graphemer: 1.4.0 + jsonc-eslint-parser: 2.4.0 + natural-compare: 1.4.0 + synckit: 0.6.2 + transitivePeerDependencies: + - '@eslint/json' + + eslint-plugin-n@17.15.1(eslint@9.11.0(jiti@1.21.7)): + dependencies: + '@eslint-community/eslint-utils': 4.4.1(eslint@9.11.0(jiti@1.21.7)) + enhanced-resolve: 5.18.0 + eslint: 9.11.0(jiti@1.21.7) + eslint-plugin-es-x: 7.8.0(eslint@9.11.0(jiti@1.21.7)) + get-tsconfig: 4.8.1 + globals: 15.14.0 + ignore: 5.3.2 + minimatch: 9.0.5 + semver: 7.6.3 + + eslint-plugin-no-only-tests@3.3.0: {} + + eslint-plugin-perfectionist@4.6.0(eslint@9.11.0(jiti@1.21.7))(typescript@5.7.3): + dependencies: + '@typescript-eslint/types': 8.19.1 + '@typescript-eslint/utils': 8.19.1(eslint@9.11.0(jiti@1.21.7))(typescript@5.7.3) + eslint: 9.11.0(jiti@1.21.7) + natural-orderby: 5.0.0 + transitivePeerDependencies: + - supports-color + - typescript + + eslint-plugin-regexp@2.7.0(eslint@9.11.0(jiti@1.21.7)): + dependencies: + '@eslint-community/eslint-utils': 4.4.1(eslint@9.11.0(jiti@1.21.7)) + '@eslint-community/regexpp': 4.12.1 + comment-parser: 1.4.1 + eslint: 9.11.0(jiti@1.21.7) + jsdoc-type-pratt-parser: 4.1.0 + refa: 0.12.1 + regexp-ast-analysis: 0.7.1 + scslre: 0.3.0 + + eslint-plugin-solid@0.14.5(eslint@9.11.0(jiti@1.21.7))(typescript@5.7.3): + dependencies: + '@typescript-eslint/utils': 8.19.1(eslint@9.11.0(jiti@1.21.7))(typescript@5.7.3) + eslint: 9.11.0(jiti@1.21.7) + estraverse: 5.3.0 + is-html: 2.0.0 + kebab-case: 1.0.2 + known-css-properties: 0.30.0 + style-to-object: 1.0.8 + typescript: 5.7.3 + transitivePeerDependencies: + - supports-color + + eslint-plugin-tailwindcss@3.17.5(tailwindcss@3.4.17): + dependencies: + fast-glob: 3.3.3 + postcss: 8.4.49 + tailwindcss: 3.4.17 + + eslint-plugin-toml@0.12.0(eslint@9.11.0(jiti@1.21.7)): + dependencies: + debug: 4.4.0 + eslint: 9.11.0(jiti@1.21.7) + eslint-compat-utils: 0.6.4(eslint@9.11.0(jiti@1.21.7)) + lodash: 4.17.21 + toml-eslint-parser: 0.10.0 + transitivePeerDependencies: + - supports-color + + eslint-plugin-unicorn@56.0.1(eslint@9.11.0(jiti@1.21.7)): + dependencies: + '@babel/helper-validator-identifier': 7.25.9 + '@eslint-community/eslint-utils': 4.4.1(eslint@9.11.0(jiti@1.21.7)) + ci-info: 4.1.0 + clean-regexp: 1.0.0 + core-js-compat: 3.40.0 + eslint: 9.11.0(jiti@1.21.7) + esquery: 1.6.0 + globals: 15.14.0 + indent-string: 4.0.0 + is-builtin-module: 3.2.1 + jsesc: 3.1.0 + pluralize: 8.0.0 + read-pkg-up: 7.0.1 + regexp-tree: 0.1.27 + regjsparser: 0.10.0 + semver: 7.6.3 + strip-indent: 3.0.0 + + eslint-plugin-unused-imports@4.1.4(@typescript-eslint/eslint-plugin@8.19.1(@typescript-eslint/parser@8.19.1(eslint@9.11.0(jiti@1.21.7))(typescript@5.7.3))(eslint@9.11.0(jiti@1.21.7))(typescript@5.7.3))(eslint@9.11.0(jiti@1.21.7)): + dependencies: + eslint: 9.11.0(jiti@1.21.7) + optionalDependencies: + '@typescript-eslint/eslint-plugin': 8.19.1(@typescript-eslint/parser@8.19.1(eslint@9.11.0(jiti@1.21.7))(typescript@5.7.3))(eslint@9.11.0(jiti@1.21.7))(typescript@5.7.3) + + eslint-plugin-vue@9.32.0(eslint@9.11.0(jiti@1.21.7)): + dependencies: + '@eslint-community/eslint-utils': 4.4.1(eslint@9.11.0(jiti@1.21.7)) + eslint: 9.11.0(jiti@1.21.7) + globals: 13.24.0 + natural-compare: 1.4.0 + nth-check: 2.1.1 + postcss-selector-parser: 6.1.2 + semver: 7.6.3 + vue-eslint-parser: 9.4.3(eslint@9.11.0(jiti@1.21.7)) + xml-name-validator: 4.0.0 + transitivePeerDependencies: + - supports-color + + eslint-plugin-yml@1.16.0(eslint@9.11.0(jiti@1.21.7)): + dependencies: + debug: 4.4.0 + eslint: 9.11.0(jiti@1.21.7) + eslint-compat-utils: 0.6.4(eslint@9.11.0(jiti@1.21.7)) + lodash: 4.17.21 + natural-compare: 1.4.0 + yaml-eslint-parser: 1.2.3 + transitivePeerDependencies: + - supports-color + + eslint-processor-vue-blocks@1.0.0(@vue/compiler-sfc@3.5.7)(eslint@9.11.0(jiti@1.21.7)): + dependencies: + '@vue/compiler-sfc': 3.5.7 + eslint: 9.11.0(jiti@1.21.7) + + eslint-scope@7.2.2: + dependencies: + esrecurse: 4.3.0 + estraverse: 5.3.0 + + eslint-scope@8.2.0: + dependencies: + esrecurse: 4.3.0 + estraverse: 5.3.0 + + eslint-visitor-keys@3.4.3: {} + + eslint-visitor-keys@4.2.0: {} + + eslint@9.11.0(jiti@1.21.7): + dependencies: + '@eslint-community/eslint-utils': 4.4.1(eslint@9.11.0(jiti@1.21.7)) + '@eslint-community/regexpp': 4.12.1 + '@eslint/config-array': 0.18.0 + '@eslint/eslintrc': 3.2.0 + '@eslint/js': 9.11.0 + '@eslint/plugin-kit': 0.2.5 + '@humanwhocodes/module-importer': 1.0.1 + '@humanwhocodes/retry': 0.3.1 + '@nodelib/fs.walk': 1.2.8 + ajv: 6.12.6 + chalk: 4.1.2 + cross-spawn: 7.0.6 + debug: 4.4.0 + escape-string-regexp: 4.0.0 + eslint-scope: 8.2.0 + eslint-visitor-keys: 4.2.0 + espree: 10.3.0 + esquery: 1.6.0 + esutils: 2.0.3 + fast-deep-equal: 3.1.3 + file-entry-cache: 8.0.0 + find-up: 5.0.0 + glob-parent: 6.0.2 + ignore: 5.3.2 + imurmurhash: 0.1.4 + is-glob: 4.0.3 + is-path-inside: 3.0.3 + json-stable-stringify-without-jsonify: 1.0.1 + lodash.merge: 4.6.2 + minimatch: 3.1.2 + natural-compare: 1.4.0 + optionator: 0.9.4 + strip-ansi: 6.0.1 + text-table: 0.2.0 + optionalDependencies: + jiti: 1.21.7 + transitivePeerDependencies: + - supports-color + + espree@10.3.0: + dependencies: + acorn: 8.14.0 + acorn-jsx: 5.3.2(acorn@8.14.0) + eslint-visitor-keys: 4.2.0 + + espree@9.6.1: + dependencies: + acorn: 8.14.0 + acorn-jsx: 5.3.2(acorn@8.14.0) + eslint-visitor-keys: 3.4.3 + + esquery@1.6.0: + dependencies: + estraverse: 5.3.0 + + esrecurse@4.3.0: + dependencies: + estraverse: 5.3.0 + + estraverse@5.3.0: {} + + estree-walker@2.0.2: {} + + esutils@2.0.3: {} + + fast-deep-equal@3.1.3: {} + + fast-fifo@1.3.2: {} + + fast-glob@3.3.3: + dependencies: + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.8 + + fast-json-stable-stringify@2.1.0: {} + + fast-levenshtein@2.0.6: {} + + fast-plist@0.1.3: {} + + fastq@1.18.0: + dependencies: + reusify: 1.0.4 + + fflate@0.8.2: {} + + file-entry-cache@8.0.0: + dependencies: + flat-cache: 4.0.1 + + filesize@10.1.6: {} + + fill-range@7.1.1: + dependencies: + to-regex-range: 5.0.1 + + find-up-simple@1.0.0: {} + + find-up@4.1.0: + dependencies: + locate-path: 5.0.0 + path-exists: 4.0.0 + + find-up@5.0.0: + dependencies: + locate-path: 6.0.0 + path-exists: 4.0.0 + + flat-cache@4.0.1: + dependencies: + flatted: 3.3.2 + keyv: 4.5.4 + + flatted@3.3.2: {} + + foreground-child@3.3.0: + dependencies: + cross-spawn: 7.0.6 + signal-exit: 4.1.0 + + fraction.js@4.3.7: {} + + fs-extra@7.0.1: + dependencies: + graceful-fs: 4.2.11 + jsonfile: 4.0.0 + universalify: 0.1.2 + + fsevents@2.3.3: + optional: true + + function-bind@1.1.2: {} + + gensync@1.0.0-beta.2: {} + + get-caller-file@2.0.5: {} + + get-tsconfig@4.8.1: + dependencies: + resolve-pkg-maps: 1.0.0 + + glob-parent@5.1.2: + dependencies: + is-glob: 4.0.3 + + glob-parent@6.0.2: + dependencies: + is-glob: 4.0.3 + + glob@10.4.5: + dependencies: + foreground-child: 3.3.0 + jackspeak: 3.4.3 + minimatch: 9.0.5 + minipass: 7.1.2 + package-json-from-dist: 1.0.1 + path-scurry: 1.11.1 + + globals@11.12.0: {} + + globals@13.24.0: + dependencies: + type-fest: 0.20.2 + + globals@14.0.0: {} + + globals@15.14.0: {} + + graceful-fs@4.2.11: {} + + graphemer@1.4.0: {} + + gunzip-maybe@1.4.2: + dependencies: + browserify-zlib: 0.1.4 + is-deflate: 1.0.0 + is-gzip: 1.0.0 + peek-stream: 1.1.3 + pumpify: 1.5.1 + through2: 2.0.5 + + has-flag@4.0.0: {} + + hasown@2.0.2: + dependencies: + function-bind: 1.1.2 + + hosted-git-info@2.8.9: {} + + html-entities@2.3.3: {} + + html-tags@3.3.1: {} + + hyperdyperid@1.2.0: {} + + idb@8.0.1: {} + + ignore@5.3.2: {} + + import-fresh@3.3.0: + dependencies: + parent-module: 1.0.1 + resolve-from: 4.0.0 + + imurmurhash@0.1.4: {} + + indent-string@4.0.0: {} + + inherits@2.0.4: {} + + inline-style-parser@0.2.4: {} + + ipaddr.js@2.2.0: {} + + is-arrayish@0.2.1: {} + + is-binary-path@2.1.0: + dependencies: + binary-extensions: 2.3.0 + + is-builtin-module@3.2.1: + dependencies: + builtin-modules: 3.3.0 + + is-core-module@2.16.1: + dependencies: + hasown: 2.0.2 + + is-deflate@1.0.0: {} + + is-extglob@2.1.1: {} + + is-fullwidth-code-point@3.0.0: {} + + is-glob@4.0.3: + dependencies: + is-extglob: 2.1.1 + + is-gzip@1.0.0: {} + + is-html@2.0.0: + dependencies: + html-tags: 3.3.1 + + is-number@7.0.0: {} + + is-path-inside@3.0.3: {} + + is-what@4.1.16: {} + + isarray@1.0.0: {} + + isexe@2.0.0: {} + + jackspeak@3.4.3: + dependencies: + '@isaacs/cliui': 8.0.2 + optionalDependencies: + '@pkgjs/parseargs': 0.11.0 + + jiti@1.21.7: {} + + js-tokens@4.0.0: {} + + js-yaml@4.1.0: + dependencies: + argparse: 2.0.1 + + jsdoc-type-pratt-parser@4.1.0: {} + + jsesc@0.5.0: {} + + jsesc@3.1.0: {} + + json-buffer@3.0.1: {} + + json-parse-even-better-errors@2.3.1: {} + + json-schema-traverse@0.4.1: {} + + json-stable-stringify-without-jsonify@1.0.1: {} + + json5@2.2.3: {} + + jsonc-eslint-parser@2.4.0: + dependencies: + acorn: 8.14.0 + eslint-visitor-keys: 3.4.3 + espree: 9.6.1 + semver: 7.6.3 + + jsonfile@4.0.0: + optionalDependencies: + graceful-fs: 4.2.11 + + kebab-case@1.0.2: {} + + keyv@4.5.4: + dependencies: + json-buffer: 3.0.1 + + known-css-properties@0.30.0: {} + + levn@0.4.1: + dependencies: + prelude-ls: 1.2.1 + type-check: 0.4.0 + + lilconfig@3.1.3: {} + + lines-and-columns@1.2.4: {} + + local-pkg@1.0.0: + dependencies: + mlly: 1.7.3 + pkg-types: 1.3.0 + + locate-path@5.0.0: + dependencies: + p-locate: 4.1.0 + + locate-path@6.0.0: + dependencies: + p-locate: 5.0.0 + + lodash.merge@4.6.2: {} + + lodash@4.17.21: {} + + long@5.2.3: {} + + longest-streak@3.1.0: {} + + lru-cache@10.4.3: {} + + lru-cache@5.1.1: + dependencies: + yallist: 3.1.1 + + lucide-solid@0.445.0(solid-js@1.9.4): + dependencies: + solid-js: 1.9.4 + + magic-string@0.30.17: + dependencies: + '@jridgewell/sourcemap-codec': 1.5.0 + + markdown-table@3.0.4: {} + + mdast-util-find-and-replace@3.0.2: + dependencies: + '@types/mdast': 4.0.4 + escape-string-regexp: 5.0.0 + unist-util-is: 6.0.0 + unist-util-visit-parents: 6.0.1 + + mdast-util-from-markdown@2.0.2: + dependencies: + '@types/mdast': 4.0.4 + '@types/unist': 3.0.3 + decode-named-character-reference: 1.0.2 + devlop: 1.1.0 + mdast-util-to-string: 4.0.0 + micromark: 4.0.1 + micromark-util-decode-numeric-character-reference: 2.0.2 + micromark-util-decode-string: 2.0.1 + micromark-util-normalize-identifier: 2.0.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.1 + unist-util-stringify-position: 4.0.0 + transitivePeerDependencies: + - supports-color + + mdast-util-gfm-autolink-literal@2.0.1: + dependencies: + '@types/mdast': 4.0.4 + ccount: 2.0.1 + devlop: 1.1.0 + mdast-util-find-and-replace: 3.0.2 + micromark-util-character: 2.1.1 + + mdast-util-gfm-footnote@2.0.0: + dependencies: + '@types/mdast': 4.0.4 + devlop: 1.1.0 + mdast-util-from-markdown: 2.0.2 + mdast-util-to-markdown: 2.1.2 + micromark-util-normalize-identifier: 2.0.1 + transitivePeerDependencies: + - supports-color + + mdast-util-gfm-strikethrough@2.0.0: + dependencies: + '@types/mdast': 4.0.4 + mdast-util-from-markdown: 2.0.2 + mdast-util-to-markdown: 2.1.2 + transitivePeerDependencies: + - supports-color + + mdast-util-gfm-table@2.0.0: + dependencies: + '@types/mdast': 4.0.4 + devlop: 1.1.0 + markdown-table: 3.0.4 + mdast-util-from-markdown: 2.0.2 + mdast-util-to-markdown: 2.1.2 + transitivePeerDependencies: + - supports-color + + mdast-util-gfm-task-list-item@2.0.0: + dependencies: + '@types/mdast': 4.0.4 + devlop: 1.1.0 + mdast-util-from-markdown: 2.0.2 + mdast-util-to-markdown: 2.1.2 + transitivePeerDependencies: + - supports-color + + mdast-util-gfm@3.0.0: + dependencies: + mdast-util-from-markdown: 2.0.2 + mdast-util-gfm-autolink-literal: 2.0.1 + mdast-util-gfm-footnote: 2.0.0 + mdast-util-gfm-strikethrough: 2.0.0 + mdast-util-gfm-table: 2.0.0 + mdast-util-gfm-task-list-item: 2.0.0 + mdast-util-to-markdown: 2.1.2 + transitivePeerDependencies: + - supports-color + + mdast-util-phrasing@4.1.0: + dependencies: + '@types/mdast': 4.0.4 + unist-util-is: 6.0.0 + + mdast-util-to-markdown@2.1.2: + dependencies: + '@types/mdast': 4.0.4 + '@types/unist': 3.0.3 + longest-streak: 3.1.0 + mdast-util-phrasing: 4.1.0 + mdast-util-to-string: 4.0.0 + micromark-util-classify-character: 2.0.1 + micromark-util-decode-string: 2.0.1 + unist-util-visit: 5.0.0 + zwitch: 2.0.4 + + mdast-util-to-string@4.0.0: + dependencies: + '@types/mdast': 4.0.4 + + memfs@4.17.0: + dependencies: + '@jsonjoy.com/json-pack': 1.1.1(tslib@2.8.1) + '@jsonjoy.com/util': 1.5.0(tslib@2.8.1) + tree-dump: 1.0.2(tslib@2.8.1) + tslib: 2.8.1 + + merge-anything@5.1.7: + dependencies: + is-what: 4.1.16 + + merge2@1.4.1: {} + + micromark-core-commonmark@2.0.2: + dependencies: + decode-named-character-reference: 1.0.2 + devlop: 1.1.0 + micromark-factory-destination: 2.0.1 + micromark-factory-label: 2.0.1 + micromark-factory-space: 2.0.1 + micromark-factory-title: 2.0.1 + micromark-factory-whitespace: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-chunked: 2.0.1 + micromark-util-classify-character: 2.0.1 + micromark-util-html-tag-name: 2.0.1 + micromark-util-normalize-identifier: 2.0.1 + micromark-util-resolve-all: 2.0.1 + micromark-util-subtokenize: 2.0.3 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.1 + + micromark-extension-gfm-autolink-literal@2.1.0: + dependencies: + micromark-util-character: 2.1.1 + micromark-util-sanitize-uri: 2.0.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.1 + + micromark-extension-gfm-footnote@2.1.0: + dependencies: + devlop: 1.1.0 + micromark-core-commonmark: 2.0.2 + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-normalize-identifier: 2.0.1 + micromark-util-sanitize-uri: 2.0.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.1 + + micromark-extension-gfm-strikethrough@2.1.0: + dependencies: + devlop: 1.1.0 + micromark-util-chunked: 2.0.1 + micromark-util-classify-character: 2.0.1 + micromark-util-resolve-all: 2.0.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.1 + + micromark-extension-gfm-table@2.1.0: + dependencies: + devlop: 1.1.0 + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.1 + + micromark-extension-gfm-tagfilter@2.0.0: + dependencies: + micromark-util-types: 2.0.1 + + micromark-extension-gfm-task-list-item@2.1.0: + dependencies: + devlop: 1.1.0 + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.1 + + micromark-extension-gfm@3.0.0: + dependencies: + micromark-extension-gfm-autolink-literal: 2.1.0 + micromark-extension-gfm-footnote: 2.1.0 + micromark-extension-gfm-strikethrough: 2.1.0 + micromark-extension-gfm-table: 2.1.0 + micromark-extension-gfm-tagfilter: 2.0.0 + micromark-extension-gfm-task-list-item: 2.1.0 + micromark-util-combine-extensions: 2.0.1 + micromark-util-types: 2.0.1 + + micromark-factory-destination@2.0.1: + dependencies: + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.1 + + micromark-factory-label@2.0.1: + dependencies: + devlop: 1.1.0 + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.1 + + micromark-factory-space@2.0.1: + dependencies: + micromark-util-character: 2.1.1 + micromark-util-types: 2.0.1 + + micromark-factory-title@2.0.1: + dependencies: + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.1 + + micromark-factory-whitespace@2.0.1: + dependencies: + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.1 + + micromark-util-character@2.1.1: + dependencies: + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.1 + + micromark-util-chunked@2.0.1: + dependencies: + micromark-util-symbol: 2.0.1 + + micromark-util-classify-character@2.0.1: + dependencies: + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.1 + + micromark-util-combine-extensions@2.0.1: + dependencies: + micromark-util-chunked: 2.0.1 + micromark-util-types: 2.0.1 + + micromark-util-decode-numeric-character-reference@2.0.2: + dependencies: + micromark-util-symbol: 2.0.1 + + micromark-util-decode-string@2.0.1: + dependencies: + decode-named-character-reference: 1.0.2 + micromark-util-character: 2.1.1 + micromark-util-decode-numeric-character-reference: 2.0.2 + micromark-util-symbol: 2.0.1 + + micromark-util-encode@2.0.1: {} + + micromark-util-html-tag-name@2.0.1: {} + + micromark-util-normalize-identifier@2.0.1: + dependencies: + micromark-util-symbol: 2.0.1 + + micromark-util-resolve-all@2.0.1: + dependencies: + micromark-util-types: 2.0.1 + + micromark-util-sanitize-uri@2.0.1: + dependencies: + micromark-util-character: 2.1.1 + micromark-util-encode: 2.0.1 + micromark-util-symbol: 2.0.1 + + micromark-util-subtokenize@2.0.3: + dependencies: + devlop: 1.1.0 + micromark-util-chunked: 2.0.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.1 + + micromark-util-symbol@2.0.1: {} + + micromark-util-types@2.0.1: {} + + micromark@4.0.1: + dependencies: + '@types/debug': 4.1.12 + debug: 4.4.0 + decode-named-character-reference: 1.0.2 + devlop: 1.1.0 + micromark-core-commonmark: 2.0.2 + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-chunked: 2.0.1 + micromark-util-combine-extensions: 2.0.1 + micromark-util-decode-numeric-character-reference: 2.0.2 + micromark-util-encode: 2.0.1 + micromark-util-normalize-identifier: 2.0.1 + micromark-util-resolve-all: 2.0.1 + micromark-util-sanitize-uri: 2.0.1 + micromark-util-subtokenize: 2.0.3 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.1 + transitivePeerDependencies: + - supports-color + + micromatch@4.0.8: + dependencies: + braces: 3.0.3 + picomatch: 2.3.1 + + min-indent@1.0.1: {} + + minimatch@3.1.2: + dependencies: + brace-expansion: 1.1.11 + + minimatch@9.0.5: + dependencies: + brace-expansion: 2.0.1 + + minipass@7.1.2: {} + + mlly@1.7.3: + dependencies: + acorn: 8.14.0 + pathe: 1.1.2 + pkg-types: 1.3.0 + ufo: 1.5.4 + + monaco-editor-core@0.52.0: {} + + monaco-editor-textmate@4.0.0(monaco-editor@0.52.0)(monaco-textmate@3.0.1(onigasm@2.2.5)): + dependencies: + monaco-editor: 0.52.0 + monaco-textmate: 3.0.1(onigasm@2.2.5) + + monaco-editor@0.52.0: {} + + monaco-textmate@3.0.1(onigasm@2.2.5): + dependencies: + fast-plist: 0.1.3 + onigasm: 2.2.5 + + monaco-vscode-textmate-theme-converter@0.1.7(tslib@2.8.1): + dependencies: + commander: 8.3.0 + fs-extra: 7.0.1 + tslib: 2.8.1 + + ms@2.1.3: {} + + mz@2.7.0: + dependencies: + any-promise: 1.3.0 + object-assign: 4.1.1 + thenify-all: 1.6.0 + + nanoid@3.3.8: {} + + nanoid@5.0.9: {} + + nanostores@0.11.3: {} + + natural-compare@1.4.0: {} + + natural-orderby@5.0.0: {} + + node-releases@2.0.19: {} + + normalize-package-data@2.5.0: + dependencies: + hosted-git-info: 2.8.9 + resolve: 1.22.10 + semver: 5.7.2 + validate-npm-package-license: 3.0.4 + + normalize-path@3.0.0: {} + + normalize-range@0.1.2: {} + + nth-check@2.1.1: + dependencies: + boolbase: 1.0.0 + + object-assign@4.1.1: {} + + object-hash@3.0.0: {} + + once@1.4.0: + dependencies: + wrappy: 1.0.2 + + onigasm@2.2.5: + dependencies: + lru-cache: 5.1.1 + + optionator@0.9.4: + dependencies: + deep-is: 0.1.4 + fast-levenshtein: 2.0.6 + levn: 0.4.1 + prelude-ls: 1.2.1 + type-check: 0.4.0 + word-wrap: 1.2.5 + + p-limit@2.3.0: + dependencies: + p-try: 2.2.0 + + p-limit@3.1.0: + dependencies: + yocto-queue: 0.1.0 + + p-locate@4.1.0: + dependencies: + p-limit: 2.3.0 + + p-locate@5.0.0: + dependencies: + p-limit: 3.1.0 + + p-try@2.2.0: {} + + package-json-from-dist@1.0.1: {} + + package-manager-detector@0.2.8: {} + + pako@0.2.9: {} + + parent-module@1.0.1: + dependencies: + callsites: 3.1.0 + + parse-gitignore@2.0.0: {} + + parse-imports@2.2.1: + dependencies: + es-module-lexer: 1.6.0 + slashes: 3.0.12 + + parse-json@5.2.0: + dependencies: + '@babel/code-frame': 7.26.2 + error-ex: 1.3.2 + json-parse-even-better-errors: 2.3.1 + lines-and-columns: 1.2.4 + + parse5@7.2.1: + dependencies: + entities: 4.5.0 + + path-exists@4.0.0: {} + + path-key@3.1.1: {} + + path-parse@1.0.7: {} + + path-scurry@1.11.1: + dependencies: + lru-cache: 10.4.3 + minipass: 7.1.2 + + pathe@1.1.2: {} + + pathe@2.0.1: {} + + peek-stream@1.1.3: + dependencies: + buffer-from: 1.1.2 + duplexify: 3.7.1 + through2: 2.0.5 + + picocolors@1.1.1: {} + + picomatch@2.3.1: {} + + picomatch@4.0.2: {} + + pify@2.3.0: {} + + pirates@4.0.6: {} + + pkg-types@1.3.0: + dependencies: + confbox: 0.1.8 + mlly: 1.7.3 + pathe: 1.1.2 + + plist2@1.1.4: + dependencies: + yaml: 1.10.2 + + pluralize@8.0.0: {} + + postcss-import@15.1.0(postcss@8.4.49): + dependencies: + postcss: 8.4.49 + postcss-value-parser: 4.2.0 + read-cache: 1.0.0 + resolve: 1.22.10 + + postcss-js@4.0.1(postcss@8.4.49): + dependencies: + camelcase-css: 2.0.1 + postcss: 8.4.49 + + postcss-load-config@4.0.2(postcss@8.4.49): + dependencies: + lilconfig: 3.1.3 + yaml: 2.7.0 + optionalDependencies: + postcss: 8.4.49 + + postcss-nested@6.2.0(postcss@8.4.49): + dependencies: + postcss: 8.4.49 + postcss-selector-parser: 6.1.2 + + postcss-selector-parser@6.1.2: + dependencies: + cssesc: 3.0.0 + util-deprecate: 1.0.2 + + postcss-value-parser@4.2.0: {} + + postcss@8.4.49: + dependencies: + nanoid: 3.3.8 + picocolors: 1.1.1 + source-map-js: 1.2.1 + + prelude-ls@1.2.1: {} + + process-nextick-args@2.0.1: {} + + pump@2.0.1: + dependencies: + end-of-stream: 1.4.4 + once: 1.4.0 + + pumpify@1.5.1: + dependencies: + duplexify: 3.7.1 + inherits: 2.0.4 + pump: 2.0.1 + + punycode@2.3.1: {} + + queue-microtask@1.2.3: {} + + queue-tick@1.0.1: {} + + read-cache@1.0.0: + dependencies: + pify: 2.3.0 + + read-pkg-up@7.0.1: + dependencies: + find-up: 4.1.0 + read-pkg: 5.2.0 + type-fest: 0.8.1 + + read-pkg@5.2.0: + dependencies: + '@types/normalize-package-data': 2.4.4 + normalize-package-data: 2.5.0 + parse-json: 5.2.0 + type-fest: 0.6.0 + + readable-stream@2.3.8: + dependencies: + core-util-is: 1.0.3 + inherits: 2.0.4 + isarray: 1.0.0 + process-nextick-args: 2.0.1 + safe-buffer: 5.1.2 + string_decoder: 1.1.1 + util-deprecate: 1.0.2 + + readdirp@3.6.0: + dependencies: + picomatch: 2.3.1 + + refa@0.12.1: + dependencies: + '@eslint-community/regexpp': 4.12.1 + + regexp-ast-analysis@0.7.1: + dependencies: + '@eslint-community/regexpp': 4.12.1 + refa: 0.12.1 + + regexp-tree@0.1.27: {} + + regjsparser@0.10.0: + dependencies: + jsesc: 0.5.0 + + require-directory@2.1.1: {} + + resolve-from@4.0.0: {} + + resolve-pkg-maps@1.0.0: {} + + resolve@1.22.10: + dependencies: + is-core-module: 2.16.1 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + + reusify@1.0.4: {} + + rollup@4.30.1: + dependencies: + '@types/estree': 1.0.6 + optionalDependencies: + '@rollup/rollup-android-arm-eabi': 4.30.1 + '@rollup/rollup-android-arm64': 4.30.1 + '@rollup/rollup-darwin-arm64': 4.30.1 + '@rollup/rollup-darwin-x64': 4.30.1 + '@rollup/rollup-freebsd-arm64': 4.30.1 + '@rollup/rollup-freebsd-x64': 4.30.1 + '@rollup/rollup-linux-arm-gnueabihf': 4.30.1 + '@rollup/rollup-linux-arm-musleabihf': 4.30.1 + '@rollup/rollup-linux-arm64-gnu': 4.30.1 + '@rollup/rollup-linux-arm64-musl': 4.30.1 + '@rollup/rollup-linux-loongarch64-gnu': 4.30.1 + '@rollup/rollup-linux-powerpc64le-gnu': 4.30.1 + '@rollup/rollup-linux-riscv64-gnu': 4.30.1 + '@rollup/rollup-linux-s390x-gnu': 4.30.1 + '@rollup/rollup-linux-x64-gnu': 4.30.1 + '@rollup/rollup-linux-x64-musl': 4.30.1 + '@rollup/rollup-win32-arm64-msvc': 4.30.1 + '@rollup/rollup-win32-ia32-msvc': 4.30.1 + '@rollup/rollup-win32-x64-msvc': 4.30.1 + fsevents: 2.3.3 + + run-parallel@1.2.0: + dependencies: + queue-microtask: 1.2.3 + + safe-buffer@5.1.2: {} + + scslre@0.3.0: + dependencies: + '@eslint-community/regexpp': 4.12.1 + refa: 0.12.1 + regexp-ast-analysis: 0.7.1 + + semver@5.7.2: {} + + semver@6.3.1: {} + + semver@7.6.3: {} + + seroval-plugins@1.2.0(seroval@1.2.0): + dependencies: + seroval: 1.2.0 + + seroval@1.2.0: {} + + shebang-command@2.0.0: + dependencies: + shebang-regex: 3.0.0 + + shebang-regex@3.0.0: {} + + signal-exit@4.1.0: {} + + sisteransi@1.0.5: {} + + slashes@3.0.12: {} + + solid-icons@1.1.0(solid-js@1.9.4): + dependencies: + solid-js: 1.9.4 + + solid-js@1.9.4: + dependencies: + csstype: 3.1.3 + seroval: 1.2.0 + seroval-plugins: 1.2.0(seroval@1.2.0) + + solid-presence@0.1.8(solid-js@1.9.4): + dependencies: + '@corvu/utils': 0.4.2(solid-js@1.9.4) + solid-js: 1.9.4 + + solid-prevent-scroll@0.1.10(solid-js@1.9.4): + dependencies: + '@corvu/utils': 0.4.2(solid-js@1.9.4) + solid-js: 1.9.4 + + solid-refresh@0.6.3(solid-js@1.9.4): + dependencies: + '@babel/generator': 7.26.5 + '@babel/helper-module-imports': 7.25.9 + '@babel/types': 7.26.5 + solid-js: 1.9.4 + transitivePeerDependencies: + - supports-color + + solid-transition-group@0.2.3(solid-js@1.9.4): + dependencies: + '@solid-primitives/refs': 1.0.8(solid-js@1.9.4) + '@solid-primitives/transition-group': 1.0.5(solid-js@1.9.4) + solid-js: 1.9.4 + + source-map-js@1.2.1: {} + + spdx-correct@3.2.0: + dependencies: + spdx-expression-parse: 3.0.1 + spdx-license-ids: 3.0.20 + + spdx-exceptions@2.5.0: {} + + spdx-expression-parse@3.0.1: + dependencies: + spdx-exceptions: 2.5.0 + spdx-license-ids: 3.0.20 + + spdx-expression-parse@4.0.0: + dependencies: + spdx-exceptions: 2.5.0 + spdx-license-ids: 3.0.20 + + spdx-license-ids@3.0.20: {} + + stable-hash@0.0.4: {} + + stream-shift@1.0.3: {} + + streamx@2.20.1: + dependencies: + fast-fifo: 1.3.2 + queue-tick: 1.0.1 + text-decoder: 1.2.0 + optionalDependencies: + bare-events: 2.5.0 + + string-width@4.2.3: + dependencies: + emoji-regex: 8.0.0 + is-fullwidth-code-point: 3.0.0 + strip-ansi: 6.0.1 + + string-width@5.1.2: + dependencies: + eastasianwidth: 0.2.0 + emoji-regex: 9.2.2 + strip-ansi: 7.1.0 + + string_decoder@1.1.1: + dependencies: + safe-buffer: 5.1.2 + + strip-ansi@6.0.1: + dependencies: + ansi-regex: 5.0.1 + + strip-ansi@7.1.0: + dependencies: + ansi-regex: 6.1.0 + + strip-indent@3.0.0: + dependencies: + min-indent: 1.0.1 + + strip-json-comments@3.1.1: {} + + style-to-object@1.0.8: + dependencies: + inline-style-parser: 0.2.4 + + sucrase@3.35.0: + dependencies: + '@jridgewell/gen-mapping': 0.3.8 + commander: 4.1.1 + glob: 10.4.5 + lines-and-columns: 1.2.4 + mz: 2.7.0 + pirates: 4.0.6 + ts-interface-checker: 0.1.13 + + supports-color@7.2.0: + dependencies: + has-flag: 4.0.0 + + supports-preserve-symlinks-flag@1.0.0: {} + + synckit@0.6.2: + dependencies: + tslib: 2.8.1 + + synckit@0.9.2: + dependencies: + '@pkgr/core': 0.1.1 + tslib: 2.8.1 + + tailwind-merge@2.6.0: {} + + tailwindcss-animate@1.0.7(tailwindcss@3.4.17): + dependencies: + tailwindcss: 3.4.17 + + tailwindcss@3.4.17: + dependencies: + '@alloc/quick-lru': 5.2.0 + arg: 5.0.2 + chokidar: 3.6.0 + didyoumean: 1.2.2 + dlv: 1.1.3 + fast-glob: 3.3.3 + glob-parent: 6.0.2 + is-glob: 4.0.3 + jiti: 1.21.7 + lilconfig: 3.1.3 + micromatch: 4.0.8 + normalize-path: 3.0.0 + object-hash: 3.0.0 + picocolors: 1.1.1 + postcss: 8.4.49 + postcss-import: 15.1.0(postcss@8.4.49) + postcss-js: 4.0.1(postcss@8.4.49) + postcss-load-config: 4.0.2(postcss@8.4.49) + postcss-nested: 6.2.0(postcss@8.4.49) + postcss-selector-parser: 6.1.2 + resolve: 1.22.10 + sucrase: 3.35.0 + transitivePeerDependencies: + - ts-node + + tapable@2.2.1: {} + + tar-stream@3.1.7: + dependencies: + b4a: 1.6.6 + fast-fifo: 1.3.2 + streamx: 2.20.1 + + text-decoder@1.2.0: + dependencies: + b4a: 1.6.6 + + text-table@0.2.0: {} + + thenify-all@1.6.0: + dependencies: + thenify: 3.3.1 + + thenify@3.3.1: + dependencies: + any-promise: 1.3.0 + + thingies@1.21.0(tslib@2.8.1): + dependencies: + tslib: 2.8.1 + + through2@2.0.5: + dependencies: + readable-stream: 2.3.8 + xtend: 4.0.2 + + tinyexec@0.3.2: {} + + to-regex-range@5.0.1: + dependencies: + is-number: 7.0.0 + + toml-eslint-parser@0.10.0: + dependencies: + eslint-visitor-keys: 3.4.3 + + tree-dump@1.0.2(tslib@2.8.1): + dependencies: + tslib: 2.8.1 + + ts-api-utils@2.0.0(typescript@5.7.3): + dependencies: + typescript: 5.7.3 + + ts-blank-space@0.4.4: + dependencies: + typescript: 5.7.3 + + ts-interface-checker@0.1.13: {} + + tslib@2.8.1: {} + + type-check@0.4.0: + dependencies: + prelude-ls: 1.2.1 + + type-fest@0.20.2: {} + + type-fest@0.6.0: {} + + type-fest@0.8.1: {} + + typescript@5.2.2: {} + + typescript@5.7.3: {} + + ufo@1.5.4: {} + + undici-types@6.19.8: {} + + undici-types@6.20.0: {} + + unist-util-is@6.0.0: + dependencies: + '@types/unist': 3.0.3 + + unist-util-stringify-position@4.0.0: + dependencies: + '@types/unist': 3.0.3 + + unist-util-visit-parents@6.0.1: + dependencies: + '@types/unist': 3.0.3 + unist-util-is: 6.0.0 + + unist-util-visit@5.0.0: + dependencies: + '@types/unist': 3.0.3 + unist-util-is: 6.0.0 + unist-util-visit-parents: 6.0.1 + + universalify@0.1.2: {} + + update-browserslist-db@1.1.2(browserslist@4.24.4): + dependencies: + browserslist: 4.24.4 + escalade: 3.2.0 + picocolors: 1.1.1 + + uqr@0.1.2: {} + + uri-js@4.4.1: + dependencies: + punycode: 2.3.1 + + util-deprecate@1.0.2: {} + + validate-html-nesting@1.2.2: {} + + validate-npm-package-license@3.0.4: + dependencies: + spdx-correct: 3.2.0 + spdx-expression-parse: 3.0.1 + + vite-plugin-solid@2.11.0(solid-js@1.9.4)(vite@5.4.11(@types/node@22.10.5)): + dependencies: + '@babel/core': 7.26.0 + '@types/babel__core': 7.20.5 + babel-preset-solid: 1.9.3(@babel/core@7.26.0) + merge-anything: 5.1.7 + solid-js: 1.9.4 + solid-refresh: 0.6.3(solid-js@1.9.4) + vite: 5.4.11(@types/node@22.10.5) + vitefu: 1.0.5(vite@5.4.11(@types/node@22.10.5)) + transitivePeerDependencies: + - supports-color + + vite@5.4.11(@types/node@22.10.5): + dependencies: + esbuild: 0.21.5 + postcss: 8.4.49 + rollup: 4.30.1 + optionalDependencies: + '@types/node': 22.10.5 + fsevents: 2.3.3 + + vitefu@1.0.5(vite@5.4.11(@types/node@22.10.5)): + optionalDependencies: + vite: 5.4.11(@types/node@22.10.5) + + vue-eslint-parser@9.4.3(eslint@9.11.0(jiti@1.21.7)): + dependencies: + debug: 4.4.0 + eslint: 9.11.0(jiti@1.21.7) + eslint-scope: 7.2.2 + eslint-visitor-keys: 3.4.3 + espree: 9.6.1 + esquery: 1.6.0 + lodash: 4.17.21 + semver: 7.6.3 + transitivePeerDependencies: + - supports-color + + which@2.0.2: + dependencies: + isexe: 2.0.0 + + word-wrap@1.2.5: {} + + wrap-ansi@7.0.0: + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + + wrap-ansi@8.1.0: + dependencies: + ansi-styles: 6.2.1 + string-width: 5.1.2 + strip-ansi: 7.1.0 + + wrappy@1.0.2: {} + + xml-name-validator@4.0.0: {} + + xtend@4.0.2: {} + + y18n@5.0.8: {} + + yallist@3.1.1: {} + + yaml-eslint-parser@1.2.3: + dependencies: + eslint-visitor-keys: 3.4.3 + lodash: 4.17.21 + yaml: 2.7.0 + + yaml@1.10.2: {} + + yaml@2.7.0: {} + + yargs-parser@21.1.1: {} + + yargs@17.7.2: + dependencies: + cliui: 8.0.1 + escalade: 3.2.0 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + string-width: 4.2.3 + y18n: 5.0.8 + yargs-parser: 21.1.1 + + yocto-queue@0.1.0: {} + + zod@3.24.1: + optional: true + + zwitch@2.0.4: {} diff --git a/postcss.config.js b/postcss.config.js new file mode 100644 index 0000000..2e7af2b --- /dev/null +++ b/postcss.config.js @@ -0,0 +1,6 @@ +export default { + plugins: { + tailwindcss: {}, + autoprefixer: {}, + }, +} diff --git a/scripts/generate-grammars.ts b/scripts/generate-grammars.ts new file mode 100644 index 0000000..d2995b2 --- /dev/null +++ b/scripts/generate-grammars.ts @@ -0,0 +1,12 @@ +import { writeFile } from 'node:fs/promises' +import { ffetchBase as ffetch } from '@fuman/fetch' +import { plist2js } from 'plist2' + +const plist = await ffetch('https://raw.githubusercontent.com/microsoft/TypeScript-TmLanguage/refs/heads/master/TypeScript.tmLanguage').text() + +const grammar = plist2js(plist) + +await writeFile( + new URL('../src/components/Editor/utils/typescript.tmLanguage.json', import.meta.url), + JSON.stringify(grammar, null, 2), +) diff --git a/scripts/generate-themes.ts b/scripts/generate-themes.ts new file mode 100644 index 0000000..5253620 --- /dev/null +++ b/scripts/generate-themes.ts @@ -0,0 +1,17 @@ +import { writeFileSync } from 'node:fs' +import { join } from 'node:path' +import { fileURLToPath } from 'node:url' + +import latte from '@catppuccin/vscode/themes/latte.json' with { type: 'json' } +import mocha from '@catppuccin/vscode/themes/mocha.json' with { type: 'json' } + +import { convertTheme } from 'monaco-vscode-textmate-theme-converter' + +const OUT_DIR = fileURLToPath(new URL('./../src/components/Editor/utils', import.meta.url)) + +const latteConverted = convertTheme(latte as any) +latteConverted.colors['editor.background'] = '#ffffff' +latteConverted.colors['editorGutter.background'] = '#ffffff' + +writeFileSync(join(OUT_DIR, 'latte.json'), JSON.stringify(latteConverted, null, 2)) +writeFileSync(join(OUT_DIR, 'mocha.json'), JSON.stringify(convertTheme(mocha as any), null, 2)) diff --git a/scripts/vite-plugin-externalize-dependencies.ts b/scripts/vite-plugin-externalize-dependencies.ts new file mode 100644 index 0000000..8ca8b03 --- /dev/null +++ b/scripts/vite-plugin-externalize-dependencies.ts @@ -0,0 +1,193 @@ +// based on https://github.com/MilanKovacic/vite-plugin-externalize-dependencies/blob/main/src/index.ts +// but modified to support `?external` imports + +import type { Plugin as EsbuildPlugin, OnResolveArgs, PluginBuild } from 'esbuild' +import type { Plugin, ResolvedConfig, UserConfig } from 'vite' + +type ExternalCriteria = string | RegExp | ((id: string) => boolean) + +interface ModulePrefixTransformPluginOptions { + /** The base path of the vite configuration */ + base: string +} + +interface PluginOptions { + externals: ExternalCriteria[] +} + +const resolvedExternals = new Set() + +function isExternal(id: string, externals: ExternalCriteria[]): boolean { + if (id.endsWith('?external')) return true + + return externals.some((external) => { + if (typeof external === 'string') { + return id === external || id.startsWith(`${external}/`) + } + + if (external instanceof RegExp) { + return external.test(id) + } + + if (typeof external === 'function') { + return external(id) + } + + return false + }) +} + +/** + * Creates a plugin for esbuild to externalize specific modules. + * esbuild is used by Vite during development. + * This plugin is injected into optimizeDeps.esbuildOptions.plugins, and runs during the dependency scanning / optimization phase. + * + * @param options - Plugin options + * + * @returns The esbuild plugin + */ +function esbuildPluginExternalize(externals: ExternalCriteria[]): EsbuildPlugin { + return { + name: 'externalize', + setup(build: PluginBuild) { + build.onResolve({ filter: /.*/ }, (args: OnResolveArgs) => { + if ( + isExternal(args.path, externals) + && args.kind === 'import-statement' + ) { + resolvedExternals.add(args.path) + return { + path: args.path, + external: true, + } + } + + // Supresses the following error: + // The entry point [moduleName] cannot be marked as external + if (isExternal(args.path, externals) && args.kind === 'entry-point') { + resolvedExternals.add(args.path) + return { path: args.path, namespace: 'externalized-modules' } + } + + return null + }) + // Supresses the following error: + // Do not know how to load path: [namespace:moduleName] + build.onLoad({ filter: /.*/ }, (args) => { + if (isExternal(args.path, externals)) { + return { contents: '' } + } + + return null + }) + }, + } +} + +/** + * Creates a plugin to remove prefix from imports injected by Vite. + * If module is externalized, Vite will prefix imports with "/\@id/" during development. + * + * @param options - The plugin options + * + * @returns Vite plugin to remove prefix from imports + */ +function modulePrefixTransform({ + base, +}: ModulePrefixTransformPluginOptions): Plugin { + return { + name: 'vite-plugin-remove-prefix', + transform: (code: string): string => { + // Verify if there are any external modules resolved to avoid having /\/@id\/()/g regex + if (resolvedExternals.size === 0) return code + + const viteImportAnalysisModulePrefix = '@id/' + const prefixedImportRegex = new RegExp( + `${base}${viteImportAnalysisModulePrefix}(${ + [...resolvedExternals] + .map(it => it.replace(/\?/g, '\\?')) + .join('|')})`, + 'g', + ) + + if (prefixedImportRegex.test(code)) { + return code.replace( + prefixedImportRegex, + (_: string, externalName: string) => externalName.replace(/\?external$/g, ''), + ) + } + return code + }, + } +} + +/** + * Creates a Vite plugin to externalize specific modules. + * This plugin is only used during development. + * To externalize modules in production, configure build.rollupOptions.external. + * + * @param externals - The list of modules to externalize. + * + * @returns The Vite plugin. + */ +function vitePluginExternalize(options: PluginOptions): Plugin { + return { + name: 'vite-plugin-externalize', + enforce: 'pre', + apply: 'serve', + config: (config: UserConfig): Omit | null | void => { + config.optimizeDeps ??= {} + config.optimizeDeps.esbuildOptions ??= {} + config.optimizeDeps.esbuildOptions.plugins ??= [] + + // Prevent the plugin from being inserted multiple times + const pluginName = 'externalize' + const isPluginAdded = config.optimizeDeps.esbuildOptions.plugins.some( + (plugin: any) => plugin.name === pluginName, + ) + + if (!isPluginAdded) { + config.optimizeDeps.esbuildOptions.plugins.push( + esbuildPluginExternalize(options.externals) as any, + ) + } + return null + }, + configResolved: (resolvedConfig: ResolvedConfig) => { + // Plugins are read-only, and should not be modified, + // however modulePrefixTransformPlugin MUST run after vite:import-analysis (which adds the prefix to imports) + + (resolvedConfig.plugins as Plugin[]).push( + modulePrefixTransform({ base: resolvedConfig.base ?? '/' }), + ) + }, + // Supresses the following warning: + // Failed to resolve import [dependency] from [sourceFile]. Does the file exist? + resolveId: (id: string) => { + if (resolvedExternals.has(id)) { + return { id, external: true } + } + + // During subsequent runs after the dependency optimization is completed, esbuild plugin might not be called. + // This will cause the resolvedExternals to be empty, and the plugin will not be able to resolve the external modules, which is why a direct check is required. + if (isExternal(id, options.externals)) { + resolvedExternals.add(id) + return { id, external: true } + } + + return null + }, + // Supresses the following warning: + // The following dependencies are imported but could not be resolved: [dependency] (imported by [sourceFile]) + load: (id: string) => { + if (resolvedExternals.has(id)) { + return { code: 'export default {};' } + } + return null + }, + } +} + +// Justification: Vite plugins are expected to provide a default export + +export default vitePluginExternalize diff --git a/src/App.tsx b/src/App.tsx new file mode 100644 index 0000000..021fea8 --- /dev/null +++ b/src/App.tsx @@ -0,0 +1,65 @@ +import Resizable from '@corvu/resizable' +import { createSignal, lazy } from 'solid-js' + +import { EditorTabs } from './components/editor/EditorTabs.tsx' +import { NavbarMenu } from './components/nav/NavbarMenu.tsx' +import { Runner } from './components/runner/Runner.tsx' +import { SettingsDialog, type SettingsTab } from './components/settings/Settings.tsx' +import { Updater } from './components/Updater.tsx' +import { ResizableHandle, ResizablePanel } from './lib/components/ui/resizable.tsx' + +const Editor = lazy(() => import('./components/editor/Editor.tsx')) + +export function App() { + const [versions, setVersions] = createSignal | undefined>(undefined) + const [showSettings, setShowSettings] = createSignal(false) + const [settingsTab, setSettingsTab] = createSignal('accounts') + + return ( +
+ +
+ {versions() === undefined ? ( + + ) : ( + + + + + + + + + + + )} + + setShowSettings(false)} + tab={settingsTab()} + onTabChange={setSettingsTab} + /> +
+ ) +} diff --git a/src/app.css b/src/app.css new file mode 100644 index 0000000..929c65e --- /dev/null +++ b/src/app.css @@ -0,0 +1,114 @@ +@tailwind base; +@tailwind components; +@tailwind utilities; + +@layer base { + :root { + --background: 0 0% 100%; + --foreground: 240 10% 3.9%; + + --muted: 240 4.8% 95.9%; + --muted-foreground: 240 3.8% 46.1%; + + --popover: 0 0% 100%; + --popover-foreground: 240 10% 3.9%; + + --border: 240 5.9% 90%; + --input: 240 5.9% 90%; + + --card: 0 0% 100%; + --card-foreground: 240 10% 3.9%; + + --primary: 240 5.9% 10%; + --primary-foreground: 0 0% 98%; + + --secondary: 240 4.8% 95.9%; + --secondary-foreground: 240 5.9% 10%; + + --accent: 240 4.8% 95.9%; + --accent-foreground: 240 5.9% 10%; + + --destructive: 0 84.2% 60.2%; + --destructive-foreground: 0 0% 98%; + + --info: 204 94% 94%; + --info-foreground: 199 89% 48%; + + --success: 149 80% 90%; + --success-foreground: 160 84% 39%; + + --warning: 48 96% 89%; + --warning-foreground: 25 95% 53%; + + --error: 0 93% 94%; + --error-foreground: 0 84% 60%; + + --ring: 240 5.9% 10%; + + --radius: 0.5rem; + } + + .dark, + [data-kb-theme="dark"] { + --background: 240 10% 3.9%; + --foreground: 0 0% 98%; + + --muted: 240 3.7% 15.9%; + --muted-foreground: 240 5% 64.9%; + + --accent: 240 3.7% 15.9%; + --accent-foreground: 0 0% 98%; + + --popover: 240 10% 3.9%; + --popover-foreground: 0 0% 98%; + + --border: 240 3.7% 15.9%; + --input: 240 3.7% 15.9%; + + --card: 240 10% 3.9%; + --card-foreground: 0 0% 98%; + + --primary: 0 0% 98%; + --primary-foreground: 240 5.9% 10%; + + --secondary: 240 3.7% 15.9%; + --secondary-foreground: 0 0% 98%; + + --destructive: 0 62.8% 30.6%; + --destructive-foreground: 0 0% 98%; + + --info: 204 94% 94%; + --info-foreground: 199 89% 48%; + + --success: 149 80% 90%; + --success-foreground: 160 84% 39%; + + --warning: 48 96% 89%; + --warning-foreground: 25 95% 53%; + + --error: 0 93% 94%; + --error-foreground: 0 84% 60%; + + --ring: 240 4.9% 83.9%; + + --radius: 0.5rem; + } +} + +@layer base { + * { + @apply border-border; + } + body { + @apply bg-background text-foreground; + font-feature-settings: + "rlig" 1, + "calt" 1; + } +} + +@media (max-width: 640px) { + .container { + @apply px-4; + } +} \ No newline at end of file diff --git a/src/components/AccountAvatar.tsx b/src/components/AccountAvatar.tsx new file mode 100644 index 0000000..77dd433 --- /dev/null +++ b/src/components/AccountAvatar.tsx @@ -0,0 +1,14 @@ +import type { TelegramAccount } from '../store/accounts.ts' +import { Avatar, AvatarFallback, AvatarImage, makeAvatarFallbackText } from '../lib/components/ui/avatar.tsx' + +export function AccountAvatar(props: { + class?: string + account: TelegramAccount +}) { + return ( + + + {makeAvatarFallbackText(props.account.name)} + + ) +} diff --git a/src/components/Updater.tsx b/src/components/Updater.tsx new file mode 100644 index 0000000..82b1696 --- /dev/null +++ b/src/components/Updater.tsx @@ -0,0 +1,99 @@ +import { asyncPool } from '@fuman/utils' + +import { filesize } from 'filesize' +import { createSignal, onCleanup, onMount } from 'solid-js' +import { Spinner } from '../lib/components/ui/spinner.tsx' +import { downloadNpmPackage, getLatestVersions, getPackagesToDownload } from '../lib/vfs/downloader' +import { VfsStorage } from '../lib/vfs/storage' +import { swClearCache } from '../sw/client.ts' + +export interface UpdaterProps { + onComplete: (versions: Record) => void +} + +export function Updater(props: UpdaterProps) { + const [downloadedBytes, setDownloadedBytes] = createSignal(0) + const [totalBytes, setTotalBytes] = createSignal(Infinity) + const [step, setStep] = createSignal('Idle') + + let abortController: AbortController | undefined + + async function runUpdater() { + if (abortController) abortController.abort() + + abortController = new AbortController() + const signal = abortController.signal + + setStep('Checking for updates...') + const vfs = await VfsStorage.create() + const latestVersions = await getLatestVersions() + const versions = await getPackagesToDownload(latestVersions, vfs) + + if (Object.keys(versions).length === 0) { + props.onComplete(latestVersions) + return + } + + const entries = Object.entries(versions) + + setStep('Downloading...') + await swClearCache() + await asyncPool(entries, async ([lib, version]) => { + let isFirst = true + let prevDownloaded = 0 + + function onProgress(downloaded: number, total: number) { + if (isFirst) { + setTotalBytes(prev => prev === Infinity ? total : prev + total) + isFirst = false + } + + const diff = downloaded - prevDownloaded + setDownloadedBytes(prev => prev + diff) + prevDownloaded = downloaded + } + + await downloadNpmPackage({ + packageName: lib, + version, + storage: vfs, + progress: onProgress, + filterFiles: (file) => { + if (!file.header) return true + const name = file.header.name + return !name.endsWith('.cjs') && !name.endsWith('.d.cts') && name !== 'LICENSE' && name !== 'README.md' + }, + signal, + }) + }) + + props.onComplete(latestVersions) + } + + onMount(() => { + runUpdater() + }) + + onCleanup(() => { + abortController?.abort() + }) + + return ( +
+ +
+ {step()} + {totalBytes() !== Infinity && ( +
+ {filesize(downloadedBytes())} + {' / '} + {filesize(totalBytes())} +
+ )} +
+
+ ) +} diff --git a/src/components/editor/Editor.css b/src/components/editor/Editor.css new file mode 100644 index 0000000..6403d78 --- /dev/null +++ b/src/components/editor/Editor.css @@ -0,0 +1,3 @@ +[data-monaco-root] .squiggly-error { + transform: translateY(4px); +} \ No newline at end of file diff --git a/src/components/editor/Editor.tsx b/src/components/editor/Editor.tsx new file mode 100644 index 0000000..de6755c --- /dev/null +++ b/src/components/editor/Editor.tsx @@ -0,0 +1,152 @@ +import { editor as mEditor, Uri } from 'monaco-editor' +import { createEffect, on, onMount } from 'solid-js' +import { useColorScheme } from '../../lib/use-color-scheme' +import { VfsStorage } from '../../lib/vfs/storage.ts' + +import { $activeTab, $tabs, type EditorTab } from '../../store/tabs.ts' +import { useStore } from '../../store/use-store.ts' +import { setupMonaco } from './utils/setup.ts' +import './Editor.css' + +export interface EditorProps { + class?: string +} + +const DEFAULT_CODE = ` +/** + * This playground comes pre-loaded with all @mtcute/* libraries, + * as well as a pre-configured Telegram client (available as \`tg\` global variable). + * + * Exports from this file will become available in the REPL. + */ +export const self = await tg.getMe() +console.log(self) +`.trimStart() + +function findChangedTab(a: EditorTab[], b: EditorTab[]) { + const set = new Set(a.map(tab => tab.id)) + for (const tab of b) { + if (!set.has(tab.id)) return tab + } + + return null +} + +export default function Editor(props: EditorProps) { + const tabs = useStore($tabs) + const activeTab = useStore($activeTab) + + let ref!: HTMLDivElement + let editor: mEditor.IStandaloneCodeEditor | undefined + + const scheme = useColorScheme() + // const monacoTheme = () => scheme() === 'dark' ? 'ayu-dark' : 'ayu-light' + const modelsByTab = new Map() + + onMount(async () => { + const vfs = await VfsStorage.create() + + editor = mEditor.create(ref, { + model: null, + automaticLayout: true, + minimap: { + enabled: false, + }, + scrollbar: { + verticalScrollbarSize: 8, + }, + lightbulb: { + enabled: 'onCode' as any, + }, + quickSuggestions: { + other: true, + comments: true, + strings: true, + }, + padding: { top: 8 }, + acceptSuggestionOnCommitCharacter: true, + acceptSuggestionOnEnter: 'on', + accessibilitySupport: 'on', + inlayHints: { + enabled: 'on', + }, + lineNumbersMinChars: 3, + // theme: monacoTheme(), + theme: 'latte', // todo + scrollBeyondLastLine: false, + }) + + await setupMonaco(vfs) + + for (const tab of tabs()) { + const model = mEditor.createModel(tab.main ? DEFAULT_CODE : '', 'typescript', Uri.parse(`file:///${tab.id}.ts`)) + modelsByTab.set(tab.id, model) + } + + editor.setModel(modelsByTab.get(activeTab())!) + + // editor.onDidChangeModelContent(() => { + // props.onCodeChange(editor?.getValue() ?? '') + // }) + + return () => editor?.dispose() + }) + + // createEffect(on(() => monacoTheme(), (theme) => { + // if (!editor) return + // editor.updateOptions({ theme }) + // })) + + createEffect(on(activeTab, (tabId) => { + if (!editor) return + const model = modelsByTab.get(tabId) + if (!model) return + editor.setModel(model) + })) + + createEffect(on(tabs, (tabs, prevTabs) => { + if (!editor || !prevTabs) return + if (tabs.length === prevTabs.length) { + // verify filenames + for (const tab of tabs) { + const oldName = prevTabs.find(prevTab => prevTab.id === tab.id)?.fileName + if (!oldName) continue // weird flex but ok + if (oldName === tab.fileName) continue + + // renamed + const oldModel = modelsByTab.get(tab.id) + if (!oldModel) continue + const newModel = mEditor.createModel(oldModel.getValue(), 'typescript', Uri.parse(`file:///${tab.fileName}`)) + modelsByTab.set(tab.id, newModel) + if (editor.getModel() === oldModel) { + editor.setModel(newModel) + } + oldModel.dispose() + } + + return + } + + if (tabs.length > prevTabs.length) { + // a tab was created + const changed = findChangedTab(prevTabs, tabs) + if (!changed) return + const model = mEditor.createModel('', 'typescript', Uri.parse(`file:///${changed.fileName}`)) + modelsByTab.set(changed.id, model) + editor.setModel(model) + } else { + // a tab was deleted + const changed = findChangedTab(tabs, prevTabs) + if (!changed) return + modelsByTab.delete(changed.id) + } + })) + + return ( +
+ ) +} diff --git a/src/components/editor/EditorTabs.tsx b/src/components/editor/EditorTabs.tsx new file mode 100644 index 0000000..97281a8 --- /dev/null +++ b/src/components/editor/EditorTabs.tsx @@ -0,0 +1,187 @@ +import type { EditorTab } from '../../store/tabs.ts' +import clsx from 'clsx' +import { LucidePlus, LucideX } from 'lucide-solid' +import { nanoid } from 'nanoid' +import { batch, createSignal, For } from 'solid-js' +import { Button } from '../../lib/components/ui/button.tsx' +import { Tabs, TabsIndicator, TabsList, TabsTrigger } from '../../lib/components/ui/tabs.tsx' +import { cn } from '../../lib/utils.ts' +import { $activeTab, $tabs } from '../../store/tabs.ts' +import { useStore } from '../../store/use-store.ts' + +export interface EditorTabsProps { + class?: string +} + +export function EditorTabs(props: EditorTabsProps) { + const tabs = useStore($tabs) + const activeTab = useStore($activeTab) + + const [renamingTabId, setRenamingTabId] = createSignal(undefined) + + let root!: HTMLDivElement + let indicator!: HTMLDivElement + + const updateIndicator = () => { + // crutch to imperatively update the indicator width + // based on https://github.com/kobaltedev/kobalte/issues/273#issuecomment-1741962351 + const selected = root.querySelector( + '[role=tab][data-selected]', + )! + + indicator.style.width = `${selected.clientWidth}px` + indicator.style.transform = `translateX(${selected.offsetLeft}px)` + } + + const createNewTab = () => { + batch(() => { + const tabs_ = tabs() + const newTabId = nanoid() + $tabs.set([ + ...tabs_, + { + id: newTabId, + fileName: `newfile${tabs_.length}.ts`, + main: false, + }, + ]) + $activeTab.set(newTabId) + }) + } + + const closeTab = (tabId: string) => { + const tabs_ = tabs() + if (tabs_.length === 1) return + const nextTabs = tabs_.filter(tab => tab.id !== tabId) + $tabs.set(nextTabs) + if (tabId === activeTab()) { + $activeTab.set(nextTabs[0].id) + } + queueMicrotask(updateIndicator) + } + + const applyRename = (el: HTMLDivElement) => { + let newName = el.textContent + if (!newName) return + + if (!newName.endsWith('.ts')) newName += '.ts' + newName = newName.replace(/[/';!@#$%^&*()\s]/g, '') + + const tabs_ = tabs() + const ourTabIdx = tabs_.findIndex(tab => tab.id === renamingTabId()) + if (ourTabIdx === -1) return + + $tabs.set([ + ...tabs_.slice(0, ourTabIdx), + { + ...tabs_[ourTabIdx], + fileName: newName, + }, + ...tabs_.slice(ourTabIdx + 1), + ]) + setRenamingTabId(undefined) + setTimeout(updateIndicator, 10) + } + + const renderTab = (tab: EditorTab) => { + return ( + $activeTab.set(tab.id)} + > +
{ + if (tab.id === renamingTabId()) { + event.stopPropagation() + return + } + if (tab.id === activeTab() && !tab.main) { + setRenamingTabId(tab.id) + event.stopPropagation() + const target = event.currentTarget as HTMLDivElement + target.focus() + + const range = document.createRange() + range.selectNodeContents(target) + // range.collapse(false) + + const sel = window.getSelection()! + sel.removeAllRanges() + sel.addRange(range) + } + }} + contentEditable={tab.id === renamingTabId()} + onKeyDown={(event: KeyboardEvent) => { + if (tab.id !== renamingTabId()) return + event.stopPropagation() + + const target = event.currentTarget as HTMLDivElement + if (event.key === 'Enter') { + applyRename(target) + target.blur() + } + + if (event.key === 'Escape') { + // cancel rename + setRenamingTabId(undefined) + target.textContent = tab.fileName + target.blur() + window.getSelection()?.removeAllRanges() + } + }} + onBlur={(event: FocusEvent) => { + if (tab.id === renamingTabId()) { + applyRename(event.currentTarget as HTMLDivElement) + } + }} + > + {tab.fileName} +
+ {!tab.main && ( + + )} +
+ ) + } + + return ( + setTabs('activeTab', tab)} + class={cn('max-w-full overflow-auto', props.class)} + ref={root} + > + + + {renderTab} + + + + + + ) +} diff --git a/src/components/editor/utils/custom-worker.ts b/src/components/editor/utils/custom-worker.ts new file mode 100644 index 0000000..0dec5b3 --- /dev/null +++ b/src/components/editor/utils/custom-worker.ts @@ -0,0 +1,70 @@ +import type { Diagnostic, ExportDeclaration, ModifierLike, VariableStatement } from 'typescript' +import { initialize, ts, TypeScriptWorker } from 'monaco-editor/esm/vs/language/typescript/ts.worker' +import { blankSourceFile } from 'ts-blank-space' + +class CustomTypeScriptWorker extends TypeScriptWorker { + async processFile(uri: string, withExports?: boolean) { + const sourceFile = this.getLanguageService().getProgram()?.getSourceFile(uri) + if (!sourceFile) throw new Error(`File not found: ${uri}`) + + const transformed = blankSourceFile(sourceFile) + const exports: string[] = [] + if (withExports) { + for (const statement of sourceFile.statements) { + if (statement.kind === ts.typescript.SyntaxKind.ExportDeclaration) { + const exportDeclaration = statement as ExportDeclaration + const clause = exportDeclaration.exportClause + if (!clause || clause.kind !== ts.typescript.SyntaxKind.NamedExports) { + throw new Error('Invalid export declaration (export * is not supported)') + } + + for (const element of clause.elements) { + if (element.kind === ts.typescript.SyntaxKind.ExportSpecifier) { + exports.push(element.name.getText()) + } + } + } else if ( + statement.kind === ts.typescript.SyntaxKind.VariableStatement + && statement.modifiers?.some((it: ModifierLike) => it.kind === ts.typescript.SyntaxKind.ExportKeyword)) { + for (const declaration of (statement as VariableStatement).declarationList.declarations) { + exports.push(declaration.name.getText()) + } + } + } + } + + return { + transformed, + exports, + } + } + + async getSyntacticDiagnostics(fileName: string): Promise { + const parent = await super.getSyntacticDiagnostics(fileName) + + const sourceFile = this.getLanguageService().getProgram()?.getSourceFile(fileName) + if (!sourceFile) return parent + + // there's probably a better way but ts-blank-space's own playground does this, + // and ts-blank-space is fast enough for this to not really matter (it basically just traverses the AST once) + blankSourceFile(sourceFile, (errorNode) => { + parent.push({ + start: errorNode.getStart(), + length: errorNode.getWidth(), + messageText: `[ts-blank-space] Unsupported syntax: ${errorNode.getText()}`, + category: ts.typescript.DiagnosticCategory.Error, + code: 9999, + }) + }) + return parent + } +} + +export type { CustomTypeScriptWorker } + +// eslint-disable-next-line no-restricted-globals +self.onmessage = () => { + initialize((ctx: any, createData: any) => { + return new CustomTypeScriptWorker(ctx, createData) + }) +} diff --git a/src/components/editor/utils/latte.json b/src/components/editor/utils/latte.json new file mode 100644 index 0000000..c3cb2c9 --- /dev/null +++ b/src/components/editor/utils/latte.json @@ -0,0 +1,2128 @@ +{ + "inherit": false, + "base": "vs-dark", + "colors": { + "focusBorder": "#8839ef", + "foreground": "#4c4f69", + "disabledForeground": "#6c6f85", + "widget.shadow": "#e6e9ef80", + "selection.background": "#8839ef66", + "descriptionForeground": "#4c4f69", + "errorForeground": "#d20f39", + "icon.foreground": "#8839ef", + "sash.hoverBorder": "#8839ef", + "window.activeBorder": "#00000000", + "window.inactiveBorder": "#00000000", + "textBlockQuote.background": "#e6e9ef", + "textBlockQuote.border": "#dce0e8", + "textCodeBlock.background": "#eff1f5", + "textLink.activeForeground": "#04a5e5", + "textLink.foreground": "#1e66f5", + "textPreformat.foreground": "#4c4f69", + "textSeparator.foreground": "#8839ef", + "activityBar.background": "#dce0e8", + "activityBar.foreground": "#8839ef", + "activityBar.dropBorder": "#8839ef33", + "activityBar.inactiveForeground": "#9ca0b0", + "activityBar.border": "#00000000", + "activityBarBadge.background": "#8839ef", + "activityBarBadge.foreground": "#dce0e8", + "activityBar.activeBorder": "#00000000", + "activityBar.activeBackground": "#00000000", + "activityBar.activeFocusBorder": "#00000000", + "activityBarTop.foreground": "#8839ef", + "activityBarTop.activeBorder": "#00000000", + "activityBarTop.inactiveForeground": "#9ca0b0", + "activityBarTop.dropBorder": "#8839ef33", + "badge.background": "#bcc0cc", + "badge.foreground": "#4c4f69", + "breadcrumb.activeSelectionForeground": "#8839ef", + "breadcrumb.background": "#eff1f5", + "breadcrumb.focusForeground": "#8839ef", + "breadcrumb.foreground": "#4c4f69cc", + "breadcrumbPicker.background": "#e6e9ef", + "button.background": "#8839ef", + "button.foreground": "#dce0e8", + "button.border": "#00000000", + "button.separator": "#00000000", + "button.hoverBackground": "#9c5af2", + "button.secondaryForeground": "#4c4f69", + "button.secondaryBackground": "#acb0be", + "button.secondaryHoverBackground": "#c0c3ce", + "checkbox.background": "#bcc0cc", + "checkbox.border": "#00000000", + "checkbox.foreground": "#8839ef", + "dropdown.background": "#e6e9ef", + "dropdown.listBackground": "#acb0be", + "dropdown.border": "#8839ef", + "dropdown.foreground": "#4c4f69", + "debugToolBar.background": "#dce0e8", + "debugToolBar.border": "#00000000", + "debugExceptionWidget.background": "#dce0e8", + "debugExceptionWidget.border": "#8839ef", + "debugTokenExpression.number": "#fe640b", + "debugTokenExpression.boolean": "#8839ef", + "debugTokenExpression.string": "#40a02b", + "debugTokenExpression.error": "#d20f39", + "debugIcon.breakpointForeground": "#d20f39", + "debugIcon.breakpointDisabledForeground": "#d20f3999", + "debugIcon.breakpointUnverifiedForeground": "#bf607c", + "debugIcon.breakpointCurrentStackframeForeground": "#acb0be", + "debugIcon.breakpointStackframeForeground": "#acb0be", + "debugIcon.startForeground": "#40a02b", + "debugIcon.pauseForeground": "#1e66f5", + "debugIcon.stopForeground": "#d20f39", + "debugIcon.disconnectForeground": "#acb0be", + "debugIcon.restartForeground": "#179299", + "debugIcon.stepOverForeground": "#8839ef", + "debugIcon.stepIntoForeground": "#4c4f69", + "debugIcon.stepOutForeground": "#4c4f69", + "debugIcon.continueForeground": "#40a02b", + "debugIcon.stepBackForeground": "#acb0be", + "debugConsole.infoForeground": "#1e66f5", + "debugConsole.warningForeground": "#fe640b", + "debugConsole.errorForeground": "#d20f39", + "debugConsole.sourceForeground": "#dc8a78", + "debugConsoleInputIcon.foreground": "#4c4f69", + "diffEditor.border": "#acb0be", + "diffEditor.insertedTextBackground": "#40a02b1a", + "diffEditor.removedTextBackground": "#d20f391a", + "diffEditor.insertedLineBackground": "#40a02b26", + "diffEditor.removedLineBackground": "#d20f3926", + "diffEditor.diagonalFill": "#acb0be99", + "diffEditorOverview.insertedForeground": "#40a02bcc", + "diffEditorOverview.removedForeground": "#d20f39cc", + "editor.background": "#ffffff", + "editor.findMatchBackground": "#e6adbd", + "editor.findMatchBorder": "#d20f3933", + "editor.findMatchHighlightBackground": "#a9daf0", + "editor.findMatchHighlightBorder": "#04a5e533", + "editor.findRangeHighlightBackground": "#a9daf0", + "editor.findRangeHighlightBorder": "#04a5e533", + "editor.foldBackground": "#04a5e540", + "editor.foreground": "#4c4f69", + "editor.hoverHighlightBackground": "#04a5e540", + "editor.lineHighlightBackground": "#4c4f6912", + "editor.lineHighlightBorder": "#00000000", + "editor.rangeHighlightBackground": "#04a5e540", + "editor.rangeHighlightBorder": "#00000000", + "editor.selectionBackground": "#7c7f934d", + "editor.selectionHighlightBackground": "#7c7f9333", + "editor.selectionHighlightBorder": "#7c7f9333", + "editor.wordHighlightBackground": "#7c7f9333", + "editor.wordHighlightStrongBackground": "#1e66f526", + "editorBracketMatch.background": "#7c7f931a", + "editorBracketMatch.border": "#7c7f93", + "editorCodeLens.foreground": "#8c8fa1", + "editorCursor.background": "#eff1f5", + "editorCursor.foreground": "#dc8a78", + "editorGroup.border": "#acb0be", + "editorGroup.dropBackground": "#8839ef33", + "editorGroup.emptyBackground": "#eff1f5", + "editorGroupHeader.tabsBackground": "#dce0e8", + "editorGutter.addedBackground": "#40a02b", + "editorGutter.background": "#ffffff", + "editorGutter.commentRangeForeground": "#ccd0da", + "editorGutter.commentGlyphForeground": "#8839ef", + "editorGutter.deletedBackground": "#d20f39", + "editorGutter.foldingControlForeground": "#7c7f93", + "editorGutter.modifiedBackground": "#df8e1d", + "editorHoverWidget.background": "#e6e9ef", + "editorHoverWidget.border": "#acb0be", + "editorHoverWidget.foreground": "#4c4f69", + "editorIndentGuide.activeBackground": "#acb0be", + "editorIndentGuide.background": "#bcc0cc", + "editorInlayHint.foreground": "#acb0be", + "editorInlayHint.background": "#e6e9efbf", + "editorInlayHint.typeForeground": "#5c5f77", + "editorInlayHint.typeBackground": "#e6e9efbf", + "editorInlayHint.parameterForeground": "#6c6f85", + "editorInlayHint.parameterBackground": "#e6e9efbf", + "editorLineNumber.activeForeground": "#8839ef", + "editorLineNumber.foreground": "#8c8fa1", + "editorLink.activeForeground": "#8839ef", + "editorMarkerNavigation.background": "#e6e9ef", + "editorMarkerNavigationError.background": "#d20f39", + "editorMarkerNavigationInfo.background": "#1e66f5", + "editorMarkerNavigationWarning.background": "#fe640b", + "editorOverviewRuler.background": "#e6e9ef", + "editorOverviewRuler.border": "#4c4f6912", + "editorOverviewRuler.modifiedForeground": "#df8e1d", + "editorRuler.foreground": "#acb0be", + "editor.stackFrameHighlightBackground": "#df8e1d26", + "editor.focusedStackFrameHighlightBackground": "#40a02b26", + "editorStickyScrollHover.background": "#ccd0da", + "editorSuggestWidget.background": "#e6e9ef", + "editorSuggestWidget.border": "#acb0be", + "editorSuggestWidget.foreground": "#4c4f69", + "editorSuggestWidget.highlightForeground": "#8839ef", + "editorSuggestWidget.selectedBackground": "#ccd0da", + "editorWhitespace.foreground": "#7c7f9366", + "editorWidget.background": "#e6e9ef", + "editorWidget.foreground": "#4c4f69", + "editorWidget.resizeBorder": "#acb0be", + "editorLightBulb.foreground": "#df8e1d", + "editorError.foreground": "#d20f39", + "editorError.border": "#00000000", + "editorError.background": "#00000000", + "editorWarning.foreground": "#fe640b", + "editorWarning.border": "#00000000", + "editorWarning.background": "#00000000", + "editorInfo.foreground": "#1e66f5", + "editorInfo.border": "#00000000", + "editorInfo.background": "#00000000", + "problemsErrorIcon.foreground": "#d20f39", + "problemsInfoIcon.foreground": "#1e66f5", + "problemsWarningIcon.foreground": "#fe640b", + "extensionButton.prominentForeground": "#dce0e8", + "extensionButton.prominentBackground": "#8839ef", + "extensionButton.separator": "#eff1f5", + "extensionButton.prominentHoverBackground": "#9c5af2", + "extensionBadge.remoteBackground": "#1e66f5", + "extensionBadge.remoteForeground": "#dce0e8", + "extensionIcon.starForeground": "#df8e1d", + "extensionIcon.verifiedForeground": "#40a02b", + "extensionIcon.preReleaseForeground": "#acb0be", + "extensionIcon.sponsorForeground": "#ea76cb", + "gitDecoration.addedResourceForeground": "#40a02b", + "gitDecoration.conflictingResourceForeground": "#8839ef", + "gitDecoration.deletedResourceForeground": "#d20f39", + "gitDecoration.ignoredResourceForeground": "#9ca0b0", + "gitDecoration.modifiedResourceForeground": "#df8e1d", + "gitDecoration.stageDeletedResourceForeground": "#d20f39", + "gitDecoration.stageModifiedResourceForeground": "#df8e1d", + "gitDecoration.submoduleResourceForeground": "#1e66f5", + "gitDecoration.untrackedResourceForeground": "#40a02b", + "input.background": "#ccd0da", + "input.border": "#00000000", + "input.foreground": "#4c4f69", + "input.placeholderForeground": "#4c4f6973", + "inputOption.activeBackground": "#acb0be", + "inputOption.activeBorder": "#8839ef", + "inputOption.activeForeground": "#4c4f69", + "inputValidation.errorBackground": "#d20f39", + "inputValidation.errorBorder": "#dce0e833", + "inputValidation.errorForeground": "#dce0e8", + "inputValidation.infoBackground": "#1e66f5", + "inputValidation.infoBorder": "#dce0e833", + "inputValidation.infoForeground": "#dce0e8", + "inputValidation.warningBackground": "#fe640b", + "inputValidation.warningBorder": "#dce0e833", + "inputValidation.warningForeground": "#dce0e8", + "list.activeSelectionBackground": "#ccd0da", + "list.activeSelectionForeground": "#4c4f69", + "list.dropBackground": "#8839ef33", + "list.focusBackground": "#ccd0da", + "list.focusForeground": "#4c4f69", + "list.focusOutline": "#00000000", + "list.highlightForeground": "#8839ef", + "list.hoverBackground": "#ccd0da80", + "list.hoverForeground": "#4c4f69", + "list.inactiveSelectionBackground": "#ccd0da", + "list.inactiveSelectionForeground": "#4c4f69", + "list.warningForeground": "#fe640b", + "listFilterWidget.background": "#bcc0cc", + "listFilterWidget.noMatchesOutline": "#d20f39", + "listFilterWidget.outline": "#00000000", + "tree.indentGuidesStroke": "#7c7f93", + "tree.inactiveIndentGuidesStroke": "#bcc0cc", + "menu.background": "#eff1f5", + "menu.border": "#eff1f580", + "menu.foreground": "#4c4f69", + "menu.selectionBackground": "#acb0be", + "menu.selectionBorder": "#00000000", + "menu.selectionForeground": "#4c4f69", + "menu.separatorBackground": "#acb0be", + "menubar.selectionBackground": "#bcc0cc", + "menubar.selectionForeground": "#4c4f69", + "merge.commonContentBackground": "#bcc0cc", + "merge.commonHeaderBackground": "#acb0be", + "merge.currentContentBackground": "#40a02b33", + "merge.currentHeaderBackground": "#40a02b66", + "merge.incomingContentBackground": "#1e66f533", + "merge.incomingHeaderBackground": "#1e66f566", + "minimap.background": "#e6e9ef80", + "minimap.findMatchHighlight": "#04a5e54d", + "minimap.selectionHighlight": "#acb0bebf", + "minimap.selectionOccurrenceHighlight": "#acb0bebf", + "minimap.warningHighlight": "#fe640bbf", + "minimap.errorHighlight": "#d20f39bf", + "minimapSlider.background": "#8839ef33", + "minimapSlider.hoverBackground": "#8839ef66", + "minimapSlider.activeBackground": "#8839ef99", + "minimapGutter.addedBackground": "#40a02bbf", + "minimapGutter.deletedBackground": "#d20f39bf", + "minimapGutter.modifiedBackground": "#df8e1dbf", + "notificationCenter.border": "#8839ef", + "notificationCenterHeader.foreground": "#4c4f69", + "notificationCenterHeader.background": "#e6e9ef", + "notificationToast.border": "#8839ef", + "notifications.foreground": "#4c4f69", + "notifications.background": "#e6e9ef", + "notifications.border": "#8839ef", + "notificationLink.foreground": "#1e66f5", + "notificationsErrorIcon.foreground": "#d20f39", + "notificationsWarningIcon.foreground": "#fe640b", + "notificationsInfoIcon.foreground": "#1e66f5", + "panel.background": "#eff1f5", + "panel.border": "#acb0be", + "panelSection.border": "#acb0be", + "panelSection.dropBackground": "#8839ef33", + "panelTitle.activeBorder": "#8839ef", + "panelTitle.activeForeground": "#4c4f69", + "panelTitle.inactiveForeground": "#6c6f85", + "peekView.border": "#8839ef", + "peekViewEditor.background": "#e6e9ef", + "peekViewEditorGutter.background": "#e6e9ef", + "peekViewEditor.matchHighlightBackground": "#04a5e54d", + "peekViewEditor.matchHighlightBorder": "#00000000", + "peekViewResult.background": "#e6e9ef", + "peekViewResult.fileForeground": "#4c4f69", + "peekViewResult.lineForeground": "#4c4f69", + "peekViewResult.matchHighlightBackground": "#04a5e54d", + "peekViewResult.selectionBackground": "#ccd0da", + "peekViewResult.selectionForeground": "#4c4f69", + "peekViewTitle.background": "#eff1f5", + "peekViewTitleDescription.foreground": "#5c5f77b3", + "peekViewTitleLabel.foreground": "#4c4f69", + "pickerGroup.border": "#8839ef", + "pickerGroup.foreground": "#8839ef", + "progressBar.background": "#8839ef", + "scrollbar.shadow": "#dce0e8", + "scrollbarSlider.activeBackground": "#ccd0da66", + "scrollbarSlider.background": "#acb0be80", + "scrollbarSlider.hoverBackground": "#9ca0b0", + "settings.focusedRowBackground": "#acb0be33", + "settings.headerForeground": "#4c4f69", + "settings.modifiedItemIndicator": "#8839ef", + "settings.dropdownBackground": "#bcc0cc", + "settings.dropdownListBorder": "#00000000", + "settings.textInputBackground": "#bcc0cc", + "settings.textInputBorder": "#00000000", + "settings.numberInputBackground": "#bcc0cc", + "settings.numberInputBorder": "#00000000", + "sideBar.background": "#e6e9ef", + "sideBar.dropBackground": "#8839ef33", + "sideBar.foreground": "#4c4f69", + "sideBar.border": "#00000000", + "sideBarSectionHeader.background": "#e6e9ef", + "sideBarSectionHeader.foreground": "#4c4f69", + "sideBarTitle.foreground": "#8839ef", + "banner.background": "#bcc0cc", + "banner.foreground": "#4c4f69", + "banner.iconForeground": "#4c4f69", + "statusBar.background": "#dce0e8", + "statusBar.foreground": "#4c4f69", + "statusBar.border": "#00000000", + "statusBar.noFolderBackground": "#dce0e8", + "statusBar.noFolderForeground": "#4c4f69", + "statusBar.noFolderBorder": "#00000000", + "statusBar.debuggingBackground": "#fe640b", + "statusBar.debuggingForeground": "#dce0e8", + "statusBar.debuggingBorder": "#00000000", + "statusBarItem.remoteBackground": "#1e66f5", + "statusBarItem.remoteForeground": "#dce0e8", + "statusBarItem.activeBackground": "#acb0be66", + "statusBarItem.hoverBackground": "#acb0be33", + "statusBarItem.prominentForeground": "#8839ef", + "statusBarItem.prominentBackground": "#00000000", + "statusBarItem.prominentHoverBackground": "#acb0be33", + "statusBarItem.errorForeground": "#d20f39", + "statusBarItem.errorBackground": "#00000000", + "statusBarItem.warningForeground": "#fe640b", + "statusBarItem.warningBackground": "#00000000", + "commandCenter.foreground": "#5c5f77", + "commandCenter.inactiveForeground": "#5c5f77", + "commandCenter.activeForeground": "#8839ef", + "commandCenter.background": "#e6e9ef", + "commandCenter.activeBackground": "#acb0be33", + "commandCenter.border": "#00000000", + "commandCenter.inactiveBorder": "#00000000", + "commandCenter.activeBorder": "#8839ef", + "tab.activeBackground": "#eff1f5", + "tab.activeBorder": "#00000000", + "tab.activeBorderTop": "#8839ef", + "tab.activeForeground": "#8839ef", + "tab.activeModifiedBorder": "#df8e1d", + "tab.border": "#e6e9ef", + "tab.hoverBackground": "#ffffff", + "tab.hoverBorder": "#00000000", + "tab.hoverForeground": "#8839ef", + "tab.inactiveBackground": "#e6e9ef", + "tab.inactiveForeground": "#9ca0b0", + "tab.inactiveModifiedBorder": "#df8e1d4d", + "tab.lastPinnedBorder": "#8839ef", + "tab.unfocusedActiveBackground": "#e6e9ef", + "tab.unfocusedActiveBorder": "#00000000", + "tab.unfocusedActiveBorderTop": "#8839ef4d", + "tab.unfocusedInactiveBackground": "#d6dbe5", + "terminal.foreground": "#4c4f69", + "terminal.ansiBlack": "#5c5f77", + "terminal.ansiRed": "#d20f39", + "terminal.ansiGreen": "#40a02b", + "terminal.ansiYellow": "#df8e1d", + "terminal.ansiBlue": "#1e66f5", + "terminal.ansiMagenta": "#ea76cb", + "terminal.ansiCyan": "#179299", + "terminal.ansiWhite": "#acb0be", + "terminal.ansiBrightBlack": "#6c6f85", + "terminal.ansiBrightRed": "#de293e", + "terminal.ansiBrightGreen": "#49af3d", + "terminal.ansiBrightYellow": "#eea02d", + "terminal.ansiBrightBlue": "#456eff", + "terminal.ansiBrightMagenta": "#fe85d8", + "terminal.ansiBrightCyan": "#2d9fa8", + "terminal.ansiBrightWhite": "#bcc0cc", + "terminal.selectionBackground": "#acb0be", + "terminal.inactiveSelectionBackground": "#acb0be80", + "terminalCursor.background": "#eff1f5", + "terminalCursor.foreground": "#dc8a78", + "terminal.border": "#acb0be", + "terminal.dropBackground": "#8839ef33", + "terminal.tab.activeBorder": "#8839ef", + "terminalCommandDecoration.defaultBackground": "#acb0be", + "terminalCommandDecoration.successBackground": "#40a02b", + "terminalCommandDecoration.errorBackground": "#d20f39", + "titleBar.activeBackground": "#dce0e8", + "titleBar.activeForeground": "#4c4f69", + "titleBar.inactiveBackground": "#dce0e8", + "titleBar.inactiveForeground": "#4c4f6980", + "titleBar.border": "#00000000", + "welcomePage.tileBackground": "#e6e9ef", + "welcomePage.progress.background": "#dce0e8", + "welcomePage.progress.foreground": "#8839ef", + "walkThrough.embeddedEditorBackground": "#eff1f54d", + "symbolIcon.textForeground": "#4c4f69", + "symbolIcon.arrayForeground": "#fe640b", + "symbolIcon.booleanForeground": "#8839ef", + "symbolIcon.classForeground": "#df8e1d", + "symbolIcon.colorForeground": "#ea76cb", + "symbolIcon.constantForeground": "#fe640b", + "symbolIcon.constructorForeground": "#7287fd", + "symbolIcon.enumeratorForeground": "#df8e1d", + "symbolIcon.enumeratorMemberForeground": "#df8e1d", + "symbolIcon.eventForeground": "#ea76cb", + "symbolIcon.fieldForeground": "#4c4f69", + "symbolIcon.fileForeground": "#8839ef", + "symbolIcon.folderForeground": "#8839ef", + "symbolIcon.functionForeground": "#1e66f5", + "symbolIcon.interfaceForeground": "#df8e1d", + "symbolIcon.keyForeground": "#179299", + "symbolIcon.keywordForeground": "#8839ef", + "symbolIcon.methodForeground": "#1e66f5", + "symbolIcon.moduleForeground": "#4c4f69", + "symbolIcon.namespaceForeground": "#df8e1d", + "symbolIcon.nullForeground": "#e64553", + "symbolIcon.numberForeground": "#fe640b", + "symbolIcon.objectForeground": "#df8e1d", + "symbolIcon.operatorForeground": "#179299", + "symbolIcon.packageForeground": "#dd7878", + "symbolIcon.propertyForeground": "#e64553", + "symbolIcon.referenceForeground": "#df8e1d", + "symbolIcon.snippetForeground": "#dd7878", + "symbolIcon.stringForeground": "#40a02b", + "symbolIcon.structForeground": "#179299", + "symbolIcon.typeParameterForeground": "#e64553", + "symbolIcon.unitForeground": "#4c4f69", + "symbolIcon.variableForeground": "#4c4f69", + "charts.foreground": "#4c4f69", + "charts.lines": "#5c5f77", + "charts.red": "#d20f39", + "charts.blue": "#1e66f5", + "charts.yellow": "#df8e1d", + "charts.orange": "#fe640b", + "charts.green": "#40a02b", + "charts.purple": "#8839ef", + "errorLens.errorBackground": "#d20f3926", + "errorLens.errorBackgroundLight": "#d20f3926", + "errorLens.errorForeground": "#d20f39", + "errorLens.errorForegroundLight": "#d20f39", + "errorLens.errorMessageBackground": "#d20f3926", + "errorLens.hintBackground": "#40a02b26", + "errorLens.hintBackgroundLight": "#40a02b26", + "errorLens.hintForeground": "#40a02b", + "errorLens.hintForegroundLight": "#40a02b", + "errorLens.hintMessageBackground": "#40a02b26", + "errorLens.infoBackground": "#1e66f526", + "errorLens.infoBackgroundLight": "#1e66f526", + "errorLens.infoForeground": "#1e66f5", + "errorLens.infoForegroundLight": "#1e66f5", + "errorLens.infoMessageBackground": "#1e66f526", + "errorLens.statusBarErrorForeground": "#d20f39", + "errorLens.statusBarHintForeground": "#40a02b", + "errorLens.statusBarIconErrorForeground": "#d20f39", + "errorLens.statusBarIconWarningForeground": "#fe640b", + "errorLens.statusBarInfoForeground": "#1e66f5", + "errorLens.statusBarWarningForeground": "#fe640b", + "errorLens.warningBackground": "#fe640b26", + "errorLens.warningBackgroundLight": "#fe640b26", + "errorLens.warningForeground": "#fe640b", + "errorLens.warningForegroundLight": "#fe640b", + "errorLens.warningMessageBackground": "#fe640b26", + "issues.closed": "#8839ef", + "issues.newIssueDecoration": "#dc8a78", + "issues.open": "#40a02b", + "pullRequests.closed": "#d20f39", + "pullRequests.draft": "#7c7f93", + "pullRequests.merged": "#8839ef", + "pullRequests.notification": "#4c4f69", + "pullRequests.open": "#40a02b", + "gitlens.gutterBackgroundColor": "#ccd0da4d", + "gitlens.gutterForegroundColor": "#4c4f69", + "gitlens.gutterUncommittedForegroundColor": "#8839ef", + "gitlens.trailingLineBackgroundColor": "#00000000", + "gitlens.trailingLineForegroundColor": "#4c4f694d", + "gitlens.lineHighlightBackgroundColor": "#8839ef26", + "gitlens.lineHighlightOverviewRulerColor": "#8839efcc", + "gitlens.openAutolinkedIssueIconColor": "#40a02b", + "gitlens.closedAutolinkedIssueIconColor": "#8839ef", + "gitlens.closedPullRequestIconColor": "#d20f39", + "gitlens.openPullRequestIconColor": "#40a02b", + "gitlens.mergedPullRequestIconColor": "#8839ef", + "gitlens.unpublishedChangesIconColor": "#40a02b", + "gitlens.unpublishedCommitIconColor": "#40a02b", + "gitlens.unpulledChangesIconColor": "#fe640b", + "gitlens.decorations.branchAheadForegroundColor": "#40a02b", + "gitlens.decorations.branchBehindForegroundColor": "#fe640b", + "gitlens.decorations.branchDivergedForegroundColor": "#df8e1d", + "gitlens.decorations.branchUnpublishedForegroundColor": "#40a02b", + "gitlens.decorations.branchMissingUpstreamForegroundColor": "#fe640b", + "gitlens.decorations.statusMergingOrRebasingConflictForegroundColor": "#e64553", + "gitlens.decorations.statusMergingOrRebasingForegroundColor": "#df8e1d", + "gitlens.decorations.workspaceRepoMissingForegroundColor": "#6c6f85", + "gitlens.decorations.workspaceCurrentForegroundColor": "#8839ef", + "gitlens.decorations.workspaceRepoOpenForegroundColor": "#8839ef", + "gitlens.decorations.worktreeHasUncommittedChangesForegroundColor": "#fe640b", + "gitlens.decorations.worktreeMissingForegroundColor": "#e64553", + "gitlens.graphLane1Color": "#8839ef", + "gitlens.graphLane2Color": "#df8e1d", + "gitlens.graphLane3Color": "#1e66f5", + "gitlens.graphLane4Color": "#dd7878", + "gitlens.graphLane5Color": "#40a02b", + "gitlens.graphLane6Color": "#7287fd", + "gitlens.graphLane7Color": "#dc8a78", + "gitlens.graphLane8Color": "#d20f39", + "gitlens.graphLane9Color": "#179299", + "gitlens.graphLane10Color": "#ea76cb", + "gitlens.graphChangesColumnAddedColor": "#40a02b", + "gitlens.graphChangesColumnDeletedColor": "#d20f39", + "gitlens.graphMinimapMarkerHeadColor": "#40a02b", + "gitlens.graphScrollMarkerHeadColor": "#40a02b", + "gitlens.graphMinimapMarkerUpstreamColor": "#388c26", + "gitlens.graphScrollMarkerUpstreamColor": "#388c26", + "gitlens.graphMinimapMarkerHighlightsColor": "#df8e1d", + "gitlens.graphScrollMarkerHighlightsColor": "#df8e1d", + "gitlens.graphMinimapMarkerLocalBranchesColor": "#1e66f5", + "gitlens.graphScrollMarkerLocalBranchesColor": "#1e66f5", + "gitlens.graphMinimapMarkerRemoteBranchesColor": "#0b57ef", + "gitlens.graphScrollMarkerRemoteBranchesColor": "#0b57ef", + "gitlens.graphMinimapMarkerStashesColor": "#8839ef", + "gitlens.graphScrollMarkerStashesColor": "#8839ef", + "gitlens.graphMinimapMarkerTagsColor": "#dd7878", + "gitlens.graphScrollMarkerTagsColor": "#dd7878", + "editorBracketHighlight.foreground1": "#d20f39", + "editorBracketHighlight.foreground2": "#fe640b", + "editorBracketHighlight.foreground3": "#df8e1d", + "editorBracketHighlight.foreground4": "#40a02b", + "editorBracketHighlight.foreground5": "#209fb5", + "editorBracketHighlight.foreground6": "#8839ef", + "editorBracketHighlight.unexpectedBracket.foreground": "#e64553", + "button.secondaryBorder": "#8839ef", + "table.headerBackground": "#ccd0da", + "table.headerForeground": "#4c4f69", + "list.focusAndSelectionBackground": "#bcc0cc" + }, + "rules": [ + { + "foreground": "#4c4f69", + "token": "text" + }, + { + "foreground": "#4c4f69", + "token": "source" + }, + { + "foreground": "#4c4f69", + "token": "variable.other.readwrite" + }, + { + "foreground": "#4c4f69", + "token": "punctuation.definition.variable" + }, + { + "foreground": "#7c7f93", + "fontStyle": "", + "token": "punctuation" + }, + { + "foreground": "#9ca0b0", + "fontStyle": "italic", + "token": "comment" + }, + { + "foreground": "#9ca0b0", + "fontStyle": "italic", + "token": "punctuation.definition.comment" + }, + { + "foreground": "#40a02b", + "token": "string" + }, + { + "foreground": "#40a02b", + "token": "punctuation.definition.string" + }, + { + "foreground": "#ea76cb", + "token": "constant.character.escape" + }, + { + "foreground": "#fe640b", + "token": "constant.numeric" + }, + { + "foreground": "#fe640b", + "token": "variable.other.constant" + }, + { + "foreground": "#fe640b", + "token": "entity.name.constant" + }, + { + "foreground": "#fe640b", + "token": "constant.language.boolean" + }, + { + "foreground": "#fe640b", + "token": "constant.language.false" + }, + { + "foreground": "#fe640b", + "token": "constant.language.true" + }, + { + "foreground": "#fe640b", + "token": "keyword.other.unit.user-defined" + }, + { + "foreground": "#fe640b", + "token": "keyword.other.unit.suffix.floating-point" + }, + { + "foreground": "#8839ef", + "fontStyle": "", + "token": "keyword" + }, + { + "foreground": "#8839ef", + "fontStyle": "", + "token": "keyword.operator.word" + }, + { + "foreground": "#8839ef", + "fontStyle": "", + "token": "keyword.operator.new" + }, + { + "foreground": "#8839ef", + "fontStyle": "", + "token": "variable.language.super" + }, + { + "foreground": "#8839ef", + "fontStyle": "", + "token": "support.type.primitive" + }, + { + "foreground": "#8839ef", + "fontStyle": "", + "token": "storage.type" + }, + { + "foreground": "#8839ef", + "fontStyle": "", + "token": "storage.modifier" + }, + { + "foreground": "#8839ef", + "fontStyle": "", + "token": "punctuation.definition.keyword" + }, + { + "foreground": "#8839ef", + "token": "entity.name.tag.documentation" + }, + { + "foreground": "#179299", + "token": "keyword.operator" + }, + { + "foreground": "#179299", + "token": "punctuation.accessor" + }, + { + "foreground": "#179299", + "token": "punctuation.definition.generic" + }, + { + "foreground": "#179299", + "token": "meta.function.closure punctuation.section.parameters" + }, + { + "foreground": "#179299", + "token": "punctuation.definition.tag" + }, + { + "foreground": "#179299", + "token": "punctuation.separator.key-value" + }, + { + "foreground": "#1e66f5", + "fontStyle": "italic", + "token": "entity.name.function" + }, + { + "foreground": "#1e66f5", + "fontStyle": "italic", + "token": "meta.function-call.method" + }, + { + "foreground": "#1e66f5", + "fontStyle": "italic", + "token": "support.function" + }, + { + "foreground": "#1e66f5", + "fontStyle": "italic", + "token": "support.function.misc" + }, + { + "foreground": "#1e66f5", + "fontStyle": "italic", + "token": "variable.function" + }, + { + "foreground": "#df8e1d", + "fontStyle": "italic", + "token": "entity.name.class" + }, + { + "foreground": "#df8e1d", + "fontStyle": "italic", + "token": "entity.other.inherited-class" + }, + { + "foreground": "#df8e1d", + "fontStyle": "italic", + "token": "support.class" + }, + { + "foreground": "#df8e1d", + "fontStyle": "italic", + "token": "meta.function-call.constructor" + }, + { + "foreground": "#df8e1d", + "fontStyle": "italic", + "token": "entity.name.struct" + }, + { + "foreground": "#df8e1d", + "fontStyle": "italic", + "token": "entity.name.enum" + }, + { + "foreground": "#179299", + "token": "meta.enum variable.other.readwrite" + }, + { + "foreground": "#179299", + "token": "variable.other.enummember" + }, + { + "foreground": "#179299", + "token": "meta.property.object" + }, + { + "foreground": "#df8e1d", + "fontStyle": "italic", + "token": "meta.type" + }, + { + "foreground": "#df8e1d", + "fontStyle": "italic", + "token": "meta.type-alias" + }, + { + "foreground": "#df8e1d", + "fontStyle": "italic", + "token": "support.type" + }, + { + "foreground": "#df8e1d", + "fontStyle": "italic", + "token": "entity.name.type" + }, + { + "foreground": "#fe640b", + "token": "meta.annotation variable.function" + }, + { + "foreground": "#fe640b", + "token": "meta.annotation variable.annotation.function" + }, + { + "foreground": "#fe640b", + "token": "meta.annotation punctuation.definition.annotation" + }, + { + "foreground": "#fe640b", + "token": "meta.decorator" + }, + { + "foreground": "#fe640b", + "token": "punctuation.decorator" + }, + { + "foreground": "#e64553", + "fontStyle": "italic", + "token": "variable.parameter" + }, + { + "foreground": "#e64553", + "fontStyle": "italic", + "token": "meta.function.parameters" + }, + { + "foreground": "#d20f39", + "token": "constant.language" + }, + { + "foreground": "#d20f39", + "token": "support.function.builtin" + }, + { + "foreground": "#d20f39", + "token": "entity.other.attribute-name.documentation" + }, + { + "foreground": "#df8e1d", + "token": "keyword.control.directive" + }, + { + "foreground": "#df8e1d", + "token": "punctuation.definition.directive" + }, + { + "foreground": "#04a5e5", + "token": "punctuation.definition.typeparameters" + }, + { + "foreground": "#df8e1d", + "token": "entity.name.namespace" + }, + { + "foreground": "#1e66f5", + "fontStyle": "", + "token": "support.type.property-name.css" + }, + { + "foreground": "#d20f39", + "token": "variable.language.this" + }, + { + "foreground": "#d20f39", + "token": "variable.language.this punctuation.definition.variable" + }, + { + "foreground": "#4c4f69", + "token": "variable.object.property" + }, + { + "foreground": "#4c4f69", + "token": "string.template variable" + }, + { + "foreground": "#4c4f69", + "token": "string variable" + }, + { + "fontStyle": "bold", + "token": "keyword.operator.new" + }, + { + "foreground": "#8839ef", + "token": "storage.modifier.specifier.extern.cpp" + }, + { + "foreground": "#df8e1d", + "token": "entity.name.scope-resolution.template.call.cpp" + }, + { + "foreground": "#df8e1d", + "token": "entity.name.scope-resolution.parameter.cpp" + }, + { + "foreground": "#df8e1d", + "token": "entity.name.scope-resolution.cpp" + }, + { + "foreground": "#df8e1d", + "token": "entity.name.scope-resolution.function.definition.cpp" + }, + { + "fontStyle": "", + "token": "storage.type.class.doxygen" + }, + { + "foreground": "#179299", + "token": "storage.modifier.reference.cpp" + }, + { + "foreground": "#4c4f69", + "token": "meta.interpolation.cs" + }, + { + "foreground": "#4c4f69", + "token": "comment.block.documentation.cs" + }, + { + "foreground": "#df8e1d", + "token": "source.css entity.other.attribute-name.class.css" + }, + { + "foreground": "#df8e1d", + "token": "entity.other.attribute-name.parent-selector.css punctuation.definition.entity.css" + }, + { + "foreground": "#179299", + "token": "punctuation.separator.operator.css" + }, + { + "foreground": "#179299", + "token": "source.css entity.other.attribute-name.pseudo-class" + }, + { + "foreground": "#fe640b", + "token": "source.css constant.other.unicode-range" + }, + { + "foreground": "#40a02b", + "fontStyle": "", + "token": "source.css variable.parameter.url" + }, + { + "foreground": "#04a5e5", + "token": "support.type.vendored.property-name" + }, + { + "foreground": "#e64553", + "token": "source.css meta.property-value variable" + }, + { + "foreground": "#e64553", + "token": "source.css meta.property-value variable.other.less" + }, + { + "foreground": "#e64553", + "token": "source.css meta.property-value variable.other.less punctuation.definition.variable.less" + }, + { + "foreground": "#e64553", + "token": "meta.definition.variable.scss" + }, + { + "foreground": "#1e66f5", + "token": "source.css meta.property-list variable" + }, + { + "foreground": "#1e66f5", + "token": "meta.property-list variable.other.less" + }, + { + "foreground": "#1e66f5", + "token": "meta.property-list variable.other.less punctuation.definition.variable.less" + }, + { + "foreground": "#fe640b", + "token": "keyword.other.unit.percentage.css" + }, + { + "foreground": "#40a02b", + "token": "source.css meta.attribute-selector" + }, + { + "foreground": "#1e66f5", + "fontStyle": "", + "token": "keyword.other.definition.ini" + }, + { + "foreground": "#1e66f5", + "fontStyle": "", + "token": "punctuation.support.type.property-name.json" + }, + { + "foreground": "#1e66f5", + "fontStyle": "", + "token": "support.type.property-name.json" + }, + { + "foreground": "#1e66f5", + "fontStyle": "", + "token": "punctuation.support.type.property-name.toml" + }, + { + "foreground": "#1e66f5", + "fontStyle": "", + "token": "support.type.property-name.toml" + }, + { + "foreground": "#1e66f5", + "fontStyle": "", + "token": "entity.name.tag.yaml" + }, + { + "foreground": "#1e66f5", + "fontStyle": "", + "token": "punctuation.support.type.property-name.yaml" + }, + { + "foreground": "#1e66f5", + "fontStyle": "", + "token": "support.type.property-name.yaml" + }, + { + "foreground": "#fe640b", + "token": "constant.language.json" + }, + { + "foreground": "#fe640b", + "token": "constant.language.yaml" + }, + { + "foreground": "#df8e1d", + "fontStyle": "", + "token": "entity.name.type.anchor.yaml" + }, + { + "foreground": "#df8e1d", + "fontStyle": "", + "token": "variable.other.alias.yaml" + }, + { + "foreground": "#df8e1d", + "token": "support.type.property-name.table" + }, + { + "foreground": "#df8e1d", + "token": "entity.name.section.group-title.ini" + }, + { + "foreground": "#ea76cb", + "token": "constant.other.time.datetime.offset.toml" + }, + { + "foreground": "#ea76cb", + "token": "punctuation.definition.anchor.yaml" + }, + { + "foreground": "#ea76cb", + "token": "punctuation.definition.alias.yaml" + }, + { + "foreground": "#ea76cb", + "token": "entity.other.document.begin.yaml" + }, + { + "foreground": "#fe640b", + "token": "markup.changed.diff" + }, + { + "foreground": "#1e66f5", + "token": "meta.diff.header.from-file" + }, + { + "foreground": "#1e66f5", + "token": "meta.diff.header.to-file" + }, + { + "foreground": "#1e66f5", + "token": "punctuation.definition.from-file.diff" + }, + { + "foreground": "#1e66f5", + "token": "punctuation.definition.to-file.diff" + }, + { + "foreground": "#40a02b", + "token": "markup.inserted.diff" + }, + { + "foreground": "#d20f39", + "token": "markup.deleted.diff" + }, + { + "foreground": "#1e66f5", + "token": "variable.other.env" + }, + { + "foreground": "#4c4f69", + "token": "string.quoted variable.other.env" + }, + { + "foreground": "#1e66f5", + "token": "support.function.builtin.gdscript" + }, + { + "foreground": "#fe640b", + "token": "constant.language.gdscript" + }, + { + "foreground": "#e64553", + "token": "comment meta.annotation.go" + }, + { + "foreground": "#fe640b", + "token": "comment meta.annotation.parameters.go" + }, + { + "foreground": "#fe640b", + "token": "constant.language.go" + }, + { + "foreground": "#4c4f69", + "token": "variable.graphql" + }, + { + "foreground": "#dd7878", + "token": "string.unquoted.alias.graphql" + }, + { + "foreground": "#179299", + "token": "constant.character.enum.graphql" + }, + { + "foreground": "#dd7878", + "token": "meta.objectvalues.graphql constant.object.key.graphql string.unquoted.graphql" + }, + { + "foreground": "#8839ef", + "token": "keyword.other.doctype" + }, + { + "foreground": "#8839ef", + "token": "meta.tag.sgml.doctype punctuation.definition.tag" + }, + { + "foreground": "#8839ef", + "token": "meta.tag.metadata.doctype entity.name.tag" + }, + { + "foreground": "#8839ef", + "token": "meta.tag.metadata.doctype punctuation.definition.tag" + }, + { + "foreground": "#1e66f5", + "fontStyle": "", + "token": "entity.name.tag" + }, + { + "foreground": "#d20f39", + "token": "text.html constant.character.entity" + }, + { + "foreground": "#d20f39", + "token": "text.html constant.character.entity punctuation" + }, + { + "foreground": "#d20f39", + "token": "constant.character.entity.xml" + }, + { + "foreground": "#d20f39", + "token": "constant.character.entity.xml punctuation" + }, + { + "foreground": "#d20f39", + "token": "constant.character.entity.js.jsx" + }, + { + "foreground": "#d20f39", + "token": "constant.charactger.entity.js.jsx punctuation" + }, + { + "foreground": "#d20f39", + "token": "constant.character.entity.tsx" + }, + { + "foreground": "#d20f39", + "token": "constant.character.entity.tsx punctuation" + }, + { + "foreground": "#df8e1d", + "token": "entity.other.attribute-name" + }, + { + "foreground": "#ea76cb", + "fontStyle": "", + "token": "support.class.component" + }, + { + "foreground": "#ea76cb", + "fontStyle": "", + "token": "support.class.component.jsx" + }, + { + "foreground": "#ea76cb", + "fontStyle": "", + "token": "support.class.component.tsx" + }, + { + "foreground": "#ea76cb", + "fontStyle": "", + "token": "support.class.component.vue" + }, + { + "foreground": "#fe640b", + "token": "punctuation.definition.annotation" + }, + { + "foreground": "#fe640b", + "token": "storage.type.annotation" + }, + { + "foreground": "#179299", + "token": "constant.other.enum.java" + }, + { + "foreground": "#4c4f69", + "token": "storage.modifier.import.java" + }, + { + "fontStyle": "", + "token": "comment.block.javadoc.java keyword.other.documentation.javadoc.java" + }, + { + "foreground": "#e64553", + "token": "meta.export variable.other.readwrite.js" + }, + { + "foreground": "#4c4f69", + "token": "variable.other.constant.js" + }, + { + "foreground": "#4c4f69", + "token": "variable.other.constant.ts" + }, + { + "foreground": "#4c4f69", + "token": "variable.other.property.js" + }, + { + "foreground": "#4c4f69", + "token": "variable.other.property.ts" + }, + { + "foreground": "#e64553", + "fontStyle": "", + "token": "variable.other.jsdoc" + }, + { + "foreground": "#e64553", + "fontStyle": "", + "token": "comment.block.documentation variable.other" + }, + { + "fontStyle": "", + "token": "storage.type.class.jsdoc" + }, + { + "foreground": "#4c4f69", + "token": "support.type.object.console.js" + }, + { + "foreground": "#8839ef", + "token": "support.constant.node" + }, + { + "foreground": "#8839ef", + "token": "support.type.object.module.js" + }, + { + "foreground": "#8839ef", + "token": "storage.modifier.implements" + }, + { + "foreground": "#8839ef", + "token": "constant.language.null.js" + }, + { + "foreground": "#8839ef", + "token": "constant.language.null.ts" + }, + { + "foreground": "#8839ef", + "token": "constant.language.undefined.js" + }, + { + "foreground": "#8839ef", + "token": "constant.language.undefined.ts" + }, + { + "foreground": "#8839ef", + "token": "support.type.builtin.ts" + }, + { + "foreground": "#df8e1d", + "token": "variable.parameter.generic" + }, + { + "foreground": "#179299", + "token": "keyword.declaration.function.arrow.js" + }, + { + "foreground": "#179299", + "token": "storage.type.function.arrow.ts" + }, + { + "foreground": "#1e66f5", + "fontStyle": "italic", + "token": "punctuation.decorator.ts" + }, + { + "foreground": "#8839ef", + "token": "keyword.operator.expression.in.js" + }, + { + "foreground": "#8839ef", + "token": "keyword.operator.expression.in.ts" + }, + { + "foreground": "#8839ef", + "token": "keyword.operator.expression.infer.ts" + }, + { + "foreground": "#8839ef", + "token": "keyword.operator.expression.instanceof.js" + }, + { + "foreground": "#8839ef", + "token": "keyword.operator.expression.instanceof.ts" + }, + { + "foreground": "#8839ef", + "token": "keyword.operator.expression.is" + }, + { + "foreground": "#8839ef", + "token": "keyword.operator.expression.keyof.ts" + }, + { + "foreground": "#8839ef", + "token": "keyword.operator.expression.of.js" + }, + { + "foreground": "#8839ef", + "token": "keyword.operator.expression.of.ts" + }, + { + "foreground": "#8839ef", + "token": "keyword.operator.expression.typeof.ts" + }, + { + "foreground": "#179299", + "fontStyle": "italic", + "token": "support.function.macro.julia" + }, + { + "foreground": "#fe640b", + "token": "constant.language.julia" + }, + { + "foreground": "#e64553", + "token": "constant.other.symbol.julia" + }, + { + "foreground": "#179299", + "token": "text.tex keyword.control.preamble" + }, + { + "foreground": "#04a5e5", + "token": "text.tex support.function.be" + }, + { + "foreground": "#dd7878", + "token": "constant.other.general.math.tex" + }, + { + "foreground": "#ea76cb", + "token": "variable.language.liquid" + }, + { + "foreground": "#8839ef", + "fontStyle": "", + "token": "comment.line.double-dash.documentation.lua storage.type.annotation.lua" + }, + { + "foreground": "#4c4f69", + "token": "comment.line.double-dash.documentation.lua entity.name.variable.lua" + }, + { + "foreground": "#4c4f69", + "token": "comment.line.double-dash.documentation.lua variable.lua" + }, + { + "foreground": "#d20f39", + "token": "heading.1.markdown punctuation.definition.heading.markdown" + }, + { + "foreground": "#d20f39", + "token": "heading.1.markdown" + }, + { + "foreground": "#d20f39", + "token": "heading.1.quarto punctuation.definition.heading.quarto" + }, + { + "foreground": "#d20f39", + "token": "heading.1.quarto" + }, + { + "foreground": "#d20f39", + "token": "markup.heading.atx.1.mdx" + }, + { + "foreground": "#d20f39", + "token": "markup.heading.atx.1.mdx punctuation.definition.heading.mdx" + }, + { + "foreground": "#d20f39", + "token": "markup.heading.setext.1.markdown" + }, + { + "foreground": "#d20f39", + "token": "markup.heading.heading-0.asciidoc" + }, + { + "foreground": "#fe640b", + "token": "heading.2.markdown punctuation.definition.heading.markdown" + }, + { + "foreground": "#fe640b", + "token": "heading.2.markdown" + }, + { + "foreground": "#fe640b", + "token": "heading.2.quarto punctuation.definition.heading.quarto" + }, + { + "foreground": "#fe640b", + "token": "heading.2.quarto" + }, + { + "foreground": "#fe640b", + "token": "markup.heading.atx.2.mdx" + }, + { + "foreground": "#fe640b", + "token": "markup.heading.atx.2.mdx punctuation.definition.heading.mdx" + }, + { + "foreground": "#fe640b", + "token": "markup.heading.setext.2.markdown" + }, + { + "foreground": "#fe640b", + "token": "markup.heading.heading-1.asciidoc" + }, + { + "foreground": "#df8e1d", + "token": "heading.3.markdown punctuation.definition.heading.markdown" + }, + { + "foreground": "#df8e1d", + "token": "heading.3.markdown" + }, + { + "foreground": "#df8e1d", + "token": "heading.3.quarto punctuation.definition.heading.quarto" + }, + { + "foreground": "#df8e1d", + "token": "heading.3.quarto" + }, + { + "foreground": "#df8e1d", + "token": "markup.heading.atx.3.mdx" + }, + { + "foreground": "#df8e1d", + "token": "markup.heading.atx.3.mdx punctuation.definition.heading.mdx" + }, + { + "foreground": "#df8e1d", + "token": "markup.heading.heading-2.asciidoc" + }, + { + "foreground": "#40a02b", + "token": "heading.4.markdown punctuation.definition.heading.markdown" + }, + { + "foreground": "#40a02b", + "token": "heading.4.markdown" + }, + { + "foreground": "#40a02b", + "token": "heading.4.quarto punctuation.definition.heading.quarto" + }, + { + "foreground": "#40a02b", + "token": "heading.4.quarto" + }, + { + "foreground": "#40a02b", + "token": "markup.heading.atx.4.mdx" + }, + { + "foreground": "#40a02b", + "token": "markup.heading.atx.4.mdx punctuation.definition.heading.mdx" + }, + { + "foreground": "#40a02b", + "token": "markup.heading.heading-3.asciidoc" + }, + { + "foreground": "#1e66f5", + "token": "heading.5.markdown punctuation.definition.heading.markdown" + }, + { + "foreground": "#1e66f5", + "token": "heading.5.markdown" + }, + { + "foreground": "#1e66f5", + "token": "heading.5.quarto punctuation.definition.heading.quarto" + }, + { + "foreground": "#1e66f5", + "token": "heading.5.quarto" + }, + { + "foreground": "#1e66f5", + "token": "markup.heading.atx.5.mdx" + }, + { + "foreground": "#1e66f5", + "token": "markup.heading.atx.5.mdx punctuation.definition.heading.mdx" + }, + { + "foreground": "#1e66f5", + "token": "markup.heading.heading-4.asciidoc" + }, + { + "foreground": "#8839ef", + "token": "heading.6.markdown punctuation.definition.heading.markdown" + }, + { + "foreground": "#8839ef", + "token": "heading.6.markdown" + }, + { + "foreground": "#8839ef", + "token": "heading.6.quarto punctuation.definition.heading.quarto" + }, + { + "foreground": "#8839ef", + "token": "heading.6.quarto" + }, + { + "foreground": "#8839ef", + "token": "markup.heading.atx.6.mdx" + }, + { + "foreground": "#8839ef", + "token": "markup.heading.atx.6.mdx punctuation.definition.heading.mdx" + }, + { + "foreground": "#8839ef", + "token": "markup.heading.heading-5.asciidoc" + }, + { + "foreground": "#d20f39", + "fontStyle": "bold", + "token": "markup.bold" + }, + { + "foreground": "#d20f39", + "fontStyle": "italic", + "token": "markup.italic" + }, + { + "foreground": "#6c6f85", + "fontStyle": "strikethrough", + "token": "markup.strikethrough" + }, + { + "foreground": "#1e66f5", + "token": "punctuation.definition.link" + }, + { + "foreground": "#1e66f5", + "token": "markup.underline.link" + }, + { + "foreground": "#7287fd", + "token": "text.html.markdown punctuation.definition.link.title" + }, + { + "foreground": "#7287fd", + "token": "text.html.quarto punctuation.definition.link.title" + }, + { + "foreground": "#7287fd", + "token": "string.other.link.title.markdown" + }, + { + "foreground": "#7287fd", + "token": "string.other.link.title.quarto" + }, + { + "foreground": "#7287fd", + "token": "markup.link" + }, + { + "foreground": "#7287fd", + "token": "punctuation.definition.constant.markdown" + }, + { + "foreground": "#7287fd", + "token": "punctuation.definition.constant.quarto" + }, + { + "foreground": "#7287fd", + "token": "constant.other.reference.link.markdown" + }, + { + "foreground": "#7287fd", + "token": "constant.other.reference.link.quarto" + }, + { + "foreground": "#7287fd", + "token": "markup.substitution.attribute-reference" + }, + { + "foreground": "#40a02b", + "token": "punctuation.definition.raw.markdown" + }, + { + "foreground": "#40a02b", + "token": "punctuation.definition.raw.quarto" + }, + { + "foreground": "#40a02b", + "token": "markup.inline.raw.string.markdown" + }, + { + "foreground": "#40a02b", + "token": "markup.inline.raw.string.quarto" + }, + { + "foreground": "#40a02b", + "token": "markup.raw.block.markdown" + }, + { + "foreground": "#40a02b", + "token": "markup.raw.block.quarto" + }, + { + "foreground": "#04a5e5", + "token": "fenced_code.block.language" + }, + { + "foreground": "#7c7f93", + "token": "markup.fenced_code.block punctuation.definition" + }, + { + "foreground": "#7c7f93", + "token": "markup.raw support.asciidoc" + }, + { + "foreground": "#ea76cb", + "token": "markup.quote" + }, + { + "foreground": "#ea76cb", + "token": "punctuation.definition.quote.begin" + }, + { + "foreground": "#179299", + "token": "meta.separator.markdown" + }, + { + "foreground": "#179299", + "token": "punctuation.definition.list.begin.markdown" + }, + { + "foreground": "#179299", + "token": "punctuation.definition.list.begin.quarto" + }, + { + "foreground": "#179299", + "token": "markup.list.bullet" + }, + { + "fontStyle": "bold", + "token": "markup.heading.quarto" + }, + { + "foreground": "#1e66f5", + "token": "entity.other.attribute-name.multipart.nix" + }, + { + "foreground": "#1e66f5", + "token": "entity.other.attribute-name.single.nix" + }, + { + "foreground": "#4c4f69", + "fontStyle": "", + "token": "variable.parameter.name.nix" + }, + { + "foreground": "#7287fd", + "fontStyle": "", + "token": "meta.embedded variable.parameter.name.nix" + }, + { + "foreground": "#ea76cb", + "fontStyle": "", + "token": "string.unquoted.path.nix" + }, + { + "foreground": "#df8e1d", + "token": "support.attribute.builtin" + }, + { + "foreground": "#df8e1d", + "token": "meta.attribute.php" + }, + { + "foreground": "#e64553", + "token": "meta.function.parameters.php punctuation.definition.variable.php" + }, + { + "foreground": "#8839ef", + "token": "constant.language.php" + }, + { + "foreground": "#04a5e5", + "token": "text.html.php support.function" + }, + { + "fontStyle": "", + "token": "keyword.other.phpdoc.php" + }, + { + "foreground": "#4c4f69", + "token": "support.variable.magic.python" + }, + { + "foreground": "#4c4f69", + "token": "meta.function-call.arguments.python" + }, + { + "foreground": "#04a5e5", + "fontStyle": "italic", + "token": "support.function.magic.python" + }, + { + "foreground": "#d20f39", + "fontStyle": "italic", + "token": "variable.parameter.function.language.special.self.python" + }, + { + "foreground": "#d20f39", + "fontStyle": "italic", + "token": "variable.language.special.self.python" + }, + { + "foreground": "#8839ef", + "token": "keyword.control.flow.python" + }, + { + "foreground": "#8839ef", + "token": "keyword.operator.logical.python" + }, + { + "foreground": "#8839ef", + "token": "storage.type.function.python" + }, + { + "foreground": "#04a5e5", + "token": "support.token.decorator.python" + }, + { + "foreground": "#04a5e5", + "token": "meta.function.decorator.identifier.python" + }, + { + "foreground": "#1e66f5", + "token": "meta.function-call.python" + }, + { + "foreground": "#fe640b", + "fontStyle": "italic", + "token": "entity.name.function.decorator.python" + }, + { + "foreground": "#fe640b", + "fontStyle": "italic", + "token": "punctuation.definition.decorator.python" + }, + { + "foreground": "#ea76cb", + "token": "constant.character.format.placeholder.other.python" + }, + { + "foreground": "#fe640b", + "token": "support.type.exception.python" + }, + { + "foreground": "#fe640b", + "token": "support.function.builtin.python" + }, + { + "foreground": "#fe640b", + "token": "support.type.python" + }, + { + "foreground": "#8839ef", + "token": "constant.language.python" + }, + { + "foreground": "#e64553", + "fontStyle": "italic", + "token": "meta.indexed-name.python" + }, + { + "foreground": "#e64553", + "fontStyle": "italic", + "token": "meta.item-access.python" + }, + { + "foreground": "#40a02b", + "fontStyle": "italic", + "token": "storage.type.string.python" + }, + { + "fontStyle": "", + "token": "meta.function.parameters.python" + }, + { + "foreground": "#ea76cb", + "token": "string.regexp punctuation.definition.string.begin" + }, + { + "foreground": "#ea76cb", + "token": "string.regexp punctuation.definition.string.end" + }, + { + "foreground": "#8839ef", + "token": "keyword.control.anchor.regexp" + }, + { + "foreground": "#4c4f69", + "token": "string.regexp.ts" + }, + { + "foreground": "#40a02b", + "token": "punctuation.definition.group.regexp" + }, + { + "foreground": "#40a02b", + "token": "keyword.other.back-reference.regexp" + }, + { + "foreground": "#df8e1d", + "token": "punctuation.definition.character-class.regexp" + }, + { + "foreground": "#ea76cb", + "token": "constant.other.character-class.regexp" + }, + { + "foreground": "#dc8a78", + "token": "constant.other.character-class.range.regexp" + }, + { + "foreground": "#179299", + "token": "keyword.operator.quantifier.regexp" + }, + { + "foreground": "#fe640b", + "token": "constant.character.numeric.regexp" + }, + { + "foreground": "#1e66f5", + "token": "punctuation.definition.group.no-capture.regexp" + }, + { + "foreground": "#1e66f5", + "token": "meta.assertion.look-ahead.regexp" + }, + { + "foreground": "#1e66f5", + "token": "meta.assertion.negative-look-ahead.regexp" + }, + { + "foreground": "#df8e1d", + "fontStyle": "italic", + "token": "meta.annotation.rust" + }, + { + "foreground": "#df8e1d", + "fontStyle": "italic", + "token": "meta.annotation.rust punctuation" + }, + { + "foreground": "#df8e1d", + "fontStyle": "italic", + "token": "meta.attribute.rust" + }, + { + "foreground": "#df8e1d", + "fontStyle": "italic", + "token": "punctuation.definition.attribute.rust" + }, + { + "fontStyle": "", + "token": "meta.attribute.rust string.quoted.double.rust" + }, + { + "fontStyle": "", + "token": "meta.attribute.rust string.quoted.single.char.rust" + }, + { + "foreground": "#8839ef", + "fontStyle": "", + "token": "entity.name.function.macro.rules.rust" + }, + { + "foreground": "#8839ef", + "fontStyle": "", + "token": "storage.type.module.rust" + }, + { + "foreground": "#8839ef", + "fontStyle": "", + "token": "storage.modifier.rust" + }, + { + "foreground": "#8839ef", + "fontStyle": "", + "token": "storage.type.struct.rust" + }, + { + "foreground": "#8839ef", + "fontStyle": "", + "token": "storage.type.enum.rust" + }, + { + "foreground": "#8839ef", + "fontStyle": "", + "token": "storage.type.trait.rust" + }, + { + "foreground": "#8839ef", + "fontStyle": "", + "token": "storage.type.union.rust" + }, + { + "foreground": "#8839ef", + "fontStyle": "", + "token": "storage.type.impl.rust" + }, + { + "foreground": "#8839ef", + "fontStyle": "", + "token": "storage.type.rust" + }, + { + "foreground": "#8839ef", + "fontStyle": "", + "token": "storage.type.function.rust" + }, + { + "foreground": "#8839ef", + "fontStyle": "", + "token": "storage.type.type.rust" + }, + { + "foreground": "#8839ef", + "fontStyle": "", + "token": "entity.name.type.numeric.rust" + }, + { + "foreground": "#fe640b", + "token": "meta.generic.rust" + }, + { + "foreground": "#df8e1d", + "fontStyle": "italic", + "token": "entity.name.impl.rust" + }, + { + "foreground": "#fe640b", + "token": "entity.name.module.rust" + }, + { + "foreground": "#df8e1d", + "fontStyle": "italic", + "token": "entity.name.trait.rust" + }, + { + "foreground": "#df8e1d", + "token": "storage.type.source.rust" + }, + { + "foreground": "#df8e1d", + "token": "entity.name.union.rust" + }, + { + "foreground": "#179299", + "token": "meta.enum.rust storage.type.source.rust" + }, + { + "foreground": "#1e66f5", + "fontStyle": "italic", + "token": "support.macro.rust" + }, + { + "foreground": "#1e66f5", + "fontStyle": "italic", + "token": "meta.macro.rust support.function.rust" + }, + { + "foreground": "#1e66f5", + "fontStyle": "italic", + "token": "entity.name.function.macro.rust" + }, + { + "foreground": "#1e66f5", + "fontStyle": "italic", + "token": "storage.modifier.lifetime.rust" + }, + { + "foreground": "#1e66f5", + "fontStyle": "italic", + "token": "entity.name.type.lifetime" + }, + { + "foreground": "#ea76cb", + "token": "string.quoted.double.rust constant.other.placeholder.rust" + }, + { + "foreground": "#4c4f69", + "token": "meta.function.return-type.rust meta.generic.rust storage.type.rust" + }, + { + "foreground": "#1e66f5", + "token": "meta.function.call.rust" + }, + { + "foreground": "#04a5e5", + "token": "punctuation.brackets.angle.rust" + }, + { + "foreground": "#fe640b", + "token": "constant.other.caps.rust" + }, + { + "foreground": "#e64553", + "token": "meta.function.definition.rust variable.other.rust" + }, + { + "foreground": "#4c4f69", + "token": "meta.function.call.rust variable.other.rust" + }, + { + "foreground": "#d20f39", + "token": "variable.language.self.rust" + }, + { + "foreground": "#ea76cb", + "token": "variable.other.metavariable.name.rust" + }, + { + "foreground": "#ea76cb", + "token": "meta.macro.metavariable.rust keyword.operator.macro.dollar.rust" + }, + { + "foreground": "#ea76cb", + "fontStyle": "italic", + "token": "comment.line.shebang" + }, + { + "foreground": "#ea76cb", + "fontStyle": "italic", + "token": "comment.line.shebang punctuation.definition.comment" + }, + { + "foreground": "#ea76cb", + "fontStyle": "italic", + "token": "comment.line.shebang" + }, + { + "foreground": "#ea76cb", + "fontStyle": "italic", + "token": "punctuation.definition.comment.shebang.shell" + }, + { + "foreground": "#ea76cb", + "fontStyle": "italic", + "token": "meta.shebang.shell" + }, + { + "foreground": "#179299", + "fontStyle": "italic", + "token": "comment.line.shebang constant.language" + }, + { + "foreground": "#d20f39", + "token": "meta.function-call.arguments.shell punctuation.definition.variable.shell" + }, + { + "foreground": "#d20f39", + "token": "meta.function-call.arguments.shell punctuation.section.interpolation" + }, + { + "foreground": "#d20f39", + "token": "meta.function-call.arguments.shell punctuation.definition.variable.shell" + }, + { + "foreground": "#d20f39", + "token": "meta.function-call.arguments.shell punctuation.section.interpolation" + }, + { + "foreground": "#fe640b", + "fontStyle": "italic", + "token": "meta.string meta.interpolation.parameter.shell variable.other.readwrite" + }, + { + "foreground": "#179299", + "token": "source.shell punctuation.section.interpolation" + }, + { + "foreground": "#179299", + "token": "punctuation.definition.evaluation.backticks.shell" + }, + { + "foreground": "#8839ef", + "token": "entity.name.tag.heredoc.shell" + }, + { + "foreground": "#4c4f69", + "token": "string.quoted.double.shell variable.other.normal.shell" + } + ], + "encodedTokensColors": [] +} \ No newline at end of file diff --git a/src/components/editor/utils/mocha.json b/src/components/editor/utils/mocha.json new file mode 100644 index 0000000..688e30d --- /dev/null +++ b/src/components/editor/utils/mocha.json @@ -0,0 +1,2128 @@ +{ + "inherit": false, + "base": "vs-dark", + "colors": { + "focusBorder": "#cba6f7", + "foreground": "#cdd6f4", + "disabledForeground": "#a6adc8", + "widget.shadow": "#18182580", + "selection.background": "#cba6f766", + "descriptionForeground": "#cdd6f4", + "errorForeground": "#f38ba8", + "icon.foreground": "#cba6f7", + "sash.hoverBorder": "#cba6f7", + "window.activeBorder": "#00000000", + "window.inactiveBorder": "#00000000", + "textBlockQuote.background": "#181825", + "textBlockQuote.border": "#11111b", + "textCodeBlock.background": "#1e1e2e", + "textLink.activeForeground": "#89dceb", + "textLink.foreground": "#89b4fa", + "textPreformat.foreground": "#cdd6f4", + "textSeparator.foreground": "#cba6f7", + "activityBar.background": "#11111b", + "activityBar.foreground": "#cba6f7", + "activityBar.dropBorder": "#cba6f733", + "activityBar.inactiveForeground": "#6c7086", + "activityBar.border": "#00000000", + "activityBarBadge.background": "#cba6f7", + "activityBarBadge.foreground": "#11111b", + "activityBar.activeBorder": "#00000000", + "activityBar.activeBackground": "#00000000", + "activityBar.activeFocusBorder": "#00000000", + "activityBarTop.foreground": "#cba6f7", + "activityBarTop.activeBorder": "#00000000", + "activityBarTop.inactiveForeground": "#6c7086", + "activityBarTop.dropBorder": "#cba6f733", + "badge.background": "#45475a", + "badge.foreground": "#cdd6f4", + "breadcrumb.activeSelectionForeground": "#cba6f7", + "breadcrumb.background": "#1e1e2e", + "breadcrumb.focusForeground": "#cba6f7", + "breadcrumb.foreground": "#cdd6f4cc", + "breadcrumbPicker.background": "#181825", + "button.background": "#cba6f7", + "button.foreground": "#11111b", + "button.border": "#00000000", + "button.separator": "#00000000", + "button.hoverBackground": "#dec7fa", + "button.secondaryForeground": "#cdd6f4", + "button.secondaryBackground": "#585b70", + "button.secondaryHoverBackground": "#686b84", + "checkbox.background": "#45475a", + "checkbox.border": "#00000000", + "checkbox.foreground": "#cba6f7", + "dropdown.background": "#181825", + "dropdown.listBackground": "#585b70", + "dropdown.border": "#cba6f7", + "dropdown.foreground": "#cdd6f4", + "debugToolBar.background": "#11111b", + "debugToolBar.border": "#00000000", + "debugExceptionWidget.background": "#11111b", + "debugExceptionWidget.border": "#cba6f7", + "debugTokenExpression.number": "#fab387", + "debugTokenExpression.boolean": "#cba6f7", + "debugTokenExpression.string": "#a6e3a1", + "debugTokenExpression.error": "#f38ba8", + "debugIcon.breakpointForeground": "#f38ba8", + "debugIcon.breakpointDisabledForeground": "#f38ba899", + "debugIcon.breakpointUnverifiedForeground": "#a6738c", + "debugIcon.breakpointCurrentStackframeForeground": "#585b70", + "debugIcon.breakpointStackframeForeground": "#585b70", + "debugIcon.startForeground": "#a6e3a1", + "debugIcon.pauseForeground": "#89b4fa", + "debugIcon.stopForeground": "#f38ba8", + "debugIcon.disconnectForeground": "#585b70", + "debugIcon.restartForeground": "#94e2d5", + "debugIcon.stepOverForeground": "#cba6f7", + "debugIcon.stepIntoForeground": "#cdd6f4", + "debugIcon.stepOutForeground": "#cdd6f4", + "debugIcon.continueForeground": "#a6e3a1", + "debugIcon.stepBackForeground": "#585b70", + "debugConsole.infoForeground": "#89b4fa", + "debugConsole.warningForeground": "#fab387", + "debugConsole.errorForeground": "#f38ba8", + "debugConsole.sourceForeground": "#f5e0dc", + "debugConsoleInputIcon.foreground": "#cdd6f4", + "diffEditor.border": "#585b70", + "diffEditor.insertedTextBackground": "#a6e3a11a", + "diffEditor.removedTextBackground": "#f38ba81a", + "diffEditor.insertedLineBackground": "#a6e3a126", + "diffEditor.removedLineBackground": "#f38ba826", + "diffEditor.diagonalFill": "#585b7099", + "diffEditorOverview.insertedForeground": "#a6e3a1cc", + "diffEditorOverview.removedForeground": "#f38ba8cc", + "editor.background": "#1e1e2e", + "editor.findMatchBackground": "#5e3f53", + "editor.findMatchBorder": "#f38ba833", + "editor.findMatchHighlightBackground": "#3e5767", + "editor.findMatchHighlightBorder": "#89dceb33", + "editor.findRangeHighlightBackground": "#3e5767", + "editor.findRangeHighlightBorder": "#89dceb33", + "editor.foldBackground": "#89dceb40", + "editor.foreground": "#cdd6f4", + "editor.hoverHighlightBackground": "#89dceb40", + "editor.lineHighlightBackground": "#cdd6f412", + "editor.lineHighlightBorder": "#00000000", + "editor.rangeHighlightBackground": "#89dceb40", + "editor.rangeHighlightBorder": "#00000000", + "editor.selectionBackground": "#9399b240", + "editor.selectionHighlightBackground": "#9399b233", + "editor.selectionHighlightBorder": "#9399b233", + "editor.wordHighlightBackground": "#9399b233", + "editor.wordHighlightStrongBackground": "#89b4fa33", + "editorBracketMatch.background": "#9399b21a", + "editorBracketMatch.border": "#9399b2", + "editorCodeLens.foreground": "#7f849c", + "editorCursor.background": "#1e1e2e", + "editorCursor.foreground": "#f5e0dc", + "editorGroup.border": "#585b70", + "editorGroup.dropBackground": "#cba6f733", + "editorGroup.emptyBackground": "#1e1e2e", + "editorGroupHeader.tabsBackground": "#11111b", + "editorGutter.addedBackground": "#a6e3a1", + "editorGutter.background": "#1e1e2e", + "editorGutter.commentRangeForeground": "#313244", + "editorGutter.commentGlyphForeground": "#cba6f7", + "editorGutter.deletedBackground": "#f38ba8", + "editorGutter.foldingControlForeground": "#9399b2", + "editorGutter.modifiedBackground": "#f9e2af", + "editorHoverWidget.background": "#181825", + "editorHoverWidget.border": "#585b70", + "editorHoverWidget.foreground": "#cdd6f4", + "editorIndentGuide.activeBackground": "#585b70", + "editorIndentGuide.background": "#45475a", + "editorInlayHint.foreground": "#585b70", + "editorInlayHint.background": "#181825bf", + "editorInlayHint.typeForeground": "#bac2de", + "editorInlayHint.typeBackground": "#181825bf", + "editorInlayHint.parameterForeground": "#a6adc8", + "editorInlayHint.parameterBackground": "#181825bf", + "editorLineNumber.activeForeground": "#cba6f7", + "editorLineNumber.foreground": "#7f849c", + "editorLink.activeForeground": "#cba6f7", + "editorMarkerNavigation.background": "#181825", + "editorMarkerNavigationError.background": "#f38ba8", + "editorMarkerNavigationInfo.background": "#89b4fa", + "editorMarkerNavigationWarning.background": "#fab387", + "editorOverviewRuler.background": "#181825", + "editorOverviewRuler.border": "#cdd6f412", + "editorOverviewRuler.modifiedForeground": "#f9e2af", + "editorRuler.foreground": "#585b70", + "editor.stackFrameHighlightBackground": "#f9e2af26", + "editor.focusedStackFrameHighlightBackground": "#a6e3a126", + "editorStickyScrollHover.background": "#313244", + "editorSuggestWidget.background": "#181825", + "editorSuggestWidget.border": "#585b70", + "editorSuggestWidget.foreground": "#cdd6f4", + "editorSuggestWidget.highlightForeground": "#cba6f7", + "editorSuggestWidget.selectedBackground": "#313244", + "editorWhitespace.foreground": "#9399b266", + "editorWidget.background": "#181825", + "editorWidget.foreground": "#cdd6f4", + "editorWidget.resizeBorder": "#585b70", + "editorLightBulb.foreground": "#f9e2af", + "editorError.foreground": "#f38ba8", + "editorError.border": "#00000000", + "editorError.background": "#00000000", + "editorWarning.foreground": "#fab387", + "editorWarning.border": "#00000000", + "editorWarning.background": "#00000000", + "editorInfo.foreground": "#89b4fa", + "editorInfo.border": "#00000000", + "editorInfo.background": "#00000000", + "problemsErrorIcon.foreground": "#f38ba8", + "problemsInfoIcon.foreground": "#89b4fa", + "problemsWarningIcon.foreground": "#fab387", + "extensionButton.prominentForeground": "#11111b", + "extensionButton.prominentBackground": "#cba6f7", + "extensionButton.separator": "#1e1e2e", + "extensionButton.prominentHoverBackground": "#dec7fa", + "extensionBadge.remoteBackground": "#89b4fa", + "extensionBadge.remoteForeground": "#11111b", + "extensionIcon.starForeground": "#f9e2af", + "extensionIcon.verifiedForeground": "#a6e3a1", + "extensionIcon.preReleaseForeground": "#585b70", + "extensionIcon.sponsorForeground": "#f5c2e7", + "gitDecoration.addedResourceForeground": "#a6e3a1", + "gitDecoration.conflictingResourceForeground": "#cba6f7", + "gitDecoration.deletedResourceForeground": "#f38ba8", + "gitDecoration.ignoredResourceForeground": "#6c7086", + "gitDecoration.modifiedResourceForeground": "#f9e2af", + "gitDecoration.stageDeletedResourceForeground": "#f38ba8", + "gitDecoration.stageModifiedResourceForeground": "#f9e2af", + "gitDecoration.submoduleResourceForeground": "#89b4fa", + "gitDecoration.untrackedResourceForeground": "#a6e3a1", + "input.background": "#313244", + "input.border": "#00000000", + "input.foreground": "#cdd6f4", + "input.placeholderForeground": "#cdd6f473", + "inputOption.activeBackground": "#585b70", + "inputOption.activeBorder": "#cba6f7", + "inputOption.activeForeground": "#cdd6f4", + "inputValidation.errorBackground": "#f38ba8", + "inputValidation.errorBorder": "#11111b33", + "inputValidation.errorForeground": "#11111b", + "inputValidation.infoBackground": "#89b4fa", + "inputValidation.infoBorder": "#11111b33", + "inputValidation.infoForeground": "#11111b", + "inputValidation.warningBackground": "#fab387", + "inputValidation.warningBorder": "#11111b33", + "inputValidation.warningForeground": "#11111b", + "list.activeSelectionBackground": "#313244", + "list.activeSelectionForeground": "#cdd6f4", + "list.dropBackground": "#cba6f733", + "list.focusBackground": "#313244", + "list.focusForeground": "#cdd6f4", + "list.focusOutline": "#00000000", + "list.highlightForeground": "#cba6f7", + "list.hoverBackground": "#31324480", + "list.hoverForeground": "#cdd6f4", + "list.inactiveSelectionBackground": "#313244", + "list.inactiveSelectionForeground": "#cdd6f4", + "list.warningForeground": "#fab387", + "listFilterWidget.background": "#45475a", + "listFilterWidget.noMatchesOutline": "#f38ba8", + "listFilterWidget.outline": "#00000000", + "tree.indentGuidesStroke": "#9399b2", + "tree.inactiveIndentGuidesStroke": "#45475a", + "menu.background": "#1e1e2e", + "menu.border": "#1e1e2e80", + "menu.foreground": "#cdd6f4", + "menu.selectionBackground": "#585b70", + "menu.selectionBorder": "#00000000", + "menu.selectionForeground": "#cdd6f4", + "menu.separatorBackground": "#585b70", + "menubar.selectionBackground": "#45475a", + "menubar.selectionForeground": "#cdd6f4", + "merge.commonContentBackground": "#45475a", + "merge.commonHeaderBackground": "#585b70", + "merge.currentContentBackground": "#a6e3a133", + "merge.currentHeaderBackground": "#a6e3a166", + "merge.incomingContentBackground": "#89b4fa33", + "merge.incomingHeaderBackground": "#89b4fa66", + "minimap.background": "#18182580", + "minimap.findMatchHighlight": "#89dceb4d", + "minimap.selectionHighlight": "#585b70bf", + "minimap.selectionOccurrenceHighlight": "#585b70bf", + "minimap.warningHighlight": "#fab387bf", + "minimap.errorHighlight": "#f38ba8bf", + "minimapSlider.background": "#cba6f733", + "minimapSlider.hoverBackground": "#cba6f766", + "minimapSlider.activeBackground": "#cba6f799", + "minimapGutter.addedBackground": "#a6e3a1bf", + "minimapGutter.deletedBackground": "#f38ba8bf", + "minimapGutter.modifiedBackground": "#f9e2afbf", + "notificationCenter.border": "#cba6f7", + "notificationCenterHeader.foreground": "#cdd6f4", + "notificationCenterHeader.background": "#181825", + "notificationToast.border": "#cba6f7", + "notifications.foreground": "#cdd6f4", + "notifications.background": "#181825", + "notifications.border": "#cba6f7", + "notificationLink.foreground": "#89b4fa", + "notificationsErrorIcon.foreground": "#f38ba8", + "notificationsWarningIcon.foreground": "#fab387", + "notificationsInfoIcon.foreground": "#89b4fa", + "panel.background": "#1e1e2e", + "panel.border": "#585b70", + "panelSection.border": "#585b70", + "panelSection.dropBackground": "#cba6f733", + "panelTitle.activeBorder": "#cba6f7", + "panelTitle.activeForeground": "#cdd6f4", + "panelTitle.inactiveForeground": "#a6adc8", + "peekView.border": "#cba6f7", + "peekViewEditor.background": "#181825", + "peekViewEditorGutter.background": "#181825", + "peekViewEditor.matchHighlightBackground": "#89dceb4d", + "peekViewEditor.matchHighlightBorder": "#00000000", + "peekViewResult.background": "#181825", + "peekViewResult.fileForeground": "#cdd6f4", + "peekViewResult.lineForeground": "#cdd6f4", + "peekViewResult.matchHighlightBackground": "#89dceb4d", + "peekViewResult.selectionBackground": "#313244", + "peekViewResult.selectionForeground": "#cdd6f4", + "peekViewTitle.background": "#1e1e2e", + "peekViewTitleDescription.foreground": "#bac2deb3", + "peekViewTitleLabel.foreground": "#cdd6f4", + "pickerGroup.border": "#cba6f7", + "pickerGroup.foreground": "#cba6f7", + "progressBar.background": "#cba6f7", + "scrollbar.shadow": "#11111b", + "scrollbarSlider.activeBackground": "#31324466", + "scrollbarSlider.background": "#585b7080", + "scrollbarSlider.hoverBackground": "#6c7086", + "settings.focusedRowBackground": "#585b7033", + "settings.headerForeground": "#cdd6f4", + "settings.modifiedItemIndicator": "#cba6f7", + "settings.dropdownBackground": "#45475a", + "settings.dropdownListBorder": "#00000000", + "settings.textInputBackground": "#45475a", + "settings.textInputBorder": "#00000000", + "settings.numberInputBackground": "#45475a", + "settings.numberInputBorder": "#00000000", + "sideBar.background": "#181825", + "sideBar.dropBackground": "#cba6f733", + "sideBar.foreground": "#cdd6f4", + "sideBar.border": "#00000000", + "sideBarSectionHeader.background": "#181825", + "sideBarSectionHeader.foreground": "#cdd6f4", + "sideBarTitle.foreground": "#cba6f7", + "banner.background": "#45475a", + "banner.foreground": "#cdd6f4", + "banner.iconForeground": "#cdd6f4", + "statusBar.background": "#11111b", + "statusBar.foreground": "#cdd6f4", + "statusBar.border": "#00000000", + "statusBar.noFolderBackground": "#11111b", + "statusBar.noFolderForeground": "#cdd6f4", + "statusBar.noFolderBorder": "#00000000", + "statusBar.debuggingBackground": "#fab387", + "statusBar.debuggingForeground": "#11111b", + "statusBar.debuggingBorder": "#00000000", + "statusBarItem.remoteBackground": "#89b4fa", + "statusBarItem.remoteForeground": "#11111b", + "statusBarItem.activeBackground": "#585b7066", + "statusBarItem.hoverBackground": "#585b7033", + "statusBarItem.prominentForeground": "#cba6f7", + "statusBarItem.prominentBackground": "#00000000", + "statusBarItem.prominentHoverBackground": "#585b7033", + "statusBarItem.errorForeground": "#f38ba8", + "statusBarItem.errorBackground": "#00000000", + "statusBarItem.warningForeground": "#fab387", + "statusBarItem.warningBackground": "#00000000", + "commandCenter.foreground": "#bac2de", + "commandCenter.inactiveForeground": "#bac2de", + "commandCenter.activeForeground": "#cba6f7", + "commandCenter.background": "#181825", + "commandCenter.activeBackground": "#585b7033", + "commandCenter.border": "#00000000", + "commandCenter.inactiveBorder": "#00000000", + "commandCenter.activeBorder": "#cba6f7", + "tab.activeBackground": "#1e1e2e", + "tab.activeBorder": "#00000000", + "tab.activeBorderTop": "#cba6f7", + "tab.activeForeground": "#cba6f7", + "tab.activeModifiedBorder": "#f9e2af", + "tab.border": "#181825", + "tab.hoverBackground": "#28283d", + "tab.hoverBorder": "#00000000", + "tab.hoverForeground": "#cba6f7", + "tab.inactiveBackground": "#181825", + "tab.inactiveForeground": "#6c7086", + "tab.inactiveModifiedBorder": "#f9e2af4d", + "tab.lastPinnedBorder": "#cba6f7", + "tab.unfocusedActiveBackground": "#181825", + "tab.unfocusedActiveBorder": "#00000000", + "tab.unfocusedActiveBorderTop": "#cba6f74d", + "tab.unfocusedInactiveBackground": "#0e0e16", + "terminal.foreground": "#cdd6f4", + "terminal.ansiBlack": "#45475a", + "terminal.ansiRed": "#f38ba8", + "terminal.ansiGreen": "#a6e3a1", + "terminal.ansiYellow": "#f9e2af", + "terminal.ansiBlue": "#89b4fa", + "terminal.ansiMagenta": "#f5c2e7", + "terminal.ansiCyan": "#94e2d5", + "terminal.ansiWhite": "#a6adc8", + "terminal.ansiBrightBlack": "#585b70", + "terminal.ansiBrightRed": "#f37799", + "terminal.ansiBrightGreen": "#89d88b", + "terminal.ansiBrightYellow": "#ebd391", + "terminal.ansiBrightBlue": "#74a8fc", + "terminal.ansiBrightMagenta": "#f2aede", + "terminal.ansiBrightCyan": "#6bd7ca", + "terminal.ansiBrightWhite": "#bac2de", + "terminal.selectionBackground": "#585b70", + "terminal.inactiveSelectionBackground": "#585b7080", + "terminalCursor.background": "#1e1e2e", + "terminalCursor.foreground": "#f5e0dc", + "terminal.border": "#585b70", + "terminal.dropBackground": "#cba6f733", + "terminal.tab.activeBorder": "#cba6f7", + "terminalCommandDecoration.defaultBackground": "#585b70", + "terminalCommandDecoration.successBackground": "#a6e3a1", + "terminalCommandDecoration.errorBackground": "#f38ba8", + "titleBar.activeBackground": "#11111b", + "titleBar.activeForeground": "#cdd6f4", + "titleBar.inactiveBackground": "#11111b", + "titleBar.inactiveForeground": "#cdd6f480", + "titleBar.border": "#00000000", + "welcomePage.tileBackground": "#181825", + "welcomePage.progress.background": "#11111b", + "welcomePage.progress.foreground": "#cba6f7", + "walkThrough.embeddedEditorBackground": "#1e1e2e4d", + "symbolIcon.textForeground": "#cdd6f4", + "symbolIcon.arrayForeground": "#fab387", + "symbolIcon.booleanForeground": "#cba6f7", + "symbolIcon.classForeground": "#f9e2af", + "symbolIcon.colorForeground": "#f5c2e7", + "symbolIcon.constantForeground": "#fab387", + "symbolIcon.constructorForeground": "#b4befe", + "symbolIcon.enumeratorForeground": "#f9e2af", + "symbolIcon.enumeratorMemberForeground": "#f9e2af", + "symbolIcon.eventForeground": "#f5c2e7", + "symbolIcon.fieldForeground": "#cdd6f4", + "symbolIcon.fileForeground": "#cba6f7", + "symbolIcon.folderForeground": "#cba6f7", + "symbolIcon.functionForeground": "#89b4fa", + "symbolIcon.interfaceForeground": "#f9e2af", + "symbolIcon.keyForeground": "#94e2d5", + "symbolIcon.keywordForeground": "#cba6f7", + "symbolIcon.methodForeground": "#89b4fa", + "symbolIcon.moduleForeground": "#cdd6f4", + "symbolIcon.namespaceForeground": "#f9e2af", + "symbolIcon.nullForeground": "#eba0ac", + "symbolIcon.numberForeground": "#fab387", + "symbolIcon.objectForeground": "#f9e2af", + "symbolIcon.operatorForeground": "#94e2d5", + "symbolIcon.packageForeground": "#f2cdcd", + "symbolIcon.propertyForeground": "#eba0ac", + "symbolIcon.referenceForeground": "#f9e2af", + "symbolIcon.snippetForeground": "#f2cdcd", + "symbolIcon.stringForeground": "#a6e3a1", + "symbolIcon.structForeground": "#94e2d5", + "symbolIcon.typeParameterForeground": "#eba0ac", + "symbolIcon.unitForeground": "#cdd6f4", + "symbolIcon.variableForeground": "#cdd6f4", + "charts.foreground": "#cdd6f4", + "charts.lines": "#bac2de", + "charts.red": "#f38ba8", + "charts.blue": "#89b4fa", + "charts.yellow": "#f9e2af", + "charts.orange": "#fab387", + "charts.green": "#a6e3a1", + "charts.purple": "#cba6f7", + "errorLens.errorBackground": "#f38ba826", + "errorLens.errorBackgroundLight": "#f38ba826", + "errorLens.errorForeground": "#f38ba8", + "errorLens.errorForegroundLight": "#f38ba8", + "errorLens.errorMessageBackground": "#f38ba826", + "errorLens.hintBackground": "#a6e3a126", + "errorLens.hintBackgroundLight": "#a6e3a126", + "errorLens.hintForeground": "#a6e3a1", + "errorLens.hintForegroundLight": "#a6e3a1", + "errorLens.hintMessageBackground": "#a6e3a126", + "errorLens.infoBackground": "#89b4fa26", + "errorLens.infoBackgroundLight": "#89b4fa26", + "errorLens.infoForeground": "#89b4fa", + "errorLens.infoForegroundLight": "#89b4fa", + "errorLens.infoMessageBackground": "#89b4fa26", + "errorLens.statusBarErrorForeground": "#f38ba8", + "errorLens.statusBarHintForeground": "#a6e3a1", + "errorLens.statusBarIconErrorForeground": "#f38ba8", + "errorLens.statusBarIconWarningForeground": "#fab387", + "errorLens.statusBarInfoForeground": "#89b4fa", + "errorLens.statusBarWarningForeground": "#fab387", + "errorLens.warningBackground": "#fab38726", + "errorLens.warningBackgroundLight": "#fab38726", + "errorLens.warningForeground": "#fab387", + "errorLens.warningForegroundLight": "#fab387", + "errorLens.warningMessageBackground": "#fab38726", + "issues.closed": "#cba6f7", + "issues.newIssueDecoration": "#f5e0dc", + "issues.open": "#a6e3a1", + "pullRequests.closed": "#f38ba8", + "pullRequests.draft": "#9399b2", + "pullRequests.merged": "#cba6f7", + "pullRequests.notification": "#cdd6f4", + "pullRequests.open": "#a6e3a1", + "gitlens.gutterBackgroundColor": "#3132444d", + "gitlens.gutterForegroundColor": "#cdd6f4", + "gitlens.gutterUncommittedForegroundColor": "#cba6f7", + "gitlens.trailingLineBackgroundColor": "#00000000", + "gitlens.trailingLineForegroundColor": "#cdd6f44d", + "gitlens.lineHighlightBackgroundColor": "#cba6f726", + "gitlens.lineHighlightOverviewRulerColor": "#cba6f7cc", + "gitlens.openAutolinkedIssueIconColor": "#a6e3a1", + "gitlens.closedAutolinkedIssueIconColor": "#cba6f7", + "gitlens.closedPullRequestIconColor": "#f38ba8", + "gitlens.openPullRequestIconColor": "#a6e3a1", + "gitlens.mergedPullRequestIconColor": "#cba6f7", + "gitlens.unpublishedChangesIconColor": "#a6e3a1", + "gitlens.unpublishedCommitIconColor": "#a6e3a1", + "gitlens.unpulledChangesIconColor": "#fab387", + "gitlens.decorations.branchAheadForegroundColor": "#a6e3a1", + "gitlens.decorations.branchBehindForegroundColor": "#fab387", + "gitlens.decorations.branchDivergedForegroundColor": "#f9e2af", + "gitlens.decorations.branchUnpublishedForegroundColor": "#a6e3a1", + "gitlens.decorations.branchMissingUpstreamForegroundColor": "#fab387", + "gitlens.decorations.statusMergingOrRebasingConflictForegroundColor": "#eba0ac", + "gitlens.decorations.statusMergingOrRebasingForegroundColor": "#f9e2af", + "gitlens.decorations.workspaceRepoMissingForegroundColor": "#a6adc8", + "gitlens.decorations.workspaceCurrentForegroundColor": "#cba6f7", + "gitlens.decorations.workspaceRepoOpenForegroundColor": "#cba6f7", + "gitlens.decorations.worktreeHasUncommittedChangesForegroundColor": "#fab387", + "gitlens.decorations.worktreeMissingForegroundColor": "#eba0ac", + "gitlens.graphLane1Color": "#cba6f7", + "gitlens.graphLane2Color": "#f9e2af", + "gitlens.graphLane3Color": "#89b4fa", + "gitlens.graphLane4Color": "#f2cdcd", + "gitlens.graphLane5Color": "#a6e3a1", + "gitlens.graphLane6Color": "#b4befe", + "gitlens.graphLane7Color": "#f5e0dc", + "gitlens.graphLane8Color": "#f38ba8", + "gitlens.graphLane9Color": "#94e2d5", + "gitlens.graphLane10Color": "#f5c2e7", + "gitlens.graphChangesColumnAddedColor": "#a6e3a1", + "gitlens.graphChangesColumnDeletedColor": "#f38ba8", + "gitlens.graphMinimapMarkerHeadColor": "#a6e3a1", + "gitlens.graphScrollMarkerHeadColor": "#a6e3a1", + "gitlens.graphMinimapMarkerUpstreamColor": "#93dd8d", + "gitlens.graphScrollMarkerUpstreamColor": "#93dd8d", + "gitlens.graphMinimapMarkerHighlightsColor": "#f9e2af", + "gitlens.graphScrollMarkerHighlightsColor": "#f9e2af", + "gitlens.graphMinimapMarkerLocalBranchesColor": "#89b4fa", + "gitlens.graphScrollMarkerLocalBranchesColor": "#89b4fa", + "gitlens.graphMinimapMarkerRemoteBranchesColor": "#71a4f9", + "gitlens.graphScrollMarkerRemoteBranchesColor": "#71a4f9", + "gitlens.graphMinimapMarkerStashesColor": "#cba6f7", + "gitlens.graphScrollMarkerStashesColor": "#cba6f7", + "gitlens.graphMinimapMarkerTagsColor": "#f2cdcd", + "gitlens.graphScrollMarkerTagsColor": "#f2cdcd", + "editorBracketHighlight.foreground1": "#f38ba8", + "editorBracketHighlight.foreground2": "#fab387", + "editorBracketHighlight.foreground3": "#f9e2af", + "editorBracketHighlight.foreground4": "#a6e3a1", + "editorBracketHighlight.foreground5": "#74c7ec", + "editorBracketHighlight.foreground6": "#cba6f7", + "editorBracketHighlight.unexpectedBracket.foreground": "#eba0ac", + "button.secondaryBorder": "#cba6f7", + "table.headerBackground": "#313244", + "table.headerForeground": "#cdd6f4", + "list.focusAndSelectionBackground": "#45475a" + }, + "rules": [ + { + "foreground": "#cdd6f4", + "token": "text" + }, + { + "foreground": "#cdd6f4", + "token": "source" + }, + { + "foreground": "#cdd6f4", + "token": "variable.other.readwrite" + }, + { + "foreground": "#cdd6f4", + "token": "punctuation.definition.variable" + }, + { + "foreground": "#9399b2", + "fontStyle": "", + "token": "punctuation" + }, + { + "foreground": "#6c7086", + "fontStyle": "italic", + "token": "comment" + }, + { + "foreground": "#6c7086", + "fontStyle": "italic", + "token": "punctuation.definition.comment" + }, + { + "foreground": "#a6e3a1", + "token": "string" + }, + { + "foreground": "#a6e3a1", + "token": "punctuation.definition.string" + }, + { + "foreground": "#f5c2e7", + "token": "constant.character.escape" + }, + { + "foreground": "#fab387", + "token": "constant.numeric" + }, + { + "foreground": "#fab387", + "token": "variable.other.constant" + }, + { + "foreground": "#fab387", + "token": "entity.name.constant" + }, + { + "foreground": "#fab387", + "token": "constant.language.boolean" + }, + { + "foreground": "#fab387", + "token": "constant.language.false" + }, + { + "foreground": "#fab387", + "token": "constant.language.true" + }, + { + "foreground": "#fab387", + "token": "keyword.other.unit.user-defined" + }, + { + "foreground": "#fab387", + "token": "keyword.other.unit.suffix.floating-point" + }, + { + "foreground": "#cba6f7", + "fontStyle": "", + "token": "keyword" + }, + { + "foreground": "#cba6f7", + "fontStyle": "", + "token": "keyword.operator.word" + }, + { + "foreground": "#cba6f7", + "fontStyle": "", + "token": "keyword.operator.new" + }, + { + "foreground": "#cba6f7", + "fontStyle": "", + "token": "variable.language.super" + }, + { + "foreground": "#cba6f7", + "fontStyle": "", + "token": "support.type.primitive" + }, + { + "foreground": "#cba6f7", + "fontStyle": "", + "token": "storage.type" + }, + { + "foreground": "#cba6f7", + "fontStyle": "", + "token": "storage.modifier" + }, + { + "foreground": "#cba6f7", + "fontStyle": "", + "token": "punctuation.definition.keyword" + }, + { + "foreground": "#cba6f7", + "token": "entity.name.tag.documentation" + }, + { + "foreground": "#94e2d5", + "token": "keyword.operator" + }, + { + "foreground": "#94e2d5", + "token": "punctuation.accessor" + }, + { + "foreground": "#94e2d5", + "token": "punctuation.definition.generic" + }, + { + "foreground": "#94e2d5", + "token": "meta.function.closure punctuation.section.parameters" + }, + { + "foreground": "#94e2d5", + "token": "punctuation.definition.tag" + }, + { + "foreground": "#94e2d5", + "token": "punctuation.separator.key-value" + }, + { + "foreground": "#89b4fa", + "fontStyle": "italic", + "token": "entity.name.function" + }, + { + "foreground": "#89b4fa", + "fontStyle": "italic", + "token": "meta.function-call.method" + }, + { + "foreground": "#89b4fa", + "fontStyle": "italic", + "token": "support.function" + }, + { + "foreground": "#89b4fa", + "fontStyle": "italic", + "token": "support.function.misc" + }, + { + "foreground": "#89b4fa", + "fontStyle": "italic", + "token": "variable.function" + }, + { + "foreground": "#f9e2af", + "fontStyle": "italic", + "token": "entity.name.class" + }, + { + "foreground": "#f9e2af", + "fontStyle": "italic", + "token": "entity.other.inherited-class" + }, + { + "foreground": "#f9e2af", + "fontStyle": "italic", + "token": "support.class" + }, + { + "foreground": "#f9e2af", + "fontStyle": "italic", + "token": "meta.function-call.constructor" + }, + { + "foreground": "#f9e2af", + "fontStyle": "italic", + "token": "entity.name.struct" + }, + { + "foreground": "#f9e2af", + "fontStyle": "italic", + "token": "entity.name.enum" + }, + { + "foreground": "#94e2d5", + "token": "meta.enum variable.other.readwrite" + }, + { + "foreground": "#94e2d5", + "token": "variable.other.enummember" + }, + { + "foreground": "#94e2d5", + "token": "meta.property.object" + }, + { + "foreground": "#f9e2af", + "fontStyle": "italic", + "token": "meta.type" + }, + { + "foreground": "#f9e2af", + "fontStyle": "italic", + "token": "meta.type-alias" + }, + { + "foreground": "#f9e2af", + "fontStyle": "italic", + "token": "support.type" + }, + { + "foreground": "#f9e2af", + "fontStyle": "italic", + "token": "entity.name.type" + }, + { + "foreground": "#fab387", + "token": "meta.annotation variable.function" + }, + { + "foreground": "#fab387", + "token": "meta.annotation variable.annotation.function" + }, + { + "foreground": "#fab387", + "token": "meta.annotation punctuation.definition.annotation" + }, + { + "foreground": "#fab387", + "token": "meta.decorator" + }, + { + "foreground": "#fab387", + "token": "punctuation.decorator" + }, + { + "foreground": "#eba0ac", + "fontStyle": "italic", + "token": "variable.parameter" + }, + { + "foreground": "#eba0ac", + "fontStyle": "italic", + "token": "meta.function.parameters" + }, + { + "foreground": "#f38ba8", + "token": "constant.language" + }, + { + "foreground": "#f38ba8", + "token": "support.function.builtin" + }, + { + "foreground": "#f38ba8", + "token": "entity.other.attribute-name.documentation" + }, + { + "foreground": "#f9e2af", + "token": "keyword.control.directive" + }, + { + "foreground": "#f9e2af", + "token": "punctuation.definition.directive" + }, + { + "foreground": "#89dceb", + "token": "punctuation.definition.typeparameters" + }, + { + "foreground": "#f9e2af", + "token": "entity.name.namespace" + }, + { + "foreground": "#89b4fa", + "fontStyle": "", + "token": "support.type.property-name.css" + }, + { + "foreground": "#f38ba8", + "token": "variable.language.this" + }, + { + "foreground": "#f38ba8", + "token": "variable.language.this punctuation.definition.variable" + }, + { + "foreground": "#cdd6f4", + "token": "variable.object.property" + }, + { + "foreground": "#cdd6f4", + "token": "string.template variable" + }, + { + "foreground": "#cdd6f4", + "token": "string variable" + }, + { + "fontStyle": "bold", + "token": "keyword.operator.new" + }, + { + "foreground": "#cba6f7", + "token": "storage.modifier.specifier.extern.cpp" + }, + { + "foreground": "#f9e2af", + "token": "entity.name.scope-resolution.template.call.cpp" + }, + { + "foreground": "#f9e2af", + "token": "entity.name.scope-resolution.parameter.cpp" + }, + { + "foreground": "#f9e2af", + "token": "entity.name.scope-resolution.cpp" + }, + { + "foreground": "#f9e2af", + "token": "entity.name.scope-resolution.function.definition.cpp" + }, + { + "fontStyle": "", + "token": "storage.type.class.doxygen" + }, + { + "foreground": "#94e2d5", + "token": "storage.modifier.reference.cpp" + }, + { + "foreground": "#cdd6f4", + "token": "meta.interpolation.cs" + }, + { + "foreground": "#cdd6f4", + "token": "comment.block.documentation.cs" + }, + { + "foreground": "#f9e2af", + "token": "source.css entity.other.attribute-name.class.css" + }, + { + "foreground": "#f9e2af", + "token": "entity.other.attribute-name.parent-selector.css punctuation.definition.entity.css" + }, + { + "foreground": "#94e2d5", + "token": "punctuation.separator.operator.css" + }, + { + "foreground": "#94e2d5", + "token": "source.css entity.other.attribute-name.pseudo-class" + }, + { + "foreground": "#fab387", + "token": "source.css constant.other.unicode-range" + }, + { + "foreground": "#a6e3a1", + "fontStyle": "", + "token": "source.css variable.parameter.url" + }, + { + "foreground": "#89dceb", + "token": "support.type.vendored.property-name" + }, + { + "foreground": "#eba0ac", + "token": "source.css meta.property-value variable" + }, + { + "foreground": "#eba0ac", + "token": "source.css meta.property-value variable.other.less" + }, + { + "foreground": "#eba0ac", + "token": "source.css meta.property-value variable.other.less punctuation.definition.variable.less" + }, + { + "foreground": "#eba0ac", + "token": "meta.definition.variable.scss" + }, + { + "foreground": "#89b4fa", + "token": "source.css meta.property-list variable" + }, + { + "foreground": "#89b4fa", + "token": "meta.property-list variable.other.less" + }, + { + "foreground": "#89b4fa", + "token": "meta.property-list variable.other.less punctuation.definition.variable.less" + }, + { + "foreground": "#fab387", + "token": "keyword.other.unit.percentage.css" + }, + { + "foreground": "#a6e3a1", + "token": "source.css meta.attribute-selector" + }, + { + "foreground": "#89b4fa", + "fontStyle": "", + "token": "keyword.other.definition.ini" + }, + { + "foreground": "#89b4fa", + "fontStyle": "", + "token": "punctuation.support.type.property-name.json" + }, + { + "foreground": "#89b4fa", + "fontStyle": "", + "token": "support.type.property-name.json" + }, + { + "foreground": "#89b4fa", + "fontStyle": "", + "token": "punctuation.support.type.property-name.toml" + }, + { + "foreground": "#89b4fa", + "fontStyle": "", + "token": "support.type.property-name.toml" + }, + { + "foreground": "#89b4fa", + "fontStyle": "", + "token": "entity.name.tag.yaml" + }, + { + "foreground": "#89b4fa", + "fontStyle": "", + "token": "punctuation.support.type.property-name.yaml" + }, + { + "foreground": "#89b4fa", + "fontStyle": "", + "token": "support.type.property-name.yaml" + }, + { + "foreground": "#fab387", + "token": "constant.language.json" + }, + { + "foreground": "#fab387", + "token": "constant.language.yaml" + }, + { + "foreground": "#f9e2af", + "fontStyle": "", + "token": "entity.name.type.anchor.yaml" + }, + { + "foreground": "#f9e2af", + "fontStyle": "", + "token": "variable.other.alias.yaml" + }, + { + "foreground": "#f9e2af", + "token": "support.type.property-name.table" + }, + { + "foreground": "#f9e2af", + "token": "entity.name.section.group-title.ini" + }, + { + "foreground": "#f5c2e7", + "token": "constant.other.time.datetime.offset.toml" + }, + { + "foreground": "#f5c2e7", + "token": "punctuation.definition.anchor.yaml" + }, + { + "foreground": "#f5c2e7", + "token": "punctuation.definition.alias.yaml" + }, + { + "foreground": "#f5c2e7", + "token": "entity.other.document.begin.yaml" + }, + { + "foreground": "#fab387", + "token": "markup.changed.diff" + }, + { + "foreground": "#89b4fa", + "token": "meta.diff.header.from-file" + }, + { + "foreground": "#89b4fa", + "token": "meta.diff.header.to-file" + }, + { + "foreground": "#89b4fa", + "token": "punctuation.definition.from-file.diff" + }, + { + "foreground": "#89b4fa", + "token": "punctuation.definition.to-file.diff" + }, + { + "foreground": "#a6e3a1", + "token": "markup.inserted.diff" + }, + { + "foreground": "#f38ba8", + "token": "markup.deleted.diff" + }, + { + "foreground": "#89b4fa", + "token": "variable.other.env" + }, + { + "foreground": "#cdd6f4", + "token": "string.quoted variable.other.env" + }, + { + "foreground": "#89b4fa", + "token": "support.function.builtin.gdscript" + }, + { + "foreground": "#fab387", + "token": "constant.language.gdscript" + }, + { + "foreground": "#eba0ac", + "token": "comment meta.annotation.go" + }, + { + "foreground": "#fab387", + "token": "comment meta.annotation.parameters.go" + }, + { + "foreground": "#fab387", + "token": "constant.language.go" + }, + { + "foreground": "#cdd6f4", + "token": "variable.graphql" + }, + { + "foreground": "#f2cdcd", + "token": "string.unquoted.alias.graphql" + }, + { + "foreground": "#94e2d5", + "token": "constant.character.enum.graphql" + }, + { + "foreground": "#f2cdcd", + "token": "meta.objectvalues.graphql constant.object.key.graphql string.unquoted.graphql" + }, + { + "foreground": "#cba6f7", + "token": "keyword.other.doctype" + }, + { + "foreground": "#cba6f7", + "token": "meta.tag.sgml.doctype punctuation.definition.tag" + }, + { + "foreground": "#cba6f7", + "token": "meta.tag.metadata.doctype entity.name.tag" + }, + { + "foreground": "#cba6f7", + "token": "meta.tag.metadata.doctype punctuation.definition.tag" + }, + { + "foreground": "#89b4fa", + "fontStyle": "", + "token": "entity.name.tag" + }, + { + "foreground": "#f38ba8", + "token": "text.html constant.character.entity" + }, + { + "foreground": "#f38ba8", + "token": "text.html constant.character.entity punctuation" + }, + { + "foreground": "#f38ba8", + "token": "constant.character.entity.xml" + }, + { + "foreground": "#f38ba8", + "token": "constant.character.entity.xml punctuation" + }, + { + "foreground": "#f38ba8", + "token": "constant.character.entity.js.jsx" + }, + { + "foreground": "#f38ba8", + "token": "constant.charactger.entity.js.jsx punctuation" + }, + { + "foreground": "#f38ba8", + "token": "constant.character.entity.tsx" + }, + { + "foreground": "#f38ba8", + "token": "constant.character.entity.tsx punctuation" + }, + { + "foreground": "#f9e2af", + "token": "entity.other.attribute-name" + }, + { + "foreground": "#f5c2e7", + "fontStyle": "", + "token": "support.class.component" + }, + { + "foreground": "#f5c2e7", + "fontStyle": "", + "token": "support.class.component.jsx" + }, + { + "foreground": "#f5c2e7", + "fontStyle": "", + "token": "support.class.component.tsx" + }, + { + "foreground": "#f5c2e7", + "fontStyle": "", + "token": "support.class.component.vue" + }, + { + "foreground": "#fab387", + "token": "punctuation.definition.annotation" + }, + { + "foreground": "#fab387", + "token": "storage.type.annotation" + }, + { + "foreground": "#94e2d5", + "token": "constant.other.enum.java" + }, + { + "foreground": "#cdd6f4", + "token": "storage.modifier.import.java" + }, + { + "fontStyle": "", + "token": "comment.block.javadoc.java keyword.other.documentation.javadoc.java" + }, + { + "foreground": "#eba0ac", + "token": "meta.export variable.other.readwrite.js" + }, + { + "foreground": "#cdd6f4", + "token": "variable.other.constant.js" + }, + { + "foreground": "#cdd6f4", + "token": "variable.other.constant.ts" + }, + { + "foreground": "#cdd6f4", + "token": "variable.other.property.js" + }, + { + "foreground": "#cdd6f4", + "token": "variable.other.property.ts" + }, + { + "foreground": "#eba0ac", + "fontStyle": "", + "token": "variable.other.jsdoc" + }, + { + "foreground": "#eba0ac", + "fontStyle": "", + "token": "comment.block.documentation variable.other" + }, + { + "fontStyle": "", + "token": "storage.type.class.jsdoc" + }, + { + "foreground": "#cdd6f4", + "token": "support.type.object.console.js" + }, + { + "foreground": "#cba6f7", + "token": "support.constant.node" + }, + { + "foreground": "#cba6f7", + "token": "support.type.object.module.js" + }, + { + "foreground": "#cba6f7", + "token": "storage.modifier.implements" + }, + { + "foreground": "#cba6f7", + "token": "constant.language.null.js" + }, + { + "foreground": "#cba6f7", + "token": "constant.language.null.ts" + }, + { + "foreground": "#cba6f7", + "token": "constant.language.undefined.js" + }, + { + "foreground": "#cba6f7", + "token": "constant.language.undefined.ts" + }, + { + "foreground": "#cba6f7", + "token": "support.type.builtin.ts" + }, + { + "foreground": "#f9e2af", + "token": "variable.parameter.generic" + }, + { + "foreground": "#94e2d5", + "token": "keyword.declaration.function.arrow.js" + }, + { + "foreground": "#94e2d5", + "token": "storage.type.function.arrow.ts" + }, + { + "foreground": "#89b4fa", + "fontStyle": "italic", + "token": "punctuation.decorator.ts" + }, + { + "foreground": "#cba6f7", + "token": "keyword.operator.expression.in.js" + }, + { + "foreground": "#cba6f7", + "token": "keyword.operator.expression.in.ts" + }, + { + "foreground": "#cba6f7", + "token": "keyword.operator.expression.infer.ts" + }, + { + "foreground": "#cba6f7", + "token": "keyword.operator.expression.instanceof.js" + }, + { + "foreground": "#cba6f7", + "token": "keyword.operator.expression.instanceof.ts" + }, + { + "foreground": "#cba6f7", + "token": "keyword.operator.expression.is" + }, + { + "foreground": "#cba6f7", + "token": "keyword.operator.expression.keyof.ts" + }, + { + "foreground": "#cba6f7", + "token": "keyword.operator.expression.of.js" + }, + { + "foreground": "#cba6f7", + "token": "keyword.operator.expression.of.ts" + }, + { + "foreground": "#cba6f7", + "token": "keyword.operator.expression.typeof.ts" + }, + { + "foreground": "#94e2d5", + "fontStyle": "italic", + "token": "support.function.macro.julia" + }, + { + "foreground": "#fab387", + "token": "constant.language.julia" + }, + { + "foreground": "#eba0ac", + "token": "constant.other.symbol.julia" + }, + { + "foreground": "#94e2d5", + "token": "text.tex keyword.control.preamble" + }, + { + "foreground": "#89dceb", + "token": "text.tex support.function.be" + }, + { + "foreground": "#f2cdcd", + "token": "constant.other.general.math.tex" + }, + { + "foreground": "#f5c2e7", + "token": "variable.language.liquid" + }, + { + "foreground": "#cba6f7", + "fontStyle": "", + "token": "comment.line.double-dash.documentation.lua storage.type.annotation.lua" + }, + { + "foreground": "#cdd6f4", + "token": "comment.line.double-dash.documentation.lua entity.name.variable.lua" + }, + { + "foreground": "#cdd6f4", + "token": "comment.line.double-dash.documentation.lua variable.lua" + }, + { + "foreground": "#f38ba8", + "token": "heading.1.markdown punctuation.definition.heading.markdown" + }, + { + "foreground": "#f38ba8", + "token": "heading.1.markdown" + }, + { + "foreground": "#f38ba8", + "token": "heading.1.quarto punctuation.definition.heading.quarto" + }, + { + "foreground": "#f38ba8", + "token": "heading.1.quarto" + }, + { + "foreground": "#f38ba8", + "token": "markup.heading.atx.1.mdx" + }, + { + "foreground": "#f38ba8", + "token": "markup.heading.atx.1.mdx punctuation.definition.heading.mdx" + }, + { + "foreground": "#f38ba8", + "token": "markup.heading.setext.1.markdown" + }, + { + "foreground": "#f38ba8", + "token": "markup.heading.heading-0.asciidoc" + }, + { + "foreground": "#fab387", + "token": "heading.2.markdown punctuation.definition.heading.markdown" + }, + { + "foreground": "#fab387", + "token": "heading.2.markdown" + }, + { + "foreground": "#fab387", + "token": "heading.2.quarto punctuation.definition.heading.quarto" + }, + { + "foreground": "#fab387", + "token": "heading.2.quarto" + }, + { + "foreground": "#fab387", + "token": "markup.heading.atx.2.mdx" + }, + { + "foreground": "#fab387", + "token": "markup.heading.atx.2.mdx punctuation.definition.heading.mdx" + }, + { + "foreground": "#fab387", + "token": "markup.heading.setext.2.markdown" + }, + { + "foreground": "#fab387", + "token": "markup.heading.heading-1.asciidoc" + }, + { + "foreground": "#f9e2af", + "token": "heading.3.markdown punctuation.definition.heading.markdown" + }, + { + "foreground": "#f9e2af", + "token": "heading.3.markdown" + }, + { + "foreground": "#f9e2af", + "token": "heading.3.quarto punctuation.definition.heading.quarto" + }, + { + "foreground": "#f9e2af", + "token": "heading.3.quarto" + }, + { + "foreground": "#f9e2af", + "token": "markup.heading.atx.3.mdx" + }, + { + "foreground": "#f9e2af", + "token": "markup.heading.atx.3.mdx punctuation.definition.heading.mdx" + }, + { + "foreground": "#f9e2af", + "token": "markup.heading.heading-2.asciidoc" + }, + { + "foreground": "#a6e3a1", + "token": "heading.4.markdown punctuation.definition.heading.markdown" + }, + { + "foreground": "#a6e3a1", + "token": "heading.4.markdown" + }, + { + "foreground": "#a6e3a1", + "token": "heading.4.quarto punctuation.definition.heading.quarto" + }, + { + "foreground": "#a6e3a1", + "token": "heading.4.quarto" + }, + { + "foreground": "#a6e3a1", + "token": "markup.heading.atx.4.mdx" + }, + { + "foreground": "#a6e3a1", + "token": "markup.heading.atx.4.mdx punctuation.definition.heading.mdx" + }, + { + "foreground": "#a6e3a1", + "token": "markup.heading.heading-3.asciidoc" + }, + { + "foreground": "#89b4fa", + "token": "heading.5.markdown punctuation.definition.heading.markdown" + }, + { + "foreground": "#89b4fa", + "token": "heading.5.markdown" + }, + { + "foreground": "#89b4fa", + "token": "heading.5.quarto punctuation.definition.heading.quarto" + }, + { + "foreground": "#89b4fa", + "token": "heading.5.quarto" + }, + { + "foreground": "#89b4fa", + "token": "markup.heading.atx.5.mdx" + }, + { + "foreground": "#89b4fa", + "token": "markup.heading.atx.5.mdx punctuation.definition.heading.mdx" + }, + { + "foreground": "#89b4fa", + "token": "markup.heading.heading-4.asciidoc" + }, + { + "foreground": "#cba6f7", + "token": "heading.6.markdown punctuation.definition.heading.markdown" + }, + { + "foreground": "#cba6f7", + "token": "heading.6.markdown" + }, + { + "foreground": "#cba6f7", + "token": "heading.6.quarto punctuation.definition.heading.quarto" + }, + { + "foreground": "#cba6f7", + "token": "heading.6.quarto" + }, + { + "foreground": "#cba6f7", + "token": "markup.heading.atx.6.mdx" + }, + { + "foreground": "#cba6f7", + "token": "markup.heading.atx.6.mdx punctuation.definition.heading.mdx" + }, + { + "foreground": "#cba6f7", + "token": "markup.heading.heading-5.asciidoc" + }, + { + "foreground": "#f38ba8", + "fontStyle": "bold", + "token": "markup.bold" + }, + { + "foreground": "#f38ba8", + "fontStyle": "italic", + "token": "markup.italic" + }, + { + "foreground": "#a6adc8", + "fontStyle": "strikethrough", + "token": "markup.strikethrough" + }, + { + "foreground": "#89b4fa", + "token": "punctuation.definition.link" + }, + { + "foreground": "#89b4fa", + "token": "markup.underline.link" + }, + { + "foreground": "#b4befe", + "token": "text.html.markdown punctuation.definition.link.title" + }, + { + "foreground": "#b4befe", + "token": "text.html.quarto punctuation.definition.link.title" + }, + { + "foreground": "#b4befe", + "token": "string.other.link.title.markdown" + }, + { + "foreground": "#b4befe", + "token": "string.other.link.title.quarto" + }, + { + "foreground": "#b4befe", + "token": "markup.link" + }, + { + "foreground": "#b4befe", + "token": "punctuation.definition.constant.markdown" + }, + { + "foreground": "#b4befe", + "token": "punctuation.definition.constant.quarto" + }, + { + "foreground": "#b4befe", + "token": "constant.other.reference.link.markdown" + }, + { + "foreground": "#b4befe", + "token": "constant.other.reference.link.quarto" + }, + { + "foreground": "#b4befe", + "token": "markup.substitution.attribute-reference" + }, + { + "foreground": "#a6e3a1", + "token": "punctuation.definition.raw.markdown" + }, + { + "foreground": "#a6e3a1", + "token": "punctuation.definition.raw.quarto" + }, + { + "foreground": "#a6e3a1", + "token": "markup.inline.raw.string.markdown" + }, + { + "foreground": "#a6e3a1", + "token": "markup.inline.raw.string.quarto" + }, + { + "foreground": "#a6e3a1", + "token": "markup.raw.block.markdown" + }, + { + "foreground": "#a6e3a1", + "token": "markup.raw.block.quarto" + }, + { + "foreground": "#89dceb", + "token": "fenced_code.block.language" + }, + { + "foreground": "#9399b2", + "token": "markup.fenced_code.block punctuation.definition" + }, + { + "foreground": "#9399b2", + "token": "markup.raw support.asciidoc" + }, + { + "foreground": "#f5c2e7", + "token": "markup.quote" + }, + { + "foreground": "#f5c2e7", + "token": "punctuation.definition.quote.begin" + }, + { + "foreground": "#94e2d5", + "token": "meta.separator.markdown" + }, + { + "foreground": "#94e2d5", + "token": "punctuation.definition.list.begin.markdown" + }, + { + "foreground": "#94e2d5", + "token": "punctuation.definition.list.begin.quarto" + }, + { + "foreground": "#94e2d5", + "token": "markup.list.bullet" + }, + { + "fontStyle": "bold", + "token": "markup.heading.quarto" + }, + { + "foreground": "#89b4fa", + "token": "entity.other.attribute-name.multipart.nix" + }, + { + "foreground": "#89b4fa", + "token": "entity.other.attribute-name.single.nix" + }, + { + "foreground": "#cdd6f4", + "fontStyle": "", + "token": "variable.parameter.name.nix" + }, + { + "foreground": "#b4befe", + "fontStyle": "", + "token": "meta.embedded variable.parameter.name.nix" + }, + { + "foreground": "#f5c2e7", + "fontStyle": "", + "token": "string.unquoted.path.nix" + }, + { + "foreground": "#f9e2af", + "token": "support.attribute.builtin" + }, + { + "foreground": "#f9e2af", + "token": "meta.attribute.php" + }, + { + "foreground": "#eba0ac", + "token": "meta.function.parameters.php punctuation.definition.variable.php" + }, + { + "foreground": "#cba6f7", + "token": "constant.language.php" + }, + { + "foreground": "#89dceb", + "token": "text.html.php support.function" + }, + { + "fontStyle": "", + "token": "keyword.other.phpdoc.php" + }, + { + "foreground": "#cdd6f4", + "token": "support.variable.magic.python" + }, + { + "foreground": "#cdd6f4", + "token": "meta.function-call.arguments.python" + }, + { + "foreground": "#89dceb", + "fontStyle": "italic", + "token": "support.function.magic.python" + }, + { + "foreground": "#f38ba8", + "fontStyle": "italic", + "token": "variable.parameter.function.language.special.self.python" + }, + { + "foreground": "#f38ba8", + "fontStyle": "italic", + "token": "variable.language.special.self.python" + }, + { + "foreground": "#cba6f7", + "token": "keyword.control.flow.python" + }, + { + "foreground": "#cba6f7", + "token": "keyword.operator.logical.python" + }, + { + "foreground": "#cba6f7", + "token": "storage.type.function.python" + }, + { + "foreground": "#89dceb", + "token": "support.token.decorator.python" + }, + { + "foreground": "#89dceb", + "token": "meta.function.decorator.identifier.python" + }, + { + "foreground": "#89b4fa", + "token": "meta.function-call.python" + }, + { + "foreground": "#fab387", + "fontStyle": "italic", + "token": "entity.name.function.decorator.python" + }, + { + "foreground": "#fab387", + "fontStyle": "italic", + "token": "punctuation.definition.decorator.python" + }, + { + "foreground": "#f5c2e7", + "token": "constant.character.format.placeholder.other.python" + }, + { + "foreground": "#fab387", + "token": "support.type.exception.python" + }, + { + "foreground": "#fab387", + "token": "support.function.builtin.python" + }, + { + "foreground": "#fab387", + "token": "support.type.python" + }, + { + "foreground": "#cba6f7", + "token": "constant.language.python" + }, + { + "foreground": "#eba0ac", + "fontStyle": "italic", + "token": "meta.indexed-name.python" + }, + { + "foreground": "#eba0ac", + "fontStyle": "italic", + "token": "meta.item-access.python" + }, + { + "foreground": "#a6e3a1", + "fontStyle": "italic", + "token": "storage.type.string.python" + }, + { + "fontStyle": "", + "token": "meta.function.parameters.python" + }, + { + "foreground": "#f5c2e7", + "token": "string.regexp punctuation.definition.string.begin" + }, + { + "foreground": "#f5c2e7", + "token": "string.regexp punctuation.definition.string.end" + }, + { + "foreground": "#cba6f7", + "token": "keyword.control.anchor.regexp" + }, + { + "foreground": "#cdd6f4", + "token": "string.regexp.ts" + }, + { + "foreground": "#a6e3a1", + "token": "punctuation.definition.group.regexp" + }, + { + "foreground": "#a6e3a1", + "token": "keyword.other.back-reference.regexp" + }, + { + "foreground": "#f9e2af", + "token": "punctuation.definition.character-class.regexp" + }, + { + "foreground": "#f5c2e7", + "token": "constant.other.character-class.regexp" + }, + { + "foreground": "#f5e0dc", + "token": "constant.other.character-class.range.regexp" + }, + { + "foreground": "#94e2d5", + "token": "keyword.operator.quantifier.regexp" + }, + { + "foreground": "#fab387", + "token": "constant.character.numeric.regexp" + }, + { + "foreground": "#89b4fa", + "token": "punctuation.definition.group.no-capture.regexp" + }, + { + "foreground": "#89b4fa", + "token": "meta.assertion.look-ahead.regexp" + }, + { + "foreground": "#89b4fa", + "token": "meta.assertion.negative-look-ahead.regexp" + }, + { + "foreground": "#f9e2af", + "fontStyle": "italic", + "token": "meta.annotation.rust" + }, + { + "foreground": "#f9e2af", + "fontStyle": "italic", + "token": "meta.annotation.rust punctuation" + }, + { + "foreground": "#f9e2af", + "fontStyle": "italic", + "token": "meta.attribute.rust" + }, + { + "foreground": "#f9e2af", + "fontStyle": "italic", + "token": "punctuation.definition.attribute.rust" + }, + { + "fontStyle": "", + "token": "meta.attribute.rust string.quoted.double.rust" + }, + { + "fontStyle": "", + "token": "meta.attribute.rust string.quoted.single.char.rust" + }, + { + "foreground": "#cba6f7", + "fontStyle": "", + "token": "entity.name.function.macro.rules.rust" + }, + { + "foreground": "#cba6f7", + "fontStyle": "", + "token": "storage.type.module.rust" + }, + { + "foreground": "#cba6f7", + "fontStyle": "", + "token": "storage.modifier.rust" + }, + { + "foreground": "#cba6f7", + "fontStyle": "", + "token": "storage.type.struct.rust" + }, + { + "foreground": "#cba6f7", + "fontStyle": "", + "token": "storage.type.enum.rust" + }, + { + "foreground": "#cba6f7", + "fontStyle": "", + "token": "storage.type.trait.rust" + }, + { + "foreground": "#cba6f7", + "fontStyle": "", + "token": "storage.type.union.rust" + }, + { + "foreground": "#cba6f7", + "fontStyle": "", + "token": "storage.type.impl.rust" + }, + { + "foreground": "#cba6f7", + "fontStyle": "", + "token": "storage.type.rust" + }, + { + "foreground": "#cba6f7", + "fontStyle": "", + "token": "storage.type.function.rust" + }, + { + "foreground": "#cba6f7", + "fontStyle": "", + "token": "storage.type.type.rust" + }, + { + "foreground": "#cba6f7", + "fontStyle": "", + "token": "entity.name.type.numeric.rust" + }, + { + "foreground": "#fab387", + "token": "meta.generic.rust" + }, + { + "foreground": "#f9e2af", + "fontStyle": "italic", + "token": "entity.name.impl.rust" + }, + { + "foreground": "#fab387", + "token": "entity.name.module.rust" + }, + { + "foreground": "#f9e2af", + "fontStyle": "italic", + "token": "entity.name.trait.rust" + }, + { + "foreground": "#f9e2af", + "token": "storage.type.source.rust" + }, + { + "foreground": "#f9e2af", + "token": "entity.name.union.rust" + }, + { + "foreground": "#94e2d5", + "token": "meta.enum.rust storage.type.source.rust" + }, + { + "foreground": "#89b4fa", + "fontStyle": "italic", + "token": "support.macro.rust" + }, + { + "foreground": "#89b4fa", + "fontStyle": "italic", + "token": "meta.macro.rust support.function.rust" + }, + { + "foreground": "#89b4fa", + "fontStyle": "italic", + "token": "entity.name.function.macro.rust" + }, + { + "foreground": "#89b4fa", + "fontStyle": "italic", + "token": "storage.modifier.lifetime.rust" + }, + { + "foreground": "#89b4fa", + "fontStyle": "italic", + "token": "entity.name.type.lifetime" + }, + { + "foreground": "#f5c2e7", + "token": "string.quoted.double.rust constant.other.placeholder.rust" + }, + { + "foreground": "#cdd6f4", + "token": "meta.function.return-type.rust meta.generic.rust storage.type.rust" + }, + { + "foreground": "#89b4fa", + "token": "meta.function.call.rust" + }, + { + "foreground": "#89dceb", + "token": "punctuation.brackets.angle.rust" + }, + { + "foreground": "#fab387", + "token": "constant.other.caps.rust" + }, + { + "foreground": "#eba0ac", + "token": "meta.function.definition.rust variable.other.rust" + }, + { + "foreground": "#cdd6f4", + "token": "meta.function.call.rust variable.other.rust" + }, + { + "foreground": "#f38ba8", + "token": "variable.language.self.rust" + }, + { + "foreground": "#f5c2e7", + "token": "variable.other.metavariable.name.rust" + }, + { + "foreground": "#f5c2e7", + "token": "meta.macro.metavariable.rust keyword.operator.macro.dollar.rust" + }, + { + "foreground": "#f5c2e7", + "fontStyle": "italic", + "token": "comment.line.shebang" + }, + { + "foreground": "#f5c2e7", + "fontStyle": "italic", + "token": "comment.line.shebang punctuation.definition.comment" + }, + { + "foreground": "#f5c2e7", + "fontStyle": "italic", + "token": "comment.line.shebang" + }, + { + "foreground": "#f5c2e7", + "fontStyle": "italic", + "token": "punctuation.definition.comment.shebang.shell" + }, + { + "foreground": "#f5c2e7", + "fontStyle": "italic", + "token": "meta.shebang.shell" + }, + { + "foreground": "#94e2d5", + "fontStyle": "italic", + "token": "comment.line.shebang constant.language" + }, + { + "foreground": "#f38ba8", + "token": "meta.function-call.arguments.shell punctuation.definition.variable.shell" + }, + { + "foreground": "#f38ba8", + "token": "meta.function-call.arguments.shell punctuation.section.interpolation" + }, + { + "foreground": "#f38ba8", + "token": "meta.function-call.arguments.shell punctuation.definition.variable.shell" + }, + { + "foreground": "#f38ba8", + "token": "meta.function-call.arguments.shell punctuation.section.interpolation" + }, + { + "foreground": "#fab387", + "fontStyle": "italic", + "token": "meta.string meta.interpolation.parameter.shell variable.other.readwrite" + }, + { + "foreground": "#94e2d5", + "token": "source.shell punctuation.section.interpolation" + }, + { + "foreground": "#94e2d5", + "token": "punctuation.definition.evaluation.backticks.shell" + }, + { + "foreground": "#cba6f7", + "token": "entity.name.tag.heredoc.shell" + }, + { + "foreground": "#cdd6f4", + "token": "string.quoted.double.shell variable.other.normal.shell" + } + ], + "encodedTokensColors": [] +} \ No newline at end of file diff --git a/src/components/editor/utils/setup.ts b/src/components/editor/utils/setup.ts new file mode 100644 index 0000000..e25ea06 --- /dev/null +++ b/src/components/editor/utils/setup.ts @@ -0,0 +1,88 @@ +import type { VfsStorage } from '../../../lib/vfs/storage.ts' +import { asNonNull, asyncPool, utf8 } from '@fuman/utils' +import { editor, languages } from 'monaco-editor/esm/vs/editor/editor.api.js' +import EditorWorker from 'monaco-editor/esm/vs/editor/editor.worker?worker' +import { wireTmGrammars } from 'monaco-editor-textmate' +import { Registry } from 'monaco-textmate' +import { loadWASM } from 'onigasm' + +import onigasmWasm from 'onigasm/lib/onigasm.wasm?url' +import TypeScriptWorker from './custom-worker.ts?worker' +import latte from './latte.json' +import mocha from './mocha.json' +import typescriptTM from './typescript.tmLanguage.json' + +window.MonacoEnvironment = { + getWorker: (_, label: string) => { + if (label === 'editorWorkerService') { + return new EditorWorker() + } + if (label === 'typescript') { + return new TypeScriptWorker() + } + throw new Error(`Unknown worker: ${label}`) + }, +} + +let loadingWasm: Promise + +const registry = new Registry({ + async getGrammarDefinition() { + return { + format: 'json', + content: typescriptTM, + } + }, +}) + +const grammars = new Map() +grammars.set('typescript', 'source.tsx') +grammars.set('javascript', 'source.tsx') +grammars.set('css', 'source.css') + +editor.defineTheme('latte', latte as any) +editor.defineTheme('mocha', mocha as any) + +const compilerOptions: languages.typescript.CompilerOptions = { + strict: true, + target: languages.typescript.ScriptTarget.ESNext, + module: languages.typescript.ModuleKind.ESNext, + moduleResolution: languages.typescript.ModuleResolutionKind.NodeJs, + moduleDetection: 3, // force + jsx: languages.typescript.JsxEmit.Preserve, + allowNonTsExtensions: true, + allowImportingTsExtensions: true, +} + +languages.typescript.typescriptDefaults.setCompilerOptions(compilerOptions) +languages.typescript.javascriptDefaults.setCompilerOptions(compilerOptions) + +export async function setupMonaco(vfs: VfsStorage) { + if (!loadingWasm) loadingWasm = loadWASM(onigasmWasm) + await loadingWasm + + const libs = await vfs.getAvailableLibs() + const extraLibs: { + content: string + filePath?: string + }[] = [] + + await asyncPool(libs, async (lib) => { + const { files } = asNonNull(await vfs.readLibrary(lib)) + for (const file of files) { + const { path, contents } = file + if (!path.endsWith('.d.ts')) continue + + extraLibs.push({ content: utf8.decoder.decode(contents), filePath: `file:///node_modules/${lib}/${path}` }) + } + }) + + extraLibs.push({ + content: 'declare const tg: import("@mtcute/web").TelegramClient', + filePath: 'file:///tg.d.ts', + }) + + languages.typescript.typescriptDefaults.setExtraLibs(extraLibs) + + await wireTmGrammars({ languages } as any, registry, grammars) +} diff --git a/src/components/editor/utils/typescript.tmLanguage.json b/src/components/editor/utils/typescript.tmLanguage.json new file mode 100644 index 0000000..d5904c6 --- /dev/null +++ b/src/components/editor/utils/typescript.tmLanguage.json @@ -0,0 +1,5899 @@ +{ + "name": "TypeScript", + "scopeName": "source.ts", + "fileTypes": [ + "ts" + ], + "uuid": "ef98eb90-bf9b-11e4-bb52-0800200c9a66", + "patterns": [ + { + "include": "#directives" + }, + { + "include": "#statements" + }, + { + "include": "#shebang" + } + ], + "repository": { + "shebang": { + "name": "comment.line.shebang.ts", + "match": "\\A(#!).*(?=$)", + "captures": { + "1": { + "name": "punctuation.definition.comment.ts" + } + } + }, + "statements": { + "patterns": [ + { + "include": "#declaration" + }, + { + "include": "#control-statement" + }, + { + "include": "#after-operator-block-as-object-literal" + }, + { + "include": "#decl-block" + }, + { + "include": "#label" + }, + { + "include": "#expression" + }, + { + "include": "#punctuation-semicolon" + }, + { + "include": "#string" + }, + { + "include": "#comment" + } + ] + }, + "declaration": { + "patterns": [ + { + "include": "#decorator" + }, + { + "include": "#var-expr" + }, + { + "include": "#function-declaration" + }, + { + "include": "#class-declaration" + }, + { + "include": "#interface-declaration" + }, + { + "include": "#enum-declaration" + }, + { + "include": "#namespace-declaration" + }, + { + "include": "#type-alias-declaration" + }, + { + "include": "#import-equals-declaration" + }, + { + "include": "#import-declaration" + }, + { + "include": "#export-declaration" + }, + { + "name": "storage.modifier.ts", + "match": "(?)\n )) |\n ((async\\s*)?(\n ((<\\s*$)|((<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?[\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) |\n # sure shot arrow functions even if => is on new line\n(\n (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\n [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*\n (\n ([)]\\s*:) | # ():\n ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param:\n )\n) |\n\n# arrow function possible to detect only with => on same line\n(\n (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? # typeparameters\n \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\\"\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))*)?\\) # parameters\n (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? # return type\n \\s*=> # arrow operator\n)\n ))\n)) |\n# typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) =>\n(:\\s*(\n (<) |\n ([(]\\s*(\n ([)]) |\n (\\.\\.\\.) |\n ([_$[:alnum:]]+\\s*(\n ([:,?=])|\n ([)]\\s*=>)\n ))\n ))\n)) |\n(:\\s*(?]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?[\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*))))))) |\n(:\\s*(=>|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(<[^<>]*>)|[^<>(),=])+=\\s*(\n ((async\\s+)?(\n (function\\s*[(<*]) |\n (function\\s+) |\n ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n )) |\n ((async\\s*)?(\n ((<\\s*$)|((<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?[\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) |\n # sure shot arrow functions even if => is on new line\n(\n (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\n [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*\n (\n ([)]\\s*:) | # ():\n ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param:\n )\n) |\n\n# arrow function possible to detect only with => on same line\n(\n (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? # typeparameters\n \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\\"\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))*)?\\) # parameters\n (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? # return type\n \\s*=> # arrow operator\n)\n ))\n)))", + "beginCaptures": { + "1": { + "name": "meta.definition.variable.ts entity.name.function.ts" + }, + "2": { + "name": "keyword.operator.definiteassignment.ts" + } + }, + "end": "(?=$|^|[;,=}]|((?)\n )) |\n ((async\\s*)?(\n ((<\\s*$)|((<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?[\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) |\n # sure shot arrow functions even if => is on new line\n(\n (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\n [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*\n (\n ([)]\\s*:) | # ():\n ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param:\n )\n) |\n\n# arrow function possible to detect only with => on same line\n(\n (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? # typeparameters\n \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\\"\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))*)?\\) # parameters\n (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? # return type\n \\s*=> # arrow operator\n)\n ))\n)) |\n# typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) =>\n(:\\s*(\n (<) |\n ([(]\\s*(\n ([)]) |\n (\\.\\.\\.) |\n ([_$[:alnum:]]+\\s*(\n ([:,?=])|\n ([)]\\s*=>)\n ))\n ))\n)) |\n(:\\s*(?]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?[\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*))))))) |\n(:\\s*(=>|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(<[^<>]*>)|[^<>(),=])+=\\s*(\n ((async\\s+)?(\n (function\\s*[(<*]) |\n (function\\s+) |\n ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n )) |\n ((async\\s*)?(\n ((<\\s*$)|((<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?[\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) |\n # sure shot arrow functions even if => is on new line\n(\n (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\n [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*\n (\n ([)]\\s*:) | # ():\n ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param:\n )\n) |\n\n# arrow function possible to detect only with => on same line\n(\n (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? # typeparameters\n \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\\"\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))*)?\\) # parameters\n (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? # return type\n \\s*=> # arrow operator\n)\n ))\n)))", + "beginCaptures": { + "1": { + "name": "meta.definition.variable.ts variable.other.constant.ts entity.name.function.ts" + } + }, + "end": "(?=$|^|[;,=}]|((?)\n )) |\n ((async\\s*)?(\n ((<\\s*$)|((<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?[\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) |\n # sure shot arrow functions even if => is on new line\n(\n (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\n [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*\n (\n ([)]\\s*:) | # ():\n ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param:\n )\n) |\n\n# arrow function possible to detect only with => on same line\n(\n (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? # typeparameters\n \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\\"\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))*)?\\) # parameters\n (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? # return type\n \\s*=> # arrow operator\n)\n ))\n)) |\n# typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) =>\n(:\\s*(\n (<) |\n ([(]\\s*(\n ([)]) |\n (\\.\\.\\.) |\n ([_$[:alnum:]]+\\s*(\n ([:,?=])|\n ([)]\\s*=>)\n ))\n ))\n)) |\n(:\\s*(?]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?[\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*))))))) |\n(:\\s*(=>|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(<[^<>]*>)|[^<>(),=])+=\\s*(\n ((async\\s+)?(\n (function\\s*[(<*]) |\n (function\\s+) |\n ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n )) |\n ((async\\s*)?(\n ((<\\s*$)|((<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?[\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) |\n # sure shot arrow functions even if => is on new line\n(\n (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\n [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*\n (\n ([)]\\s*:) | # ():\n ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param:\n )\n) |\n\n# arrow function possible to detect only with => on same line\n(\n (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? # typeparameters\n \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\\"\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))*)?\\) # parameters\n (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? # return type\n \\s*=> # arrow operator\n)\n ))\n)))", + "captures": { + "1": { + "name": "storage.modifier.ts" + }, + "2": { + "name": "keyword.operator.rest.ts" + }, + "3": { + "name": "entity.name.function.ts variable.language.this.ts" + }, + "4": { + "name": "entity.name.function.ts" + }, + "5": { + "name": "keyword.operator.optional.ts" + } + } + }, + { + "match": "(?x)(?:(?)\n )) |\n ((async\\s*)?(\n ((<\\s*$)|((<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?[\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) |\n # sure shot arrow functions even if => is on new line\n(\n (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\n [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*\n (\n ([)]\\s*:) | # ():\n ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param:\n )\n) |\n\n# arrow function possible to detect only with => on same line\n(\n (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? # typeparameters\n \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\\"\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))*)?\\) # parameters\n (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? # return type\n \\s*=> # arrow operator\n)\n ))\n)) |\n# typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) =>\n(:\\s*(\n (<) |\n ([(]\\s*(\n ([)]) |\n (\\.\\.\\.) |\n ([_$[:alnum:]]+\\s*(\n ([:,?=])|\n ([)]\\s*=>)\n ))\n ))\n)) |\n(:\\s*(?]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?[\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*))))))) |\n(:\\s*(=>|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(<[^<>]*>)|[^<>(),=])+=\\s*(\n ((async\\s+)?(\n (function\\s*[(<*]) |\n (function\\s+) |\n ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n )) |\n ((async\\s*)?(\n ((<\\s*$)|((<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?[\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) |\n # sure shot arrow functions even if => is on new line\n(\n (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\n [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*\n (\n ([)]\\s*:) | # ():\n ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param:\n )\n) |\n\n# arrow function possible to detect only with => on same line\n(\n (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? # typeparameters\n \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\\"\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))*)?\\) # parameters\n (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? # return type\n \\s*=> # arrow operator\n)\n ))\n)))", + "captures": { + "1": { + "name": "meta.definition.property.ts entity.name.function.ts" + }, + "2": { + "name": "keyword.operator.optional.ts" + }, + "3": { + "name": "keyword.operator.definiteassignment.ts" + } + } + }, + { + "name": "meta.definition.property.ts variable.object.property.ts", + "match": "\\#?[_$[:alpha:]][_$[:alnum:]]*" + }, + { + "name": "keyword.operator.optional.ts", + "match": "\\?" + }, + { + "name": "keyword.operator.definiteassignment.ts", + "match": "\\!" + } + ] + }, + "variable-initializer": { + "patterns": [ + { + "begin": "(?\\s*$)", + "beginCaptures": { + "1": { + "name": "keyword.operator.assignment.ts" + } + }, + "end": "(?=$|^|[,);}\\]]|((?]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*))?[\\(])", + "beginCaptures": { + "1": { + "name": "storage.modifier.ts" + }, + "2": { + "name": "storage.modifier.ts" + }, + "3": { + "name": "storage.modifier.ts" + }, + "4": { + "name": "storage.modifier.async.ts" + }, + "5": { + "name": "keyword.operator.new.ts" + }, + "6": { + "name": "keyword.generator.asterisk.ts" + } + }, + "end": "(?=\\}|;|,|$)|(?<=\\})", + "patterns": [ + { + "include": "#method-declaration-name" + }, + { + "include": "#function-body" + } + ] + }, + { + "name": "meta.method.declaration.ts", + "begin": "(?x)(?]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*))?[\\(])", + "beginCaptures": { + "1": { + "name": "storage.modifier.ts" + }, + "2": { + "name": "storage.modifier.ts" + }, + "3": { + "name": "storage.modifier.ts" + }, + "4": { + "name": "storage.modifier.async.ts" + }, + "5": { + "name": "storage.type.property.ts" + }, + "6": { + "name": "keyword.generator.asterisk.ts" + } + }, + "end": "(?=\\}|;|,|$)|(?<=\\})", + "patterns": [ + { + "include": "#method-declaration-name" + }, + { + "include": "#function-body" + } + ] + } + ] + }, + "object-literal-method-declaration": { + "name": "meta.method.declaration.ts", + "begin": "(?x)(?]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*))?[\\(])", + "beginCaptures": { + "1": { + "name": "storage.modifier.async.ts" + }, + "2": { + "name": "storage.type.property.ts" + }, + "3": { + "name": "keyword.generator.asterisk.ts" + } + }, + "end": "(?=\\}|;|,)|(?<=\\})", + "patterns": [ + { + "include": "#method-declaration-name" + }, + { + "include": "#function-body" + }, + { + "begin": "(?x)(?]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*))?[\\(])", + "beginCaptures": { + "1": { + "name": "storage.modifier.async.ts" + }, + "2": { + "name": "storage.type.property.ts" + }, + "3": { + "name": "keyword.generator.asterisk.ts" + } + }, + "end": "(?=\\(|\\<)", + "patterns": [ + { + "include": "#method-declaration-name" + } + ] + } + ] + }, + "method-declaration-name": { + "begin": "(?x)(?=((\\b(?)", + "captures": { + "1": { + "name": "storage.modifier.async.ts" + }, + "2": { + "name": "variable.parameter.ts" + } + } + }, + { + "name": "meta.arrow.ts", + "begin": "(?x) (?:\n (? is on new line\n(\n (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\n [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*\n (\n ([)]\\s*:) | # ():\n ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param:\n )\n) |\n\n# arrow function possible to detect only with => on same line\n(\n (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? # typeparameters\n \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\\"\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))*)?\\) # parameters\n (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? # return type\n \\s*=> # arrow operator\n)\n )\n)", + "beginCaptures": { + "1": { + "name": "storage.modifier.async.ts" + } + }, + "end": "(?==>|\\{|(^\\s*(export|function|class|interface|let|var|(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)|(?:\\bawait\\s+(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)\\b)|const|import|enum|namespace|module|type|abstract|declare)\\s+))", + "patterns": [ + { + "include": "#comment" + }, + { + "include": "#type-parameters" + }, + { + "include": "#function-parameters" + }, + { + "include": "#arrow-return-type" + }, + { + "include": "#possibly-arrow-return-type" + } + ] + }, + { + "name": "meta.arrow.ts", + "begin": "=>", + "beginCaptures": { + "0": { + "name": "storage.type.function.arrow.ts" + } + }, + "end": "((?<=\\}|\\S)(?)|((?!\\{)(?=\\S)))(?!\\/[\\/\\*])", + "patterns": [ + { + "include": "#single-line-comment-consuming-line-ending" + }, + { + "include": "#decl-block" + }, + { + "include": "#expression" + } + ] + } + ] + }, + "indexer-declaration": { + "name": "meta.indexer.declaration.ts", + "begin": "(?:(?]|^await|[^\\._$[:alnum:]]await|^return|[^\\._$[:alnum:]]return|^yield|[^\\._$[:alnum:]]yield|^throw|[^\\._$[:alnum:]]throw|^in|[^\\._$[:alnum:]]in|^of|[^\\._$[:alnum:]]of|^typeof|[^\\._$[:alnum:]]typeof|&&|\\|\\||\\*)\\s*(\\{)", + "beginCaptures": { + "1": { + "name": "punctuation.definition.block.ts" + } + }, + "end": "\\}", + "endCaptures": { + "0": { + "name": "punctuation.definition.block.ts" + } + }, + "patterns": [ + { + "include": "#object-member" + } + ] + }, + "object-literal": { + "name": "meta.objectliteral.ts", + "begin": "\\{", + "beginCaptures": { + "0": { + "name": "punctuation.definition.block.ts" + } + }, + "end": "\\}", + "endCaptures": { + "0": { + "name": "punctuation.definition.block.ts" + } + }, + "patterns": [ + { + "include": "#object-member" + } + ] + }, + "object-member": { + "patterns": [ + { + "include": "#comment" + }, + { + "include": "#object-literal-method-declaration" + }, + { + "name": "meta.object.member.ts meta.object-literal.key.ts", + "begin": "(?=\\[)", + "end": "(?=:)|((?<=[\\]])(?=\\s*[\\(\\<]))", + "patterns": [ + { + "include": "#comment" + }, + { + "include": "#array-literal" + } + ] + }, + { + "name": "meta.object.member.ts meta.object-literal.key.ts", + "begin": "(?=[\\'\\\"\\`])", + "end": "(?=:)|((?<=[\\'\\\"\\`])(?=((\\s*[\\(\\<,}])|(\\s+(as|satisifies)\\s+))))", + "patterns": [ + { + "include": "#comment" + }, + { + "include": "#string" + } + ] + }, + { + "name": "meta.object.member.ts meta.object-literal.key.ts", + "begin": "(?x)(?=(\\b(?)\n )) |\n ((async\\s*)?(\n ((<\\s*$)|((<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?[\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) |\n # sure shot arrow functions even if => is on new line\n(\n (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\n [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*\n (\n ([)]\\s*:) | # ():\n ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param:\n )\n) |\n\n# arrow function possible to detect only with => on same line\n(\n (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? # typeparameters\n \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\\"\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))*)?\\) # parameters\n (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? # return type\n \\s*=> # arrow operator\n)\n ))\n)))", + "captures": { + "0": { + "name": "meta.object-literal.key.ts" + }, + "1": { + "name": "entity.name.function.ts" + } + } + }, + { + "name": "meta.object.member.ts", + "match": "(?:[_$[:alpha:]][_$[:alnum:]]*)\\s*(?=(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*:)", + "captures": { + "0": { + "name": "meta.object-literal.key.ts" + } + } + }, + { + "name": "meta.object.member.ts", + "begin": "\\.\\.\\.", + "beginCaptures": { + "0": { + "name": "keyword.operator.spread.ts" + } + }, + "end": "(?=,|\\})", + "patterns": [ + { + "include": "#expression" + } + ] + }, + { + "name": "meta.object.member.ts", + "match": "([_$[:alpha:]][_$[:alnum:]]*)\\s*(?=,|\\}|$|\\/\\/|\\/\\*)", + "captures": { + "1": { + "name": "variable.other.readwrite.ts" + } + } + }, + { + "name": "meta.object.member.ts", + "match": "(?]|\\|\\||\\&\\&|\\!\\=\\=|$|^|((?]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)\\(\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))", + "beginCaptures": { + "1": { + "name": "storage.modifier.async.ts" + } + }, + "end": "(?<=\\))", + "patterns": [ + { + "include": "#type-parameters" + }, + { + "begin": "\\(", + "beginCaptures": { + "0": { + "name": "meta.brace.round.ts" + } + }, + "end": "\\)", + "endCaptures": { + "0": { + "name": "meta.brace.round.ts" + } + }, + "patterns": [ + { + "include": "#expression-inside-possibly-arrow-parens" + } + ] + } + ] + }, + { + "begin": "(?<=:)\\s*(async)?\\s*(\\()(?=\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))", + "beginCaptures": { + "1": { + "name": "storage.modifier.async.ts" + }, + "2": { + "name": "meta.brace.round.ts" + } + }, + "end": "\\)", + "endCaptures": { + "0": { + "name": "meta.brace.round.ts" + } + }, + "patterns": [ + { + "include": "#expression-inside-possibly-arrow-parens" + } + ] + }, + { + "begin": "(?<=:)\\s*(async)?\\s*(?=\\<\\s*$)", + "beginCaptures": { + "1": { + "name": "storage.modifier.async.ts" + } + }, + "end": "(?<=\\>)", + "patterns": [ + { + "include": "#type-parameters" + } + ] + }, + { + "begin": "(?<=\\>)\\s*(\\()(?=\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))", + "beginCaptures": { + "1": { + "name": "meta.brace.round.ts" + } + }, + "end": "\\)", + "endCaptures": { + "0": { + "name": "meta.brace.round.ts" + } + }, + "patterns": [ + { + "include": "#expression-inside-possibly-arrow-parens" + } + ] + }, + { + "include": "#possibly-arrow-return-type" + }, + { + "include": "#expression" + } + ] + }, + { + "include": "#punctuation-comma" + }, + { + "include": "#decl-block" + } + ] + }, + "ternary-expression": { + "begin": "(?!\\?\\.\\s*[^[:digit:]])(\\?)(?!\\?)", + "beginCaptures": { + "1": { + "name": "keyword.operator.ternary.ts" + } + }, + "end": "\\s*(:)", + "endCaptures": { + "1": { + "name": "keyword.operator.ternary.ts" + } + }, + "patterns": [ + { + "include": "#expression" + } + ] + }, + "function-call": { + "patterns": [ + { + "begin": "(?=(((([_$[:alpha:]][_$[:alnum:]]*)(\\s*\\??\\.\\s*(\\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\\??\\.\\s*\\#?[_$[:alpha:]][_$[:alnum:]]*))|(?<=[\\)]))\\s*(?:(\\?\\.\\s*)|(\\!))?((<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))(([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>)*(?))*(?)*(?\\s*)?\\())", + "end": "(?<=\\))(?!(((([_$[:alpha:]][_$[:alnum:]]*)(\\s*\\??\\.\\s*(\\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\\??\\.\\s*\\#?[_$[:alpha:]][_$[:alnum:]]*))|(?<=[\\)]))\\s*(?:(\\?\\.\\s*)|(\\!))?((<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))(([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>)*(?))*(?)*(?\\s*)?\\())", + "patterns": [ + { + "name": "meta.function-call.ts", + "begin": "(?=(([_$[:alpha:]][_$[:alnum:]]*)(\\s*\\??\\.\\s*(\\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\\??\\.\\s*\\#?[_$[:alpha:]][_$[:alnum:]]*))", + "end": "(?=\\s*(?:(\\?\\.\\s*)|(\\!))?((<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))(([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>)*(?))*(?)*(?\\s*)?\\())", + "patterns": [ + { + "include": "#function-call-target" + } + ] + }, + { + "include": "#comment" + }, + { + "include": "#function-call-optionals" + }, + { + "include": "#type-arguments" + }, + { + "include": "#paren-expression" + } + ] + }, + { + "begin": "(?=(((([_$[:alpha:]][_$[:alnum:]]*)(\\s*\\??\\.\\s*(\\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\\??\\.\\s*\\#?[_$[:alpha:]][_$[:alnum:]]*))|(?<=[\\)]))(<\\s*[\\{\\[\\(]\\s*$))", + "end": "(?<=\\>)(?!(((([_$[:alpha:]][_$[:alnum:]]*)(\\s*\\??\\.\\s*(\\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\\??\\.\\s*\\#?[_$[:alpha:]][_$[:alnum:]]*))|(?<=[\\)]))(<\\s*[\\{\\[\\(]\\s*$))", + "patterns": [ + { + "name": "meta.function-call.ts", + "begin": "(?=(([_$[:alpha:]][_$[:alnum:]]*)(\\s*\\??\\.\\s*(\\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\\??\\.\\s*\\#?[_$[:alpha:]][_$[:alnum:]]*))", + "end": "(?=(<\\s*[\\{\\[\\(]\\s*$))", + "patterns": [ + { + "include": "#function-call-target" + } + ] + }, + { + "include": "#comment" + }, + { + "include": "#function-call-optionals" + }, + { + "include": "#type-arguments" + } + ] + } + ] + }, + "function-call-target": { + "patterns": [ + { + "include": "#support-function-call-identifiers" + }, + { + "name": "entity.name.function.ts", + "match": "(\\#?[_$[:alpha:]][_$[:alnum:]]*)" + } + ] + }, + "function-call-optionals": { + "patterns": [ + { + "name": "meta.function-call.ts punctuation.accessor.optional.ts", + "match": "\\?\\." + }, + { + "name": "meta.function-call.ts keyword.operator.definiteassignment.ts", + "match": "\\!" + } + ] + }, + "support-function-call-identifiers": { + "patterns": [ + { + "include": "#literal" + }, + { + "include": "#support-objects" + }, + { + "include": "#object-identifiers" + }, + { + "include": "#punctuation-accessor" + }, + { + "name": "keyword.operator.expression.import.ts", + "match": "(?:(?]|\\|\\||\\&\\&|\\!\\=\\=|$|((?]|\\|\\||\\&\\&|\\!\\=\\=|$|(===|!==|==|!=)|(([\\&\\~\\^\\|]\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s+instanceof(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.)))|((?]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*))?\\(\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))", + "beginCaptures": { + "1": { + "name": "storage.modifier.async.ts" + } + }, + "end": "(?<=\\))", + "patterns": [ + { + "include": "#paren-expression-possibly-arrow-with-typeparameters" + } + ] + }, + { + "begin": "(?<=[(=,]|=>|^return|[^\\._$[:alnum:]]return)\\s*(async)?(?=\\s*((((<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*))?\\()|(<)|((<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)))\\s*$)", + "beginCaptures": { + "1": { + "name": "storage.modifier.async.ts" + } + }, + "end": "(?<=\\))", + "patterns": [ + { + "include": "#paren-expression-possibly-arrow-with-typeparameters" + } + ] + }, + { + "include": "#possibly-arrow-return-type" + } + ] + }, + "paren-expression-possibly-arrow-with-typeparameters": { + "patterns": [ + { + "include": "#type-parameters" + }, + { + "begin": "\\(", + "beginCaptures": { + "0": { + "name": "meta.brace.round.ts" + } + }, + "end": "\\)", + "endCaptures": { + "0": { + "name": "meta.brace.round.ts" + } + }, + "patterns": [ + { + "include": "#expression-inside-possibly-arrow-parens" + } + ] + } + ] + }, + "expression-inside-possibly-arrow-parens": { + "patterns": [ + { + "include": "#expressionWithoutIdentifiers" + }, + { + "include": "#comment" + }, + { + "include": "#string" + }, + { + "include": "#decorator" + }, + { + "include": "#destructuring-parameter" + }, + { + "match": "(?)\n )) |\n ((async\\s*)?(\n ((<\\s*$)|((<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?[\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) |\n # sure shot arrow functions even if => is on new line\n(\n (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\n [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*\n (\n ([)]\\s*:) | # ():\n ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param:\n )\n) |\n\n# arrow function possible to detect only with => on same line\n(\n (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? # typeparameters\n \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\\"\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))*)?\\) # parameters\n (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? # return type\n \\s*=> # arrow operator\n)\n ))\n)) |\n# typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) =>\n(:\\s*(\n (<) |\n ([(]\\s*(\n ([)]) |\n (\\.\\.\\.) |\n ([_$[:alnum:]]+\\s*(\n ([:,?=])|\n ([)]\\s*=>)\n ))\n ))\n)) |\n(:\\s*(?]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?[\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*))))))) |\n(:\\s*(=>|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(<[^<>]*>)|[^<>(),=])+=\\s*(\n ((async\\s+)?(\n (function\\s*[(<*]) |\n (function\\s+) |\n ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n )) |\n ((async\\s*)?(\n ((<\\s*$)|((<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?[\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) |\n # sure shot arrow functions even if => is on new line\n(\n (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\n [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*\n (\n ([)]\\s*:) | # ():\n ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param:\n )\n) |\n\n# arrow function possible to detect only with => on same line\n(\n (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? # typeparameters\n \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\\"\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))*)?\\) # parameters\n (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? # return type\n \\s*=> # arrow operator\n)\n ))\n)))", + "captures": { + "1": { + "name": "storage.modifier.ts" + }, + "2": { + "name": "keyword.operator.rest.ts" + }, + "3": { + "name": "entity.name.function.ts variable.language.this.ts" + }, + "4": { + "name": "entity.name.function.ts" + }, + "5": { + "name": "keyword.operator.optional.ts" + } + } + }, + { + "match": "(?x)(?:(?)", + "captures": { + "1": { + "name": "meta.brace.angle.ts" + }, + "2": { + "name": "storage.modifier.ts" + }, + "3": { + "name": "meta.brace.angle.ts" + } + } + }, + { + "name": "cast.expr.ts", + "begin": "(?:(?*?\\&\\|\\^]|[^_$[:alnum:]](?:\\+\\+|\\-\\-)|[^\\+]\\+|[^\\-]\\-))\\s*(<)(?!)", + "endCaptures": { + "1": { + "name": "meta.brace.angle.ts" + } + }, + "patterns": [ + { + "include": "#type" + } + ] + }, + { + "name": "cast.expr.ts", + "begin": "(?:(?<=^))\\s*(<)(?=[_$[:alpha:]][_$[:alnum:]]*\\s*>)", + "beginCaptures": { + "1": { + "name": "meta.brace.angle.ts" + } + }, + "end": "(\\>)", + "endCaptures": { + "1": { + "name": "meta.brace.angle.ts" + } + }, + "patterns": [ + { + "include": "#type" + } + ] + } + ] + }, + "expression-operators": { + "patterns": [ + { + "name": "keyword.control.flow.ts", + "match": "(?]|\\|\\||\\&\\&|\\!\\=\\=|$|((?>=|>>>=|\\|=" + }, + { + "name": "keyword.operator.bitwise.shift.ts", + "match": "<<|>>>|>>" + }, + { + "name": "keyword.operator.comparison.ts", + "match": "===|!==|==|!=" + }, + { + "name": "keyword.operator.relational.ts", + "match": "<=|>=|<>|<|>" + }, + { + "match": "(?<=[_$[:alnum:]])(\\!)\\s*(?:(/=)|(?:(/)(?![/*])))", + "captures": { + "1": { + "name": "keyword.operator.logical.ts" + }, + "2": { + "name": "keyword.operator.assignment.compound.ts" + }, + "3": { + "name": "keyword.operator.arithmetic.ts" + } + } + }, + { + "name": "keyword.operator.logical.ts", + "match": "\\!|&&|\\|\\||\\?\\?" + }, + { + "name": "keyword.operator.bitwise.ts", + "match": "\\&|~|\\^|\\|" + }, + { + "name": "keyword.operator.assignment.ts", + "match": "\\=" + }, + { + "name": "keyword.operator.decrement.ts", + "match": "--" + }, + { + "name": "keyword.operator.increment.ts", + "match": "\\+\\+" + }, + { + "name": "keyword.operator.arithmetic.ts", + "match": "%|\\*|/|-|\\+" + }, + { + "begin": "(?<=[_$[:alnum:])\\]])\\s*(?=(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)+(?:(/=)|(?:(/)(?![/*]))))", + "end": "(?:(/=)|(?:(/)(?!\\*([^\\*]|(\\*[^\\/]))*\\*\\/)))", + "endCaptures": { + "1": { + "name": "keyword.operator.assignment.compound.ts" + }, + "2": { + "name": "keyword.operator.arithmetic.ts" + } + }, + "patterns": [ + { + "include": "#comment" + } + ] + }, + { + "match": "(?<=[_$[:alnum:])\\]])\\s*(?:(/=)|(?:(/)(?![/*])))", + "captures": { + "1": { + "name": "keyword.operator.assignment.compound.ts" + }, + "2": { + "name": "keyword.operator.arithmetic.ts" + } + } + } + ] + }, + "typeof-operator": { + "begin": "(?:&|{\\?]|(extends\\s+)|$|;|^\\s*$|(?:^\\s*(?:abstract|async|(?:\\bawait\\s+(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)\\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)|var|while)\\b))", + "patterns": [ + { + "include": "#type-arguments" + }, + { + "include": "#expression" + } + ] + }, + "literal": { + "patterns": [ + { + "include": "#numeric-literal" + }, + { + "include": "#boolean-literal" + }, + { + "include": "#null-literal" + }, + { + "include": "#undefined-literal" + }, + { + "include": "#numericConstant-literal" + }, + { + "include": "#array-literal" + }, + { + "include": "#this-literal" + }, + { + "include": "#super-literal" + } + ] + }, + "array-literal": { + "name": "meta.array.literal.ts", + "begin": "\\s*(\\[)", + "beginCaptures": { + "1": { + "name": "meta.brace.square.ts" + } + }, + "end": "\\]", + "endCaptures": { + "0": { + "name": "meta.brace.square.ts" + } + }, + "patterns": [ + { + "include": "#expression" + }, + { + "include": "#punctuation-comma" + } + ] + }, + "numeric-literal": { + "patterns": [ + { + "name": "constant.numeric.hex.ts", + "match": "\\b(?]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\\())\n |\n (?:(EPSILON|MAX_SAFE_INTEGER|MAX_VALUE|MIN_SAFE_INTEGER|MIN_VALUE|NEGATIVE_INFINITY|POSITIVE_INFINITY)\\b(?!\\$)))", + "captures": { + "1": { + "name": "punctuation.accessor.ts" + }, + "2": { + "name": "punctuation.accessor.optional.ts" + }, + "3": { + "name": "support.variable.property.ts" + }, + "4": { + "name": "support.constant.ts" + } + } + }, + { + "match": "(?x) (?]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\\()", + "captures": { + "1": { + "name": "punctuation.accessor.ts" + }, + "2": { + "name": "punctuation.accessor.optional.ts" + }, + "3": { + "name": "support.constant.dom.ts" + }, + "4": { + "name": "support.variable.property.dom.ts" + } + } + }, + { + "name": "support.class.node.ts", + "match": "(?x)(?)\n )) |\n ((async\\s*)?(\n ((<\\s*$)|((<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?[\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) |\n # sure shot arrow functions even if => is on new line\n(\n (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\n [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*\n (\n ([)]\\s*:) | # ():\n ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param:\n )\n) |\n\n# arrow function possible to detect only with => on same line\n(\n (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? # typeparameters\n \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\\"\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))*)?\\) # parameters\n (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? # return type\n \\s*=> # arrow operator\n)\n ))\n))", + "captures": { + "1": { + "name": "punctuation.accessor.ts" + }, + "2": { + "name": "punctuation.accessor.optional.ts" + }, + "3": { + "name": "entity.name.function.ts" + } + } + }, + { + "match": "(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*(\\#?[[:upper:]][_$[:digit:][:upper:]]*)(?![_$[:alnum:]])", + "captures": { + "1": { + "name": "punctuation.accessor.ts" + }, + "2": { + "name": "punctuation.accessor.optional.ts" + }, + "3": { + "name": "variable.other.constant.property.ts" + } + } + }, + { + "match": "(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*(\\#?[_$[:alpha:]][_$[:alnum:]]*)", + "captures": { + "1": { + "name": "punctuation.accessor.ts" + }, + "2": { + "name": "punctuation.accessor.optional.ts" + }, + "3": { + "name": "variable.other.property.ts" + } + } + }, + { + "name": "variable.other.constant.ts", + "match": "([[:upper:]][_$[:digit:][:upper:]]*)(?![_$[:alnum:]])" + }, + { + "name": "variable.other.readwrite.ts", + "match": "[_$[:alpha:]][_$[:alnum:]]*" + } + ] + }, + "object-identifiers": { + "patterns": [ + { + "name": "support.class.ts", + "match": "([_$[:alpha:]][_$[:alnum:]]*)(?=\\s*\\??\\.\\s*prototype\\b(?!\\$))" + }, + { + "match": "(?x)(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*(?:\n (\\#?[[:upper:]][_$[:digit:][:upper:]]*) |\n (\\#?[_$[:alpha:]][_$[:alnum:]]*)\n)(?=\\s*\\??\\.\\s*\\#?[_$[:alpha:]][_$[:alnum:]]*)", + "captures": { + "1": { + "name": "punctuation.accessor.ts" + }, + "2": { + "name": "punctuation.accessor.optional.ts" + }, + "3": { + "name": "variable.other.constant.object.property.ts" + }, + "4": { + "name": "variable.other.object.property.ts" + } + } + }, + { + "match": "(?x)(?:\n ([[:upper:]][_$[:digit:][:upper:]]*) |\n ([_$[:alpha:]][_$[:alnum:]]*)\n)(?=\\s*\\??\\.\\s*\\#?[_$[:alpha:]][_$[:alnum:]]*)", + "captures": { + "1": { + "name": "variable.other.constant.object.ts" + }, + "2": { + "name": "variable.other.object.ts" + } + } + } + ] + }, + "type-annotation": { + "patterns": [ + { + "name": "meta.type.annotation.ts", + "begin": "(:)(?=\\s*\\S)", + "beginCaptures": { + "1": { + "name": "keyword.operator.type.annotation.ts" + } + }, + "end": "(?])|((?<=[\\}>\\]\\)]|[_$[:alpha:]])\\s*(?=\\{)))", + "patterns": [ + { + "include": "#type" + } + ] + }, + { + "name": "meta.type.annotation.ts", + "begin": "(:)", + "beginCaptures": { + "1": { + "name": "keyword.operator.type.annotation.ts" + } + }, + "end": "(?])|(?=^\\s*$)|((?<=[\\}>\\]\\)]|[_$[:alpha:]])\\s*(?=\\{)))", + "patterns": [ + { + "include": "#type" + } + ] + } + ] + }, + "parameter-type-annotation": { + "patterns": [ + { + "name": "meta.type.annotation.ts", + "begin": "(:)", + "beginCaptures": { + "1": { + "name": "keyword.operator.type.annotation.ts" + } + }, + "end": "(?=[,)])|(?==[^>])", + "patterns": [ + { + "include": "#type" + } + ] + } + ] + }, + "return-type": { + "patterns": [ + { + "name": "meta.return.type.ts", + "begin": "(?<=\\))\\s*(:)(?=\\s*\\S)", + "beginCaptures": { + "1": { + "name": "keyword.operator.type.annotation.ts" + } + }, + "end": "(?|\\{|(^\\s*(export|function|class|interface|let|var|(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)|(?:\\bawait\\s+(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)\\b)|const|import|enum|namespace|module|type|abstract|declare)\\s+))", + "patterns": [ + { + "include": "#arrow-return-type-body" + } + ] + }, + "possibly-arrow-return-type": { + "begin": "(?<=\\)|^)\\s*(:)(?=\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*=>)", + "beginCaptures": { + "1": { + "name": "meta.arrow.ts meta.return.type.arrow.ts keyword.operator.type.annotation.ts" + } + }, + "end": "(?==>|\\{|(^\\s*(export|function|class|interface|let|var|(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)|(?:\\bawait\\s+(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)\\b)|const|import|enum|namespace|module|type|abstract|declare)\\s+))", + "contentName": "meta.arrow.ts meta.return.type.arrow.ts", + "patterns": [ + { + "include": "#arrow-return-type-body" + } + ] + }, + "arrow-return-type-body": { + "patterns": [ + { + "begin": "(?<=[:])(?=\\s*\\{)", + "end": "(?<=\\})", + "patterns": [ + { + "include": "#type-object" + } + ] + }, + { + "include": "#type-predicate-operator" + }, + { + "include": "#type" + } + ] + }, + "type-parameters": { + "name": "meta.type.parameters.ts", + "begin": "(<)", + "beginCaptures": { + "1": { + "name": "punctuation.definition.typeparameters.begin.ts" + } + }, + "end": "(>)", + "endCaptures": { + "1": { + "name": "punctuation.definition.typeparameters.end.ts" + } + }, + "patterns": [ + { + "include": "#comment" + }, + { + "name": "storage.modifier.ts", + "match": "(?)" + } + ] + }, + "type-arguments": { + "name": "meta.type.parameters.ts", + "begin": "\\<", + "beginCaptures": { + "0": { + "name": "punctuation.definition.typeparameters.begin.ts" + } + }, + "end": "\\>", + "endCaptures": { + "0": { + "name": "punctuation.definition.typeparameters.end.ts" + } + }, + "patterns": [ + { + "include": "#type-arguments-body" + } + ] + }, + "type-arguments-body": { + "patterns": [ + { + "match": "(?)\n ))\n ))\n)) |\n(:\\s*(?]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?[\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*))))))))", + "captures": { + "1": { + "name": "storage.modifier.ts" + }, + "2": { + "name": "keyword.operator.rest.ts" + }, + "3": { + "name": "entity.name.function.ts variable.language.this.ts" + }, + "4": { + "name": "entity.name.function.ts" + }, + "5": { + "name": "keyword.operator.optional.ts" + } + } + }, + { + "match": "(?x)(?:(?)", + "patterns": [ + { + "include": "#comment" + }, + { + "include": "#type-parameters" + } + ] + }, + { + "name": "meta.type.constructor.ts", + "begin": "(?)\n ))\n )\n )\n)", + "end": "(?<=\\))", + "patterns": [ + { + "include": "#function-parameters" + } + ] + } + ] + }, + "type-function-return-type": { + "patterns": [ + { + "name": "meta.type.function.return.ts", + "begin": "(=>)(?=\\s*\\S)", + "beginCaptures": { + "1": { + "name": "storage.type.function.arrow.ts" + } + }, + "end": "(?)(?:\\?]|//|$)", + "patterns": [ + { + "include": "#type-function-return-type-core" + } + ] + }, + { + "name": "meta.type.function.return.ts", + "begin": "=>", + "beginCaptures": { + "0": { + "name": "storage.type.function.arrow.ts" + } + }, + "end": "(?)(?]|//|^\\s*$)|((?<=\\S)(?=\\s*$)))", + "patterns": [ + { + "include": "#type-function-return-type-core" + } + ] + } + ] + }, + "type-function-return-type-core": { + "patterns": [ + { + "include": "#comment" + }, + { + "begin": "(?<==>)(?=\\s*\\{)", + "end": "(?<=\\})", + "patterns": [ + { + "include": "#type-object" + } + ] + }, + { + "include": "#type-predicate-operator" + }, + { + "include": "#type" + } + ] + }, + "type-operators": { + "patterns": [ + { + "include": "#typeof-operator" + }, + { + "include": "#type-infer" + }, + { + "begin": "([&|])(?=\\s*\\{)", + "beginCaptures": { + "0": { + "name": "keyword.operator.type.ts" + } + }, + "end": "(?<=\\})", + "patterns": [ + { + "include": "#type-object" + } + ] + }, + { + "begin": "[&|]", + "beginCaptures": { + "0": { + "name": "keyword.operator.type.ts" + } + }, + "end": "(?=\\S)" + }, + { + "name": "keyword.operator.expression.keyof.ts", + "match": "(?)", + "endCaptures": { + "1": { + "name": "meta.type.parameters.ts punctuation.definition.typeparameters.end.ts" + } + }, + "contentName": "meta.type.parameters.ts", + "patterns": [ + { + "include": "#type-arguments-body" + } + ] + }, + { + "begin": "([_$[:alpha:]][_$[:alnum:]]*)\\s*(<)", + "beginCaptures": { + "1": { + "name": "entity.name.type.ts" + }, + "2": { + "name": "meta.type.parameters.ts punctuation.definition.typeparameters.begin.ts" + } + }, + "end": "(>)", + "endCaptures": { + "1": { + "name": "meta.type.parameters.ts punctuation.definition.typeparameters.end.ts" + } + }, + "contentName": "meta.type.parameters.ts", + "patterns": [ + { + "include": "#type-arguments-body" + } + ] + }, + { + "match": "([_$[:alpha:]][_$[:alnum:]]*)\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))", + "captures": { + "1": { + "name": "entity.name.type.module.ts" + }, + "2": { + "name": "punctuation.accessor.ts" + }, + "3": { + "name": "punctuation.accessor.optional.ts" + } + } + }, + { + "name": "entity.name.type.ts", + "match": "[_$[:alpha:]][_$[:alnum:]]*" + } + ] + }, + "punctuation-comma": { + "name": "punctuation.separator.comma.ts", + "match": "," + }, + "punctuation-semicolon": { + "name": "punctuation.terminator.statement.ts", + "match": ";" + }, + "punctuation-accessor": { + "match": "(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))", + "captures": { + "1": { + "name": "punctuation.accessor.ts" + }, + "2": { + "name": "punctuation.accessor.optional.ts" + } + } + }, + "string": { + "patterns": [ + { + "include": "#qstring-single" + }, + { + "include": "#qstring-double" + }, + { + "include": "#template" + } + ] + }, + "qstring-double": { + "name": "string.quoted.double.ts", + "begin": "\"", + "beginCaptures": { + "0": { + "name": "punctuation.definition.string.begin.ts" + } + }, + "end": "(\")|((?:[^\\\\\\n])$)", + "endCaptures": { + "1": { + "name": "punctuation.definition.string.end.ts" + }, + "2": { + "name": "invalid.illegal.newline.ts" + } + }, + "patterns": [ + { + "include": "#string-character-escape" + } + ] + }, + "qstring-single": { + "name": "string.quoted.single.ts", + "begin": "'", + "beginCaptures": { + "0": { + "name": "punctuation.definition.string.begin.ts" + } + }, + "end": "(\\')|((?:[^\\\\\\n])$)", + "endCaptures": { + "1": { + "name": "punctuation.definition.string.end.ts" + }, + "2": { + "name": "invalid.illegal.newline.ts" + } + }, + "patterns": [ + { + "include": "#string-character-escape" + } + ] + }, + "string-character-escape": { + "name": "constant.character.escape.ts", + "match": "\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}|u\\{[0-9A-Fa-f]+\\}|[0-2][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.|$)" + }, + "template": { + "patterns": [ + { + "include": "#template-call" + }, + { + "contentName": "string.template.ts", + "begin": "([_$[:alpha:]][_$[:alnum:]]*)?(`)", + "beginCaptures": { + "1": { + "name": "entity.name.function.tagged-template.ts" + }, + "2": { + "name": "string.template.ts punctuation.definition.string.template.begin.ts" + } + }, + "end": "`", + "endCaptures": { + "0": { + "name": "string.template.ts punctuation.definition.string.template.end.ts" + } + }, + "patterns": [ + { + "include": "#template-substitution-element" + }, + { + "include": "#string-character-escape" + } + ] + } + ] + }, + "template-call": { + "patterns": [ + { + "begin": "(?=(([_$[:alpha:]][_$[:alnum:]]*\\s*\\??\\.\\s*)*|(\\??\\.\\s*)?)([_$[:alpha:]][_$[:alnum:]]*)(<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))(([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>)*(?))*(?)*(?\\s*)?`)", + "end": "(?=`)", + "patterns": [ + { + "begin": "(?=(([_$[:alpha:]][_$[:alnum:]]*\\s*\\??\\.\\s*)*|(\\??\\.\\s*)?)([_$[:alpha:]][_$[:alnum:]]*))", + "end": "(?=(<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))(([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>)*(?))*(?)*(?\\s*)?`)", + "patterns": [ + { + "include": "#support-function-call-identifiers" + }, + { + "name": "entity.name.function.tagged-template.ts", + "match": "([_$[:alpha:]][_$[:alnum:]]*)" + } + ] + }, + { + "include": "#type-arguments" + } + ] + }, + { + "begin": "([_$[:alpha:]][_$[:alnum:]]*)?\\s*(?=(<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))(([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>)*(?))*(?)*(?\\s*)`)", + "beginCaptures": { + "1": { + "name": "entity.name.function.tagged-template.ts" + } + }, + "end": "(?=`)", + "patterns": [ + { + "include": "#type-arguments" + } + ] + } + ] + }, + "template-substitution-element": { + "name": "meta.template.expression.ts", + "begin": "\\$\\{", + "beginCaptures": { + "0": { + "name": "punctuation.definition.template-expression.begin.ts" + } + }, + "end": "\\}", + "endCaptures": { + "0": { + "name": "punctuation.definition.template-expression.end.ts" + } + }, + "patterns": [ + { + "include": "#expression" + } + ], + "contentName": "meta.embedded.line.ts" + }, + "type-string": { + "patterns": [ + { + "include": "#qstring-single" + }, + { + "include": "#qstring-double" + }, + { + "include": "#template-type" + } + ] + }, + "template-type": { + "patterns": [ + { + "include": "#template-call" + }, + { + "contentName": "string.template.ts", + "begin": "([_$[:alpha:]][_$[:alnum:]]*)?(`)", + "beginCaptures": { + "1": { + "name": "entity.name.function.tagged-template.ts" + }, + "2": { + "name": "string.template.ts punctuation.definition.string.template.begin.ts" + } + }, + "end": "`", + "endCaptures": { + "0": { + "name": "string.template.ts punctuation.definition.string.template.end.ts" + } + }, + "patterns": [ + { + "include": "#template-type-substitution-element" + }, + { + "include": "#string-character-escape" + } + ] + } + ] + }, + "template-type-substitution-element": { + "name": "meta.template.expression.ts", + "begin": "\\$\\{", + "beginCaptures": { + "0": { + "name": "punctuation.definition.template-expression.begin.ts" + } + }, + "end": "\\}", + "endCaptures": { + "0": { + "name": "punctuation.definition.template-expression.end.ts" + } + }, + "patterns": [ + { + "include": "#type" + } + ], + "contentName": "meta.embedded.line.ts" + }, + "regex": { + "patterns": [ + { + "name": "string.regexp.ts", + "begin": "(?|&&|\\|\\||\\*\\/)\\s*(\\/)(?![\\/*])(?=(?:[^\\/\\\\\\[\\()]|\\\\.|\\[([^\\]\\\\]|\\\\.)+\\]|\\(([^\\)\\\\]|\\\\.)+\\))+\\/([dgimsuvy]+|(?![\\/\\*])|(?=\\/\\*))(?!\\s*[a-zA-Z0-9_$]))", + "beginCaptures": { + "1": { + "name": "punctuation.definition.string.begin.ts" + } + }, + "end": "(/)([dgimsuvy]*)", + "endCaptures": { + "1": { + "name": "punctuation.definition.string.end.ts" + }, + "2": { + "name": "keyword.other.ts" + } + }, + "patterns": [ + { + "include": "#regexp" + } + ] + }, + { + "name": "string.regexp.ts", + "begin": "((?", + "captures": { + "0": { + "name": "keyword.other.back-reference.regexp" + }, + "1": { + "name": "variable.other.regexp" + } + } + }, + { + "name": "keyword.operator.quantifier.regexp", + "match": "[?+*]|\\{(\\d+,\\d+|\\d+,|,\\d+|\\d+)\\}\\??" + }, + { + "name": "keyword.operator.or.regexp", + "match": "\\|" + }, + { + "name": "meta.group.assertion.regexp", + "begin": "(\\()((\\?=)|(\\?!)|(\\?<=)|(\\?))?", + "beginCaptures": { + "0": { + "name": "punctuation.definition.group.regexp" + }, + "1": { + "name": "punctuation.definition.group.no-capture.regexp" + }, + "2": { + "name": "variable.other.regexp" + } + }, + "end": "\\)", + "endCaptures": { + "0": { + "name": "punctuation.definition.group.regexp" + } + }, + "patterns": [ + { + "include": "#regexp" + } + ] + }, + { + "name": "constant.other.character-class.set.regexp", + "begin": "(\\[)(\\^)?", + "beginCaptures": { + "1": { + "name": "punctuation.definition.character-class.regexp" + }, + "2": { + "name": "keyword.operator.negation.regexp" + } + }, + "end": "(\\])", + "endCaptures": { + "1": { + "name": "punctuation.definition.character-class.regexp" + } + }, + "patterns": [ + { + "name": "constant.other.character-class.range.regexp", + "match": "(?:.|(\\\\(?:[0-7]{3}|x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}))|(\\\\c[A-Z])|(\\\\.))\\-(?:[^\\]\\\\]|(\\\\(?:[0-7]{3}|x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}))|(\\\\c[A-Z])|(\\\\.))", + "captures": { + "1": { + "name": "constant.character.numeric.regexp" + }, + "2": { + "name": "constant.character.control.regexp" + }, + "3": { + "name": "constant.character.escape.backslash.regexp" + }, + "4": { + "name": "constant.character.numeric.regexp" + }, + "5": { + "name": "constant.character.control.regexp" + }, + "6": { + "name": "constant.character.escape.backslash.regexp" + } + } + }, + { + "include": "#regex-character-class" + } + ] + }, + { + "include": "#regex-character-class" + } + ] + }, + "regex-character-class": { + "patterns": [ + { + "name": "constant.other.character-class.regexp", + "match": "\\\\[wWsSdDtrnvf]|\\." + }, + { + "name": "constant.character.numeric.regexp", + "match": "\\\\([0-7]{3}|x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4})" + }, + { + "name": "constant.character.control.regexp", + "match": "\\\\c[A-Z]" + }, + { + "name": "constant.character.escape.backslash.regexp", + "match": "\\\\." + } + ] + }, + "comment": { + "patterns": [ + { + "name": "comment.block.documentation.ts", + "begin": "/\\*\\*(?!/)", + "beginCaptures": { + "0": { + "name": "punctuation.definition.comment.ts" + } + }, + "end": "\\*/", + "endCaptures": { + "0": { + "name": "punctuation.definition.comment.ts" + } + }, + "patterns": [ + { + "include": "#docblock" + } + ] + }, + { + "name": "comment.block.ts", + "begin": "(/\\*)(?:\\s*((@)internal)(?=\\s|(\\*/)))?", + "beginCaptures": { + "1": { + "name": "punctuation.definition.comment.ts" + }, + "2": { + "name": "storage.type.internaldeclaration.ts" + }, + "3": { + "name": "punctuation.decorator.internaldeclaration.ts" + } + }, + "end": "\\*/", + "endCaptures": { + "0": { + "name": "punctuation.definition.comment.ts" + } + } + }, + { + "begin": "(^[ \\t]+)?((//)(?:\\s*((@)internal)(?=\\s|$))?)", + "beginCaptures": { + "1": { + "name": "punctuation.whitespace.comment.leading.ts" + }, + "2": { + "name": "comment.line.double-slash.ts" + }, + "3": { + "name": "punctuation.definition.comment.ts" + }, + "4": { + "name": "storage.type.internaldeclaration.ts" + }, + "5": { + "name": "punctuation.decorator.internaldeclaration.ts" + } + }, + "end": "(?=$)", + "contentName": "comment.line.double-slash.ts" + } + ] + }, + "single-line-comment-consuming-line-ending": { + "begin": "(^[ \\t]+)?((//)(?:\\s*((@)internal)(?=\\s|$))?)", + "beginCaptures": { + "1": { + "name": "punctuation.whitespace.comment.leading.ts" + }, + "2": { + "name": "comment.line.double-slash.ts" + }, + "3": { + "name": "punctuation.definition.comment.ts" + }, + "4": { + "name": "storage.type.internaldeclaration.ts" + }, + "5": { + "name": "punctuation.decorator.internaldeclaration.ts" + } + }, + "end": "(?=^)", + "contentName": "comment.line.double-slash.ts" + }, + "directives": { + "name": "comment.line.triple-slash.directive.ts", + "begin": "^(///)\\s*(?=<(reference|amd-dependency|amd-module)(\\s+(path|types|no-default-lib|lib|name|resolution-mode)\\s*=\\s*((\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`)))+\\s*/>\\s*$)", + "beginCaptures": { + "1": { + "name": "punctuation.definition.comment.ts" + } + }, + "end": "(?=$)", + "patterns": [ + { + "name": "meta.tag.ts", + "begin": "(<)(reference|amd-dependency|amd-module)", + "beginCaptures": { + "1": { + "name": "punctuation.definition.tag.directive.ts" + }, + "2": { + "name": "entity.name.tag.directive.ts" + } + }, + "end": "/>", + "endCaptures": { + "0": { + "name": "punctuation.definition.tag.directive.ts" + } + }, + "patterns": [ + { + "name": "entity.other.attribute-name.directive.ts", + "match": "path|types|no-default-lib|lib|name|resolution-mode" + }, + { + "name": "keyword.operator.assignment.ts", + "match": "=" + }, + { + "include": "#string" + } + ] + } + ] + }, + "docblock": { + "patterns": [ + { + "match": "(?x)\n((@)(?:access|api))\n\\s+\n(private|protected|public)\n\\b", + "captures": { + "1": { + "name": "storage.type.class.jsdoc" + }, + "2": { + "name": "punctuation.definition.block.tag.jsdoc" + }, + "3": { + "name": "constant.language.access-type.jsdoc" + } + } + }, + { + "match": "(?x)\n((@)author)\n\\s+\n(\n [^@\\s<>*/]\n (?:[^@<>*/]|\\*[^/])*\n)\n(?:\n \\s*\n (<)\n ([^>\\s]+)\n (>)\n)?", + "captures": { + "1": { + "name": "storage.type.class.jsdoc" + }, + "2": { + "name": "punctuation.definition.block.tag.jsdoc" + }, + "3": { + "name": "entity.name.type.instance.jsdoc" + }, + "4": { + "name": "punctuation.definition.bracket.angle.begin.jsdoc" + }, + "5": { + "name": "constant.other.email.link.underline.jsdoc" + }, + "6": { + "name": "punctuation.definition.bracket.angle.end.jsdoc" + } + } + }, + { + "match": "(?x)\n((@)borrows) \\s+\n((?:[^@\\s*/]|\\*[^/])+) # \n\\s+ (as) \\s+ # as\n((?:[^@\\s*/]|\\*[^/])+) # ", + "captures": { + "1": { + "name": "storage.type.class.jsdoc" + }, + "2": { + "name": "punctuation.definition.block.tag.jsdoc" + }, + "3": { + "name": "entity.name.type.instance.jsdoc" + }, + "4": { + "name": "keyword.operator.control.jsdoc" + }, + "5": { + "name": "entity.name.type.instance.jsdoc" + } + } + }, + { + "name": "meta.example.jsdoc", + "begin": "((@)example)\\s+", + "end": "(?=@|\\*/)", + "beginCaptures": { + "1": { + "name": "storage.type.class.jsdoc" + }, + "2": { + "name": "punctuation.definition.block.tag.jsdoc" + } + }, + "patterns": [ + { + "match": "^\\s\\*\\s+" + }, + { + "contentName": "constant.other.description.jsdoc", + "begin": "\\G(<)caption(>)", + "beginCaptures": { + "0": { + "name": "entity.name.tag.inline.jsdoc" + }, + "1": { + "name": "punctuation.definition.bracket.angle.begin.jsdoc" + }, + "2": { + "name": "punctuation.definition.bracket.angle.end.jsdoc" + } + }, + "end": "()|(?=\\*/)", + "endCaptures": { + "0": { + "name": "entity.name.tag.inline.jsdoc" + }, + "1": { + "name": "punctuation.definition.bracket.angle.begin.jsdoc" + }, + "2": { + "name": "punctuation.definition.bracket.angle.end.jsdoc" + } + } + }, + { + "match": "[^\\s@*](?:[^*]|\\*[^/])*", + "captures": { + "0": { + "name": "source.embedded.ts" + } + } + } + ] + }, + { + "match": "(?x) ((@)kind) \\s+ (class|constant|event|external|file|function|member|mixin|module|namespace|typedef) \\b", + "captures": { + "1": { + "name": "storage.type.class.jsdoc" + }, + "2": { + "name": "punctuation.definition.block.tag.jsdoc" + }, + "3": { + "name": "constant.language.symbol-type.jsdoc" + } + } + }, + { + "match": "(?x)\n((@)see)\n\\s+\n(?:\n # URL\n (\n (?=https?://)\n (?:[^\\s*]|\\*[^/])+\n )\n |\n # JSDoc namepath\n (\n (?!\n # Avoid matching bare URIs (also acceptable as links)\n https?://\n |\n # Avoid matching {@inline tags}; we match those below\n (?:\\[[^\\[\\]]*\\])? # Possible description [preceding]{@tag}\n {@(?:link|linkcode|linkplain|tutorial)\\b\n )\n # Matched namepath\n (?:[^@\\s*/]|\\*[^/])+\n )\n)", + "captures": { + "1": { + "name": "storage.type.class.jsdoc" + }, + "2": { + "name": "punctuation.definition.block.tag.jsdoc" + }, + "3": { + "name": "variable.other.link.underline.jsdoc" + }, + "4": { + "name": "entity.name.type.instance.jsdoc" + } + } + }, + { + "match": "(?x)\n((@)template)\n\\s+\n# One or more valid identifiers\n(\n [A-Za-z_$] # First character: non-numeric word character\n [\\w$.\\[\\]]* # Rest of identifier\n (?: # Possible list of additional identifiers\n \\s* , \\s*\n [A-Za-z_$]\n [\\w$.\\[\\]]*\n )*\n)", + "captures": { + "1": { + "name": "storage.type.class.jsdoc" + }, + "2": { + "name": "punctuation.definition.block.tag.jsdoc" + }, + "3": { + "name": "variable.other.jsdoc" + } + } + }, + { + "begin": "(?x)((@)template)\\s+(?={)", + "beginCaptures": { + "1": { + "name": "storage.type.class.jsdoc" + }, + "2": { + "name": "punctuation.definition.block.tag.jsdoc" + } + }, + "end": "(?=\\s|\\*/|[^{}\\[\\]A-Za-z_$])", + "patterns": [ + { + "include": "#jsdoctype" + }, + { + "name": "variable.other.jsdoc", + "match": "([A-Za-z_$][\\w$.\\[\\]]*)" + } + ] + }, + { + "match": "(?x)\n(\n (@)\n (?:arg|argument|const|constant|member|namespace|param|var)\n)\n\\s+\n(\n [A-Za-z_$]\n [\\w$.\\[\\]]*\n)", + "captures": { + "1": { + "name": "storage.type.class.jsdoc" + }, + "2": { + "name": "punctuation.definition.block.tag.jsdoc" + }, + "3": { + "name": "variable.other.jsdoc" + } + } + }, + { + "begin": "((@)typedef)\\s+(?={)", + "beginCaptures": { + "1": { + "name": "storage.type.class.jsdoc" + }, + "2": { + "name": "punctuation.definition.block.tag.jsdoc" + } + }, + "end": "(?=\\s|\\*/|[^{}\\[\\]A-Za-z_$])", + "patterns": [ + { + "include": "#jsdoctype" + }, + { + "name": "entity.name.type.instance.jsdoc", + "match": "(?:[^@\\s*/]|\\*[^/])+" + } + ] + }, + { + "begin": "((@)(?:arg|argument|const|constant|member|namespace|param|prop|property|var))\\s+(?={)", + "beginCaptures": { + "1": { + "name": "storage.type.class.jsdoc" + }, + "2": { + "name": "punctuation.definition.block.tag.jsdoc" + } + }, + "end": "(?=\\s|\\*/|[^{}\\[\\]A-Za-z_$])", + "patterns": [ + { + "include": "#jsdoctype" + }, + { + "name": "variable.other.jsdoc", + "match": "([A-Za-z_$][\\w$.\\[\\]]*)" + }, + { + "name": "variable.other.jsdoc", + "match": "(?x)\n(\\[)\\s*\n[\\w$]+\n(?:\n (?:\\[\\])? # Foo[ ].bar properties within an array\n \\. # Foo.Bar namespaced parameter\n [\\w$]+\n)*\n(?:\n \\s*\n (=) # [foo=bar] Default parameter value\n \\s*\n (\n # The inner regexes are to stop the match early at */ and to not stop at escaped quotes\n (?>\n \"(?:(?:\\*(?!/))|(?:\\\\(?!\"))|[^*\\\\])*?\" | # [foo=\"bar\"] Double-quoted\n '(?:(?:\\*(?!/))|(?:\\\\(?!'))|[^*\\\\])*?' | # [foo='bar'] Single-quoted\n \\[ (?:(?:\\*(?!/))|[^*])*? \\] | # [foo=[1,2]] Array literal\n (?:(?:\\*(?!/))|\\s(?!\\s*\\])|\\[.*?(?:\\]|(?=\\*/))|[^*\\s\\[\\]])* # Everything else\n )*\n )\n)?\n\\s*(?:(\\])((?:[^*\\s]|\\*[^\\s/])+)?|(?=\\*/))", + "captures": { + "1": { + "name": "punctuation.definition.optional-value.begin.bracket.square.jsdoc" + }, + "2": { + "name": "keyword.operator.assignment.jsdoc" + }, + "3": { + "name": "source.embedded.ts" + }, + "4": { + "name": "punctuation.definition.optional-value.end.bracket.square.jsdoc" + }, + "5": { + "name": "invalid.illegal.syntax.jsdoc" + } + } + } + ] + }, + { + "begin": "(?x)\n(\n (@)\n (?:define|enum|exception|export|extends|lends|implements|modifies\n |namespace|private|protected|returns?|satisfies|suppress|this|throws|type\n |yields?)\n)\n\\s+(?={)", + "beginCaptures": { + "1": { + "name": "storage.type.class.jsdoc" + }, + "2": { + "name": "punctuation.definition.block.tag.jsdoc" + } + }, + "end": "(?=\\s|\\*/|[^{}\\[\\]A-Za-z_$])", + "patterns": [ + { + "include": "#jsdoctype" + } + ] + }, + { + "match": "(?x)\n(\n (@)\n (?:alias|augments|callback|constructs|emits|event|fires|exports?\n |extends|external|function|func|host|lends|listens|interface|memberof!?\n |method|module|mixes|mixin|name|requires|see|this|typedef|uses)\n)\n\\s+\n(\n (?:\n [^{}@\\s*] | \\*[^/]\n )+\n)", + "captures": { + "1": { + "name": "storage.type.class.jsdoc" + }, + "2": { + "name": "punctuation.definition.block.tag.jsdoc" + }, + "3": { + "name": "entity.name.type.instance.jsdoc" + } + } + }, + { + "contentName": "variable.other.jsdoc", + "begin": "((@)(?:default(?:value)?|license|version))\\s+(([''\"]))", + "beginCaptures": { + "1": { + "name": "storage.type.class.jsdoc" + }, + "2": { + "name": "punctuation.definition.block.tag.jsdoc" + }, + "3": { + "name": "variable.other.jsdoc" + }, + "4": { + "name": "punctuation.definition.string.begin.jsdoc" + } + }, + "end": "(\\3)|(?=$|\\*/)", + "endCaptures": { + "0": { + "name": "variable.other.jsdoc" + }, + "1": { + "name": "punctuation.definition.string.end.jsdoc" + } + } + }, + { + "match": "((@)(?:default(?:value)?|license|tutorial|variation|version))\\s+([^\\s*]+)", + "captures": { + "1": { + "name": "storage.type.class.jsdoc" + }, + "2": { + "name": "punctuation.definition.block.tag.jsdoc" + }, + "3": { + "name": "variable.other.jsdoc" + } + } + }, + { + "name": "storage.type.class.jsdoc", + "match": "(?x) (@) (?:abstract|access|alias|api|arg|argument|async|attribute|augments|author|beta|borrows|bubbles |callback|chainable|class|classdesc|code|config|const|constant|constructor|constructs|copyright |default|defaultvalue|define|deprecated|desc|description|dict|emits|enum|event|example|exception |exports?|extends|extension(?:_?for)?|external|externs|file|fileoverview|final|fires|for|func |function|generator|global|hideconstructor|host|ignore|implements|implicitCast|inherit[Dd]oc |inner|instance|interface|internal|kind|lends|license|listens|main|member|memberof!?|method |mixes|mixins?|modifies|module|name|namespace|noalias|nocollapse|nocompile|nosideeffects |override|overview|package|param|polymer(?:Behavior)?|preserve|private|prop|property|protected |public|read[Oo]nly|record|require[ds]|returns?|see|since|static|struct|submodule|summary |suppress|template|this|throws|todo|tutorial|type|typedef|unrestricted|uses|var|variation |version|virtual|writeOnce|yields?) \\b", + "captures": { + "1": { + "name": "punctuation.definition.block.tag.jsdoc" + } + } + }, + { + "include": "#inline-tags" + }, + { + "match": "((@)(?:[_$[:alpha:]][_$[:alnum:]]*))(?=\\s+)", + "captures": { + "1": { + "name": "storage.type.class.jsdoc" + }, + "2": { + "name": "punctuation.definition.block.tag.jsdoc" + } + } + } + ] + }, + "brackets": { + "patterns": [ + { + "begin": "{", + "end": "}|(?=\\*/)", + "patterns": [ + { + "include": "#brackets" + } + ] + }, + { + "begin": "\\[", + "end": "\\]|(?=\\*/)", + "patterns": [ + { + "include": "#brackets" + } + ] + } + ] + }, + "inline-tags": { + "patterns": [ + { + "name": "constant.other.description.jsdoc", + "match": "(\\[)[^\\]]+(\\])(?={@(?:link|linkcode|linkplain|tutorial))", + "captures": { + "1": { + "name": "punctuation.definition.bracket.square.begin.jsdoc" + }, + "2": { + "name": "punctuation.definition.bracket.square.end.jsdoc" + } + } + }, + { + "name": "entity.name.type.instance.jsdoc", + "begin": "({)((@)(?:link(?:code|plain)?|tutorial))\\s*", + "beginCaptures": { + "1": { + "name": "punctuation.definition.bracket.curly.begin.jsdoc" + }, + "2": { + "name": "storage.type.class.jsdoc" + }, + "3": { + "name": "punctuation.definition.inline.tag.jsdoc" + } + }, + "end": "}|(?=\\*/)", + "endCaptures": { + "0": { + "name": "punctuation.definition.bracket.curly.end.jsdoc" + } + }, + "patterns": [ + { + "match": "\\G((?=https?://)(?:[^|}\\s*]|\\*[/])+)(\\|)?", + "captures": { + "1": { + "name": "variable.other.link.underline.jsdoc" + }, + "2": { + "name": "punctuation.separator.pipe.jsdoc" + } + } + }, + { + "match": "\\G((?:[^{}@\\s|*]|\\*[^/])+)(\\|)?", + "captures": { + "1": { + "name": "variable.other.description.jsdoc" + }, + "2": { + "name": "punctuation.separator.pipe.jsdoc" + } + } + } + ] + } + ] + }, + "jsdoctype": { + "patterns": [ + { + "name": "invalid.illegal.type.jsdoc", + "match": "\\G{(?:[^}*]|\\*[^/}])+$" + }, + { + "contentName": "entity.name.type.instance.jsdoc", + "begin": "\\G({)", + "beginCaptures": { + "0": { + "name": "entity.name.type.instance.jsdoc" + }, + "1": { + "name": "punctuation.definition.bracket.curly.begin.jsdoc" + } + }, + "end": "((}))\\s*|(?=\\*/)", + "endCaptures": { + "1": { + "name": "entity.name.type.instance.jsdoc" + }, + "2": { + "name": "punctuation.definition.bracket.curly.end.jsdoc" + } + }, + "patterns": [ + { + "include": "#brackets" + } + ] + } + ] + } + } +} \ No newline at end of file diff --git a/src/components/editor/utils/worker.d.ts b/src/components/editor/utils/worker.d.ts new file mode 100644 index 0000000..d292a18 --- /dev/null +++ b/src/components/editor/utils/worker.d.ts @@ -0,0 +1,13 @@ +declare module 'monaco-editor/esm/vs/language/typescript/ts.worker' { + import type typescript from 'typescript' + + export class TypeScriptWorker { + constructor(ctx: any, createData: any) + getCompilationSettings(): ts.CompilerOptions + getLanguageService(): ts.LanguageService + getSyntacticDiagnostics(fileName: string): Promise + } + + export function initialize(callback: (ctx: any, createData: any) => TypeScriptWorker): void + export const ts: { typescript: typeof typescript } +} diff --git a/src/components/login/Login.tsx b/src/components/login/Login.tsx new file mode 100644 index 0000000..21c6b9c --- /dev/null +++ b/src/components/login/Login.tsx @@ -0,0 +1,547 @@ +import type { BaseTelegramClient, SentCode, User } from '@mtcute/web' +import { base64 } from '@fuman/utils' +import { tl } from '@mtcute/web' +import { checkPassword, downloadAsBuffer, resendCode, sendCode, signIn, signInQr } from '@mtcute/web/methods.js' +import { LucideChevronRight } from 'lucide-solid' +import { createEffect, createSignal, For, Match, onCleanup, onMount, Show, Switch } from 'solid-js' +import { renderSVG } from 'uqr' +import { Avatar, AvatarFallback, AvatarImage, makeAvatarFallbackText } from '../../lib/components/ui/avatar.tsx' +import { Button } from '../../lib/components/ui/button.tsx' +import { OTPField, OTPFieldGroup, OTPFieldInput, OTPFieldSlot } from '../../lib/components/ui/otp-field.tsx' +import { Spinner } from '../../lib/components/ui/spinner.tsx' +import { TextField, TextFieldErrorMessage, TextFieldFrame, TextFieldLabel, TextFieldRoot } from '../../lib/components/ui/text-field.tsx' +import { TransitionSlideLtr } from '../../lib/components/ui/transition.tsx' +import { cn } from '../../lib/utils.ts' +import { PhoneInput } from './PhoneInput.tsx' + +export type LoginStep = + | 'qr' + | 'phone' + | 'otp' + | 'password' + | 'done' +export interface StepContext { + qr: void + phone: void + otp: { + phone: string + code: SentCode + } + password: void + done: { user: User } +} + +type StepProps = { + client: BaseTelegramClient + setStep: (step: T, data?: StepContext[T]) => void +} & (StepContext[T] extends void ? {} : { ctx: StepContext[T] }) + +function QrLoginStep(props: StepProps<'qr'>) { + const [qr, setQr] = createSignal('') + const [finalizing, setFinalizing] = createSignal(false) + const abortController = new AbortController() + + onMount(() => { + signInQr(props.client, { + abortSignal: abortController.signal, + onUrlUpdated: qr => setQr(renderSVG(qr)), + onQrScanned: () => setFinalizing(true), + }).then((user) => { + props.setStep('done', { user }) + }).catch((e) => { + setFinalizing(false) + if (tl.RpcError.is(e, 'SESSION_PASSWORD_NEEDED')) { + props.setStep('password') + } else if (abortController.signal.aborted) { + // ignore + } else { + throw e + } + }) + }) + onCleanup(() => abortController.abort()) + + return ( +
+

+ Log in with QR code +

+
+ {qr() ? ( +
+ ) : } +
+
    +
  1. Open Telegram on your phone
  2. +
  3. + Go to + {' '} + Settings > Devices > Link Desktop Device +
  4. +
  5. Point your phone at this screen to confirm login
  6. +
+ + +
+ ) +} + +function PhoneNumberStep(props: StepProps<'phone'>) { + const [phone, setPhone] = createSignal('') + const [error, setError] = createSignal() + const [loading, setLoading] = createSignal(false) + const [inputRef, setInputRef] = createSignal() + + const abortController = new AbortController() + const handleSubmit = () => { + setError(undefined) + setLoading(true) + sendCode(props.client, { + phone: phone(), + abortSignal: abortController.signal, + }).then((code) => { + setLoading(false) + props.setStep('otp', { + code, + phone: phone(), + }) + }).catch((e) => { + setLoading(false) + if (abortController.signal.aborted) { + // ignore + } else { + setError(e.message) + } + }) + } + onCleanup(() => abortController.abort()) + createEffect(() => inputRef()?.focus()) + + return ( +
+
+ mtcute logo +

+ Log in with phone number +

+
+ Please confirm your country code +
+ and enter your phone number +
+ + + Phone +
+ + +
+ {error()} +
+ + ) +} + +function OtpStep(props: StepProps<'otp'>) { + const [otp, setOtp] = createSignal('') + const [error, setError] = createSignal() + const [loading, setLoading] = createSignal(false) + const [countdown, setCountdown] = createSignal(0) + const [inputRef, setInputRef] = createSignal() + + const abortController = new AbortController() + const handleSubmit = () => { + setError(undefined) + setLoading(true) + signIn(props.client, { + phone: props.ctx.phone, + phoneCodeHash: props.ctx.code.phoneCodeHash, + phoneCode: otp(), + abortSignal: abortController.signal, + }).then((user) => { + setLoading(false) + props.setStep('done', { user }) + }).catch((e) => { + setLoading(false) + if (abortController.signal.aborted) { + // ignore + } else if (tl.RpcError.is(e, 'SESSION_PASSWORD_NEEDED')) { + props.setStep('password') + } else { + setError(e.message) + } + }) + } + const handleResend = () => { + setError(undefined) + setLoading(true) + resendCode(props.client, { + phone: props.ctx.phone, + phoneCodeHash: props.ctx.code.phoneCodeHash, + abortSignal: abortController.signal, + }).then((code) => { + setLoading(false) + props.setStep('otp', { + code, + phone: props.ctx.phone, + }) + }).catch((e) => { + setLoading(false) + if (abortController.signal.aborted) { + // ignore + } else { + setError(e.message) + } + }) + } + const handleSetOtp = (otp: string) => { + setOtp(otp) + if (otp.length === props.ctx.code.length) { + handleSubmit() + } + } + onCleanup(() => abortController.abort()) + + onMount(() => { + setCountdown(props.ctx.code.timeout) + const interval = setInterval(() => { + setCountdown(countdown() - 1) + if (countdown() <= 0) { + clearInterval(interval) + setCountdown(0) + } + }, 1000) + onCleanup(() => clearInterval(interval)) + }) + createEffect(() => inputRef()?.focus()) + + const description = () => { + switch (props.ctx.code.type) { + case 'app': + return 'We have sent you a one-time code to your Telegram app' + case 'sms': + case 'sms_word': + case 'sms_phrase': + return 'We have sent you a one-time code to your phone' + case 'fragment': + return 'We have sent you a one-time code to your Fragment anonymous number' + case 'call': + return 'We are calling you to dictate your one-time code' + case 'flash_call': + case 'missed_call': + return `We are calling you, put the last ${props.ctx.code.length} digits of the number we're calling you from` + case 'email': + return 'We have sent you an email with a one-time code' + case 'email_required': + return 'Email setup is required, please do it in your Telegram app' + default: + return `Unknown code type: ${props.ctx.code.type}` + } + } + + return ( +
+

+ {props.ctx.phone} +

+
props.setStep('phone')} + > + Wrong number? +
+ +
+ {description()} +
+
+ + + setOtp(e.currentTarget.value)} + onKeyPress={(e) => { + if (e.key === 'Enter') { + handleSubmit() + } + }} + ref={setInputRef} + /> + + {error()} + + )} + > + + { + if (e.key === 'Enter') { + handleSubmit() + } + }} + /> + + + {(_, i) => ( + + )} + + + + {error() && ( +
+ {error()} +
+ )} +
+ +
+ + +
+
+
+ ) +} + +function PasswordStep(props: StepProps<'password'>) { + const [password, setPassword] = createSignal('') + const [error, setError] = createSignal() + const [loading, setLoading] = createSignal(false) + const [inputRef, setInputRef] = createSignal() + + // todo abort controller + const handleSubmit = () => { + if (!password()) { + setError('Password is required') + return + } + + setError(undefined) + setLoading(true) + checkPassword(props.client, password()) + .then((user) => { + setLoading(false) + props.setStep('done', { user }) + }) + .catch((e) => { + setLoading(false) + if (tl.RpcError.is(e, 'PASSWORD_HASH_INVALID')) { + setError('Incorrect password') + } else { + setError(e.message) + } + }) + } + createEffect(() => inputRef()?.focus()) + + return ( +
+

+ 2FA password +

+
+ Your account is protected with an additional password. +
+
+ + Password + + setPassword(e.currentTarget.value)} + disabled={loading()} + ref={setInputRef} + onKeyPress={(e) => { + if (e.key === 'Enter') { + handleSubmit() + } + }} + /> + + {error()} + + +
+ +
+
+
+ ) +} + +function DoneStep(props: StepProps<'done'>) { + const [avatar, setAvatar] = createSignal(null) + + onMount(() => { + if (!props.ctx.user.photo) { + props.client.close() + return + } + + downloadAsBuffer(props.client, props.ctx.user.photo.big) + .then((buf) => { + const url = URL.createObjectURL(new Blob([buf], { type: 'image/jpeg' })) + setAvatar(url) + }) + .catch((e) => { + console.error(e) + }) + }) + + onCleanup(() => { + if (avatar()) { + URL.revokeObjectURL(avatar()!) + } + }) + + return ( +
+ + {props.ctx.user.photo && ( + <> + {avatar() && } + + + )} + + {makeAvatarFallbackText(props.ctx.user.displayName)} + + +
+ Welcome, + {' '} + {props.ctx.user.displayName} + ! +
+
+ ) +} + +export function LoginForm(props: { + class?: string + client: BaseTelegramClient + onStepChange?: (step: LoginStep, ctx: Partial) => void +}) { + const [step, setStep] = createSignal('qr') + const [ctx, setCtx] = createSignal>({}) + + const setStepWithCtx = (step: T, data?: StepContext[T]) => { + setCtx(ctx => ({ ...ctx, [step]: data })) + setStep(step as LoginStep) + props.onStepChange?.(step, ctx()) + } + + return ( +
+ + + + + + + + + + + + + + + + + + + +
+ ) +} diff --git a/src/components/login/PhoneInput.tsx b/src/components/login/PhoneInput.tsx new file mode 100644 index 0000000..e4c92a2 --- /dev/null +++ b/src/components/login/PhoneInput.tsx @@ -0,0 +1,193 @@ +import type { BaseTelegramClient, tl } from '@mtcute/web' + +import { assert } from '@fuman/utils' +import { createSignal, onMount, Show } from 'solid-js' +import { CountryIcon } from '../../lib/components/country-icon.tsx' +import { TextField, TextFieldFrame } from '../../lib/components/ui/text-field.tsx' +import { cn } from '../../lib/utils.ts' + +interface ChosenCode { + patterns?: string[] + countryCode: string + iso2: string +} + +function mapCountryCode(country: tl.help.RawCountry, code: tl.help.RawCountryCode): ChosenCode { + return { + patterns: code.patterns, + countryCode: code.countryCode, + iso2: country.iso2, + } +} + +interface PhoneInputProps { + class?: string + phone?: string + onChange?: (phone: string) => void + onSubmit?: () => void + client: BaseTelegramClient + disabled?: boolean + ref?: (el: HTMLInputElement) => void +} + +export function PhoneInput(props: PhoneInputProps) { + const [countriesList, setCountriesList] = createSignal([]) + const [chosenCode, setChosenCode] = createSignal() + const [inputValue, setInputValue] = createSignal('+') + + onMount(() => { + Promise.all([ + props.client.call({ _: 'help.getCountriesList', langCode: 'en', hash: 0 }), + props.client.call({ _: 'help.getNearestDc' }), + ]).then(([countriesList, nearestDc]) => { + assert(countriesList._ === 'help.countriesList') // todo caching + setCountriesList(countriesList.countries) + + if (inputValue() === '+') { + // guess the country code + for (const country of countriesList.countries) { + if (country.iso2 === nearestDc.country.toUpperCase()) { + setChosenCode(mapCountryCode(country, country.countryCodes[0])) + setInputValue(`+${country.countryCodes[0].countryCode} `) + break + } + } + } + }) + }) + + const handleInput = (e: InputEvent) => { + const el = e.currentTarget as HTMLInputElement + const value = el.value + + if (value === '' || value === '+') { + // country code was removed + setInputValue('+') + el.value = '+' + setChosenCode(undefined) + props.onChange?.('') + return + } else { + setInputValue(value) + } + + // try to find matching country code + // first sanitize input + const rawPhone = value.slice(1).replace(/\D/g, '') + el.value = `+${value.replace(/[^\d ]/g, '')}` + + // pass 1: find matching countries by country code + const matching: [tl.help.RawCountry, tl.help.RawCountryCode][] = [] + let hasPrefixes = false + + for (const country of countriesList()) { + for (const code of country.countryCodes) { + if (rawPhone.startsWith(code.countryCode)) { + matching.push([country, code]) + } + if (code.prefixes) { + hasPrefixes = true + } + } + } + + let chosenCode: ChosenCode | undefined + + // if we have a prefix in some of the items, try to find matching countries by prefix + // (e.g. russia: +7, kazakhstan: +77) + if (hasPrefixes && matching.length > 1) { + // 1: find a match without a prefix + let match = matching.find(it => it[1].prefixes === undefined) + // 2: try to refine the match by prefix + let foundByPrefix = false + for (const item of matching) { + const code = item[1] + + if (code.prefixes === undefined) continue + for (const prefix of code.prefixes) { + const fullPrefix = code.countryCode + prefix + if (rawPhone.startsWith(fullPrefix)) { + match = item + foundByPrefix = true + break + } + } + } + + // 3: if we couldnt refine and the country code is the same as countryCode, do nothing + if (!foundByPrefix && match && match[1].countryCode === rawPhone) { + match = undefined + } + + chosenCode = match ? mapCountryCode(match[0], match[1]) : undefined + } else if (matching.length === 1) { + chosenCode = mapCountryCode(matching[0][0], matching[0][1]) + } + + setChosenCode(chosenCode) + props.onChange?.(rawPhone) + + if (chosenCode && chosenCode.patterns) { + // format the number + const numberWithoutCode = rawPhone.slice(chosenCode.countryCode.length) + + for (const pattern of chosenCode.patterns) { + let numberIdx = 0 + let formatted = '' + for (let i = 0; i < pattern.length; i++) { + const patternChar = pattern[i] + const numberChar = numberWithoutCode[numberIdx] + if (numberChar === undefined) break + + if (patternChar.match(/\d/)) { + // these patterns are not supported (yet?) + break + } else if (patternChar === ' ') { + formatted += '-' + } else if (patternChar === 'X') { + formatted += numberChar + numberIdx++ + } else { + console.warn('Unexpected pattern char %s in %s', patternChar, pattern) + break + } + } + + if (formatted && numberIdx === numberWithoutCode.length) { + el.value = `+${chosenCode.countryCode} ${formatted}` + break + } + } + } + } + + const handleKeyPress = (e: KeyboardEvent) => { + if (e.key === 'Enter' && chosenCode() !== undefined) { + props.onSubmit?.() + } + } + + return ( + + + 🏳️ +
+ )} + > + + + + + ) +} diff --git a/src/components/nav/NavbarMenu.tsx b/src/components/nav/NavbarMenu.tsx new file mode 100644 index 0000000..7b3cec9 --- /dev/null +++ b/src/components/nav/NavbarMenu.tsx @@ -0,0 +1,98 @@ +import type { DropdownMenuTriggerProps } from '@kobalte/core/dropdown-menu' +import { ChevronDownIcon, ExternalLinkIcon, LucideCheck, SettingsIcon, UsersIcon } from 'lucide-solid' +import { SiGithub } from 'solid-icons/si' +import { For } from 'solid-js' +import { Button } from '../../lib/components/ui/button.tsx' +import { + DropdownMenu, + DropdownMenuContent, + DropdownMenuGroup, + DropdownMenuGroupLabel, + DropdownMenuItem, + DropdownMenuSeparator, + DropdownMenuTrigger, +} from '../../lib/components/ui/dropdown-menu.tsx' +import { cn } from '../../lib/utils.ts' +import { $accounts, $activeAccount, $activeAccountId } from '../../store/accounts.ts' +import { useStore } from '../../store/use-store.ts' +import { AccountAvatar } from '../AccountAvatar.tsx' + +export function NavbarMenu(props: { + onShowAccounts: () => void + onShowSettings: () => void +}) { + const activeAccount = useStore($activeAccount) + const accounts = useStore($accounts) + + return ( + + ( + + )} + /> + + + Accounts + + {account => ( + $activeAccountId.set(account.id)}> + + + {account.name} + + {account.id === activeAccount()?.id && } + + )} + + + + Manage accounts + + + + + + + Settings + + + + GitHub + + + + + + ) +} diff --git a/src/components/runner/Actions.tsx b/src/components/runner/Actions.tsx new file mode 100644 index 0000000..7cdfef2 --- /dev/null +++ b/src/components/runner/Actions.tsx @@ -0,0 +1,19 @@ +import { createSignal } from 'solid-js' + +export function Actions(props: { + class?: string + devtoolsIframe: HTMLIFrameElement | undefined +}) { + const [running, setRunning] = createSignal(false) + + return ( +
+ + {/*