From 25191d1515a2b0774102c65712884cf460802405 Mon Sep 17 00:00:00 2001 From: AyloSrd <63412199+AyloSrd@users.noreply.github.com> Date: Sun, 1 Oct 2023 01:32:39 +0200 Subject: [PATCH 1/5] rp - upgraded deps and started working on ts --- package.json | 49 +- pnpm-lock.yaml | 687 ++++++++++++++--------------- src/components/editor/Editor.tsx | 18 +- src/hooks/editor/ata/apis.ts | 82 ++++ src/hooks/editor/ata/edgeCases.ts | 70 +++ src/hooks/editor/ata/index.ts | 299 +++++++++++++ src/hooks/editor/useTSServer.ts | 79 ++++ src/hooks/playground/useEsbuild.ts | 8 +- src/tools/tsserver-tools.ts | 84 ++++ src/workers/tsServer.worker.ts | 99 +++++ 10 files changed, 1090 insertions(+), 385 deletions(-) create mode 100644 src/hooks/editor/ata/apis.ts create mode 100644 src/hooks/editor/ata/edgeCases.ts create mode 100644 src/hooks/editor/ata/index.ts create mode 100644 src/hooks/editor/useTSServer.ts create mode 100644 src/tools/tsserver-tools.ts create mode 100644 src/workers/tsServer.worker.ts diff --git a/package.json b/package.json index 701f9bd..387e396 100644 --- a/package.json +++ b/package.json @@ -8,42 +8,43 @@ "preview": "vite preview" }, "dependencies": { - "@codemirror/autocomplete": "^6.1.0", - "@codemirror/lang-css": "^6.1.1", - "@codemirror/lang-javascript": "^6.0.2", - "@codemirror/view": "^6.9.3", - "@lezer/highlight": "^1.1.4", - "@stackblitz/sdk": "^1.8.0", - "@uiw/codemirror-themes": "^4.11.5", - "@uiw/react-codemirror": "^4.19.11", + "@codemirror/autocomplete": "^6.9.1", + "@codemirror/lang-css": "^6.2.1", + "@codemirror/lang-javascript": "^6.2.1", + "@codemirror/view": "^6.19.0", + "@lezer/highlight": "^1.1.6", + "@stackblitz/sdk": "^1.9.0", + "@typescript/vfs": "^1.5.0", + "@uiw/codemirror-themes": "^4.21.13", + "@uiw/react-codemirror": "^4.21.13", "axios": "^0.26.1", "code-mirror-themes": "^1.0.0", - "codemirror": "^5.65.2", - "console-feed": "^3.4.0", + "codemirror": "^5.65.15", + "console-feed": "^3.5.0", "dedent": "^0.7.0", "esbuild-wasm": "^0.14.54", - "evento-react": "*", - "jszip": "^3.10.0", + "evento-react": "^0.2.2", + "jszip": "^3.10.1", "localforage": "^1.10.0", - "lz-string": "^1.4.4", + "lz-string": "^1.5.0", "react": "^18.2.0", "react-codemirror2": "^7.2.1", "react-dom": "^18.2.0", "react-is": "^18.2.0", - "styled-components": "^5.3.5" + "styled-components": "^5.3.11" }, "devDependencies": { "@rollup/plugin-alias": "^3.1.9", - "@types/codemirror": "^5.60.5", + "@types/codemirror": "^5.60.10", "@types/dedent": "^0.7.0", - "@types/linkifyjs": "^2.1.4", - "@types/lz-string": "^1.3.34", - "@types/node": "^18.6.4", - "@types/react": "^18.0.17", - "@types/react-dom": "^18.0.6", - "@types/styled-components": "^5.1.25", - "@vitejs/plugin-react": "^2.0.1", - "typescript": "^4.5.4", - "vite": "^3.0.7" + "@types/linkifyjs": "^2.1.5", + "@types/lz-string": "^1.5.0", + "@types/node": "^18.17.17", + "@types/react": "^18.2.21", + "@types/react-dom": "^18.2.7", + "@types/styled-components": "^5.1.27", + "@vitejs/plugin-react": "^2.2.0", + "typescript": "^4.9.5", + "vite": "^3.2.7" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index e2618de..12ccc23 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1,217 +1,180 @@ -lockfileVersion: '6.0' - -settings: - autoInstallPeers: true - excludeLinksFromLockfile: false +lockfileVersion: 5.4 + +specifiers: + '@codemirror/autocomplete': ^6.1.0 + '@codemirror/lang-css': ^6.1.1 + '@codemirror/lang-javascript': ^6.0.2 + '@codemirror/view': ^6.9.3 + '@lezer/highlight': ^1.1.4 + '@rollup/plugin-alias': ^3.1.9 + '@stackblitz/sdk': ^1.8.0 + '@types/codemirror': ^5.60.5 + '@types/dedent': ^0.7.0 + '@types/linkifyjs': ^2.1.4 + '@types/lz-string': ^1.3.34 + '@types/node': ^18.6.4 + '@types/react': ^18.0.17 + '@types/react-dom': ^18.0.6 + '@types/styled-components': ^5.1.25 + '@uiw/codemirror-themes': ^4.11.5 + '@uiw/react-codemirror': ^4.19.11 + '@vitejs/plugin-react': ^2.0.1 + axios: ^0.26.1 + code-mirror-themes: ^1.0.0 + codemirror: ^5.65.2 + console-feed: ^3.4.0 + dedent: ^0.7.0 + esbuild-wasm: ^0.14.54 + evento-react: '*' + jszip: ^3.10.0 + localforage: ^1.10.0 + lz-string: ^1.4.4 + react: ^18.2.0 + react-codemirror2: ^7.2.1 + react-dom: ^18.2.0 + react-is: ^18.2.0 + styled-components: ^5.3.5 + typescript: ^4.5.4 + vite: ^3.0.7 dependencies: - '@codemirror/autocomplete': - specifier: ^6.1.0 - version: 6.4.2(@codemirror/language@6.6.0)(@codemirror/state@6.2.0)(@codemirror/view@6.9.3)(@lezer/common@1.0.2) - '@codemirror/lang-css': - specifier: ^6.1.1 - version: 6.1.1(@codemirror/view@6.9.3)(@lezer/common@1.0.2) - '@codemirror/lang-javascript': - specifier: ^6.0.2 - version: 6.1.4 - '@codemirror/view': - specifier: ^6.9.3 - version: 6.9.3 - '@lezer/highlight': - specifier: ^1.1.4 - version: 1.1.4 - '@stackblitz/sdk': - specifier: ^1.8.0 - version: 1.8.2 - '@uiw/codemirror-themes': - specifier: ^4.11.5 - version: 4.19.11(@codemirror/language@6.6.0)(@codemirror/state@6.2.0)(@codemirror/view@6.9.3) - '@uiw/react-codemirror': - specifier: ^4.19.11 - version: 4.19.11(@babel/runtime@7.21.0)(@codemirror/autocomplete@6.4.2)(@codemirror/language@6.6.0)(@codemirror/lint@6.2.0)(@codemirror/search@6.3.0)(@codemirror/state@6.2.0)(@codemirror/theme-one-dark@6.1.1)(@codemirror/view@6.9.3)(codemirror@5.65.12)(react-dom@18.2.0)(react@18.2.0) - axios: - specifier: ^0.26.1 - version: 0.26.1 - code-mirror-themes: - specifier: ^1.0.0 - version: 1.0.0 - codemirror: - specifier: ^5.65.2 - version: 5.65.12 - console-feed: - specifier: ^3.4.0 - version: 3.4.5(jquery@3.7.1)(react-dom@18.2.0)(react@18.2.0) - dedent: - specifier: ^0.7.0 - version: 0.7.0 - esbuild-wasm: - specifier: ^0.14.54 - version: 0.14.54 - evento-react: - specifier: '*' - version: 0.2.2(react@18.2.0) - jszip: - specifier: ^3.10.0 - version: 3.10.1 - localforage: - specifier: ^1.10.0 - version: 1.10.0 - lz-string: - specifier: ^1.4.4 - version: 1.5.0 - react: - specifier: ^18.2.0 - version: 18.2.0 - react-codemirror2: - specifier: ^7.2.1 - version: 7.2.1(codemirror@5.65.12)(react@18.2.0) - react-dom: - specifier: ^18.2.0 - version: 18.2.0(react@18.2.0) - react-is: - specifier: ^18.2.0 - version: 18.2.0 - styled-components: - specifier: ^5.3.5 - version: 5.3.9(react-dom@18.2.0)(react-is@18.2.0)(react@18.2.0) + '@codemirror/autocomplete': 6.4.2 + '@codemirror/lang-css': 6.1.1 + '@codemirror/lang-javascript': 6.1.4 + '@codemirror/view': 6.9.3 + '@lezer/highlight': 1.1.4 + '@stackblitz/sdk': 1.8.2 + '@uiw/codemirror-themes': 4.19.11 + '@uiw/react-codemirror': 4.19.11_fcfoxczgl3bih2inr776zkfwzu + axios: 0.26.1 + code-mirror-themes: 1.0.0 + codemirror: 5.65.12 + console-feed: 3.4.5_biqbaboplfbrettd7655fr4n2y + dedent: 0.7.0 + esbuild-wasm: 0.14.54 + evento-react: 0.2.2_react@18.2.0 + jszip: 3.10.1 + localforage: 1.10.0 + lz-string: 1.5.0 + react: 18.2.0 + react-codemirror2: 7.2.1_6rbpxrfnogqidakyklns6o2334 + react-dom: 18.2.0_react@18.2.0 + react-is: 18.2.0 + styled-components: 5.3.9_7i5myeigehqah43i5u7wbekgba devDependencies: - '@rollup/plugin-alias': - specifier: ^3.1.9 - version: 3.1.9(rollup@2.79.1) - '@types/codemirror': - specifier: ^5.60.5 - version: 5.60.7 - '@types/dedent': - specifier: ^0.7.0 - version: 0.7.0 - '@types/linkifyjs': - specifier: ^2.1.4 - version: 2.1.4 - '@types/lz-string': - specifier: ^1.3.34 - version: 1.5.0 - '@types/node': - specifier: ^18.6.4 - version: 18.15.11 - '@types/react': - specifier: ^18.0.17 - version: 18.0.31 - '@types/react-dom': - specifier: ^18.0.6 - version: 18.0.11 - '@types/styled-components': - specifier: ^5.1.25 - version: 5.1.26 - '@vitejs/plugin-react': - specifier: ^2.0.1 - version: 2.2.0(vite@3.2.5) - typescript: - specifier: ^4.5.4 - version: 4.9.5 - vite: - specifier: ^3.0.7 - version: 3.2.5(@types/node@18.15.11) + '@rollup/plugin-alias': 3.1.9 + '@types/codemirror': 5.60.7 + '@types/dedent': 0.7.0 + '@types/linkifyjs': 2.1.4 + '@types/lz-string': 1.5.0 + '@types/node': 18.15.11 + '@types/react': 18.0.31 + '@types/react-dom': 18.0.11 + '@types/styled-components': 5.1.26 + '@vitejs/plugin-react': 2.2.0_vite@3.2.5 + typescript: 4.9.5 + vite: 3.2.5_@types+node@18.15.11 packages: - /@ampproject/remapping@2.2.0: + /@ampproject/remapping/2.2.0: resolution: {integrity: sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==} engines: {node: '>=6.0.0'} dependencies: - '@jridgewell/gen-mapping': 0.1.1 - '@jridgewell/trace-mapping': 0.3.17 + '@jridgewell/gen-mapping': 0.3.3 + '@jridgewell/trace-mapping': 0.3.19 dev: true - /@babel/code-frame@7.21.4: + /@babel/code-frame/7.21.4: resolution: {integrity: sha512-LYvhNKfwWSPpocw8GI7gpK2nq3HSDuEPC/uSYaALSJu9xjsalaaYFOq0Pwt5KmVqwEbZlDu81aLXwBOmD/Fv9g==} engines: {node: '>=6.9.0'} dependencies: - '@babel/highlight': 7.18.6 + '@babel/highlight': 7.22.13 + chalk: 2.4.2 - /@babel/compat-data@7.21.4: + /@babel/compat-data/7.21.4: resolution: {integrity: sha512-/DYyDpeCfaVinT40FPGdkkb+lYSKvsVuMjDAG7jPOWWiM1ibOaB9CXJAlc4d1QpP/U2q2P9jbrSlClKSErd55g==} engines: {node: '>=6.9.0'} dev: true - /@babel/core@7.21.4: + /@babel/core/7.21.4: resolution: {integrity: sha512-qt/YV149Jman/6AfmlxJ04LMIu8bMoyl3RB91yTFrxQmgbrSvQMy7cI8Q62FHx1t8wJ8B5fu0UDoLwHAhUo1QA==} engines: {node: '>=6.9.0'} dependencies: '@ampproject/remapping': 2.2.0 '@babel/code-frame': 7.21.4 '@babel/generator': 7.21.4 - '@babel/helper-compilation-targets': 7.21.4(@babel/core@7.21.4) + '@babel/helper-compilation-targets': 7.21.4_@babel+core@7.21.4 '@babel/helper-module-transforms': 7.21.2 '@babel/helpers': 7.21.0 '@babel/parser': 7.21.4 '@babel/template': 7.20.7 - '@babel/traverse': 7.21.4(supports-color@5.5.0) + '@babel/traverse': 7.21.4 '@babel/types': 7.21.4 convert-source-map: 1.9.0 debug: 4.3.4(supports-color@5.5.0) gensync: 1.0.0-beta.2 json5: 2.2.3 - semver: 6.3.0 + semver: 6.3.1 transitivePeerDependencies: - supports-color dev: true - /@babel/generator@7.21.4: + /@babel/generator/7.21.4: resolution: {integrity: sha512-NieM3pVIYW2SwGzKoqfPrQsf4xGs9M9AIG3ThppsSRmO+m7eQhmI6amajKMUeIO37wFfsvnvcxQFx6x6iqxDnA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.21.4 - '@jridgewell/gen-mapping': 0.3.2 - '@jridgewell/trace-mapping': 0.3.17 + '@babel/types': 7.22.19 + '@jridgewell/gen-mapping': 0.3.3 + '@jridgewell/trace-mapping': 0.3.19 jsesc: 2.5.2 - /@babel/helper-annotate-as-pure@7.18.6: + /@babel/helper-annotate-as-pure/7.18.6: resolution: {integrity: sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.21.4 + '@babel/types': 7.22.19 - /@babel/helper-compilation-targets@7.21.4(@babel/core@7.21.4): + /@babel/helper-compilation-targets/7.21.4_@babel+core@7.21.4: resolution: {integrity: sha512-Fa0tTuOXZ1iL8IeDFUWCzjZcn+sJGd9RZdH9esYVjEejGmzf+FFYQpMi/kZUk2kPy/q1H3/GPw7np8qar/stfg==} engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 dependencies: - '@babel/compat-data': 7.21.4 - '@babel/core': 7.21.4 - '@babel/helper-validator-option': 7.21.0 - browserslist: 4.21.5 + '@babel/compat-data': 7.22.9 + '@babel/helper-validator-option': 7.22.15 + browserslist: 4.21.10 lru-cache: 5.1.1 - semver: 6.3.0 + semver: 6.3.1 dev: true - /@babel/helper-environment-visitor@7.18.9: + /@babel/helper-environment-visitor/7.18.9: resolution: {integrity: sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==} engines: {node: '>=6.9.0'} - /@babel/helper-function-name@7.21.0: + /@babel/helper-function-name/7.21.0: resolution: {integrity: sha512-HfK1aMRanKHpxemaY2gqBmL04iAPOPRj7DxtNbiDOrJK+gdwkiNRVpCpUJYbUT+aZyemKN8brqTOxzCaG6ExRg==} engines: {node: '>=6.9.0'} dependencies: - '@babel/template': 7.20.7 - '@babel/types': 7.21.4 + '@babel/template': 7.22.15 + '@babel/types': 7.22.19 - /@babel/helper-hoist-variables@7.18.6: + /@babel/helper-hoist-variables/7.18.6: resolution: {integrity: sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.21.4 + '@babel/types': 7.22.19 - /@babel/helper-module-imports@7.21.4: + /@babel/helper-module-imports/7.21.4: resolution: {integrity: sha512-orajc5T2PsRYUN3ZryCEFeMDYwyw09c/pZeaQEZPH0MpKzSvn3e0uXsDBu3k03VI+9DBiRo+l22BfKTpKwa/Wg==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.21.4 + '@babel/types': 7.22.19 - /@babel/helper-module-transforms@7.21.2: + /@babel/helper-module-transforms/7.21.2: resolution: {integrity: sha512-79yj2AR4U/Oqq/WOV7Lx6hUjau1Zfo4cI+JLAVYeMV5XIlbOhmjEk5ulbTc9fMpmlojzZHkUUxAiK+UKn+hNQQ==} engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 dependencies: '@babel/helper-environment-visitor': 7.18.9 '@babel/helper-module-imports': 7.21.4 @@ -219,110 +182,118 @@ packages: '@babel/helper-split-export-declaration': 7.18.6 '@babel/helper-validator-identifier': 7.19.1 '@babel/template': 7.20.7 - '@babel/traverse': 7.21.4(supports-color@5.5.0) + '@babel/traverse': 7.21.4 '@babel/types': 7.21.4 transitivePeerDependencies: - supports-color dev: true - /@babel/helper-plugin-utils@7.20.2: + /@babel/helper-plugin-utils/7.20.2: resolution: {integrity: sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==} engines: {node: '>=6.9.0'} - dev: true - /@babel/helper-simple-access@7.20.2: + /@babel/helper-simple-access/7.20.2: resolution: {integrity: sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.21.4 + '@babel/types': 7.22.19 dev: true - /@babel/helper-split-export-declaration@7.18.6: + /@babel/helper-split-export-declaration/7.18.6: resolution: {integrity: sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.21.4 + '@babel/types': 7.22.19 - /@babel/helper-string-parser@7.19.4: + /@babel/helper-string-parser/7.19.4: resolution: {integrity: sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==} engines: {node: '>=6.9.0'} - /@babel/helper-validator-identifier@7.19.1: + /@babel/helper-validator-identifier/7.19.1: resolution: {integrity: sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==} engines: {node: '>=6.9.0'} - /@babel/helper-validator-option@7.21.0: + /@babel/helper-validator-option/7.21.0: resolution: {integrity: sha512-rmL/B8/f0mKS2baE9ZpyTcTavvEuWhTTW8amjzXNvYG4AwBsqTLikfXsEofsJEfKHf+HQVQbFOHy6o+4cnC/fQ==} engines: {node: '>=6.9.0'} dev: true - /@babel/helpers@7.21.0: + /@babel/helpers/7.21.0: resolution: {integrity: sha512-XXve0CBtOW0pd7MRzzmoyuSj0e3SEzj8pgyFxnTT1NJZL38BD1MK7yYrm8yefRPIDvNNe14xR4FdbHwpInD4rA==} engines: {node: '>=6.9.0'} dependencies: '@babel/template': 7.20.7 - '@babel/traverse': 7.21.4(supports-color@5.5.0) + '@babel/traverse': 7.21.4 '@babel/types': 7.21.4 transitivePeerDependencies: - supports-color dev: true - /@babel/highlight@7.18.6: + /@babel/highlight/7.18.6: resolution: {integrity: sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==} engines: {node: '>=6.9.0'} dependencies: - '@babel/helper-validator-identifier': 7.19.1 + '@babel/helper-validator-identifier': 7.22.19 chalk: 2.4.2 js-tokens: 4.0.0 - /@babel/parser@7.21.4: + /@babel/parser/7.21.4: resolution: {integrity: sha512-alVJj7k7zIxqBZ7BTRhz0IqJFxW1VJbm6N8JbcYhQ186df9ZBPbZBmWSqAMXwHGsCJdYks7z/voa3ibiS5bCIw==} engines: {node: '>=6.0.0'} hasBin: true dependencies: - '@babel/types': 7.21.4 + '@babel/types': 7.22.19 - /@babel/plugin-syntax-jsx@7.21.4(@babel/core@7.21.4): + /@babel/plugin-syntax-jsx/7.21.4_@babel+core@7.21.4: resolution: {integrity: sha512-5hewiLct5OKyh6PLKEYaFclcqtIgCb6bmELouxjF6up5q3Sov7rOayW4RwhbaBL0dit8rA80GNfY+UuDp2mBbQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.21.4 - '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-plugin-utils': 7.22.5 + dev: false + + /@babel/plugin-syntax-jsx/7.22.5_@babel+core@7.22.19: + resolution: {integrity: sha512-gvyP4hZrgrs/wWMaocvxZ44Hw0b3W8Pe+cMxc8V1ULQ07oh8VNbIRaoD1LRZVTvD+0nieDKjfgKg89sD7rrKrg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.19 + '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-react-jsx-development@7.18.6(@babel/core@7.21.4): + /@babel/plugin-transform-react-jsx-development/7.18.6_@babel+core@7.21.4: resolution: {integrity: sha512-SA6HEjwYFKF7WDjWcMcMGUimmw/nhNRDWxr+KaLSCrkD/LMDBvWRmHAYgE1HDeF8KUuI8OAu+RT6EOtKxSW2qA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.21.4 - '@babel/plugin-transform-react-jsx': 7.21.0(@babel/core@7.21.4) + '@babel/plugin-transform-react-jsx': 7.21.0_@babel+core@7.21.4 dev: true - /@babel/plugin-transform-react-jsx-self@7.21.0(@babel/core@7.21.4): + /@babel/plugin-transform-react-jsx-self/7.21.0_@babel+core@7.21.4: resolution: {integrity: sha512-f/Eq+79JEu+KUANFks9UZCcvydOOGMgF7jBrcwjHa5jTZD8JivnhCJYvmlhR/WTXBWonDExPoW0eO/CR4QJirA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.21.4 - '@babel/helper-plugin-utils': 7.20.2 + '@babel/core': 7.22.19 + '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-react-jsx-source@7.19.6(@babel/core@7.21.4): + /@babel/plugin-transform-react-jsx-source/7.19.6_@babel+core@7.21.4: resolution: {integrity: sha512-RpAi004QyMNisst/pvSanoRdJ4q+jMCWyk9zdw/CyLB9j8RXEahodR6l2GyttDRyEVWZtbN+TpLiHJ3t34LbsQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.21.4 - '@babel/helper-plugin-utils': 7.20.2 + '@babel/core': 7.22.19 + '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-react-jsx@7.21.0(@babel/core@7.21.4): + /@babel/plugin-transform-react-jsx/7.21.0_@babel+core@7.21.4: resolution: {integrity: sha512-6OAWljMvQrZjR2DaNhVfRz6dkCAVV+ymcLUmaf8bccGOHn2v5rHJK3tTpij0BuhdYWP4LLaqj5lwcdlpAAPuvg==} engines: {node: '>=6.9.0'} peerDependencies: @@ -332,26 +303,43 @@ packages: '@babel/helper-annotate-as-pure': 7.18.6 '@babel/helper-module-imports': 7.21.4 '@babel/helper-plugin-utils': 7.20.2 - '@babel/plugin-syntax-jsx': 7.21.4(@babel/core@7.21.4) + '@babel/plugin-syntax-jsx': 7.21.4_@babel+core@7.21.4 '@babel/types': 7.21.4 dev: true - /@babel/runtime@7.21.0: + /@babel/runtime/7.21.0: resolution: {integrity: sha512-xwII0//EObnq89Ji5AKYQaRYiW/nZ3llSv29d49IuxPhKbtJoLP+9QUUZ4nVragQVtaVGeZrpB+ZtG/Pdy/POw==} engines: {node: '>=6.9.0'} dependencies: - regenerator-runtime: 0.13.11 + regenerator-runtime: 0.14.0 dev: false - /@babel/template@7.20.7: + /@babel/template/7.20.7: resolution: {integrity: sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==} engines: {node: '>=6.9.0'} + dependencies: + '@babel/code-frame': 7.22.13 + '@babel/parser': 7.22.16 + '@babel/types': 7.22.19 + + /@babel/traverse/7.21.4: + resolution: {integrity: sha512-eyKrRHKdyZxqDm+fV1iqL9UAHMoIg0nDaGqfIOd8rKH17m5snv7Gn4qgjBoFfLz9APvjFU/ICT00NVCv1Epp8Q==} + engines: {node: '>=6.9.0'} dependencies: '@babel/code-frame': 7.21.4 + '@babel/generator': 7.21.4 + '@babel/helper-environment-visitor': 7.18.9 + '@babel/helper-function-name': 7.21.0 + '@babel/helper-hoist-variables': 7.18.6 + '@babel/helper-split-export-declaration': 7.18.6 '@babel/parser': 7.21.4 '@babel/types': 7.21.4 + debug: 4.3.4 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color - /@babel/traverse@7.21.4(supports-color@5.5.0): + /@babel/traverse/7.21.4_supports-color@5.5.0: resolution: {integrity: sha512-eyKrRHKdyZxqDm+fV1iqL9UAHMoIg0nDaGqfIOd8rKH17m5snv7Gn4qgjBoFfLz9APvjFU/ICT00NVCv1Epp8Q==} engines: {node: '>=6.9.0'} dependencies: @@ -363,58 +351,51 @@ packages: '@babel/helper-split-export-declaration': 7.18.6 '@babel/parser': 7.21.4 '@babel/types': 7.21.4 - debug: 4.3.4(supports-color@5.5.0) + debug: 4.3.4_supports-color@5.5.0 globals: 11.12.0 transitivePeerDependencies: - supports-color + dev: false - /@babel/types@7.21.4: + /@babel/types/7.21.4: resolution: {integrity: sha512-rU2oY501qDxE8Pyo7i/Orqma4ziCOrby0/9mvbDUGEfvZjb279Nk9k19e2fiCxHbRRpY2ZyrgW1eq22mvmOIzA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/helper-string-parser': 7.19.4 - '@babel/helper-validator-identifier': 7.19.1 + '@babel/helper-string-parser': 7.22.5 + '@babel/helper-validator-identifier': 7.22.19 to-fast-properties: 2.0.0 - /@codemirror/autocomplete@6.4.2(@codemirror/language@6.6.0)(@codemirror/state@6.2.0)(@codemirror/view@6.9.3)(@lezer/common@1.0.2): + /@codemirror/autocomplete/6.4.2: resolution: {integrity: sha512-8WE2xp+D0MpWEv5lZ6zPW1/tf4AGb358T5GWYiKEuCP8MvFfT3tH2mIF9Y2yr2e3KbHuSvsVhosiEyqCpiJhZQ==} - peerDependencies: - '@codemirror/language': ^6.0.0 - '@codemirror/state': ^6.0.0 - '@codemirror/view': ^6.0.0 - '@lezer/common': ^1.0.0 dependencies: - '@codemirror/language': 6.6.0 - '@codemirror/state': 6.2.0 - '@codemirror/view': 6.9.3 - '@lezer/common': 1.0.2 + '@codemirror/language': 6.9.0 + '@codemirror/state': 6.2.1 + '@codemirror/view': 6.19.0 + '@lezer/common': 1.0.4 dev: false - /@codemirror/commands@6.2.2: + /@codemirror/commands/6.2.2: resolution: {integrity: sha512-s9lPVW7TxXrI/7voZ+HmD/yiAlwAYn9PH5SUVSUhsxXHhv4yl5eZ3KLntSoTynfdgVYM0oIpccQEWRBQgmNZyw==} dependencies: - '@codemirror/language': 6.6.0 - '@codemirror/state': 6.2.0 - '@codemirror/view': 6.9.3 - '@lezer/common': 1.0.2 + '@codemirror/language': 6.9.0 + '@codemirror/state': 6.2.1 + '@codemirror/view': 6.19.0 + '@lezer/common': 1.0.4 dev: false - /@codemirror/lang-css@6.1.1(@codemirror/view@6.9.3)(@lezer/common@1.0.2): + /@codemirror/lang-css/6.1.1: resolution: {integrity: sha512-P6jdNEHyRcqqDgbvHYyC9Wxkek0rnG3a9aVSRi4a7WrjPbQtBTaOmvYpXmm13zZMAatO4Oqpac+0QZs7sy+LnQ==} dependencies: - '@codemirror/autocomplete': 6.4.2(@codemirror/language@6.6.0)(@codemirror/state@6.2.0)(@codemirror/view@6.9.3)(@lezer/common@1.0.2) + '@codemirror/autocomplete': 6.4.2 '@codemirror/language': 6.6.0 '@codemirror/state': 6.2.0 '@lezer/css': 1.1.1 - transitivePeerDependencies: - - '@codemirror/view' - - '@lezer/common' dev: false - /@codemirror/lang-javascript@6.1.4: + /@codemirror/lang-javascript/6.1.4: resolution: {integrity: sha512-OxLf7OfOZBTMRMi6BO/F72MNGmgOd9B0vetOLvHsDACFXayBzW8fm8aWnDM0yuy68wTK03MBf4HbjSBNRG5q7A==} dependencies: - '@codemirror/autocomplete': 6.4.2(@codemirror/language@6.6.0)(@codemirror/state@6.2.0)(@codemirror/view@6.9.3)(@lezer/common@1.0.2) + '@codemirror/autocomplete': 6.4.2 '@codemirror/language': 6.6.0 '@codemirror/lint': 6.2.0 '@codemirror/state': 6.2.0 @@ -423,52 +404,52 @@ packages: '@lezer/javascript': 1.4.2 dev: false - /@codemirror/language@6.6.0: + /@codemirror/language/6.6.0: resolution: {integrity: sha512-cwUd6lzt3MfNYOobdjf14ZkLbJcnv4WtndYaoBkbor/vF+rCNguMPK0IRtvZJG4dsWiaWPcK8x1VijhvSxnstg==} dependencies: - '@codemirror/state': 6.2.0 - '@codemirror/view': 6.9.3 - '@lezer/common': 1.0.2 - '@lezer/highlight': 1.1.4 - '@lezer/lr': 1.3.3 - style-mod: 4.0.2 + '@codemirror/state': 6.2.1 + '@codemirror/view': 6.19.0 + '@lezer/common': 1.0.4 + '@lezer/highlight': 1.1.6 + '@lezer/lr': 1.3.10 + style-mod: 4.1.0 dev: false - /@codemirror/lint@6.2.0: + /@codemirror/lint/6.2.0: resolution: {integrity: sha512-KVCECmR2fFeYBr1ZXDVue7x3q5PMI0PzcIbA+zKufnkniMBo1325t0h1jM85AKp8l3tj67LRxVpZfgDxEXlQkg==} dependencies: - '@codemirror/state': 6.2.0 - '@codemirror/view': 6.9.3 - crelt: 1.0.5 + '@codemirror/state': 6.2.1 + '@codemirror/view': 6.19.0 + crelt: 1.0.6 dev: false - /@codemirror/search@6.3.0: + /@codemirror/search/6.3.0: resolution: {integrity: sha512-rBhZxzT34CarfhgCZGhaLBScABDN3iqJxixzNuINp9lrb3lzm0nTpR77G1VrxGO3HOGK7j62jcJftQM7eCOIuw==} dependencies: - '@codemirror/state': 6.2.0 - '@codemirror/view': 6.9.3 - crelt: 1.0.5 + '@codemirror/state': 6.2.1 + '@codemirror/view': 6.19.0 + crelt: 1.0.6 dev: false - /@codemirror/state@6.2.0: + /@codemirror/state/6.2.0: resolution: {integrity: sha512-69QXtcrsc3RYtOtd+GsvczJ319udtBf1PTrr2KbLWM/e2CXUPnh0Nz9AUo8WfhSQ7GeL8dPVNUmhQVgpmuaNGA==} dev: false - /@codemirror/theme-one-dark@6.1.1: + /@codemirror/theme-one-dark/6.1.1: resolution: {integrity: sha512-+CfzmScfJuD6uDF5bHJkAjWTQ2QAAHxODCPxUEgcImDYcJLT+4l5vLnBHmDVv46kCC5uUJGMrBJct2Z6JbvqyQ==} dependencies: - '@codemirror/language': 6.6.0 - '@codemirror/state': 6.2.0 - '@codemirror/view': 6.9.3 - '@lezer/highlight': 1.1.4 + '@codemirror/language': 6.9.0 + '@codemirror/state': 6.2.1 + '@codemirror/view': 6.19.0 + '@lezer/highlight': 1.1.6 dev: false - /@codemirror/view@6.9.3: + /@codemirror/view/6.9.3: resolution: {integrity: sha512-BJ5mvEIhFM+SrNwc5X8pLIvMM9ffjkviVbxpg84Xk2OE8ZyKaEbId8kX+nAYEEso7+qnbwsXe1bkAHsasebMow==} dependencies: - '@codemirror/state': 6.2.0 - style-mod: 4.0.2 - w3c-keyname: 2.2.6 + '@codemirror/state': 6.2.1 + style-mod: 4.1.0 + w3c-keyname: 2.2.8 dev: false /@emotion/cache@10.0.29: @@ -485,7 +466,7 @@ packages: peerDependencies: react: '>=16.3.0' dependencies: - '@babel/runtime': 7.21.0 + '@babel/runtime': 7.22.15 '@emotion/cache': 10.0.29 '@emotion/css': 10.0.27 '@emotion/serialize': 0.11.16 @@ -512,17 +493,17 @@ packages: '@emotion/memoize': 0.7.4 dev: false - /@emotion/is-prop-valid@1.2.0: + /@emotion/is-prop-valid/1.2.0: resolution: {integrity: sha512-3aDpDprjM0AwaxGE09bOPkNxHpBd+kA6jty3RnaEXdweX1DF1U3VQpPYb0g1IStAuK7SVQ1cy+bNBBKp4W3Fjg==} dependencies: - '@emotion/memoize': 0.8.0 + '@emotion/memoize': 0.8.1 dev: false /@emotion/memoize@0.7.4: resolution: {integrity: sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw==} dev: false - /@emotion/memoize@0.8.0: + /@emotion/memoize/0.8.0: resolution: {integrity: sha512-G/YwXTkv7Den9mXDO7AhLWkE3q+I92B+VqAE+dYG4NGPaHZGvt3G8Q0p9vmE+sq7rTGphUbAvmQ9YpbfMQGGlA==} dev: false @@ -547,7 +528,7 @@ packages: react: '>=16.3.0' dependencies: '@babel/runtime': 7.21.0 - '@emotion/core': 10.3.1(react@18.2.0) + '@emotion/core': 10.3.1_react@18.2.0 '@emotion/is-prop-valid': 0.8.8 '@emotion/serialize': 0.11.16 '@emotion/utils': 0.11.3 @@ -600,7 +581,7 @@ packages: dev: true optional: true - /@jridgewell/gen-mapping@0.1.1: + /@jridgewell/gen-mapping/0.1.1: resolution: {integrity: sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==} engines: {node: '>=6.0.0'} dependencies: @@ -608,7 +589,7 @@ packages: '@jridgewell/sourcemap-codec': 1.4.14 dev: true - /@jridgewell/gen-mapping@0.3.2: + /@jridgewell/gen-mapping/0.3.2: resolution: {integrity: sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==} engines: {node: '>=6.0.0'} dependencies: @@ -616,7 +597,7 @@ packages: '@jridgewell/sourcemap-codec': 1.4.14 '@jridgewell/trace-mapping': 0.3.17 - /@jridgewell/resolve-uri@3.1.0: + /@jridgewell/resolve-uri/3.1.0: resolution: {integrity: sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==} engines: {node: '>=6.0.0'} @@ -624,43 +605,43 @@ packages: resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} engines: {node: '>=6.0.0'} - /@jridgewell/sourcemap-codec@1.4.14: + /@jridgewell/sourcemap-codec/1.4.14: resolution: {integrity: sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==} - /@jridgewell/trace-mapping@0.3.17: + /@jridgewell/trace-mapping/0.3.17: resolution: {integrity: sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==} dependencies: - '@jridgewell/resolve-uri': 3.1.0 - '@jridgewell/sourcemap-codec': 1.4.14 + '@jridgewell/resolve-uri': 3.1.1 + '@jridgewell/sourcemap-codec': 1.4.15 - /@lezer/common@1.0.2: + /@lezer/common/1.0.2: resolution: {integrity: sha512-SVgiGtMnMnW3ActR8SXgsDhw7a0w0ChHSYAyAUxxrOiJ1OqYWEKk/xJd84tTSPo1mo6DXLObAJALNnd0Hrv7Ng==} dev: false - /@lezer/css@1.1.1: + /@lezer/css/1.1.1: resolution: {integrity: sha512-mSjx+unLLapEqdOYDejnGBokB5+AiJKZVclmud0MKQOKx3DLJ5b5VTCstgDDknR6iIV4gVrN6euzsCnj0A2gQA==} dependencies: - '@lezer/highlight': 1.1.4 - '@lezer/lr': 1.3.3 + '@lezer/highlight': 1.1.6 + '@lezer/lr': 1.3.10 dev: false - /@lezer/highlight@1.1.4: + /@lezer/highlight/1.1.4: resolution: {integrity: sha512-IECkFmw2l7sFcYXrV8iT9GeY4W0fU4CxX0WMwhmhMIVjoDdD1Hr6q3G2NqVtLg/yVe5n7i4menG3tJ2r4eCrPQ==} dependencies: - '@lezer/common': 1.0.2 + '@lezer/common': 1.0.4 dev: false - /@lezer/javascript@1.4.2: + /@lezer/javascript/1.4.2: resolution: {integrity: sha512-77qdAD4zanmImPiAu4ibrMUzRc79UHoccdPa+Ey5iwS891TAkhnMAodUe17T7zV7tnF7e9HXM0pfmjoGEhrppg==} dependencies: - '@lezer/highlight': 1.1.4 - '@lezer/lr': 1.3.3 + '@lezer/highlight': 1.1.6 + '@lezer/lr': 1.3.10 dev: false - /@lezer/lr@1.3.3: + /@lezer/lr/1.3.3: resolution: {integrity: sha512-JPQe3mwJlzEVqy67iQiiGozhcngbO8QBgpqZM6oL1Wj/dXckrEexpBLeFkq0edtW5IqnPRFxA24BHJni8Js69w==} dependencies: - '@lezer/common': 1.0.2 + '@lezer/common': 1.0.4 dev: false /@rollup/plugin-alias@3.1.9(rollup@2.79.1): @@ -673,35 +654,35 @@ packages: slash: 3.0.0 dev: true - /@stackblitz/sdk@1.8.2: + /@stackblitz/sdk/1.8.2: resolution: {integrity: sha512-3aTg0Tb9dNs1huPkpdYxPEX/yc8A28eZneUMOEJzOLi7EJwl5onr9gCAVjIOkN4WLYu1iBSiJiGBYT629bZIJQ==} dev: false - /@types/codemirror@5.60.7: + /@types/codemirror/5.60.7: resolution: {integrity: sha512-QXIC+RPzt/1BGSuD6iFn6UMC9TDp+9hkOANYNPVsjjrDdzKphfRkwQDKGp2YaC54Yhz0g6P5uYTCCibZZEiMAA==} dependencies: - '@types/tern': 0.23.4 + '@types/tern': 0.23.5 dev: true /@types/dedent@0.7.0: resolution: {integrity: sha512-EGlKlgMhnLt/cM4DbUSafFdrkeJoC9Mvnj0PUCU7tFmTjMjNRT957kXCx0wYm3JuEq4o4ZsS5vG+NlkM2DMd2A==} dev: true - /@types/estree@1.0.0: + /@types/estree/1.0.0: resolution: {integrity: sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ==} dev: true - /@types/hoist-non-react-statics@3.3.1: + /@types/hoist-non-react-statics/3.3.1: resolution: {integrity: sha512-iMIqiko6ooLrTh1joXodJK5X9xeEALT1kM5G3ZLhD3hszxBdIEd5C75U834D9mLcINgD4OyZf5uQXjkuYydWvA==} dependencies: - '@types/react': 18.0.31 + '@types/react': 18.2.21 hoist-non-react-statics: 3.3.2 dev: true - /@types/linkifyjs@2.1.4: + /@types/linkifyjs/2.1.4: resolution: {integrity: sha512-UuF0hyWNnLTT4xNJdrQx6OWYMNlPRBtt3fKCaROIx48boQyXkQ4YDDwTEQNi9mlsRX0Hpc6AnFKkDZ6IXkxD4g==} dependencies: - '@types/react': 18.0.31 + '@types/react': 18.2.21 dev: true /@types/lz-string@1.5.0: @@ -711,7 +692,7 @@ packages: lz-string: 1.5.0 dev: true - /@types/node@18.15.11: + /@types/node/18.15.11: resolution: {integrity: sha512-E5Kwq2n4SbMzQOn6wnmBjuK9ouqlURrcZDVfbo9ftDDTFt3nk7ZKK4GMOzoYgnpQJKcxwQw+lGaBvvlMo0qN/Q==} dev: true @@ -723,50 +704,42 @@ packages: resolution: {integrity: sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==} dev: true - /@types/react-dom@18.0.11: + /@types/react-dom/18.0.11: resolution: {integrity: sha512-O38bPbI2CWtgw/OoQoY+BRelw7uysmXbWvw3nLWO21H1HSh+GOlqPuXshJfjmpNlKiiSDG9cc1JZAaMmVdcTlw==} dependencies: - '@types/react': 18.0.31 + '@types/react': 18.2.21 dev: true - /@types/react@18.0.31: + /@types/react/18.0.31: resolution: {integrity: sha512-EEG67of7DsvRDU6BLLI0p+k1GojDLz9+lZsnCpCRTa/lOokvyPBvp8S5x+A24hME3yyQuIipcP70KJ6H7Qupww==} dependencies: '@types/prop-types': 15.7.5 '@types/scheduler': 0.16.3 - csstype: 3.1.1 + csstype: 3.1.2 dev: true /@types/scheduler@0.16.3: resolution: {integrity: sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ==} dev: true - /@types/styled-components@5.1.26: + /@types/styled-components/5.1.26: resolution: {integrity: sha512-KuKJ9Z6xb93uJiIyxo/+ksS7yLjS1KzG6iv5i78dhVg/X3u5t1H7juRWqVmodIdz6wGVaIApo1u01kmFRdJHVw==} dependencies: - '@types/hoist-non-react-statics': 3.3.1 - '@types/react': 18.0.31 - csstype: 3.1.1 + '@types/hoist-non-react-statics': 3.3.2 + '@types/react': 18.2.21 + csstype: 3.1.2 dev: true - /@types/tern@0.23.4: + /@types/tern/0.23.4: resolution: {integrity: sha512-JAUw1iXGO1qaWwEOzxTKJZ/5JxVeON9kvGZ/osgZaJImBnyjyn0cjovPsf6FNLmyGY8Vw9DoXZCMlfMkMwHRWg==} dependencies: - '@types/estree': 1.0.0 + '@types/estree': 1.0.1 dev: true - /@uiw/codemirror-extensions-basic-setup@4.19.11(@codemirror/autocomplete@6.4.2)(@codemirror/commands@6.2.2)(@codemirror/language@6.6.0)(@codemirror/lint@6.2.0)(@codemirror/search@6.3.0)(@codemirror/state@6.2.0)(@codemirror/view@6.9.3): + /@uiw/codemirror-extensions-basic-setup/4.19.11: resolution: {integrity: sha512-yT7DtFUZESyqyMm0kcMbT6dQ8TIK8tcA6XzMtkgLtsiB883rlc9kYVJScyDz8M9mCckycVbuFlhEdqN54PoiGw==} - peerDependencies: - '@codemirror/autocomplete': '>=6.0.0' - '@codemirror/commands': '>=6.0.0' - '@codemirror/language': '>=6.0.0' - '@codemirror/lint': '>=6.0.0' - '@codemirror/search': '>=6.0.0' - '@codemirror/state': '>=6.0.0' - '@codemirror/view': '>=6.0.0' dependencies: - '@codemirror/autocomplete': 6.4.2(@codemirror/language@6.6.0)(@codemirror/state@6.2.0)(@codemirror/view@6.9.3)(@lezer/common@1.0.2) + '@codemirror/autocomplete': 6.4.2 '@codemirror/commands': 6.2.2 '@codemirror/language': 6.6.0 '@codemirror/lint': 6.2.0 @@ -775,26 +748,25 @@ packages: '@codemirror/view': 6.9.3 dev: false - /@uiw/codemirror-themes@4.19.11(@codemirror/language@6.6.0)(@codemirror/state@6.2.0)(@codemirror/view@6.9.3): + /@uiw/codemirror-themes/4.19.11: resolution: {integrity: sha512-4bh0vfkqeVJ7L2aGimKXqQtaoSEe/1xZb9nkGn35V5daHXkxRhb+BRFMOSrMsjGm74hM+dvYi5iH8HXVsvjJrQ==} - peerDependencies: - '@codemirror/language': '>=6.0.0' - '@codemirror/state': '>=6.0.0' - '@codemirror/view': '>=6.0.0' dependencies: - '@codemirror/language': 6.6.0 - '@codemirror/state': 6.2.0 - '@codemirror/view': 6.9.3 + '@codemirror/autocomplete': 6.9.1_@codemirror+view@6.19.0 + '@codemirror/commands': 6.2.5 + '@codemirror/language': 6.9.0 + '@codemirror/lint': 6.4.2 + '@codemirror/search': 6.5.3 + '@codemirror/state': 6.2.1 + '@codemirror/view': 6.19.0 dev: false - /@uiw/react-codemirror@4.19.11(@babel/runtime@7.21.0)(@codemirror/autocomplete@6.4.2)(@codemirror/language@6.6.0)(@codemirror/lint@6.2.0)(@codemirror/search@6.3.0)(@codemirror/state@6.2.0)(@codemirror/theme-one-dark@6.1.1)(@codemirror/view@6.9.3)(codemirror@5.65.12)(react-dom@18.2.0)(react@18.2.0): + /@uiw/react-codemirror/4.19.11_fcfoxczgl3bih2inr776zkfwzu: resolution: {integrity: sha512-KoTMg0krVi8EgIPotMYAfTTB+9U4CrJe1ZeSLVR92Wif0pPjYLN5TQF0kqiiH97gJNGHVte/mUftmDjK7Sv2ZA==} peerDependencies: '@babel/runtime': '>=7.11.0' '@codemirror/state': '>=6.0.0' '@codemirror/theme-one-dark': '>=6.0.0' '@codemirror/view': '>=6.0.0' - codemirror: '>=6.0.0' react: '>=16.8.0' react-dom: '>=16.8.0' dependencies: @@ -803,31 +775,26 @@ packages: '@codemirror/state': 6.2.0 '@codemirror/theme-one-dark': 6.1.1 '@codemirror/view': 6.9.3 - '@uiw/codemirror-extensions-basic-setup': 4.19.11(@codemirror/autocomplete@6.4.2)(@codemirror/commands@6.2.2)(@codemirror/language@6.6.0)(@codemirror/lint@6.2.0)(@codemirror/search@6.3.0)(@codemirror/state@6.2.0)(@codemirror/view@6.9.3) - codemirror: 5.65.12 + '@uiw/codemirror-extensions-basic-setup': 4.19.11 + codemirror: 6.0.1 react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - transitivePeerDependencies: - - '@codemirror/autocomplete' - - '@codemirror/language' - - '@codemirror/lint' - - '@codemirror/search' + react-dom: 18.2.0_react@18.2.0 dev: false - /@vitejs/plugin-react@2.2.0(vite@3.2.5): + /@vitejs/plugin-react/2.2.0_vite@3.2.5: resolution: {integrity: sha512-FFpefhvExd1toVRlokZgxgy2JtnBOdp4ZDsq7ldCWaqGSGn9UhWMAVm/1lxPL14JfNS5yGz+s9yFrQY6shoStA==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: vite: ^3.0.0 dependencies: '@babel/core': 7.21.4 - '@babel/plugin-transform-react-jsx': 7.21.0(@babel/core@7.21.4) - '@babel/plugin-transform-react-jsx-development': 7.18.6(@babel/core@7.21.4) - '@babel/plugin-transform-react-jsx-self': 7.21.0(@babel/core@7.21.4) - '@babel/plugin-transform-react-jsx-source': 7.19.6(@babel/core@7.21.4) + '@babel/plugin-transform-react-jsx': 7.21.0_@babel+core@7.21.4 + '@babel/plugin-transform-react-jsx-development': 7.18.6_@babel+core@7.21.4 + '@babel/plugin-transform-react-jsx-self': 7.21.0_@babel+core@7.21.4 + '@babel/plugin-transform-react-jsx-source': 7.19.6_@babel+core@7.21.4 magic-string: 0.26.7 react-refresh: 0.14.0 - vite: 3.2.5(@types/node@18.15.11) + vite: 3.2.5_@types+node@18.15.11 transitivePeerDependencies: - supports-color dev: true @@ -849,7 +816,7 @@ packages: /babel-plugin-emotion@10.2.2: resolution: {integrity: sha512-SMSkGoqTbTyUTDeuVuPIWifPdUGkTk1Kf9BWRiXIOIcuyMfsdp2EjeiiFvOzX8NOBvEh/ypKYvUh2rkgAJMCLA==} dependencies: - '@babel/helper-module-imports': 7.21.4 + '@babel/helper-module-imports': 7.22.15 '@emotion/hash': 0.8.0 '@emotion/memoize': 0.7.4 '@emotion/serialize': 0.11.16 @@ -864,29 +831,29 @@ packages: /babel-plugin-macros@2.8.0: resolution: {integrity: sha512-SEP5kJpfGYqYKpBrj5XU3ahw5p5GOHJ0U5ssOSQ/WBVdwkD2Dzlce95exQTs3jOVWPPKLBN2rlEWkCK7dSmLvg==} dependencies: - '@babel/runtime': 7.21.0 + '@babel/runtime': 7.22.15 cosmiconfig: 6.0.0 - resolve: 1.22.1 + resolve: 1.22.6 dev: false - /babel-plugin-styled-components@2.0.7(styled-components@5.3.9): + /babel-plugin-styled-components/2.0.7_styled-components@5.3.9: resolution: {integrity: sha512-i7YhvPgVqRKfoQ66toiZ06jPNA3p6ierpfUuEWxNF+fV27Uv5gxBkf8KZLHUCc1nFA9j6+80pYoIpqCeyW3/bA==} peerDependencies: styled-components: '>= 2' dependencies: - '@babel/helper-annotate-as-pure': 7.18.6 - '@babel/helper-module-imports': 7.21.4 - babel-plugin-syntax-jsx: 6.18.0 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-module-imports': 7.22.15 + '@babel/plugin-syntax-jsx': 7.22.5 lodash: 4.17.21 picomatch: 2.3.1 - styled-components: 5.3.9(react-dom@18.2.0)(react-is@18.2.0)(react@18.2.0) + styled-components: 5.3.9_7i5myeigehqah43i5u7wbekgba dev: false /babel-plugin-syntax-jsx@6.18.0: resolution: {integrity: sha512-qrPaCSo9c8RHNRHIotaufGbuOBN8rtdC4QrrFFc43vyWCCz7Kl7GL1PGaXtMGQZUXrkCjNEgxDfmAuAabr/rlw==} dev: false - /browserslist@4.21.5: + /browserslist/4.21.5: resolution: {integrity: sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true @@ -894,7 +861,7 @@ packages: caniuse-lite: 1.0.30001473 electron-to-chromium: 1.4.347 node-releases: 2.0.10 - update-browserslist-db: 1.0.10(browserslist@4.21.5) + update-browserslist-db: 1.0.10_browserslist@4.21.5 dev: true /callsites@3.1.0: @@ -906,7 +873,7 @@ packages: resolution: {integrity: sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ==} dev: false - /caniuse-lite@1.0.30001473: + /caniuse-lite/1.0.30001473: resolution: {integrity: sha512-ewDad7+D2vlyy+E4UJuVfiBsU69IL+8oVmTuZnH5Q6CIUbxNfI50uVpRHbUPDD6SUaN2o0Lh4DhTrvLG/Tn1yg==} dev: true @@ -922,11 +889,23 @@ packages: resolution: {integrity: sha512-Sp+EOrAu10cvNMf5W81KgdtqdBvOUNglhH826dVhK1MsLYjzQx9S8ISnu0nnKYwH1sb3w51TT+B6WM1Wuj4hxw==} dev: false - /codemirror@5.65.12: + /codemirror/5.65.12: resolution: {integrity: sha512-z2jlHBocElRnPYysN2HAuhXbO3DNB0bcSKmNz3hcWR2Js2Dkhc1bEOxG93Z3DeUrnm+qx56XOY5wQmbP5KY0sw==} dev: false - /color-convert@1.9.3: + /codemirror/6.0.1: + resolution: {integrity: sha512-J8j+nZ+CdWmIeFIGXEFbFPtpiYacFMDR8GlHK3IyHQJMCaVRfGx9NT+Hxivv1ckLWPvNdZqndbr/7lVhrf/Svg==} + dependencies: + '@codemirror/autocomplete': 6.4.2 + '@codemirror/commands': 6.2.2 + '@codemirror/language': 6.6.0 + '@codemirror/lint': 6.2.0 + '@codemirror/search': 6.3.0 + '@codemirror/state': 6.2.0 + '@codemirror/view': 6.9.3 + dev: false + + /color-convert/1.9.3: resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} dependencies: color-name: 1.1.3 @@ -934,7 +913,7 @@ packages: /color-name@1.1.3: resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} - /console-feed@3.4.5(jquery@3.7.1)(react-dom@18.2.0)(react@18.2.0): + /console-feed/3.4.5_biqbaboplfbrettd7655fr4n2y: resolution: {integrity: sha512-UMOnPBdgNJOdO37ztX+4lW7igp+jlnIiJ5jQleqgbPOGthVbzqGNNmjyPyItl1VFJR/zBF/2535PeLqA4QAcZQ==} peerDependencies: react: ^15.x || ^16.x || ^17.x || ^18.x @@ -968,7 +947,7 @@ packages: yaml: 1.10.2 dev: false - /crelt@1.0.5: + /crelt/1.0.5: resolution: {integrity: sha512-+BO9wPPi+DWTDcNYhr/W90myha8ptzftZT+LwcmUbbok0rcP/fequmFYCw8NMoH7pkAZQzU78b3kYrlua5a9eA==} dev: false @@ -989,11 +968,23 @@ packages: resolution: {integrity: sha512-Z1PhmomIfypOpoMjRQB70jfvy/wxT50qW08YXO5lMIJkrdq4yOTR+AW7FqutScmB9NkLwxo+jU+kZLbofZZq/w==} dev: false - /csstype@3.1.1: + /csstype/3.1.1: resolution: {integrity: sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw==} dev: true - /debug@4.3.4(supports-color@5.5.0): + /debug/4.3.4: + resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.1.2 + dev: true + + /debug/4.3.4_supports-color@5.5.0: resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} engines: {node: '>=6.0'} peerDependencies: @@ -1009,7 +1000,7 @@ packages: resolution: {integrity: sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==} dev: false - /electron-to-chromium@1.4.347: + /electron-to-chromium/1.4.347: resolution: {integrity: sha512-LNi3+/9nV0vT6Bz1OsSoZ/w7IgNuWdefZ7mjKNjZxyRlI/ag6uMXxsxAy5Etvuixq3Q26exw2fc4bNYvYQqXSw==} dev: true @@ -1020,7 +1011,7 @@ packages: react: '>=16.3.0' dependencies: '@babel/runtime': 7.21.0 - '@emotion/core': 10.3.1(react@18.2.0) + '@emotion/core': 10.3.1_react@18.2.0 '@emotion/weak-memoize': 0.2.5 hoist-non-react-statics: 3.3.2 react: 18.2.0 @@ -1280,7 +1271,7 @@ packages: optional: true dev: false - /fsevents@2.3.2: + /fsevents/2.3.2: resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} os: [darwin] @@ -1335,7 +1326,7 @@ packages: resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} dev: false - /is-core-module@2.11.0: + /is-core-module/2.11.0: resolution: {integrity: sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==} dependencies: has: 1.0.3 @@ -1461,7 +1452,7 @@ packages: hasBin: true dev: true - /node-releases@2.0.10: + /node-releases/2.0.10: resolution: {integrity: sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w==} dev: true @@ -1485,7 +1476,7 @@ packages: resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} engines: {node: '>=8'} dependencies: - '@babel/code-frame': 7.21.4 + '@babel/code-frame': 7.22.13 error-ex: 1.3.2 json-parse-even-better-errors: 2.3.1 lines-and-columns: 1.2.4 @@ -1512,7 +1503,7 @@ packages: resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} dev: false - /postcss@8.4.21: + /postcss/8.4.21: resolution: {integrity: sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg==} engines: {node: ^10 || ^12 || >=14} dependencies: @@ -1533,13 +1524,13 @@ packages: react-is: 16.13.1 dev: false - /react-codemirror2@7.2.1(codemirror@5.65.12)(react@18.2.0): + /react-codemirror2/7.2.1_6rbpxrfnogqidakyklns6o2334: resolution: {integrity: sha512-t7YFmz1AXdlImgHXA9Ja0T6AWuopilub24jRaQdPVbzUJVNKIYuy3uCFZYa7CE5S3UW6SrSa5nAqVQvtzRF9gw==} peerDependencies: codemirror: 5.x react: '>=15.5 <=16.x' dependencies: - codemirror: 5.65.12 + codemirror: 5.65.15 react: 18.2.0 dev: false @@ -1558,7 +1549,7 @@ packages: peerDependencies: react: ^16.8.4 || ^17.0.0 dependencies: - '@babel/runtime': 7.21.0 + '@babel/runtime': 7.22.15 is-dom: 1.1.0 prop-types: 15.8.1 react: 18.2.0 @@ -1595,7 +1586,7 @@ packages: util-deprecate: 1.0.2 dev: false - /regenerator-runtime@0.13.11: + /regenerator-runtime/0.13.11: resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==} dev: false @@ -1604,11 +1595,11 @@ packages: engines: {node: '>=4'} dev: false - /resolve@1.22.1: + /resolve/1.22.1: resolution: {integrity: sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==} hasBin: true dependencies: - is-core-module: 2.11.0 + is-core-module: 2.13.0 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 @@ -1617,7 +1608,7 @@ packages: engines: {node: '>=10.0.0'} hasBin: true optionalDependencies: - fsevents: 2.3.2 + fsevents: 2.3.3 dev: true /safe-buffer@5.1.2: @@ -1630,7 +1621,7 @@ packages: loose-envify: 1.4.0 dev: false - /semver@6.3.0: + /semver/6.3.0: resolution: {integrity: sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==} hasBin: true dev: true @@ -1669,11 +1660,11 @@ packages: safe-buffer: 5.1.2 dev: false - /style-mod@4.0.2: + /style-mod/4.0.2: resolution: {integrity: sha512-C4myMmRTO8iaC5Gg+N1ftK2WT4eXUTMAa+HEFPPrfVeO/NtqLTtAmV1HbqnuGtLwCek44Ra76fdGUkSqjiMPcQ==} dev: false - /styled-components@5.3.9(react-dom@18.2.0)(react-is@18.2.0)(react@18.2.0): + /styled-components/5.3.9_7i5myeigehqah43i5u7wbekgba: resolution: {integrity: sha512-Aj3kb13B75DQBo2oRwRa/APdB5rSmwUfN5exyarpX+x/tlM/rwZA2vVk2vQgVSP6WKaZJHWwiFrzgHt+CLtB4A==} engines: {node: '>=10'} peerDependencies: @@ -1682,11 +1673,11 @@ packages: react-is: '>= 16.8.0' dependencies: '@babel/helper-module-imports': 7.21.4 - '@babel/traverse': 7.21.4(supports-color@5.5.0) + '@babel/traverse': 7.21.4_supports-color@5.5.0 '@emotion/is-prop-valid': 1.2.0 '@emotion/stylis': 0.8.5 '@emotion/unitless': 0.7.5 - babel-plugin-styled-components: 2.0.7(styled-components@5.3.9) + babel-plugin-styled-components: 2.0.7_styled-components@5.3.9 css-to-react-native: 3.2.0 hoist-non-react-statics: 3.3.2 react: 18.2.0 @@ -1694,6 +1685,8 @@ packages: react-is: 18.2.0 shallowequal: 1.1.0 supports-color: 5.5.0 + transitivePeerDependencies: + - '@babel/core' dev: false /supports-color@5.5.0: @@ -1716,13 +1709,13 @@ packages: hasBin: true dev: true - /update-browserslist-db@1.0.10(browserslist@4.21.5): + /update-browserslist-db/1.0.10_browserslist@4.21.5: resolution: {integrity: sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==} hasBin: true peerDependencies: browserslist: '>= 4.21.0' dependencies: - browserslist: 4.21.5 + browserslist: 4.21.10 escalade: 3.1.1 picocolors: 1.0.0 dev: true @@ -1731,7 +1724,7 @@ packages: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} dev: false - /vite@3.2.5(@types/node@18.15.11): + /vite/3.2.5_@types+node@18.15.11: resolution: {integrity: sha512-4mVEpXpSOgrssFZAOmGIr85wPHKvaDAcXqxVxVRZhljkJOMZi1ibLibzjLHzJvcok8BMguLc7g1W6W/GqZbLdQ==} engines: {node: ^14.18.0 || >=16.0.0} hasBin: true @@ -1756,16 +1749,16 @@ packages: terser: optional: true dependencies: - '@types/node': 18.15.11 + '@types/node': 18.17.17 esbuild: 0.15.18 - postcss: 8.4.21 - resolve: 1.22.1 + postcss: 8.4.29 + resolve: 1.22.6 rollup: 2.79.1 optionalDependencies: - fsevents: 2.3.2 + fsevents: 2.3.3 dev: true - /w3c-keyname@2.2.6: + /w3c-keyname/2.2.6: resolution: {integrity: sha512-f+fciywl1SJEniZHD6H+kUO8gOnwIr7f4ijKA6+ZvJFjeGi1r4PDLl53Ayud9O/rk64RqgoQine0feoeOU0kXg==} dev: false diff --git a/src/components/editor/Editor.tsx b/src/components/editor/Editor.tsx index 0e12eac..209880d 100644 --- a/src/components/editor/Editor.tsx +++ b/src/components/editor/Editor.tsx @@ -16,6 +16,7 @@ import { acceptedFileTypes, type AcceptedFileType, } from "@/tools/esbuild-tools"; +import { useTSServer } from '@/hooks/editor/useTSServer' interface Props { files: { @@ -29,12 +30,9 @@ interface Props { } function Editor(props: Props) { - const { - files: { fileList: tabs, filesById }, - } = props; - const [currentFile, setCurrentFile] = useState( - filesById["App.jsx"] ? "App.jsx" : ENTRY_POINT_JSX - ); + useTSServer() + const { files: { fileList: tabs, filesById } } = props + const [currentFile, setCurrentFile] = useState(filesById['App.jsx'] ? 'App.jsx' : ENTRY_POINT_JSX) const prevTabsLength = usePreviousValue(tabs.length); @@ -42,10 +40,10 @@ function Editor(props: Props) { const fileFormat = currentFile.split(".").at(-1); - const extensions = [ - ...(fileFormat === "css" ? [css()] : [javascript({ jsx: true })]), - EditorView.lineWrapping, - ]; + const extensions = [ + ...(fileFormat === 'css' ? [css()] : [javascript({ jsx: true, typescript: true })]), + EditorView.lineWrapping, + ] const handleTextChange = useCallback( (text: string) => { diff --git a/src/hooks/editor/ata/apis.ts b/src/hooks/editor/ata/apis.ts new file mode 100644 index 0000000..bd8e056 --- /dev/null +++ b/src/hooks/editor/ata/apis.ts @@ -0,0 +1,82 @@ +import { ATABootstrapConfig } from "."; + +// https://github.com/jsdelivr/data.jsdelivr.com + +export const getNPMVersionsForModule = ( + config: ATABootstrapConfig, + moduleName: string +) => { + const url = `https://data.jsdelivr.com/v1/package/npm/${moduleName}`; + return api<{ tags: Record; versions: string[] }>( + config, + url, + { cache: "no-store" } + ); +}; + +export const getNPMVersionForModuleReference = ( + config: ATABootstrapConfig, + moduleName: string, + reference: string +) => { + const url = `https://data.jsdelivr.com/v1/package/resolve/npm/${moduleName}@${reference}`; + return api<{ version: string | null }>(config, url); +}; + +export type NPMTreeMeta = { + default: string; + files: Array<{ name: string }>; + moduleName: string; + version: string; +}; + +export const getFiletreeForModuleWithVersion = async ( + config: ATABootstrapConfig, + moduleName: string, + version: string +) => { + const url = `https://data.jsdelivr.com/v1/package/npm/${moduleName}@${version}/flat`; + const res = await api(config, url); + if (res instanceof Error) { + return res; + } else { + return { + ...res, + moduleName, + version, + }; + } +}; + +export const getDTSFileForModuleWithVersion = async ( + config: ATABootstrapConfig, + moduleName: string, + version: string, + file: string +) => { + // file comes with a prefix / + const url = `https://cdn.jsdelivr.net/npm/${moduleName}@${version}${file}`; + const f = config.fetcher || fetch; + const res = await f(url); + if (res.ok) { + return res.text(); + } else { + return new Error("OK"); + } +}; + +function api( + config: ATABootstrapConfig, + url: string, + init?: RequestInit +): Promise { + const f = config.fetcher || fetch; + + return f(url, init).then((res) => { + if (res.ok) { + return res.json().then((f) => f as T); + } else { + return new Error("OK"); + } + }); +} diff --git a/src/hooks/editor/ata/edgeCases.ts b/src/hooks/editor/ata/edgeCases.ts new file mode 100644 index 0000000..3102547 --- /dev/null +++ b/src/hooks/editor/ata/edgeCases.ts @@ -0,0 +1,70 @@ +/** Converts some of the known global imports to node so that we grab the right info */ +export const mapModuleNameToModule = (moduleSpecifier: string) => { + // in node repl: + // > require("module").builtinModules + const builtInNodeMods = [ + "assert", + "assert/strict", + "async_hooks", + "buffer", + "child_process", + "cluster", + "console", + "constants", + "crypto", + "dgram", + "diagnostics_channel", + "dns", + "dns/promises", + "domain", + "events", + "fs", + "fs/promises", + "http", + "http2", + "https", + "inspector", + "module", + "net", + "os", + "path", + "path/posix", + "path/win32", + "perf_hooks", + "process", + "punycode", + "querystring", + "readline", + "repl", + "stream", + "stream/promises", + "stream/consumers", + "stream/web", + "string_decoder", + "sys", + "timers", + "timers/promises", + "tls", + "trace_events", + "tty", + "url", + "util", + "util/types", + "v8", + "vm", + "wasi", + "worker_threads", + "zlib", + ] + + if (builtInNodeMods.includes(moduleSpecifier.replace("node:", ""))) { + return "node" + } + + // strip module filepath e.g. lodash/identity => lodash + const [a = "", b = ""] = moduleSpecifier.split("/") + const moduleName = a.startsWith("@") ? `${a}/${b}` : a + + return moduleName + } + \ No newline at end of file diff --git a/src/hooks/editor/ata/index.ts b/src/hooks/editor/ata/index.ts new file mode 100644 index 0000000..977ad47 --- /dev/null +++ b/src/hooks/editor/ata/index.ts @@ -0,0 +1,299 @@ +import { + getDTSFileForModuleWithVersion, + getFiletreeForModuleWithVersion, + getNPMVersionForModuleReference, + getNPMVersionsForModule, + NPMTreeMeta, + } from "./apis" + import { mapModuleNameToModule } from "./edgeCases" + + export interface ATABootstrapConfig { + /** A object you pass in to get callbacks */ + delegate: { + /** The callback which gets called when ATA decides a file needs to be written to your VFS */ + receivedFile?: (code: string, path: string) => void + /** A way to display progress */ + progress?: (downloaded: number, estimatedTotal: number) => void + /** Note: An error message does not mean ATA has stopped! */ + errorMessage?: (userFacingMessage: string, error: Error) => void + /** A callback indicating that ATA actually has work to do */ + started?: () => void + /** The callback when all ATA has finished */ + finished?: (files: Map) => void + } + /** Passed to fetch as the user-agent */ + projectName: string + /** Your local copy of typescript */ + typescript: typeof import("typescript") + /** If you need a custom version of fetch */ + fetcher?: typeof fetch + /** If you need a custom logger instead of the console global */ + logger?: Logger + } + + type ModuleMeta = { state: "loading" } + + /** + * The function which starts up type acquisition, + * returns a function which you then pass the initial + * source code for the app with. + * + * This is effectively the main export, everything else is + * basically exported for tests and should be considered + * implementation details by consumers. + */ + export const setupTypeAcquisition = (config: ATABootstrapConfig) => { + const moduleMap = new Map() + const fsMap = new Map() + const processedModules = new Set() + + let estimatedToDownload = 0 + let estimatedDownloaded = 0 + + return (initialSourceFiles: string[]) => { + estimatedToDownload = 0 + estimatedDownloaded = 0 + + return resolveDeps(initialSourceFiles, 0).then(t => { + if (estimatedDownloaded > 0) { + processedModules.clear() + config.delegate.finished?.(fsMap) + } + }) + } + + async function resolveDeps(initialSourceFiles: string[], depth: number) { + const depsToGet = initialSourceFiles.reduce((_depsToGet: { module: string, version: string | undefined }[], initialSourceFile: string) => { + return _depsToGet.concat(getNewDependencies(config, moduleMap, initialSourceFile, processedModules)) + }, []) + + // Make it so it won't get re-downloaded + depsToGet.forEach(dep => moduleMap.set(dep.module, { state: "loading" })) + + // Grab the module trees which gives us a list of files to download + const trees = await Promise.all(depsToGet.map(f => getFileTreeForModuleWithTag(config, f.module, f.version))) + const treesOnly = trees.filter(t => !("error" in t)) as NPMTreeMeta[] + + // These are the modules which we can grab directly + const hasDTS = treesOnly.filter(t => t.files.find(f => f.name.endsWith(".d.ts"))) + const dtsFilesFromNPM = hasDTS.map(t => treeToDTSFiles(t, `/node_modules/${t.moduleName}`)) + + // These are ones we need to look on DT for (which may not be there, who knows) + const mightBeOnDT = treesOnly.filter(t => !hasDTS.includes(t)) + const dtTrees = await Promise.all( + // TODO: Switch from 'latest' to the version from the original tree which is user-controlled + mightBeOnDT.map(f => getFileTreeForModuleWithTag(config, `@types/${getDTName(f.moduleName)}`, "latest")) + ) + + const dtTreesOnly = dtTrees.filter(t => !("error" in t)) as NPMTreeMeta[] + const dtsFilesFromDT = dtTreesOnly.map(t => treeToDTSFiles(t, `/node_modules/@types/${getDTName(t.moduleName).replace("types__", "")}`)) + + // Collect all the npm and DT DTS requests and getFiletreeForModuleWithVersionten their arrays + const allDTSFiles = dtsFilesFromNPM.concat(dtsFilesFromDT).reduce((p, c) => p.concat(c), []) + estimatedToDownload += allDTSFiles.length + if (allDTSFiles.length && depth === 0) { + config.delegate.started?.() + } + + // Grab the package.jsons for each dependency + for (const tree of treesOnly) { + let prefix = `/node_modules/${tree.moduleName}` + if (dtTreesOnly.includes(tree)) prefix = `/node_modules/@types/${getDTName(tree.moduleName).replace("types__", "")}` + const path = prefix + "/package.json" + const pkgJSON = await getDTSFileForModuleWithVersion(config, tree.moduleName, tree.version, "/package.json") + + if (typeof pkgJSON == "string") { + fsMap.set(path, pkgJSON) + config.delegate.receivedFile?.(pkgJSON, path) + } else { + config.logger?.error(`Could not download package.json for ${tree.moduleName}`) + } + } + + // Grab all dts files + await Promise.all( + allDTSFiles.map(async dts => { + const dtsCode = await getDTSFileForModuleWithVersion(config, dts.moduleName, dts.moduleVersion, dts.path) + estimatedDownloaded++ + if (dtsCode instanceof Error) { + // TODO? + config.logger?.error(`Had an issue getting ${dts.path} for ${dts.moduleName}`) + } else { + fsMap.set(dts.vfsPath, dtsCode) + config.delegate.receivedFile?.(dtsCode, dts.vfsPath) + + // Send a progress note every 5 downloads + if (config.delegate.progress && estimatedDownloaded % 5 === 0) { + config.delegate.progress(estimatedDownloaded, estimatedToDownload) + } + + // Recurse through deps + await resolveDeps([dtsCode], depth + 1) + } + }) + ) + } + } + + type ATADownload = { + moduleName: string + moduleVersion: string + vfsPath: string + path: string + } + + function treeToDTSFiles(tree: NPMTreeMeta, vfsPrefix: string) { + const dtsRefs: ATADownload[] = [] + + for (const file of tree.files) { + if (file.name.endsWith(".d.ts")) { + dtsRefs.push({ + moduleName: tree.moduleName, + moduleVersion: tree.version, + vfsPath: `${vfsPrefix}${file.name}`, + path: file.name, + }) + } + } + return dtsRefs + } + + /** + * Pull out any potential references to other modules (including relatives) with their + * npm versioning strat too if someone opts into a different version via an inline end of line comment + */ + export const getReferencesForModule = (ts: typeof import("typescript"), code: string, processedModules: Set ) => { + const meta = ts.preProcessFile(code) + + // Ensure we don't try download TypeScript lib references + // @ts-ignore - private but likely to never change + const libMap: Map = ts.libMap || new Map() + + // TODO: strip /// ? + + const referencesRaw = meta.referencedFiles + .concat(meta.importedFiles) + .concat(meta.libReferenceDirectives) + .filter(f => !f.fileName.endsWith(".d.ts")) + .filter(d => !libMap.has(d.fileName)) + + let references: { module: string, version: string | undefined }[] = [] + + for (const ref of referencesRaw) { + let version = undefined + if (!ref.fileName.startsWith(".")) { + version = "latest" + const line = code.slice(ref.end).split("\n")[0]! + if (line.includes("// types:")) version = line.split("// types: ")[1]!.trim() + } + + const processedModule = `${ref.fileName}@${version ?? ""}` + if (processedModules.has(processedModule)) { + continue + } + processedModules.add(processedModule) + + references.push({ + module: ref.fileName, + version, + }) + } + + referencesRaw.map(r => { + let version = undefined + if (!r.fileName.startsWith(".")) { + version = "latest" + const line = code.slice(r.end).split("\n")[0]! + if (line.includes("// types:")) version = line.split("// types: ")[1]!.trim() + } + + return { + module: r.fileName, + version, + } + }) + + return references + } + + /** A list of modules from the current sourcefile which we don't have existing files for */ + export function getNewDependencies(config: ATABootstrapConfig, moduleMap: Map, code: string, processedModules: Set) { + const refs = getReferencesForModule(config.typescript, code, processedModules).map(ref => ({ + ...ref, + module: mapModuleNameToModule(ref.module), + })) + + // Drop relative paths because we're getting all the files + const modules = refs.filter(f => !f.module.startsWith(".")).filter(m => !moduleMap.has(m.module)) + return modules + } + + /** The bulk load of the work in getting the filetree based on how people think about npm names and versions */ + export const getFileTreeForModuleWithTag = async ( + config: ATABootstrapConfig, + moduleName: string, + tag: string | undefined + ) => { + let toDownload = tag || "latest" + + // I think having at least 2 dots is a reasonable approx for being a semver and not a tag, + // we can skip an API request, TBH this is probably rare + if (toDownload.split(".").length < 2) { + // The jsdelivr API needs a _version_ not a tag. So, we need to switch out + // the tag to the version via an API request. + const response = await getNPMVersionForModuleReference(config, moduleName, toDownload) + if (response instanceof Error) { + return { + error: response, + userFacingMessage: `Could not go from a tag to version on npm for ${moduleName} - possible typo?`, + } + } + + const neededVersion = response.version + if (!neededVersion) { + const versions = await getNPMVersionsForModule(config, moduleName) + if (versions instanceof Error) { + return { + error: response, + userFacingMessage: `Could not get versions on npm for ${moduleName} - possible typo?`, + } + } + + const tags = Object.entries(versions.tags).join(", ") + return { + error: new Error("Could not find tag for module"), + userFacingMessage: `Could not find a tag for ${moduleName} called ${tag}. Did find ${tags}`, + } + } + + toDownload = neededVersion + } + + const res = await getFiletreeForModuleWithVersion(config, moduleName, toDownload) + if (res instanceof Error) { + return { + error: res, + userFacingMessage: `Could not get the files for ${moduleName}@${toDownload}. Is it possibly a typo?`, + } + } + + return res + } + + interface Logger { + log: (...args: any[]) => void + error: (...args: any[]) => void + groupCollapsed: (...args: any[]) => void + groupEnd: (...args: any[]) => void + } + + // Taken from dts-gen: https://github.com/microsoft/dts-gen/blob/master/lib/names.ts + function getDTName(s: string) { + if (s.indexOf("@") === 0 && s.indexOf("/") !== -1) { + // we have a scoped module, e.g. @bla/foo + // which should be converted to bla__foo + s = s.substr(1).replace("/", "__") + } + return s + } + \ No newline at end of file diff --git a/src/hooks/editor/useTSServer.ts b/src/hooks/editor/useTSServer.ts new file mode 100644 index 0000000..3061d03 --- /dev/null +++ b/src/hooks/editor/useTSServer.ts @@ -0,0 +1,79 @@ +import Worker from "@/workers/tsServer.worker?worker"; +import { useEffect } from "react"; +import * as tsvfs from "@typescript/vfs"; +import _ts, { CompilerOptions } from "typescript"; +import lzstring from "lz-string"; +import { getLatestTS, getTSAccessoryLibs } from "@/tools/tsserver-tools"; +import { setupTypeAcquisition } from "@/hooks/editor/ata"; + +export async function init() { + const ts = await getLatestTS(); + const compilerOptions = { + target: ts.ScriptTarget.ES2021, + module: ts.ScriptTarget.ES2020, + lib: ["es2021", "es2020", "dom", "webworker"], + // the following options + // esmoduleInterop and resolveJsonModule + // are necessary for ATA to work properly + // DO NOT REMOVE IT THX !!! + esModuleInterop: true, + resolveJsonModule: true, + } as unknown as CompilerOptions; + const fsMap = await tsvfs.createDefaultMapFromCDN( + compilerOptions, + ts.version, + true, + _ts, + lzstring + ); + fsMap.set( + "/index.ts", + "import React from 'react'; export const a: string = React.useState();" + ); + fsMap.set( + "/a.ts", + "import { b } from './index.ts'; import { c } from 'react'; const f: string = c()" + ); + fsMap.set( + "/b.ts", + "import { useCreateEvento } from 'evento-react'; const f: string = useCreateEvento(1); export default f" + ); + + // fsMap.set("/is-odd.ts", "const a: string = 'a'; export default a"); + const TSLibs = await getTSAccessoryLibs(); + for (const lib of TSLibs) { + fsMap.set(lib.name, lib.content); + } + + const fn = setupTypeAcquisition({ + delegate: { + receivedFile: (code, path) => { + console.log("receivedFile", path); + fsMap.set(path, code); + }, + }, + projectName: "index", + typescript: _ts, + }); + + await fn(Object.values(Object.fromEntries(fsMap.entries()))); + + const system = tsvfs.createSystem(fsMap); + const env = tsvfs.createVirtualTypeScriptEnvironment( + system, + Object.keys(Object.fromEntries(fsMap.entries())), + ts, + compilerOptions + ); + + const errors = env.languageService.getSemanticDiagnostics("b.ts"); + + console.log("ts errors", errors, env.getSourceFile("a.ts")); +} + +export function useTSServer() { + useEffect(() => { + init(); + }, []); + return null; +} diff --git a/src/hooks/playground/useEsbuild.ts b/src/hooks/playground/useEsbuild.ts index c6e35b5..fbe7225 100644 --- a/src/hooks/playground/useEsbuild.ts +++ b/src/hooks/playground/useEsbuild.ts @@ -130,7 +130,7 @@ export default function useEsbuild(vfsFromUrl: VFS | null) { const contents = make_css_contents(vfs[args.path] ? vfs[args.path] : '') const result: esbuild.OnLoadResult = { - loader: 'jsx', + loader: 'tsx', contents, } @@ -140,14 +140,14 @@ export default function useEsbuild(vfsFromUrl: VFS | null) { build.onLoad({ filter: /.*/ }, async (args: any) => { if (args.path === ENTRY_POINT_JSX) { return ({ - loader: 'jsx', + loader: 'tsx', contents: vfs[ENTRY_POINT_JSX], }) } if (vfs[args.path]) { return { - loader: 'jsx', + loader: 'tsx', contents: vfs[args.path], } } @@ -160,7 +160,7 @@ export default function useEsbuild(vfsFromUrl: VFS | null) { const { data, request } = await axios.get(args.path) const result: esbuild.OnLoadResult = { - loader: 'jsx', + loader: 'tsx', contents: data, resolveDir: new URL('./', request.responseURL).pathname, } diff --git a/src/tools/tsserver-tools.ts b/src/tools/tsserver-tools.ts new file mode 100644 index 0000000..7759b17 --- /dev/null +++ b/src/tools/tsserver-tools.ts @@ -0,0 +1,84 @@ +import _ts from "typescript"; + +type FilesMap = Map; + +export function getPkgVersion(pkg: string) { + return fetch(`https://data.jsdelivr.com/v1/package/resolve/npm/${pkg}`) + .then((res) => res.json()) + .then((res) => res.version); +} + +export function getPkgAtTypesVersion(pkg: string) { + return fetch( + `https://data.jsdelivr.com/v1/package/resolve/npm/@types/${pkg}` + ) + .then((res) => res.json()) + .then((res) => res.version); +} + +export function getPkgFileTree(pkg: string, version: string) { + return fetch( + `https://data.jsdelivr.com/v1/package/npm/${pkg}@${version}/flat` + ) + .then((res) => res.json()) + .then((res) => res.files); +} + +export function getPkgAtTypesFileTree(pkg: string, version: string) { + return fetch(`https://cdn.jsdelivr.net/npm/@types/${pkg}@${version}/flat`) + .then((res) => res.json()) + .then((res) => res.files); +} + +export function getPkgFile(pkg: string, version: string, filePath: string) { + return fetch( + `https://cdn.jsdelivr.net/npm/${pkg}@${version}${filePath}` + ).then((res) => res.text()); +} + +export async function getLatestTS() { + try { + // @ts-ignore + return (await import("https://esm.sh/typescript")) as typeof _ts; + } catch (e) { + return _ts; + } +} + +export async function getTSAccessoryLibs() { + const latestTSVersion = await getPkgVersion("typescript"); + const filetree = await getPkgFileTree("typescript", latestTSVersion); + + const libs: Array> = []; + + for (const file of filetree) { + if (file.name.endsWith(".d.ts")) { + libs.push( + getPkgFile("typescript", latestTSVersion, file.name).then( + (fileContent) => ({ + name: file.name.replace("/lib/", "/"), + content: fileContent, + }) + ) + ); + } + } + + return await Promise.all(libs); +} + +export async function getImportsFromFile({ + file, + ts, +}: { + file: string; + ts: typeof _ts; +}) { + const { + importedFiles, + libReferenceDirectives, + referencedFiles, + } = ts.preProcessFile(file); + + return [...importedFiles, ...libReferenceDirectives, ...referencedFiles]; +} diff --git a/src/workers/tsServer.worker.ts b/src/workers/tsServer.worker.ts new file mode 100644 index 0000000..8f4a11d --- /dev/null +++ b/src/workers/tsServer.worker.ts @@ -0,0 +1,99 @@ +// worker.ts +import * as tsvfs from '@typescript/vfs'; +import _ts, { CompilerOptions } from 'typescript'; +import lzstring from 'lz-string'; + +self.importScripts("https://unpkg.com/@typescript/vfs@1.3.5/dist/vfs.globals.js"); +importScripts( + "https://cdnjs.cloudflare.com/ajax/libs/typescript/4.4.3/typescript.min.js" +); +importScripts("https://unpkg.com/@okikio/emitter@2.1.7/lib/api.js"); + +export type VFS = typeof import("@typescript/vfs"); +export type EVENT_EMITTER = import("@okikio/emitter").EventEmitter; +export type Diagnostic = import("@codemirror/lint").Diagnostic; + +var { + createDefaultMapFromCDN, + createSystem, + createVirtualTypeScriptEnvironment, +} = globalThis.tsvfs as VFS; +var ts = globalThis.ts; // as TS + +const isOddTypes = ` +// Type definitions for is-odd 3.0 +// Project: https://github.com/jonschlinkert/is-odd +// Definitions by: DefinitelyTyped +// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped + +/** + * Return true if a given number is odd or not. + */ +declare function isOdd(value: number|string): boolean; + +export = isOdd; +` + +async function fetcher(url: any) { + console.log('fetcher', url) + return await fetch('https://cdn.jsdelivr.net/npm/@types/is-odd@3.0.1/index.d.ts') +} + +export async function init() { + const ts = await getLatestTS() + const compilerOptions = { + target: ts.ScriptTarget.ES2021, + module: ts.ScriptTarget.ES2020, + lib: ["es2021", "es2020", "dom", "webworker"], + esModuleInterop: true, + } as unknown as CompilerOptions; + const fsMap = await tsvfs.createDefaultMapFromCDN( + compilerOptions, + ts.version, + true, + _ts, + lzstring, + fetcher + ); + fsMap.set('index.ts', "import isOdd from 'is-odd'; const a: string = 0"); + fsMap.set('node_modules/@types/is-odd/index.d.ts', isOddTypes) + console.log('ts preprocess', ts.preProcessFile("import { type Qualsiasi } from 'is-odd@1.0.0'; const a: string = 0")) + + const system = tsvfs.createSystem(fsMap); + const env = tsvfs.createVirtualTypeScriptEnvironment( + system, + ['index.ts', 'node_modules/@types/is-odd/index.d.ts'], + ts, + {} + ); + + const errors = env.languageService.getSemanticDiagnostics('index.ts') + + console.log('ts errors', errors, env.getSourceFile('index.ts')) + return errors +} + +async function getLatestTS() { +// @ts-ignore + const latestTS = await import("https://esm.sh/typescript") as typeof _ts + + return latestTS +} +const getTs = async () => { + // @ts-ignore + const ts = await import('https://unpkg.com/typescript@4.5.2/lib/typescript.js'); + return ts +} +// Post data to parent thread +self.postMessage({ foo: 'foo' }); + +// Respond to message from parent thread +self.onmessage = async (event) => { + const ts = await getTs(); + try { + const err = await init() + } catch (e) { + console.log('worker', e) + } + console.log(event.data, ts); +}; From 54b290a6e4fe7682d5b567bb21766ce9a92ec43a Mon Sep 17 00:00:00 2001 From: AyloSrd <63412199+AyloSrd@users.noreply.github.com> Date: Sun, 1 Oct 2023 01:39:35 +0200 Subject: [PATCH 2/5] rp - crediting ts ata --- src/hooks/editor/ata/index.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/hooks/editor/ata/index.ts b/src/hooks/editor/ata/index.ts index 977ad47..b8ff79e 100644 --- a/src/hooks/editor/ata/index.ts +++ b/src/hooks/editor/ata/index.ts @@ -1,3 +1,4 @@ +// Code form Typescript ATA packege, small changes operated to allow multiple file input import { getDTSFileForModuleWithVersion, getFiletreeForModuleWithVersion, From ae860bbbb0477f358f01a390550a473afeec3f5e Mon Sep 17 00:00:00 2001 From: Luca Marongiu Date: Fri, 13 Oct 2023 22:23:05 +0200 Subject: [PATCH 3/5] RP-multitabs-ata --- pnpm-lock.yaml | 810 +++++++++++++++---------------- src/components/editor/Editor.tsx | 2 +- src/hooks/editor/ata/index.ts | 7 +- src/hooks/editor/useTSServer.ts | 41 +- src/hooks/playground/useVFS.ts | 8 +- 5 files changed, 434 insertions(+), 434 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 12ccc23..f569968 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1,117 +1,155 @@ -lockfileVersion: 5.4 - -specifiers: - '@codemirror/autocomplete': ^6.1.0 - '@codemirror/lang-css': ^6.1.1 - '@codemirror/lang-javascript': ^6.0.2 - '@codemirror/view': ^6.9.3 - '@lezer/highlight': ^1.1.4 - '@rollup/plugin-alias': ^3.1.9 - '@stackblitz/sdk': ^1.8.0 - '@types/codemirror': ^5.60.5 - '@types/dedent': ^0.7.0 - '@types/linkifyjs': ^2.1.4 - '@types/lz-string': ^1.3.34 - '@types/node': ^18.6.4 - '@types/react': ^18.0.17 - '@types/react-dom': ^18.0.6 - '@types/styled-components': ^5.1.25 - '@uiw/codemirror-themes': ^4.11.5 - '@uiw/react-codemirror': ^4.19.11 - '@vitejs/plugin-react': ^2.0.1 - axios: ^0.26.1 - code-mirror-themes: ^1.0.0 - codemirror: ^5.65.2 - console-feed: ^3.4.0 - dedent: ^0.7.0 - esbuild-wasm: ^0.14.54 - evento-react: '*' - jszip: ^3.10.0 - localforage: ^1.10.0 - lz-string: ^1.4.4 - react: ^18.2.0 - react-codemirror2: ^7.2.1 - react-dom: ^18.2.0 - react-is: ^18.2.0 - styled-components: ^5.3.5 - typescript: ^4.5.4 - vite: ^3.0.7 +lockfileVersion: '6.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false dependencies: - '@codemirror/autocomplete': 6.4.2 - '@codemirror/lang-css': 6.1.1 - '@codemirror/lang-javascript': 6.1.4 - '@codemirror/view': 6.9.3 - '@lezer/highlight': 1.1.4 - '@stackblitz/sdk': 1.8.2 - '@uiw/codemirror-themes': 4.19.11 - '@uiw/react-codemirror': 4.19.11_fcfoxczgl3bih2inr776zkfwzu - axios: 0.26.1 - code-mirror-themes: 1.0.0 - codemirror: 5.65.12 - console-feed: 3.4.5_biqbaboplfbrettd7655fr4n2y - dedent: 0.7.0 - esbuild-wasm: 0.14.54 - evento-react: 0.2.2_react@18.2.0 - jszip: 3.10.1 - localforage: 1.10.0 - lz-string: 1.5.0 - react: 18.2.0 - react-codemirror2: 7.2.1_6rbpxrfnogqidakyklns6o2334 - react-dom: 18.2.0_react@18.2.0 - react-is: 18.2.0 - styled-components: 5.3.9_7i5myeigehqah43i5u7wbekgba + '@codemirror/autocomplete': + specifier: ^6.9.1 + version: 6.9.1(@codemirror/language@6.9.0)(@codemirror/state@6.2.1)(@codemirror/view@6.19.0)(@lezer/common@1.0.4) + '@codemirror/lang-css': + specifier: ^6.2.1 + version: 6.2.1(@codemirror/view@6.19.0) + '@codemirror/lang-javascript': + specifier: ^6.2.1 + version: 6.2.1 + '@codemirror/view': + specifier: ^6.19.0 + version: 6.19.0 + '@lezer/highlight': + specifier: ^1.1.6 + version: 1.1.6 + '@stackblitz/sdk': + specifier: ^1.9.0 + version: 1.9.0 + '@typescript/vfs': + specifier: ^1.5.0 + version: 1.5.0 + '@uiw/codemirror-themes': + specifier: ^4.21.13 + version: 4.21.13(@codemirror/language@6.9.0)(@codemirror/state@6.2.1)(@codemirror/view@6.19.0) + '@uiw/react-codemirror': + specifier: ^4.21.13 + version: 4.21.13(@babel/runtime@7.22.15)(@codemirror/autocomplete@6.9.1)(@codemirror/language@6.9.0)(@codemirror/lint@6.4.2)(@codemirror/search@6.5.3)(@codemirror/state@6.2.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.19.0)(codemirror@5.65.15)(react-dom@18.2.0)(react@18.2.0) + axios: + specifier: ^0.26.1 + version: 0.26.1 + code-mirror-themes: + specifier: ^1.0.0 + version: 1.0.0 + codemirror: + specifier: ^5.65.15 + version: 5.65.15 + console-feed: + specifier: ^3.5.0 + version: 3.5.0(jquery@3.7.1)(react-dom@18.2.0)(react@18.2.0) + dedent: + specifier: ^0.7.0 + version: 0.7.0 + esbuild-wasm: + specifier: ^0.14.54 + version: 0.14.54 + evento-react: + specifier: ^0.2.2 + version: 0.2.2(react@18.2.0) + jszip: + specifier: ^3.10.1 + version: 3.10.1 + localforage: + specifier: ^1.10.0 + version: 1.10.0 + lz-string: + specifier: ^1.5.0 + version: 1.5.0 + react: + specifier: ^18.2.0 + version: 18.2.0 + react-codemirror2: + specifier: ^7.2.1 + version: 7.2.1(codemirror@5.65.15)(react@18.2.0) + react-dom: + specifier: ^18.2.0 + version: 18.2.0(react@18.2.0) + react-is: + specifier: ^18.2.0 + version: 18.2.0 + styled-components: + specifier: ^5.3.11 + version: 5.3.11(@babel/core@7.22.19)(react-dom@18.2.0)(react-is@18.2.0)(react@18.2.0) devDependencies: - '@rollup/plugin-alias': 3.1.9 - '@types/codemirror': 5.60.7 - '@types/dedent': 0.7.0 - '@types/linkifyjs': 2.1.4 - '@types/lz-string': 1.5.0 - '@types/node': 18.15.11 - '@types/react': 18.0.31 - '@types/react-dom': 18.0.11 - '@types/styled-components': 5.1.26 - '@vitejs/plugin-react': 2.2.0_vite@3.2.5 - typescript: 4.9.5 - vite: 3.2.5_@types+node@18.15.11 + '@rollup/plugin-alias': + specifier: ^3.1.9 + version: 3.1.9(rollup@2.79.1) + '@types/codemirror': + specifier: ^5.60.10 + version: 5.60.10 + '@types/dedent': + specifier: ^0.7.0 + version: 0.7.0 + '@types/linkifyjs': + specifier: ^2.1.5 + version: 2.1.5 + '@types/lz-string': + specifier: ^1.5.0 + version: 1.5.0 + '@types/node': + specifier: ^18.17.17 + version: 18.17.17 + '@types/react': + specifier: ^18.2.21 + version: 18.2.21 + '@types/react-dom': + specifier: ^18.2.7 + version: 18.2.7 + '@types/styled-components': + specifier: ^5.1.27 + version: 5.1.27 + '@vitejs/plugin-react': + specifier: ^2.2.0 + version: 2.2.0(vite@3.2.7) + typescript: + specifier: ^4.9.5 + version: 4.9.5 + vite: + specifier: ^3.2.7 + version: 3.2.7(@types/node@18.17.17) packages: - /@ampproject/remapping/2.2.0: - resolution: {integrity: sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==} + /@ampproject/remapping@2.2.1: + resolution: {integrity: sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==} engines: {node: '>=6.0.0'} dependencies: '@jridgewell/gen-mapping': 0.3.3 '@jridgewell/trace-mapping': 0.3.19 - dev: true - /@babel/code-frame/7.21.4: - resolution: {integrity: sha512-LYvhNKfwWSPpocw8GI7gpK2nq3HSDuEPC/uSYaALSJu9xjsalaaYFOq0Pwt5KmVqwEbZlDu81aLXwBOmD/Fv9g==} + /@babel/code-frame@7.22.13: + resolution: {integrity: sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==} engines: {node: '>=6.9.0'} dependencies: '@babel/highlight': 7.22.13 chalk: 2.4.2 - /@babel/compat-data/7.21.4: - resolution: {integrity: sha512-/DYyDpeCfaVinT40FPGdkkb+lYSKvsVuMjDAG7jPOWWiM1ibOaB9CXJAlc4d1QpP/U2q2P9jbrSlClKSErd55g==} + /@babel/compat-data@7.22.9: + resolution: {integrity: sha512-5UamI7xkUcJ3i9qVDS+KFDEK8/7oJ55/sJMB1Ge7IEapr7KfdfV/HErR+koZwOfd+SgtFKOKRhRakdg++DcJpQ==} engines: {node: '>=6.9.0'} - dev: true - /@babel/core/7.21.4: - resolution: {integrity: sha512-qt/YV149Jman/6AfmlxJ04LMIu8bMoyl3RB91yTFrxQmgbrSvQMy7cI8Q62FHx1t8wJ8B5fu0UDoLwHAhUo1QA==} + /@babel/core@7.22.19: + resolution: {integrity: sha512-Q8Yj5X4LHVYTbLCKVz0//2D2aDmHF4xzCdEttYvKOnWvErGsa6geHXD6w46x64n5tP69VfeH+IfSrdyH3MLhwA==} engines: {node: '>=6.9.0'} dependencies: - '@ampproject/remapping': 2.2.0 - '@babel/code-frame': 7.21.4 - '@babel/generator': 7.21.4 - '@babel/helper-compilation-targets': 7.21.4_@babel+core@7.21.4 - '@babel/helper-module-transforms': 7.21.2 - '@babel/helpers': 7.21.0 - '@babel/parser': 7.21.4 - '@babel/template': 7.20.7 - '@babel/traverse': 7.21.4 - '@babel/types': 7.21.4 + '@ampproject/remapping': 2.2.1 + '@babel/code-frame': 7.22.13 + '@babel/generator': 7.22.15 + '@babel/helper-compilation-targets': 7.22.15 + '@babel/helper-module-transforms': 7.22.19(@babel/core@7.22.19) + '@babel/helpers': 7.22.15 + '@babel/parser': 7.22.16 + '@babel/template': 7.22.15 + '@babel/traverse': 7.22.19(supports-color@5.5.0) + '@babel/types': 7.22.19 convert-source-map: 1.9.0 debug: 4.3.4(supports-color@5.5.0) gensync: 1.0.0-beta.2 @@ -119,10 +157,9 @@ packages: semver: 6.3.1 transitivePeerDependencies: - supports-color - dev: true - /@babel/generator/7.21.4: - resolution: {integrity: sha512-NieM3pVIYW2SwGzKoqfPrQsf4xGs9M9AIG3ThppsSRmO+m7eQhmI6amajKMUeIO37wFfsvnvcxQFx6x6iqxDnA==} + /@babel/generator@7.22.15: + resolution: {integrity: sha512-Zu9oWARBqeVOW0dZOjXc3JObrzuqothQ3y/n1kUtrjCoCPLkXUwMvOo/F/TCfoHMbWIFlWwpZtkZVb9ga4U2pA==} engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.22.19 @@ -130,14 +167,14 @@ packages: '@jridgewell/trace-mapping': 0.3.19 jsesc: 2.5.2 - /@babel/helper-annotate-as-pure/7.18.6: - resolution: {integrity: sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==} + /@babel/helper-annotate-as-pure@7.22.5: + resolution: {integrity: sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==} engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.22.19 - /@babel/helper-compilation-targets/7.21.4_@babel+core@7.21.4: - resolution: {integrity: sha512-Fa0tTuOXZ1iL8IeDFUWCzjZcn+sJGd9RZdH9esYVjEejGmzf+FFYQpMi/kZUk2kPy/q1H3/GPw7np8qar/stfg==} + /@babel/helper-compilation-targets@7.22.15: + resolution: {integrity: sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw==} engines: {node: '>=6.9.0'} dependencies: '@babel/compat-data': 7.22.9 @@ -145,115 +182,97 @@ packages: browserslist: 4.21.10 lru-cache: 5.1.1 semver: 6.3.1 - dev: true - /@babel/helper-environment-visitor/7.18.9: - resolution: {integrity: sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==} + /@babel/helper-environment-visitor@7.22.5: + resolution: {integrity: sha512-XGmhECfVA/5sAt+H+xpSg0mfrHq6FzNr9Oxh7PSEBBRUb/mL7Kz3NICXb194rCqAEdxkhPT1a88teizAFyvk8Q==} engines: {node: '>=6.9.0'} - /@babel/helper-function-name/7.21.0: - resolution: {integrity: sha512-HfK1aMRanKHpxemaY2gqBmL04iAPOPRj7DxtNbiDOrJK+gdwkiNRVpCpUJYbUT+aZyemKN8brqTOxzCaG6ExRg==} + /@babel/helper-function-name@7.22.5: + resolution: {integrity: sha512-wtHSq6jMRE3uF2otvfuD3DIvVhOsSNshQl0Qrd7qC9oQJzHvOL4qQXlQn2916+CXGywIjpGuIkoyZRRxHPiNQQ==} engines: {node: '>=6.9.0'} dependencies: '@babel/template': 7.22.15 '@babel/types': 7.22.19 - /@babel/helper-hoist-variables/7.18.6: - resolution: {integrity: sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==} + /@babel/helper-hoist-variables@7.22.5: + resolution: {integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==} engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.22.19 - /@babel/helper-module-imports/7.21.4: - resolution: {integrity: sha512-orajc5T2PsRYUN3ZryCEFeMDYwyw09c/pZeaQEZPH0MpKzSvn3e0uXsDBu3k03VI+9DBiRo+l22BfKTpKwa/Wg==} + /@babel/helper-module-imports@7.22.15: + resolution: {integrity: sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==} engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.22.19 - /@babel/helper-module-transforms/7.21.2: - resolution: {integrity: sha512-79yj2AR4U/Oqq/WOV7Lx6hUjau1Zfo4cI+JLAVYeMV5XIlbOhmjEk5ulbTc9fMpmlojzZHkUUxAiK+UKn+hNQQ==} + /@babel/helper-module-transforms@7.22.19(@babel/core@7.22.19): + resolution: {integrity: sha512-m6h1cJvn+OJ+R3jOHp30faq5xKJ7VbjwDj5RGgHuRlU9hrMeKsGC+JpihkR5w1g7IfseCPPtZ0r7/hB4UKaYlA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/helper-environment-visitor': 7.18.9 - '@babel/helper-module-imports': 7.21.4 - '@babel/helper-simple-access': 7.20.2 - '@babel/helper-split-export-declaration': 7.18.6 - '@babel/helper-validator-identifier': 7.19.1 - '@babel/template': 7.20.7 - '@babel/traverse': 7.21.4 - '@babel/types': 7.21.4 - transitivePeerDependencies: - - supports-color - dev: true + '@babel/core': 7.22.19 + '@babel/helper-environment-visitor': 7.22.5 + '@babel/helper-module-imports': 7.22.15 + '@babel/helper-simple-access': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.6 + '@babel/helper-validator-identifier': 7.22.19 - /@babel/helper-plugin-utils/7.20.2: - resolution: {integrity: sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==} + /@babel/helper-plugin-utils@7.22.5: + resolution: {integrity: sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==} engines: {node: '>=6.9.0'} - /@babel/helper-simple-access/7.20.2: - resolution: {integrity: sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==} + /@babel/helper-simple-access@7.22.5: + resolution: {integrity: sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==} engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.22.19 - dev: true - /@babel/helper-split-export-declaration/7.18.6: - resolution: {integrity: sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==} + /@babel/helper-split-export-declaration@7.22.6: + resolution: {integrity: sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==} engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.22.19 - /@babel/helper-string-parser/7.19.4: - resolution: {integrity: sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==} + /@babel/helper-string-parser@7.22.5: + resolution: {integrity: sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==} engines: {node: '>=6.9.0'} - /@babel/helper-validator-identifier/7.19.1: - resolution: {integrity: sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==} + /@babel/helper-validator-identifier@7.22.19: + resolution: {integrity: sha512-Tinq7ybnEPFFXhlYOYFiSjespWQk0dq2dRNAiMdRTOYQzEGqnnNyrTxPYHP5r6wGjlF1rFgABdDV0g8EwD6Qbg==} engines: {node: '>=6.9.0'} - /@babel/helper-validator-option/7.21.0: - resolution: {integrity: sha512-rmL/B8/f0mKS2baE9ZpyTcTavvEuWhTTW8amjzXNvYG4AwBsqTLikfXsEofsJEfKHf+HQVQbFOHy6o+4cnC/fQ==} + /@babel/helper-validator-option@7.22.15: + resolution: {integrity: sha512-bMn7RmyFjY/mdECUbgn9eoSY4vqvacUnS9i9vGAGttgFWesO6B4CYWA7XlpbWgBt71iv/hfbPlynohStqnu5hA==} engines: {node: '>=6.9.0'} - dev: true - /@babel/helpers/7.21.0: - resolution: {integrity: sha512-XXve0CBtOW0pd7MRzzmoyuSj0e3SEzj8pgyFxnTT1NJZL38BD1MK7yYrm8yefRPIDvNNe14xR4FdbHwpInD4rA==} + /@babel/helpers@7.22.15: + resolution: {integrity: sha512-7pAjK0aSdxOwR+CcYAqgWOGy5dcfvzsTIfFTb2odQqW47MDfv14UaJDY6eng8ylM2EaeKXdxaSWESbkmaQHTmw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/template': 7.20.7 - '@babel/traverse': 7.21.4 - '@babel/types': 7.21.4 + '@babel/template': 7.22.15 + '@babel/traverse': 7.22.19(supports-color@5.5.0) + '@babel/types': 7.22.19 transitivePeerDependencies: - supports-color - dev: true - /@babel/highlight/7.18.6: - resolution: {integrity: sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==} + /@babel/highlight@7.22.13: + resolution: {integrity: sha512-C/BaXcnnvBCmHTpz/VGZ8jgtE2aYlW4hxDhseJAWZb7gqGM/qtCK6iZUb0TyKFf7BOUsBH7Q7fkRsDRhg1XklQ==} engines: {node: '>=6.9.0'} dependencies: '@babel/helper-validator-identifier': 7.22.19 chalk: 2.4.2 js-tokens: 4.0.0 - /@babel/parser/7.21.4: - resolution: {integrity: sha512-alVJj7k7zIxqBZ7BTRhz0IqJFxW1VJbm6N8JbcYhQ186df9ZBPbZBmWSqAMXwHGsCJdYks7z/voa3ibiS5bCIw==} + /@babel/parser@7.22.16: + resolution: {integrity: sha512-+gPfKv8UWeKKeJTUxe59+OobVcrYHETCsORl61EmSkmgymguYk/X5bp7GuUIXaFsc6y++v8ZxPsLSSuujqDphA==} engines: {node: '>=6.0.0'} hasBin: true dependencies: '@babel/types': 7.22.19 - /@babel/plugin-syntax-jsx/7.21.4_@babel+core@7.21.4: - resolution: {integrity: sha512-5hewiLct5OKyh6PLKEYaFclcqtIgCb6bmELouxjF6up5q3Sov7rOayW4RwhbaBL0dit8rA80GNfY+UuDp2mBbQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/helper-plugin-utils': 7.22.5 - dev: false - - /@babel/plugin-syntax-jsx/7.22.5_@babel+core@7.22.19: + /@babel/plugin-syntax-jsx@7.22.5(@babel/core@7.22.19): resolution: {integrity: sha512-gvyP4hZrgrs/wWMaocvxZ44Hw0b3W8Pe+cMxc8V1ULQ07oh8VNbIRaoD1LRZVTvD+0nieDKjfgKg89sD7rrKrg==} engines: {node: '>=6.9.0'} peerDependencies: @@ -261,20 +280,19 @@ packages: dependencies: '@babel/core': 7.22.19 '@babel/helper-plugin-utils': 7.22.5 - dev: true - /@babel/plugin-transform-react-jsx-development/7.18.6_@babel+core@7.21.4: - resolution: {integrity: sha512-SA6HEjwYFKF7WDjWcMcMGUimmw/nhNRDWxr+KaLSCrkD/LMDBvWRmHAYgE1HDeF8KUuI8OAu+RT6EOtKxSW2qA==} + /@babel/plugin-transform-react-jsx-development@7.22.5(@babel/core@7.22.19): + resolution: {integrity: sha512-bDhuzwWMuInwCYeDeMzyi7TaBgRQei6DqxhbyniL7/VG4RSS7HtSL2QbY4eESy1KJqlWt8g3xeEBGPuo+XqC8A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.21.4 - '@babel/plugin-transform-react-jsx': 7.21.0_@babel+core@7.21.4 + '@babel/core': 7.22.19 + '@babel/plugin-transform-react-jsx': 7.22.15(@babel/core@7.22.19) dev: true - /@babel/plugin-transform-react-jsx-self/7.21.0_@babel+core@7.21.4: - resolution: {integrity: sha512-f/Eq+79JEu+KUANFks9UZCcvydOOGMgF7jBrcwjHa5jTZD8JivnhCJYvmlhR/WTXBWonDExPoW0eO/CR4QJirA==} + /@babel/plugin-transform-react-jsx-self@7.22.5(@babel/core@7.22.19): + resolution: {integrity: sha512-nTh2ogNUtxbiSbxaT4Ds6aXnXEipHweN9YRgOX/oNXdf0cCrGn/+2LozFa3lnPV5D90MkjhgckCPBrsoSc1a7g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -283,8 +301,8 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-react-jsx-source/7.19.6_@babel+core@7.21.4: - resolution: {integrity: sha512-RpAi004QyMNisst/pvSanoRdJ4q+jMCWyk9zdw/CyLB9j8RXEahodR6l2GyttDRyEVWZtbN+TpLiHJ3t34LbsQ==} + /@babel/plugin-transform-react-jsx-source@7.22.5(@babel/core@7.22.19): + resolution: {integrity: sha512-yIiRO6yobeEIaI0RTbIr8iAK9FcBHLtZq0S89ZPjDLQXBA4xvghaKqI0etp/tF3htTM0sazJKKLz9oEiGRtu7w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -293,80 +311,67 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-react-jsx/7.21.0_@babel+core@7.21.4: - resolution: {integrity: sha512-6OAWljMvQrZjR2DaNhVfRz6dkCAVV+ymcLUmaf8bccGOHn2v5rHJK3tTpij0BuhdYWP4LLaqj5lwcdlpAAPuvg==} + /@babel/plugin-transform-react-jsx@7.22.15(@babel/core@7.22.19): + resolution: {integrity: sha512-oKckg2eZFa8771O/5vi7XeTvmM6+O9cxZu+kanTU7tD4sin5nO/G8jGJhq8Hvt2Z0kUoEDRayuZLaUlYl8QuGA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.21.4 - '@babel/helper-annotate-as-pure': 7.18.6 - '@babel/helper-module-imports': 7.21.4 - '@babel/helper-plugin-utils': 7.20.2 - '@babel/plugin-syntax-jsx': 7.21.4_@babel+core@7.21.4 - '@babel/types': 7.21.4 + '@babel/core': 7.22.19 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-module-imports': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-jsx': 7.22.5(@babel/core@7.22.19) + '@babel/types': 7.22.19 dev: true - /@babel/runtime/7.21.0: - resolution: {integrity: sha512-xwII0//EObnq89Ji5AKYQaRYiW/nZ3llSv29d49IuxPhKbtJoLP+9QUUZ4nVragQVtaVGeZrpB+ZtG/Pdy/POw==} + /@babel/runtime@7.22.15: + resolution: {integrity: sha512-T0O+aa+4w0u06iNmapipJXMV4HoUir03hpx3/YqXXhu9xim3w+dVphjFWl1OH8NbZHw5Lbm9k45drDkgq2VNNA==} engines: {node: '>=6.9.0'} dependencies: regenerator-runtime: 0.14.0 dev: false - /@babel/template/7.20.7: - resolution: {integrity: sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==} + /@babel/template@7.22.15: + resolution: {integrity: sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==} engines: {node: '>=6.9.0'} dependencies: '@babel/code-frame': 7.22.13 '@babel/parser': 7.22.16 '@babel/types': 7.22.19 - /@babel/traverse/7.21.4: - resolution: {integrity: sha512-eyKrRHKdyZxqDm+fV1iqL9UAHMoIg0nDaGqfIOd8rKH17m5snv7Gn4qgjBoFfLz9APvjFU/ICT00NVCv1Epp8Q==} + /@babel/traverse@7.22.19(supports-color@5.5.0): + resolution: {integrity: sha512-ZCcpVPK64krfdScRbpxF6xA5fz7IOsfMwx1tcACvCzt6JY+0aHkBk7eIU8FRDSZRU5Zei6Z4JfgAxN1bqXGECg==} engines: {node: '>=6.9.0'} dependencies: - '@babel/code-frame': 7.21.4 - '@babel/generator': 7.21.4 - '@babel/helper-environment-visitor': 7.18.9 - '@babel/helper-function-name': 7.21.0 - '@babel/helper-hoist-variables': 7.18.6 - '@babel/helper-split-export-declaration': 7.18.6 - '@babel/parser': 7.21.4 - '@babel/types': 7.21.4 - debug: 4.3.4 + '@babel/code-frame': 7.22.13 + '@babel/generator': 7.22.15 + '@babel/helper-environment-visitor': 7.22.5 + '@babel/helper-function-name': 7.22.5 + '@babel/helper-hoist-variables': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.6 + '@babel/parser': 7.22.16 + '@babel/types': 7.22.19 + debug: 4.3.4(supports-color@5.5.0) globals: 11.12.0 transitivePeerDependencies: - supports-color - /@babel/traverse/7.21.4_supports-color@5.5.0: - resolution: {integrity: sha512-eyKrRHKdyZxqDm+fV1iqL9UAHMoIg0nDaGqfIOd8rKH17m5snv7Gn4qgjBoFfLz9APvjFU/ICT00NVCv1Epp8Q==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/code-frame': 7.21.4 - '@babel/generator': 7.21.4 - '@babel/helper-environment-visitor': 7.18.9 - '@babel/helper-function-name': 7.21.0 - '@babel/helper-hoist-variables': 7.18.6 - '@babel/helper-split-export-declaration': 7.18.6 - '@babel/parser': 7.21.4 - '@babel/types': 7.21.4 - debug: 4.3.4_supports-color@5.5.0 - globals: 11.12.0 - transitivePeerDependencies: - - supports-color - dev: false - - /@babel/types/7.21.4: - resolution: {integrity: sha512-rU2oY501qDxE8Pyo7i/Orqma4ziCOrby0/9mvbDUGEfvZjb279Nk9k19e2fiCxHbRRpY2ZyrgW1eq22mvmOIzA==} + /@babel/types@7.22.19: + resolution: {integrity: sha512-P7LAw/LbojPzkgp5oznjE6tQEIWbp4PkkfrZDINTro9zgBRtI324/EYsiSI7lhPbpIQ+DCeR2NNmMWANGGfZsg==} engines: {node: '>=6.9.0'} dependencies: '@babel/helper-string-parser': 7.22.5 '@babel/helper-validator-identifier': 7.22.19 to-fast-properties: 2.0.0 - /@codemirror/autocomplete/6.4.2: - resolution: {integrity: sha512-8WE2xp+D0MpWEv5lZ6zPW1/tf4AGb358T5GWYiKEuCP8MvFfT3tH2mIF9Y2yr2e3KbHuSvsVhosiEyqCpiJhZQ==} + /@codemirror/autocomplete@6.9.1(@codemirror/language@6.9.0)(@codemirror/state@6.2.1)(@codemirror/view@6.19.0)(@lezer/common@1.0.4): + resolution: {integrity: sha512-yma56tqD7khIZK4gy4X5lX3/k5ArMiCGat7HEWRF/8L2kqOjVdp2qKZqpcJjwTIjSj6fqKAHqi7IjtH3QFE+Bw==} + peerDependencies: + '@codemirror/language': ^6.0.0 + '@codemirror/state': ^6.0.0 + '@codemirror/view': ^6.0.0 + '@lezer/common': ^1.0.0 dependencies: '@codemirror/language': 6.9.0 '@codemirror/state': 6.2.1 @@ -374,8 +379,8 @@ packages: '@lezer/common': 1.0.4 dev: false - /@codemirror/commands/6.2.2: - resolution: {integrity: sha512-s9lPVW7TxXrI/7voZ+HmD/yiAlwAYn9PH5SUVSUhsxXHhv4yl5eZ3KLntSoTynfdgVYM0oIpccQEWRBQgmNZyw==} + /@codemirror/commands@6.2.5: + resolution: {integrity: sha512-dSi7ow2P2YgPBZflR9AJoaTHvqmeGIgkhignYMd5zK5y6DANTvxKxp6eMEpIDUJkRAaOY/TFZ4jP1ADIO/GLVA==} dependencies: '@codemirror/language': 6.9.0 '@codemirror/state': 6.2.1 @@ -383,29 +388,32 @@ packages: '@lezer/common': 1.0.4 dev: false - /@codemirror/lang-css/6.1.1: - resolution: {integrity: sha512-P6jdNEHyRcqqDgbvHYyC9Wxkek0rnG3a9aVSRi4a7WrjPbQtBTaOmvYpXmm13zZMAatO4Oqpac+0QZs7sy+LnQ==} + /@codemirror/lang-css@6.2.1(@codemirror/view@6.19.0): + resolution: {integrity: sha512-/UNWDNV5Viwi/1lpr/dIXJNWiwDxpw13I4pTUAsNxZdg6E0mI2kTQb0P2iHczg1Tu+H4EBgJR+hYhKiHKko7qg==} dependencies: - '@codemirror/autocomplete': 6.4.2 - '@codemirror/language': 6.6.0 - '@codemirror/state': 6.2.0 - '@lezer/css': 1.1.1 + '@codemirror/autocomplete': 6.9.1(@codemirror/language@6.9.0)(@codemirror/state@6.2.1)(@codemirror/view@6.19.0)(@lezer/common@1.0.4) + '@codemirror/language': 6.9.0 + '@codemirror/state': 6.2.1 + '@lezer/common': 1.0.4 + '@lezer/css': 1.1.3 + transitivePeerDependencies: + - '@codemirror/view' dev: false - /@codemirror/lang-javascript/6.1.4: - resolution: {integrity: sha512-OxLf7OfOZBTMRMi6BO/F72MNGmgOd9B0vetOLvHsDACFXayBzW8fm8aWnDM0yuy68wTK03MBf4HbjSBNRG5q7A==} + /@codemirror/lang-javascript@6.2.1: + resolution: {integrity: sha512-jlFOXTejVyiQCW3EQwvKH0m99bUYIw40oPmFjSX2VS78yzfe0HELZ+NEo9Yfo1MkGRpGlj3Gnu4rdxV1EnAs5A==} dependencies: - '@codemirror/autocomplete': 6.4.2 - '@codemirror/language': 6.6.0 - '@codemirror/lint': 6.2.0 - '@codemirror/state': 6.2.0 - '@codemirror/view': 6.9.3 - '@lezer/common': 1.0.2 - '@lezer/javascript': 1.4.2 + '@codemirror/autocomplete': 6.9.1(@codemirror/language@6.9.0)(@codemirror/state@6.2.1)(@codemirror/view@6.19.0)(@lezer/common@1.0.4) + '@codemirror/language': 6.9.0 + '@codemirror/lint': 6.4.2 + '@codemirror/state': 6.2.1 + '@codemirror/view': 6.19.0 + '@lezer/common': 1.0.4 + '@lezer/javascript': 1.4.7 dev: false - /@codemirror/language/6.6.0: - resolution: {integrity: sha512-cwUd6lzt3MfNYOobdjf14ZkLbJcnv4WtndYaoBkbor/vF+rCNguMPK0IRtvZJG4dsWiaWPcK8x1VijhvSxnstg==} + /@codemirror/language@6.9.0: + resolution: {integrity: sha512-nFu311/0ne/qGuGCL3oKuktBgzVOaxCHZPZv1tLSZkNjPYxxvkjSbzno3MlErG2tgw1Yw1yF8BxMCegeMXqpiw==} dependencies: '@codemirror/state': 6.2.1 '@codemirror/view': 6.19.0 @@ -415,28 +423,28 @@ packages: style-mod: 4.1.0 dev: false - /@codemirror/lint/6.2.0: - resolution: {integrity: sha512-KVCECmR2fFeYBr1ZXDVue7x3q5PMI0PzcIbA+zKufnkniMBo1325t0h1jM85AKp8l3tj67LRxVpZfgDxEXlQkg==} + /@codemirror/lint@6.4.2: + resolution: {integrity: sha512-wzRkluWb1ptPKdzlsrbwwjYCPLgzU6N88YBAmlZi8WFyuiEduSd05MnJYNogzyc8rPK7pj6m95ptUApc8sHKVA==} dependencies: '@codemirror/state': 6.2.1 '@codemirror/view': 6.19.0 crelt: 1.0.6 dev: false - /@codemirror/search/6.3.0: - resolution: {integrity: sha512-rBhZxzT34CarfhgCZGhaLBScABDN3iqJxixzNuINp9lrb3lzm0nTpR77G1VrxGO3HOGK7j62jcJftQM7eCOIuw==} + /@codemirror/search@6.5.3: + resolution: {integrity: sha512-M1nGnpUTlOqp0Ywn6V30T8eFcuNFIDfx4+0ja5Wag+qQpL/HZgsIZ7FpE6qZatPziakgj+UXyZTrTUditrkwIQ==} dependencies: '@codemirror/state': 6.2.1 '@codemirror/view': 6.19.0 crelt: 1.0.6 dev: false - /@codemirror/state/6.2.0: - resolution: {integrity: sha512-69QXtcrsc3RYtOtd+GsvczJ319udtBf1PTrr2KbLWM/e2CXUPnh0Nz9AUo8WfhSQ7GeL8dPVNUmhQVgpmuaNGA==} + /@codemirror/state@6.2.1: + resolution: {integrity: sha512-RupHSZ8+OjNT38zU9fKH2sv+Dnlr8Eb8sl4NOnnqz95mCFTZUaiRP8Xv5MeeaG0px2b8Bnfe7YGwCV3nsBhbuw==} dev: false - /@codemirror/theme-one-dark/6.1.1: - resolution: {integrity: sha512-+CfzmScfJuD6uDF5bHJkAjWTQ2QAAHxODCPxUEgcImDYcJLT+4l5vLnBHmDVv46kCC5uUJGMrBJct2Z6JbvqyQ==} + /@codemirror/theme-one-dark@6.1.2: + resolution: {integrity: sha512-F+sH0X16j/qFLMAfbciKTxVOwkdAS336b7AXTKOZhy8BR3eH/RelsnLgLFINrpST63mmN2OuwUt0W2ndUgYwUA==} dependencies: '@codemirror/language': 6.9.0 '@codemirror/state': 6.2.1 @@ -444,8 +452,8 @@ packages: '@lezer/highlight': 1.1.6 dev: false - /@codemirror/view/6.9.3: - resolution: {integrity: sha512-BJ5mvEIhFM+SrNwc5X8pLIvMM9ffjkviVbxpg84Xk2OE8ZyKaEbId8kX+nAYEEso7+qnbwsXe1bkAHsasebMow==} + /@codemirror/view@6.19.0: + resolution: {integrity: sha512-XqNIfW/3GaaF+T7Q1jBcRLCPm1NbrR2DBxrXacSt1FG+rNsdsNn3/azAfgpUoJ7yy4xgd8xTPa3AlL+y0lMizQ==} dependencies: '@codemirror/state': 6.2.1 style-mod: 4.1.0 @@ -493,8 +501,8 @@ packages: '@emotion/memoize': 0.7.4 dev: false - /@emotion/is-prop-valid/1.2.0: - resolution: {integrity: sha512-3aDpDprjM0AwaxGE09bOPkNxHpBd+kA6jty3RnaEXdweX1DF1U3VQpPYb0g1IStAuK7SVQ1cy+bNBBKp4W3Fjg==} + /@emotion/is-prop-valid@1.2.1: + resolution: {integrity: sha512-61Mf7Ufx4aDxx1xlDeOm8aFFigGHE4z+0sKCa+IHCeZKiyP9RLD0Mmx7m8b9/Cf37f7NAvQOOJAbQQGVr5uERw==} dependencies: '@emotion/memoize': 0.8.1 dev: false @@ -503,8 +511,8 @@ packages: resolution: {integrity: sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw==} dev: false - /@emotion/memoize/0.8.0: - resolution: {integrity: sha512-G/YwXTkv7Den9mXDO7AhLWkE3q+I92B+VqAE+dYG4NGPaHZGvt3G8Q0p9vmE+sq7rTGphUbAvmQ9YpbfMQGGlA==} + /@emotion/memoize@0.8.1: + resolution: {integrity: sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA==} dev: false /@emotion/serialize@0.11.16: @@ -527,8 +535,8 @@ packages: '@emotion/core': ^10.0.28 react: '>=16.3.0' dependencies: - '@babel/runtime': 7.21.0 - '@emotion/core': 10.3.1_react@18.2.0 + '@babel/runtime': 7.22.15 + '@emotion/core': 10.3.1(react@18.2.0) '@emotion/is-prop-valid': 0.8.8 '@emotion/serialize': 0.11.16 '@emotion/utils': 0.11.3 @@ -581,65 +589,57 @@ packages: dev: true optional: true - /@jridgewell/gen-mapping/0.1.1: - resolution: {integrity: sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==} + /@jridgewell/gen-mapping@0.3.3: + resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==} engines: {node: '>=6.0.0'} dependencies: '@jridgewell/set-array': 1.1.2 '@jridgewell/sourcemap-codec': 1.4.14 dev: true - /@jridgewell/gen-mapping/0.3.2: - resolution: {integrity: sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==} - engines: {node: '>=6.0.0'} - dependencies: - '@jridgewell/set-array': 1.1.2 - '@jridgewell/sourcemap-codec': 1.4.14 - '@jridgewell/trace-mapping': 0.3.17 - - /@jridgewell/resolve-uri/3.1.0: - resolution: {integrity: sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==} + /@jridgewell/resolve-uri@3.1.1: + resolution: {integrity: sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==} engines: {node: '>=6.0.0'} /@jridgewell/set-array@1.1.2: resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} engines: {node: '>=6.0.0'} - /@jridgewell/sourcemap-codec/1.4.14: - resolution: {integrity: sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==} + /@jridgewell/sourcemap-codec@1.4.15: + resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} - /@jridgewell/trace-mapping/0.3.17: - resolution: {integrity: sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==} + /@jridgewell/trace-mapping@0.3.19: + resolution: {integrity: sha512-kf37QtfW+Hwx/buWGMPcR60iF9ziHa6r/CZJIHbmcm4+0qrXiVdxegAH0F6yddEVQ7zdkjcGCgCzUu+BcbhQxw==} dependencies: '@jridgewell/resolve-uri': 3.1.1 '@jridgewell/sourcemap-codec': 1.4.15 - /@lezer/common/1.0.2: - resolution: {integrity: sha512-SVgiGtMnMnW3ActR8SXgsDhw7a0w0ChHSYAyAUxxrOiJ1OqYWEKk/xJd84tTSPo1mo6DXLObAJALNnd0Hrv7Ng==} + /@lezer/common@1.0.4: + resolution: {integrity: sha512-lZHlk8p67x4aIDtJl6UQrXSOP6oi7dQR3W/geFVrENdA1JDaAJWldnVqVjPMJupbTKbzDfFcePfKttqVidS/dg==} dev: false - /@lezer/css/1.1.1: - resolution: {integrity: sha512-mSjx+unLLapEqdOYDejnGBokB5+AiJKZVclmud0MKQOKx3DLJ5b5VTCstgDDknR6iIV4gVrN6euzsCnj0A2gQA==} + /@lezer/css@1.1.3: + resolution: {integrity: sha512-SjSM4pkQnQdJDVc80LYzEaMiNy9txsFbI7HsMgeVF28NdLaAdHNtQ+kB/QqDUzRBV/75NTXjJ/R5IdC8QQGxMg==} dependencies: '@lezer/highlight': 1.1.6 '@lezer/lr': 1.3.10 dev: false - /@lezer/highlight/1.1.4: - resolution: {integrity: sha512-IECkFmw2l7sFcYXrV8iT9GeY4W0fU4CxX0WMwhmhMIVjoDdD1Hr6q3G2NqVtLg/yVe5n7i4menG3tJ2r4eCrPQ==} + /@lezer/highlight@1.1.6: + resolution: {integrity: sha512-cmSJYa2us+r3SePpRCjN5ymCqCPv+zyXmDl0ciWtVaNiORT/MxM7ZgOMQZADD0o51qOaOg24qc/zBViOIwAjJg==} dependencies: '@lezer/common': 1.0.4 dev: false - /@lezer/javascript/1.4.2: - resolution: {integrity: sha512-77qdAD4zanmImPiAu4ibrMUzRc79UHoccdPa+Ey5iwS891TAkhnMAodUe17T7zV7tnF7e9HXM0pfmjoGEhrppg==} + /@lezer/javascript@1.4.7: + resolution: {integrity: sha512-OVWlK0YEi7HM+9JRWtRkir8qvcg0/kVYg2TAMHlVtl6DU1C9yK1waEOLBMztZsV/axRJxsqfJKhzYz+bxZme5g==} dependencies: '@lezer/highlight': 1.1.6 '@lezer/lr': 1.3.10 dev: false - /@lezer/lr/1.3.3: - resolution: {integrity: sha512-JPQe3mwJlzEVqy67iQiiGozhcngbO8QBgpqZM6oL1Wj/dXckrEexpBLeFkq0edtW5IqnPRFxA24BHJni8Js69w==} + /@lezer/lr@1.3.10: + resolution: {integrity: sha512-BZfVvf7Re5BIwJHlZXbJn9L8lus5EonxQghyn+ih8Wl36XMFBPTXC0KM0IdUtj9w/diPHsKlXVgL+AlX2jYJ0Q==} dependencies: '@lezer/common': 1.0.4 dev: false @@ -654,12 +654,12 @@ packages: slash: 3.0.0 dev: true - /@stackblitz/sdk/1.8.2: - resolution: {integrity: sha512-3aTg0Tb9dNs1huPkpdYxPEX/yc8A28eZneUMOEJzOLi7EJwl5onr9gCAVjIOkN4WLYu1iBSiJiGBYT629bZIJQ==} + /@stackblitz/sdk@1.9.0: + resolution: {integrity: sha512-3m6C7f8pnR5KXys/Hqx2x6ylnpqOak6HtnZI6T5keEO0yT+E4Spkw37VEbdwuC+2oxmjdgq6YZEgiKX7hM1GmQ==} dev: false - /@types/codemirror/5.60.7: - resolution: {integrity: sha512-QXIC+RPzt/1BGSuD6iFn6UMC9TDp+9hkOANYNPVsjjrDdzKphfRkwQDKGp2YaC54Yhz0g6P5uYTCCibZZEiMAA==} + /@types/codemirror@5.60.10: + resolution: {integrity: sha512-ZTA3teiCWKT8HUUofqlGPlShu5ojdIajizsS0HpH6GL0/iEdjRt7fXbCLHHqKYP5k7dC/HnnWIjZAiELUwBdjQ==} dependencies: '@types/tern': 0.23.5 dev: true @@ -668,19 +668,19 @@ packages: resolution: {integrity: sha512-EGlKlgMhnLt/cM4DbUSafFdrkeJoC9Mvnj0PUCU7tFmTjMjNRT957kXCx0wYm3JuEq4o4ZsS5vG+NlkM2DMd2A==} dev: true - /@types/estree/1.0.0: - resolution: {integrity: sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ==} + /@types/estree@1.0.1: + resolution: {integrity: sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==} dev: true - /@types/hoist-non-react-statics/3.3.1: - resolution: {integrity: sha512-iMIqiko6ooLrTh1joXodJK5X9xeEALT1kM5G3ZLhD3hszxBdIEd5C75U834D9mLcINgD4OyZf5uQXjkuYydWvA==} + /@types/hoist-non-react-statics@3.3.2: + resolution: {integrity: sha512-YIQtIg4PKr7ZyqNPZObpxfHsHEmuB8dXCxd6qVcGuQVDK2bpsF7bYNnBJ4Nn7giuACZg+WewExgrtAJ3XnA4Xw==} dependencies: '@types/react': 18.2.21 hoist-non-react-statics: 3.3.2 dev: true - /@types/linkifyjs/2.1.4: - resolution: {integrity: sha512-UuF0hyWNnLTT4xNJdrQx6OWYMNlPRBtt3fKCaROIx48boQyXkQ4YDDwTEQNi9mlsRX0Hpc6AnFKkDZ6IXkxD4g==} + /@types/linkifyjs@2.1.5: + resolution: {integrity: sha512-JPq4hQ6JMoNBnwV5sDBklvrbZIaDalJ0KD5uCjo/F2D9PMRd6VugmqBGkbJ1ZK34U0qLf2LZjBP3yuSTaFtFCA==} dependencies: '@types/react': 18.2.21 dev: true @@ -692,8 +692,8 @@ packages: lz-string: 1.5.0 dev: true - /@types/node/18.15.11: - resolution: {integrity: sha512-E5Kwq2n4SbMzQOn6wnmBjuK9ouqlURrcZDVfbo9ftDDTFt3nk7ZKK4GMOzoYgnpQJKcxwQw+lGaBvvlMo0qN/Q==} + /@types/node@18.17.17: + resolution: {integrity: sha512-cOxcXsQ2sxiwkykdJqvyFS+MLQPLvIdwh5l6gNg8qF6s+C7XSkEWOZjK+XhUZd+mYvHV/180g2cnCcIl4l06Pw==} dev: true /@types/parse-json@4.0.0: @@ -704,14 +704,14 @@ packages: resolution: {integrity: sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==} dev: true - /@types/react-dom/18.0.11: - resolution: {integrity: sha512-O38bPbI2CWtgw/OoQoY+BRelw7uysmXbWvw3nLWO21H1HSh+GOlqPuXshJfjmpNlKiiSDG9cc1JZAaMmVdcTlw==} + /@types/react-dom@18.2.7: + resolution: {integrity: sha512-GRaAEriuT4zp9N4p1i8BDBYmEyfo+xQ3yHjJU4eiK5NDa1RmUZG+unZABUTK4/Ox/M+GaHwb6Ow8rUITrtjszA==} dependencies: '@types/react': 18.2.21 dev: true - /@types/react/18.0.31: - resolution: {integrity: sha512-EEG67of7DsvRDU6BLLI0p+k1GojDLz9+lZsnCpCRTa/lOokvyPBvp8S5x+A24hME3yyQuIipcP70KJ6H7Qupww==} + /@types/react@18.2.21: + resolution: {integrity: sha512-neFKG/sBAwGxHgXiIxnbm3/AAVQ/cMRS93hvBpg8xYRbeQSPVABp9U2bRnPf0iI4+Ucdv3plSxKK+3CW2ENJxA==} dependencies: '@types/prop-types': 15.7.5 '@types/scheduler': 0.16.3 @@ -722,36 +722,40 @@ packages: resolution: {integrity: sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ==} dev: true - /@types/styled-components/5.1.26: - resolution: {integrity: sha512-KuKJ9Z6xb93uJiIyxo/+ksS7yLjS1KzG6iv5i78dhVg/X3u5t1H7juRWqVmodIdz6wGVaIApo1u01kmFRdJHVw==} + /@types/styled-components@5.1.27: + resolution: {integrity: sha512-oY9c1SdztRRF0QDQdwXEenfAjGN4WGUkaMpx5hvdTbYYqw01qoY2GrHi+kAR6SVofynzD6KbGoF5ITP0zh5pvg==} dependencies: '@types/hoist-non-react-statics': 3.3.2 '@types/react': 18.2.21 csstype: 3.1.2 dev: true - /@types/tern/0.23.4: - resolution: {integrity: sha512-JAUw1iXGO1qaWwEOzxTKJZ/5JxVeON9kvGZ/osgZaJImBnyjyn0cjovPsf6FNLmyGY8Vw9DoXZCMlfMkMwHRWg==} + /@types/tern@0.23.5: + resolution: {integrity: sha512-POau56wDk3TQ0mQ0qG7XDzv96U5whSENZ9lC0htDvEH+9YUREo+J2U+apWcVRgR2UydEE70JXZo44goG+akTNQ==} dependencies: '@types/estree': 1.0.1 dev: true - /@uiw/codemirror-extensions-basic-setup/4.19.11: - resolution: {integrity: sha512-yT7DtFUZESyqyMm0kcMbT6dQ8TIK8tcA6XzMtkgLtsiB883rlc9kYVJScyDz8M9mCckycVbuFlhEdqN54PoiGw==} + /@typescript/vfs@1.5.0: + resolution: {integrity: sha512-AJS307bPgbsZZ9ggCT3wwpg3VbTKMFNHfaY/uF0ahSkYYrPF2dSSKDNIDIQAHm9qJqbLvCsSJH7yN4Vs/CsMMg==} dependencies: - '@codemirror/autocomplete': 6.4.2 - '@codemirror/commands': 6.2.2 - '@codemirror/language': 6.6.0 - '@codemirror/lint': 6.2.0 - '@codemirror/search': 6.3.0 - '@codemirror/state': 6.2.0 - '@codemirror/view': 6.9.3 + debug: 4.3.4(supports-color@5.5.0) + transitivePeerDependencies: + - supports-color dev: false - /@uiw/codemirror-themes/4.19.11: - resolution: {integrity: sha512-4bh0vfkqeVJ7L2aGimKXqQtaoSEe/1xZb9nkGn35V5daHXkxRhb+BRFMOSrMsjGm74hM+dvYi5iH8HXVsvjJrQ==} + /@uiw/codemirror-extensions-basic-setup@4.21.13(@codemirror/autocomplete@6.9.1)(@codemirror/commands@6.2.5)(@codemirror/language@6.9.0)(@codemirror/lint@6.4.2)(@codemirror/search@6.5.3)(@codemirror/state@6.2.1)(@codemirror/view@6.19.0): + resolution: {integrity: sha512-5ObHaBqPV00xBVleDFehzPfOQvek5dPM7YLdPHJUE9bumeSflIWJb55n0Zg/w1rsuU0Lt/Q6WJUh4X6VGR1FVw==} + peerDependencies: + '@codemirror/autocomplete': '>=6.0.0' + '@codemirror/commands': '>=6.0.0' + '@codemirror/language': '>=6.0.0' + '@codemirror/lint': '>=6.0.0' + '@codemirror/search': '>=6.0.0' + '@codemirror/state': '>=6.0.0' + '@codemirror/view': '>=6.0.0' dependencies: - '@codemirror/autocomplete': 6.9.1_@codemirror+view@6.19.0 + '@codemirror/autocomplete': 6.9.1(@codemirror/language@6.9.0)(@codemirror/state@6.2.1)(@codemirror/view@6.19.0)(@lezer/common@1.0.4) '@codemirror/commands': 6.2.5 '@codemirror/language': 6.9.0 '@codemirror/lint': 6.4.2 @@ -760,41 +764,59 @@ packages: '@codemirror/view': 6.19.0 dev: false - /@uiw/react-codemirror/4.19.11_fcfoxczgl3bih2inr776zkfwzu: - resolution: {integrity: sha512-KoTMg0krVi8EgIPotMYAfTTB+9U4CrJe1ZeSLVR92Wif0pPjYLN5TQF0kqiiH97gJNGHVte/mUftmDjK7Sv2ZA==} + /@uiw/codemirror-themes@4.21.13(@codemirror/language@6.9.0)(@codemirror/state@6.2.1)(@codemirror/view@6.19.0): + resolution: {integrity: sha512-+IeYow6kmz1LJmXd1rL7ngVxb5lm2wKrjYNfomDvmoUz2gKcca8y7pWGMIFhIsabrNW11SFVSloVkj9ZXw7e1Q==} + peerDependencies: + '@codemirror/language': '>=6.0.0' + '@codemirror/state': '>=6.0.0' + '@codemirror/view': '>=6.0.0' + dependencies: + '@codemirror/language': 6.9.0 + '@codemirror/state': 6.2.1 + '@codemirror/view': 6.19.0 + dev: false + + /@uiw/react-codemirror@4.21.13(@babel/runtime@7.22.15)(@codemirror/autocomplete@6.9.1)(@codemirror/language@6.9.0)(@codemirror/lint@6.4.2)(@codemirror/search@6.5.3)(@codemirror/state@6.2.1)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.19.0)(codemirror@5.65.15)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-kNX8jLeoDrF2CDa5lsey0MXjBXN3JP00z6AQTTP58mHvlE7Rf03QJSs7bNwwco+3kpwREifFJjnwRe+Y3Gmwtw==} peerDependencies: '@babel/runtime': '>=7.11.0' '@codemirror/state': '>=6.0.0' '@codemirror/theme-one-dark': '>=6.0.0' '@codemirror/view': '>=6.0.0' + codemirror: '>=6.0.0' react: '>=16.8.0' react-dom: '>=16.8.0' dependencies: - '@babel/runtime': 7.21.0 - '@codemirror/commands': 6.2.2 - '@codemirror/state': 6.2.0 - '@codemirror/theme-one-dark': 6.1.1 - '@codemirror/view': 6.9.3 - '@uiw/codemirror-extensions-basic-setup': 4.19.11 - codemirror: 6.0.1 + '@babel/runtime': 7.22.15 + '@codemirror/commands': 6.2.5 + '@codemirror/state': 6.2.1 + '@codemirror/theme-one-dark': 6.1.2 + '@codemirror/view': 6.19.0 + '@uiw/codemirror-extensions-basic-setup': 4.21.13(@codemirror/autocomplete@6.9.1)(@codemirror/commands@6.2.5)(@codemirror/language@6.9.0)(@codemirror/lint@6.4.2)(@codemirror/search@6.5.3)(@codemirror/state@6.2.1)(@codemirror/view@6.19.0) + codemirror: 5.65.15 react: 18.2.0 - react-dom: 18.2.0_react@18.2.0 + react-dom: 18.2.0(react@18.2.0) + transitivePeerDependencies: + - '@codemirror/autocomplete' + - '@codemirror/language' + - '@codemirror/lint' + - '@codemirror/search' dev: false - /@vitejs/plugin-react/2.2.0_vite@3.2.5: + /@vitejs/plugin-react@2.2.0(vite@3.2.7): resolution: {integrity: sha512-FFpefhvExd1toVRlokZgxgy2JtnBOdp4ZDsq7ldCWaqGSGn9UhWMAVm/1lxPL14JfNS5yGz+s9yFrQY6shoStA==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: vite: ^3.0.0 dependencies: - '@babel/core': 7.21.4 - '@babel/plugin-transform-react-jsx': 7.21.0_@babel+core@7.21.4 - '@babel/plugin-transform-react-jsx-development': 7.18.6_@babel+core@7.21.4 - '@babel/plugin-transform-react-jsx-self': 7.21.0_@babel+core@7.21.4 - '@babel/plugin-transform-react-jsx-source': 7.19.6_@babel+core@7.21.4 + '@babel/core': 7.22.19 + '@babel/plugin-transform-react-jsx': 7.22.15(@babel/core@7.22.19) + '@babel/plugin-transform-react-jsx-development': 7.22.5(@babel/core@7.22.19) + '@babel/plugin-transform-react-jsx-self': 7.22.5(@babel/core@7.22.19) + '@babel/plugin-transform-react-jsx-source': 7.22.5(@babel/core@7.22.19) magic-string: 0.26.7 react-refresh: 0.14.0 - vite: 3.2.5_@types+node@18.15.11 + vite: 3.2.7(@types/node@18.17.17) transitivePeerDependencies: - supports-color dev: true @@ -836,33 +858,34 @@ packages: resolve: 1.22.6 dev: false - /babel-plugin-styled-components/2.0.7_styled-components@5.3.9: - resolution: {integrity: sha512-i7YhvPgVqRKfoQ66toiZ06jPNA3p6ierpfUuEWxNF+fV27Uv5gxBkf8KZLHUCc1nFA9j6+80pYoIpqCeyW3/bA==} + /babel-plugin-styled-components@2.1.4(@babel/core@7.22.19)(styled-components@5.3.11): + resolution: {integrity: sha512-Xgp9g+A/cG47sUyRwwYxGM4bR/jDRg5N6it/8+HxCnbT5XNKSKDT9xm4oag/osgqjC2It/vH0yXsomOG6k558g==} peerDependencies: styled-components: '>= 2' dependencies: '@babel/helper-annotate-as-pure': 7.22.5 '@babel/helper-module-imports': 7.22.15 - '@babel/plugin-syntax-jsx': 7.22.5 + '@babel/plugin-syntax-jsx': 7.22.5(@babel/core@7.22.19) lodash: 4.17.21 picomatch: 2.3.1 - styled-components: 5.3.9_7i5myeigehqah43i5u7wbekgba + styled-components: 5.3.11(@babel/core@7.22.19)(react-dom@18.2.0)(react-is@18.2.0)(react@18.2.0) + transitivePeerDependencies: + - '@babel/core' dev: false /babel-plugin-syntax-jsx@6.18.0: resolution: {integrity: sha512-qrPaCSo9c8RHNRHIotaufGbuOBN8rtdC4QrrFFc43vyWCCz7Kl7GL1PGaXtMGQZUXrkCjNEgxDfmAuAabr/rlw==} dev: false - /browserslist/4.21.5: - resolution: {integrity: sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w==} + /browserslist@4.21.10: + resolution: {integrity: sha512-bipEBdZfVH5/pwrvqc+Ub0kUPVfGUhlKxbvfD+z1BDnPEO/X98ruXGA1WP5ASpAFKan7Qr6j736IacbZQuAlKQ==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true dependencies: - caniuse-lite: 1.0.30001473 - electron-to-chromium: 1.4.347 - node-releases: 2.0.10 - update-browserslist-db: 1.0.10_browserslist@4.21.5 - dev: true + caniuse-lite: 1.0.30001534 + electron-to-chromium: 1.4.523 + node-releases: 2.0.13 + update-browserslist-db: 1.0.11(browserslist@4.21.10) /callsites@3.1.0: resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} @@ -873,9 +896,8 @@ packages: resolution: {integrity: sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ==} dev: false - /caniuse-lite/1.0.30001473: - resolution: {integrity: sha512-ewDad7+D2vlyy+E4UJuVfiBsU69IL+8oVmTuZnH5Q6CIUbxNfI50uVpRHbUPDD6SUaN2o0Lh4DhTrvLG/Tn1yg==} - dev: true + /caniuse-lite@1.0.30001534: + resolution: {integrity: sha512-vlPVrhsCS7XaSh2VvWluIQEzVhefrUQcEsQWSS5A5V+dM07uv1qHeQzAOTGIMy9i3e9bH15+muvI/UHojVgS/Q==} /chalk@2.4.2: resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} @@ -889,23 +911,11 @@ packages: resolution: {integrity: sha512-Sp+EOrAu10cvNMf5W81KgdtqdBvOUNglhH826dVhK1MsLYjzQx9S8ISnu0nnKYwH1sb3w51TT+B6WM1Wuj4hxw==} dev: false - /codemirror/5.65.12: - resolution: {integrity: sha512-z2jlHBocElRnPYysN2HAuhXbO3DNB0bcSKmNz3hcWR2Js2Dkhc1bEOxG93Z3DeUrnm+qx56XOY5wQmbP5KY0sw==} - dev: false - - /codemirror/6.0.1: - resolution: {integrity: sha512-J8j+nZ+CdWmIeFIGXEFbFPtpiYacFMDR8GlHK3IyHQJMCaVRfGx9NT+Hxivv1ckLWPvNdZqndbr/7lVhrf/Svg==} - dependencies: - '@codemirror/autocomplete': 6.4.2 - '@codemirror/commands': 6.2.2 - '@codemirror/language': 6.6.0 - '@codemirror/lint': 6.2.0 - '@codemirror/search': 6.3.0 - '@codemirror/state': 6.2.0 - '@codemirror/view': 6.9.3 + /codemirror@5.65.15: + resolution: {integrity: sha512-YC4EHbbwQeubZzxLl5G4nlbLc1T21QTrKGaOal/Pkm9dVDMZXMH7+ieSPEOZCtO9I68i8/oteJKOxzHC2zR+0g==} dev: false - /color-convert/1.9.3: + /color-convert@1.9.3: resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} dependencies: color-name: 1.1.3 @@ -913,8 +923,8 @@ packages: /color-name@1.1.3: resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} - /console-feed/3.4.5_biqbaboplfbrettd7655fr4n2y: - resolution: {integrity: sha512-UMOnPBdgNJOdO37ztX+4lW7igp+jlnIiJ5jQleqgbPOGthVbzqGNNmjyPyItl1VFJR/zBF/2535PeLqA4QAcZQ==} + /console-feed@3.5.0(jquery@3.7.1)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-2N5b37yH0HeaqbBDsHBx0jEy3qvhTGA1dVdGyEM6C1NQhVmIX+ToU6Rt/uo86K0lLs4Lg1orC940YSn+Z3kk5g==} peerDependencies: react: ^15.x || ^16.x || ^17.x || ^18.x dependencies: @@ -947,8 +957,8 @@ packages: yaml: 1.10.2 dev: false - /crelt/1.0.5: - resolution: {integrity: sha512-+BO9wPPi+DWTDcNYhr/W90myha8ptzftZT+LwcmUbbok0rcP/fequmFYCw8NMoH7pkAZQzU78b3kYrlua5a9eA==} + /crelt@1.0.6: + resolution: {integrity: sha512-VQ2MBenTq1fWZUH9DJNGti7kKv6EeAuYr3cLwxUWhIu1baTaXh4Ib5W2CqHVqib4/MqbYGJqiL3Zb8GJZr3l4g==} dev: false /css-color-keywords@1.0.0: @@ -968,23 +978,11 @@ packages: resolution: {integrity: sha512-Z1PhmomIfypOpoMjRQB70jfvy/wxT50qW08YXO5lMIJkrdq4yOTR+AW7FqutScmB9NkLwxo+jU+kZLbofZZq/w==} dev: false - /csstype/3.1.1: - resolution: {integrity: sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw==} + /csstype@3.1.2: + resolution: {integrity: sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==} dev: true - /debug/4.3.4: - resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} - engines: {node: '>=6.0'} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - dependencies: - ms: 2.1.2 - dev: true - - /debug/4.3.4_supports-color@5.5.0: + /debug@4.3.4(supports-color@5.5.0): resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} engines: {node: '>=6.0'} peerDependencies: @@ -1000,9 +998,8 @@ packages: resolution: {integrity: sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==} dev: false - /electron-to-chromium/1.4.347: - resolution: {integrity: sha512-LNi3+/9nV0vT6Bz1OsSoZ/w7IgNuWdefZ7mjKNjZxyRlI/ag6uMXxsxAy5Etvuixq3Q26exw2fc4bNYvYQqXSw==} - dev: true + /electron-to-chromium@1.4.523: + resolution: {integrity: sha512-9AreocSUWnzNtvLcbpng6N+GkXnCcBR80IQkxRC9Dfdyg4gaWNUPBujAHUpKkiUkoSoR9UlhA4zD/IgBklmhzg==} /emotion-theming@10.3.0(@emotion/core@10.3.1)(react@18.2.0): resolution: {integrity: sha512-mXiD2Oj7N9b6+h/dC6oLf9hwxbtKHQjoIqtodEyL8CpkN4F3V4IK/BT4D0C7zSs4BBFOu4UlPJbvvBLa88SGEA==} @@ -1010,8 +1007,8 @@ packages: '@emotion/core': ^10.0.27 react: '>=16.3.0' dependencies: - '@babel/runtime': 7.21.0 - '@emotion/core': 10.3.1_react@18.2.0 + '@babel/runtime': 7.22.15 + '@emotion/core': 10.3.1(react@18.2.0) '@emotion/weak-memoize': 0.2.5 hoist-non-react-statics: 3.3.2 react: 18.2.0 @@ -1242,7 +1239,6 @@ packages: /escalade@3.1.1: resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} engines: {node: '>=6'} - dev: true /escape-string-regexp@1.0.5: resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} @@ -1271,8 +1267,8 @@ packages: optional: true dev: false - /fsevents/2.3.2: - resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} + /fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} os: [darwin] requiresBuild: true @@ -1285,7 +1281,6 @@ packages: /gensync@1.0.0-beta.2: resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} engines: {node: '>=6.9.0'} - dev: true /globals@11.12.0: resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} @@ -1326,8 +1321,8 @@ packages: resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} dev: false - /is-core-module/2.11.0: - resolution: {integrity: sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==} + /is-core-module@2.13.0: + resolution: {integrity: sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==} dependencies: has: 1.0.3 @@ -1370,7 +1365,6 @@ packages: resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} engines: {node: '>=6'} hasBin: true - dev: true /jszip@3.10.1: resolution: {integrity: sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==} @@ -1430,7 +1424,6 @@ packages: resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} dependencies: yallist: 3.1.1 - dev: true /lz-string@1.5.0: resolution: {integrity: sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==} @@ -1452,9 +1445,8 @@ packages: hasBin: true dev: true - /node-releases/2.0.10: - resolution: {integrity: sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w==} - dev: true + /node-releases@2.0.13: + resolution: {integrity: sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==} /object-assign@4.1.1: resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} @@ -1492,7 +1484,6 @@ packages: /picocolors@1.0.0: resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} - dev: true /picomatch@2.3.1: resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} @@ -1503,8 +1494,8 @@ packages: resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} dev: false - /postcss/8.4.21: - resolution: {integrity: sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg==} + /postcss@8.4.29: + resolution: {integrity: sha512-cbI+jaqIeu/VGqXEarWkRCCffhjgXc0qjBtXpqJhTBohMUjUQnbBr0xqX3vEKudc4iviTewcJo5ajcec5+wdJw==} engines: {node: ^10 || ^12 || >=14} dependencies: nanoid: 3.3.6 @@ -1524,7 +1515,7 @@ packages: react-is: 16.13.1 dev: false - /react-codemirror2/7.2.1_6rbpxrfnogqidakyklns6o2334: + /react-codemirror2@7.2.1(codemirror@5.65.15)(react@18.2.0): resolution: {integrity: sha512-t7YFmz1AXdlImgHXA9Ja0T6AWuopilub24jRaQdPVbzUJVNKIYuy3uCFZYa7CE5S3UW6SrSa5nAqVQvtzRF9gw==} peerDependencies: codemirror: 5.x @@ -1586,8 +1577,8 @@ packages: util-deprecate: 1.0.2 dev: false - /regenerator-runtime/0.13.11: - resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==} + /regenerator-runtime@0.14.0: + resolution: {integrity: sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==} dev: false /resolve-from@4.0.0: @@ -1595,8 +1586,8 @@ packages: engines: {node: '>=4'} dev: false - /resolve/1.22.1: - resolution: {integrity: sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==} + /resolve@1.22.6: + resolution: {integrity: sha512-njhxM7mV12JfufShqGy3Rz8j11RPdLy4xi15UurGJeoHLfJpVXKdh3ueuOqbYUcDZnffr6X739JBo5LzyahEsw==} hasBin: true dependencies: is-core-module: 2.13.0 @@ -1621,10 +1612,9 @@ packages: loose-envify: 1.4.0 dev: false - /semver/6.3.0: - resolution: {integrity: sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==} + /semver@6.3.1: + resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} hasBin: true - dev: true /setimmediate@1.0.5: resolution: {integrity: sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==} @@ -1660,24 +1650,24 @@ packages: safe-buffer: 5.1.2 dev: false - /style-mod/4.0.2: - resolution: {integrity: sha512-C4myMmRTO8iaC5Gg+N1ftK2WT4eXUTMAa+HEFPPrfVeO/NtqLTtAmV1HbqnuGtLwCek44Ra76fdGUkSqjiMPcQ==} + /style-mod@4.1.0: + resolution: {integrity: sha512-Ca5ib8HrFn+f+0n4N4ScTIA9iTOQ7MaGS1ylHcoVqW9J7w2w8PzN6g9gKmTYgGEBH8e120+RCmhpje6jC5uGWA==} dev: false - /styled-components/5.3.9_7i5myeigehqah43i5u7wbekgba: - resolution: {integrity: sha512-Aj3kb13B75DQBo2oRwRa/APdB5rSmwUfN5exyarpX+x/tlM/rwZA2vVk2vQgVSP6WKaZJHWwiFrzgHt+CLtB4A==} + /styled-components@5.3.11(@babel/core@7.22.19)(react-dom@18.2.0)(react-is@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-uuzIIfnVkagcVHv9nE0VPlHPSCmXIUGKfJ42LNjxCCTDTL5sgnJ8Z7GZBq0EnLYGln77tPpEpExt2+qa+cZqSw==} engines: {node: '>=10'} peerDependencies: react: '>= 16.8.0' react-dom: '>= 16.8.0' react-is: '>= 16.8.0' dependencies: - '@babel/helper-module-imports': 7.21.4 - '@babel/traverse': 7.21.4_supports-color@5.5.0 - '@emotion/is-prop-valid': 1.2.0 + '@babel/helper-module-imports': 7.22.15 + '@babel/traverse': 7.22.19(supports-color@5.5.0) + '@emotion/is-prop-valid': 1.2.1 '@emotion/stylis': 0.8.5 '@emotion/unitless': 0.7.5 - babel-plugin-styled-components: 2.0.7_styled-components@5.3.9 + babel-plugin-styled-components: 2.1.4(@babel/core@7.22.19)(styled-components@5.3.11) css-to-react-native: 3.2.0 hoist-non-react-statics: 3.3.2 react: 18.2.0 @@ -1709,8 +1699,8 @@ packages: hasBin: true dev: true - /update-browserslist-db/1.0.10_browserslist@4.21.5: - resolution: {integrity: sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==} + /update-browserslist-db@1.0.11(browserslist@4.21.10): + resolution: {integrity: sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==} hasBin: true peerDependencies: browserslist: '>= 4.21.0' @@ -1718,14 +1708,13 @@ packages: browserslist: 4.21.10 escalade: 3.1.1 picocolors: 1.0.0 - dev: true /util-deprecate@1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} dev: false - /vite/3.2.5_@types+node@18.15.11: - resolution: {integrity: sha512-4mVEpXpSOgrssFZAOmGIr85wPHKvaDAcXqxVxVRZhljkJOMZi1ibLibzjLHzJvcok8BMguLc7g1W6W/GqZbLdQ==} + /vite@3.2.7(@types/node@18.17.17): + resolution: {integrity: sha512-29pdXjk49xAP0QBr0xXqu2s5jiQIXNvE/xwd0vUizYT2Hzqe4BksNNoWllFVXJf4eLZ+UlVQmXfB4lWrc+t18g==} engines: {node: ^14.18.0 || >=16.0.0} hasBin: true peerDependencies: @@ -1758,13 +1747,12 @@ packages: fsevents: 2.3.3 dev: true - /w3c-keyname/2.2.6: - resolution: {integrity: sha512-f+fciywl1SJEniZHD6H+kUO8gOnwIr7f4ijKA6+ZvJFjeGi1r4PDLl53Ayud9O/rk64RqgoQine0feoeOU0kXg==} + /w3c-keyname@2.2.8: + resolution: {integrity: sha512-dpojBhNsCNN7T82Tm7k26A6G9ML3NkhDsnw9n/eoxSRlVBB4CEtIQ/KTCLI2Fwf3ataSXRhYFkQi3SlnFwPvPQ==} dev: false /yallist@3.1.1: resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} - dev: true /yaml@1.10.2: resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} diff --git a/src/components/editor/Editor.tsx b/src/components/editor/Editor.tsx index 209880d..064f005 100644 --- a/src/components/editor/Editor.tsx +++ b/src/components/editor/Editor.tsx @@ -30,8 +30,8 @@ interface Props { } function Editor(props: Props) { - useTSServer() const { files: { fileList: tabs, filesById } } = props + useTSServer({ files: tabs, vfs: filesById }) const [currentFile, setCurrentFile] = useState(filesById['App.jsx'] ? 'App.jsx' : ENTRY_POINT_JSX) const prevTabsLength = usePreviousValue(tabs.length); diff --git a/src/hooks/editor/ata/index.ts b/src/hooks/editor/ata/index.ts index b8ff79e..bbdbe40 100644 --- a/src/hooks/editor/ata/index.ts +++ b/src/hooks/editor/ata/index.ts @@ -64,9 +64,11 @@ import { } async function resolveDeps(initialSourceFiles: string[], depth: number) { + console.log("🚀 ~ file: index.ts:71 ~ depsToGet ~ resolveDeps:", initialSourceFiles) const depsToGet = initialSourceFiles.reduce((_depsToGet: { module: string, version: string | undefined }[], initialSourceFile: string) => { return _depsToGet.concat(getNewDependencies(config, moduleMap, initialSourceFile, processedModules)) }, []) + console.log("🚀 ~ file: index.ts:71 ~ depsToGet ~ resolveDeps:", depsToGet) // Make it so it won't get re-downloaded depsToGet.forEach(dep => moduleMap.set(dep.module, { state: "loading" })) @@ -165,6 +167,7 @@ import { */ export const getReferencesForModule = (ts: typeof import("typescript"), code: string, processedModules: Set ) => { const meta = ts.preProcessFile(code) + console.log("meta", meta) // Ensure we don't try download TypeScript lib references // @ts-ignore - private but likely to never change @@ -177,6 +180,8 @@ import { .concat(meta.libReferenceDirectives) .filter(f => !f.fileName.endsWith(".d.ts")) .filter(d => !libMap.has(d.fileName)) + + console.log("referencesRaw", referencesRaw) let references: { module: string, version: string | undefined }[] = [] @@ -213,7 +218,7 @@ import { version, } }) - + console.log("references", references) return references } diff --git a/src/hooks/editor/useTSServer.ts b/src/hooks/editor/useTSServer.ts index 3061d03..b62a47b 100644 --- a/src/hooks/editor/useTSServer.ts +++ b/src/hooks/editor/useTSServer.ts @@ -6,7 +6,7 @@ import lzstring from "lz-string"; import { getLatestTS, getTSAccessoryLibs } from "@/tools/tsserver-tools"; import { setupTypeAcquisition } from "@/hooks/editor/ata"; -export async function init() { +export async function init(originalVFS: Record) { const ts = await getLatestTS(); const compilerOptions = { target: ts.ScriptTarget.ES2021, @@ -26,25 +26,18 @@ export async function init() { _ts, lzstring ); - fsMap.set( - "/index.ts", - "import React from 'react'; export const a: string = React.useState();" - ); - fsMap.set( - "/a.ts", - "import { b } from './index.ts'; import { c } from 'react'; const f: string = c()" - ); - fsMap.set( - "/b.ts", - "import { useCreateEvento } from 'evento-react'; const f: string = useCreateEvento(1); export default f" - ); + Object.entries(originalVFS).forEach(([key, value]) => { + fsMap.set(key, value); + }) // fsMap.set("/is-odd.ts", "const a: string = 'a'; export default a"); const TSLibs = await getTSAccessoryLibs(); for (const lib of TSLibs) { fsMap.set(lib.name, lib.content); } + // console.log(TSLibs) + const fn = setupTypeAcquisition({ delegate: { receivedFile: (code, path) => { @@ -56,8 +49,13 @@ export async function init() { typescript: _ts, }); - await fn(Object.values(Object.fromEntries(fsMap.entries()))); + try { + await fn(Object.values(Object.fromEntries(fsMap.entries()))); + } catch (e) { + console.error(e); + } + // console.log("fsMap", fsMap); const system = tsvfs.createSystem(fsMap); const env = tsvfs.createVirtualTypeScriptEnvironment( system, @@ -66,14 +64,23 @@ export async function init() { compilerOptions ); - const errors = env.languageService.getSemanticDiagnostics("b.ts"); + const errors = env.languageService.getSemanticDiagnostics("index.ts"); console.log("ts errors", errors, env.getSourceFile("a.ts")); } -export function useTSServer() { +interface Props { + files: string[], + vfs: Record; +} +export function useTSServer({ files, vfs }: Props) { + console.log("vfs", vfs); useEffect(() => { - init(); + init(files.reduce((tsVFS: Record, jsFile: string) => { + const tsFile = jsFile.replace(".js", ".ts"); + tsVFS[tsFile] = '/' + vfs[jsFile]; + return tsVFS; + }, {})); }, []); return null; } diff --git a/src/hooks/playground/useVFS.ts b/src/hooks/playground/useVFS.ts index cc44916..b725043 100644 --- a/src/hooks/playground/useVFS.ts +++ b/src/hooks/playground/useVFS.ts @@ -29,7 +29,7 @@ interface State { export const ENTRY_POINT_JSX = 'index.js' const indexDefaultContent = ` -import App from './App.jsx' +import App from './App' import React from 'react' import { createRoot } from 'react-dom/client' @@ -45,14 +45,14 @@ root.render( `.trim() const AppDefaultContent = ` -import React, { useState } from 'react' +import React, { useState, type FC } from 'react' import styled from 'styled-components' -const App = () => { +const App: FC = () => { const [count, setCount] = useState(0) return ( - ) From c73b44bfd1edc27f6f45c23066af5d7e8539340d Mon Sep 17 00:00:00 2001 From: Luca Marongiu Date: Fri, 13 Oct 2023 22:37:22 +0200 Subject: [PATCH 4/5] retrying to make workers work --- src/workers/tsServer.worker.ts | 3 +-- tsconfig.json | 6 ++---- 2 files changed, 3 insertions(+), 6 deletions(-) diff --git a/src/workers/tsServer.worker.ts b/src/workers/tsServer.worker.ts index 8f4a11d..32a4845 100644 --- a/src/workers/tsServer.worker.ts +++ b/src/workers/tsServer.worker.ts @@ -3,14 +3,13 @@ import * as tsvfs from '@typescript/vfs'; import _ts, { CompilerOptions } from 'typescript'; import lzstring from 'lz-string'; -self.importScripts("https://unpkg.com/@typescript/vfs@1.3.5/dist/vfs.globals.js"); +importScripts("https://unpkg.com/@typescript/vfs@1.3.5/dist/vfs.globals.js"); importScripts( "https://cdnjs.cloudflare.com/ajax/libs/typescript/4.4.3/typescript.min.js" ); importScripts("https://unpkg.com/@okikio/emitter@2.1.7/lib/api.js"); export type VFS = typeof import("@typescript/vfs"); -export type EVENT_EMITTER = import("@okikio/emitter").EventEmitter; export type Diagnostic = import("@codemirror/lint").Diagnostic; var { diff --git a/tsconfig.json b/tsconfig.json index a198ac7..170c71a 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -6,7 +6,7 @@ }, "target": "ESNext", "useDefineForClassFields": true, - "lib": ["DOM", "DOM.Iterable", "ESNext"], + "lib": ["DOM", "DOM.Iterable", "ESNext", "WebWorker", "WebWorker.ImportScripts"], "allowJs": false, "skipLibCheck": false, "esModuleInterop": false, @@ -19,9 +19,7 @@ "isolatedModules": true, "noEmit": true, "jsx": "react-jsx", - "types": [ - "node" - ] + "types": ["node"] }, "include": ["src"], "references": [{ "path": "./tsconfig.node.json" }] From 98e43743678afddf4313bcf7254cd67705bb5213 Mon Sep 17 00:00:00 2001 From: Luca Marongiu Date: Wed, 15 Nov 2023 19:25:08 +0100 Subject: [PATCH 5/5] rp-restarted ts server in webworker --- pnpm-lock.yaml | 4 ++-- src/hooks/editor/useTSServer.ts | 2 +- src/workers/{ => LSP}/tsServer.worker.ts | 18 +----------------- 3 files changed, 4 insertions(+), 20 deletions(-) rename src/workers/{ => LSP}/tsServer.worker.ts (80%) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index f569968..bd6ce5b 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -594,8 +594,8 @@ packages: engines: {node: '>=6.0.0'} dependencies: '@jridgewell/set-array': 1.1.2 - '@jridgewell/sourcemap-codec': 1.4.14 - dev: true + '@jridgewell/sourcemap-codec': 1.4.15 + '@jridgewell/trace-mapping': 0.3.19 /@jridgewell/resolve-uri@3.1.1: resolution: {integrity: sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==} diff --git a/src/hooks/editor/useTSServer.ts b/src/hooks/editor/useTSServer.ts index b62a47b..8002074 100644 --- a/src/hooks/editor/useTSServer.ts +++ b/src/hooks/editor/useTSServer.ts @@ -11,7 +11,7 @@ export async function init(originalVFS: Record) { const compilerOptions = { target: ts.ScriptTarget.ES2021, module: ts.ScriptTarget.ES2020, - lib: ["es2021", "es2020", "dom", "webworker"], + lib: ["es2021", "es2020", "dom"], // the following options // esmoduleInterop and resolveJsonModule // are necessary for ATA to work properly diff --git a/src/workers/tsServer.worker.ts b/src/workers/LSP/tsServer.worker.ts similarity index 80% rename from src/workers/tsServer.worker.ts rename to src/workers/LSP/tsServer.worker.ts index 32a4845..fe13d46 100644 --- a/src/workers/tsServer.worker.ts +++ b/src/workers/LSP/tsServer.worker.ts @@ -3,22 +3,6 @@ import * as tsvfs from '@typescript/vfs'; import _ts, { CompilerOptions } from 'typescript'; import lzstring from 'lz-string'; -importScripts("https://unpkg.com/@typescript/vfs@1.3.5/dist/vfs.globals.js"); -importScripts( - "https://cdnjs.cloudflare.com/ajax/libs/typescript/4.4.3/typescript.min.js" -); -importScripts("https://unpkg.com/@okikio/emitter@2.1.7/lib/api.js"); - -export type VFS = typeof import("@typescript/vfs"); -export type Diagnostic = import("@codemirror/lint").Diagnostic; - -var { - createDefaultMapFromCDN, - createSystem, - createVirtualTypeScriptEnvironment, -} = globalThis.tsvfs as VFS; -var ts = globalThis.ts; // as TS - const isOddTypes = ` // Type definitions for is-odd 3.0 // Project: https://github.com/jonschlinkert/is-odd @@ -43,7 +27,7 @@ export async function init() { const compilerOptions = { target: ts.ScriptTarget.ES2021, module: ts.ScriptTarget.ES2020, - lib: ["es2021", "es2020", "dom", "webworker"], + lib: ["es2021", "es2020", "dom"], esModuleInterop: true, } as unknown as CompilerOptions; const fsMap = await tsvfs.createDefaultMapFromCDN(