diff --git a/packages/language-core/src/documentRegistry.ts b/packages/language-core/src/documentRegistry.ts index d167f53e6..39a65b3d9 100644 --- a/packages/language-core/src/documentRegistry.ts +++ b/packages/language-core/src/documentRegistry.ts @@ -66,7 +66,7 @@ export function createDocumentRegistry() { } }, - fromEmbeddedLocation: function* (fileName: string, offset: number) { + fromEmbeddedLocation: function* (fileName: string, offset: number, baseOnRight: boolean = false) { if (fileName.endsWith('/__VLS_types.ts')) { // TODO: monkey fix return; @@ -78,7 +78,7 @@ export function createDocumentRegistry() { const sourceMap = getSourceMap(mapped.sourceFile, mapped.embedded.mappings); - for (const vueRange of sourceMap.toSourceOffsets(offset)) { + for (const vueRange of sourceMap.toSourceOffsets(offset, baseOnRight)) { yield { fileName: mapped.sourceFile.fileName, offset: vueRange[0], diff --git a/packages/language-service/src/documents.ts b/packages/language-service/src/documents.ts index 299a20efb..92060ef95 100644 --- a/packages/language-service/src/documents.ts +++ b/packages/language-service/src/documents.ts @@ -110,7 +110,7 @@ export class SourceMap extends SourceMapBase { to: 'sourceRange' | 'generatedRange', baseOffset: 'left' | 'right', ) { - for (const mapped of this.matcing(fromDoc.offsetAt(position), from, to)) { + for (const mapped of this.matcing(fromDoc.offsetAt(position), from, to, baseOffset === 'right')) { if (!filter(mapped[1].data)) { continue; } @@ -124,21 +124,15 @@ export class SourceMap extends SourceMapBase { } protected matchSourcePosition(position: vscode.Position, mapping: Mapping, baseOffset: 'left' | 'right') { - let offset = this.matchOffset(this.mappedDocument.offsetAt(position), mapping['generatedRange'], mapping['sourceRange']); + let offset = this.matchOffset(this.mappedDocument.offsetAt(position), mapping['generatedRange'], mapping['sourceRange'], baseOffset === 'right'); if (offset !== undefined) { - if (baseOffset === 'right') { - offset += (mapping.sourceRange[1] - mapping.sourceRange[0]) - (mapping.generatedRange[1] - mapping.generatedRange[0]); - } return this.sourceDocument.positionAt(offset); } } protected matchGeneratedPosition(position: vscode.Position, mapping: Mapping, baseOffset: 'left' | 'right') { - let offset = this.matchOffset(this.sourceDocument.offsetAt(position), mapping['sourceRange'], mapping['generatedRange']); + let offset = this.matchOffset(this.sourceDocument.offsetAt(position), mapping['sourceRange'], mapping['generatedRange'], baseOffset === 'right'); if (offset !== undefined) { - if (baseOffset === 'right') { - offset += (mapping.generatedRange[1] - mapping.generatedRange[0]) - (mapping.sourceRange[1] - mapping.sourceRange[0]); - } return this.mappedDocument.positionAt(offset); } } diff --git a/packages/source-map/src/index.ts b/packages/source-map/src/index.ts index 16f7bc40c..a2cafd4c7 100644 --- a/packages/source-map/src/index.ts +++ b/packages/source-map/src/index.ts @@ -82,27 +82,27 @@ export class SourceMapBase { constructor(public readonly mappings: Mapping[]) { } - public toSourceOffset(start: number) { - for (const mapped of this.matcing(start, 'generatedRange', 'sourceRange')) { + public toSourceOffset(start: number, baseOnRight: boolean = false) { + for (const mapped of this.matcing(start, 'generatedRange', 'sourceRange', baseOnRight)) { return mapped; } } - public toGeneratedOffset(start: number) { - for (const mapped of this.matcing(start, 'sourceRange', 'generatedRange')) { + public toGeneratedOffset(start: number, baseOnRight: boolean = false) { + for (const mapped of this.matcing(start, 'sourceRange', 'generatedRange', baseOnRight)) { return mapped; } } - public toSourceOffsets(start: number) { - return this.matcing(start, 'generatedRange', 'sourceRange'); + public toSourceOffsets(start: number, baseOnRight: boolean = false) { + return this.matcing(start, 'generatedRange', 'sourceRange', baseOnRight); } - public toGeneratedOffsets(start: number) { - return this.matcing(start, 'sourceRange', 'generatedRange'); + public toGeneratedOffsets(start: number, baseOnRight: boolean = false) { + return this.matcing(start, 'sourceRange', 'generatedRange', baseOnRight); } - public * matcing(startOffset: number, from: 'sourceRange' | 'generatedRange', to: 'sourceRange' | 'generatedRange') { + public * matcing(startOffset: number, from: 'sourceRange' | 'generatedRange', to: 'sourceRange' | 'generatedRange', baseOnRight: boolean) { const memo = this.memo[from]; @@ -124,7 +124,7 @@ export class SourceMapBase { } skip.add(mapping); - const mapped = this.matchOffset(startOffset, mapping[from], mapping[to]); + const mapped = this.matchOffset(startOffset, mapping[from], mapping[to], baseOnRight); if (mapped !== undefined) { yield [mapped, mapping] as const; } @@ -132,9 +132,13 @@ export class SourceMapBase { } } - public matchOffset(start: number, mappedFromRange: [number, number], mappedToRange: [number, number]): number | undefined { + public matchOffset(start: number, mappedFromRange: [number, number], mappedToRange: [number, number], baseOnRight: boolean): number | undefined { if (start >= mappedFromRange[0] && start <= mappedFromRange[1]) { - return mappedToRange[0] + start - mappedFromRange[0]; + let offset = mappedToRange[0] + start - mappedFromRange[0]; + if (baseOnRight) { + offset += (mappedToRange[1] - mappedToRange[0]) - (mappedFromRange[1] - mappedFromRange[0]); + } + return offset; } } diff --git a/packages/typescript/src/getProgram.ts b/packages/typescript/src/getProgram.ts index 309298228..d922b3623 100644 --- a/packages/typescript/src/getProgram.ts +++ b/packages/typescript/src/getProgram.ts @@ -109,6 +109,7 @@ export function getProgram( for (const end of core.mapper.fromEmbeddedLocation( diagnostic.file.fileName, diagnostic.start + diagnostic.length, + true, )) { if (end.mapping && !end.mapping.data.diagnostic) diff --git a/packages/typescript/src/index.ts b/packages/typescript/src/index.ts index 6c827b0c6..86ea304d3 100644 --- a/packages/typescript/src/index.ts +++ b/packages/typescript/src/index.ts @@ -4,11 +4,18 @@ import * as embedded from '@volar/language-core'; export function createLanguageService(host: embedded.LanguageServiceHost, mods: embedded.LanguageModule[]) { + type _LanguageService = { + __internal__: { + languageService: ts.LanguageService; + context: embedded.EmbeddedLanguageContext; + }; + } & ts.LanguageService; + const core = embedded.createEmbeddedLanguageServiceHost(host, mods); const ts = host.getTypeScriptModule(); const ls = ts.createLanguageService(core.typescriptLanguageServiceHost); - return new Proxy>({ + return new Proxy>({ organizeImports, // only support for .ts for now, not support for .vue @@ -35,6 +42,11 @@ export function createLanguageService(host: embedded.LanguageServiceHost, mods: // getEditsForRefactor: tsLanguageService.rawLs.getEditsForRefactor, getProgram: () => getProgram(ts, core, ls), + + __internal__: { + context: core, + languageService: ls, + }, }, { get: (target: any, property: keyof ts.LanguageService) => { if (property in target) { @@ -42,7 +54,7 @@ export function createLanguageService(host: embedded.LanguageServiceHost, mods: } return ls[property]; }, - }) as ts.LanguageService; + }) as _LanguageService; // apis function organizeImports(args: ts.OrganizeImportsArgs, formatOptions: ts.FormatCodeSettings, preferences: ts.UserPreferences | undefined): ReturnType { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index f65ac48bb..9279a88d5 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -15,12 +15,12 @@ importers: optionalDependencies: '@lerna-lite/cli': 1.13.0 '@vscode/test-web': 0.0.33 - vitepress: 1.0.0-alpha.32_@types+node@18.11.15 + vitepress: 1.0.0-alpha.32_@types+node@18.11.17 vue: 3.2.45 devDependencies: - '@types/node': 18.11.15 + '@types/node': 18.11.17 typescript: 4.9.4 - vite: 4.0.1_@types+node@18.11.15 + vite: 4.0.1_@types+node@18.11.17 vitest: 0.25.8 examples/angular-language-core: @@ -33,8 +33,8 @@ importers: dependencies: '@angular-eslint/bundled-angular-compiler': 15.1.0 '@volar/language-core': link:../../packages/language-core - vscode-languageserver-textdocument: 1.0.7 - vscode-uri: 3.0.6 + vscode-languageserver-textdocument: 1.0.8 + vscode-uri: 3.0.7 devDependencies: '@angular/compiler': 15.0.4 @@ -61,10 +61,10 @@ importers: dependencies: '@jridgewell/sourcemap-codec': 1.4.14 '@volar/language-core': link:../../packages/language-core - svelte: 3.53.1 - svelte2tsx: 0.5.20_svelte@3.53.1 - vscode-languageserver-textdocument: 1.0.7 - vscode-uri: 3.0.6 + svelte: 3.55.0 + svelte2tsx: 0.5.22_svelte@3.55.0 + vscode-languageserver-textdocument: 1.0.8 + vscode-uri: 3.0.7 examples/svelte-language-server: specifiers: @@ -107,7 +107,7 @@ importers: '@volar-examples/angular-language-server': link:../angular-language-server '@volar/language-server': link:../../packages/language-server '@volar/vscode-language-client': link:../../packages/vscode-language-client - esbuild: 0.16.7 + esbuild: 0.16.8 typesafe-path: 0.2.2 vsce: 2.15.0 vscode-languageclient: 8.0.2 @@ -152,7 +152,7 @@ importers: dependencies: typescript-vue-plugin-forward: file:extensions/vscode-typescript-vue-plugin/typescript-vue-plugin-forward devDependencies: - esbuild: 0.16.7 + esbuild: 0.16.8 typescript-vue-plugin: link:../../vue-language-tools/typescript-vue-plugin vsce: 2.15.0 @@ -185,8 +185,8 @@ importers: '@volar/vscode-language-client': link:../../packages/vscode-language-client '@volar/vue-language-core': link:../../vue-language-tools/vue-language-core '@volar/vue-language-server': link:../../vue-language-tools/vue-language-server - esbuild: 0.16.7 - esbuild-plugin-copy: 2.0.1_esbuild@0.16.7 + esbuild: 0.16.8 + esbuild-plugin-copy: 2.0.1_esbuild@0.16.8 esbuild-visualizer: 0.4.0 path-browserify: 1.0.1 punycode: 2.1.1 @@ -227,8 +227,8 @@ importers: vscode-html-languageservice: 5.0.3 vscode-languageserver: 8.0.2 vscode-languageserver-protocol: 3.17.2 - vscode-languageserver-textdocument: 1.0.7 - vscode-uri: 3.0.6 + vscode-languageserver-textdocument: 1.0.8 + vscode-uri: 3.0.7 packages/language-service: specifiers: @@ -253,8 +253,8 @@ importers: vscode-html-languageservice: 5.0.3 vscode-json-languageservice: 5.1.3 vscode-languageserver-protocol: 3.17.2 - vscode-languageserver-textdocument: 1.0.7 - vscode-uri: 3.0.6 + vscode-languageserver-textdocument: 1.0.8 + vscode-uri: 3.0.7 packages/preview: specifiers: @@ -285,7 +285,7 @@ importers: muggle-string: 0.1.0 pug-lexer: 5.0.1 pug-parser: 6.0.0 - vscode-languageserver-textdocument: 1.0.7 + vscode-languageserver-textdocument: 1.0.8 vscode-languageserver-types: 3.17.2 devDependencies: vscode-html-languageservice: 5.0.3 @@ -296,7 +296,7 @@ importers: vscode-uri: ^3.0.6 dependencies: typesafe-path: 0.2.2 - vscode-uri: 3.0.6 + vscode-uri: 3.0.7 packages/source-map: specifiers: @@ -353,7 +353,7 @@ importers: dependencies: vscode-css-languageservice: 6.2.1 vscode-languageserver-protocol: 3.17.2 - vscode-languageserver-textdocument: 1.0.7 + vscode-languageserver-textdocument: 1.0.8 plugins/emmet: specifiers: @@ -369,7 +369,7 @@ importers: dependencies: vscode-html-languageservice: 5.0.3 vscode-languageserver-protocol: 3.17.2 - vscode-languageserver-textdocument: 1.0.7 + vscode-languageserver-textdocument: 1.0.8 plugins/json: specifiers: @@ -379,7 +379,7 @@ importers: dependencies: vscode-json-languageservice: 5.1.3 vscode-languageserver-protocol: 3.17.2 - vscode-languageserver-textdocument: 1.0.7 + vscode-languageserver-textdocument: 1.0.8 plugins/pug: specifiers: @@ -391,7 +391,7 @@ importers: '@volar-plugins/html': link:../html '@volar/pug-language-service': link:../../packages/pug-language-service vscode-html-languageservice: 5.0.3 - vscode-languageserver-textdocument: 1.0.7 + vscode-languageserver-textdocument: 1.0.8 plugins/pug-beautify: specifiers: @@ -414,9 +414,9 @@ importers: '@volar/shared': link:../../packages/shared semver: 7.3.8 vscode-languageserver-protocol: 3.17.2 - vscode-languageserver-textdocument: 1.0.7 + vscode-languageserver-textdocument: 1.0.8 vscode-nls: 5.2.0 - vscode-uri: 3.0.6 + vscode-uri: 3.0.7 devDependencies: '@types/semver': 7.3.13 @@ -458,7 +458,7 @@ importers: '@vue/compiler-sfc': 3.2.45 '@vue/reactivity': 3.2.45 '@vue/shared': 3.2.45 - minimatch: 5.1.0 + minimatch: 5.1.1 vue-template-compiler: 2.7.14 devDependencies: '@types/minimatch': 5.1.2 @@ -537,8 +537,8 @@ importers: vscode-html-languageservice: 5.0.3 vscode-json-languageservice: 5.1.3 vscode-languageserver-protocol: 3.17.2 - vscode-languageserver-textdocument: 1.0.7 - vscode-uri: 3.0.6 + vscode-languageserver-textdocument: 1.0.8 + vscode-uri: 3.0.7 vue-language-tools/vue-test-workspace: specifiers: @@ -554,6 +554,17 @@ importers: '@volar/vue-language-core': link:../vue-language-core '@volar/vue-typescript': link:../vue-typescript + vue-language-tools/vue-tsc-eslint-hook: + specifiers: + '@types/eslint': latest + vscode-languageserver-textdocument: ^1.0.7 + vue-tsc: 1.0.13 + dependencies: + vscode-languageserver-textdocument: 1.0.8 + devDependencies: + '@types/eslint': 8.4.10 + vue-tsc: link:../vue-tsc + vue-language-tools/vue-typescript: specifiers: '@volar/typescript': 1.0.13 @@ -704,7 +715,7 @@ packages: '@angular/core': optional: true dependencies: - tslib: 2.4.0 + tslib: 2.4.1 dev: true /@babel/code-frame/7.18.6: @@ -715,13 +726,15 @@ packages: dev: false optional: true - /@babel/helper-string-parser/7.18.10: - resolution: {integrity: sha512-XtIfWmeNY3i4t7t4D2t02q50HvqHybPqW2ki1kosnvWCwuCMeo81Jf0gwr85jy/neUdg5XDdeFE/80DXiO+njw==} + /@babel/helper-string-parser/7.19.4: + resolution: {integrity: sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==} engines: {node: '>=6.9.0'} + dev: false /@babel/helper-validator-identifier/7.19.1: resolution: {integrity: sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==} engines: {node: '>=6.9.0'} + dev: false /@babel/highlight/7.18.6: resolution: {integrity: sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==} @@ -733,20 +746,19 @@ packages: dev: false optional: true - /@babel/parser/7.19.3: - resolution: {integrity: sha512-pJ9xOlNWHiy9+FuFP09DEAFbAn4JskgRsVcc169w2xRBC3FRGuQEwjeIMMND9L2zc0iEhO/tGv4Zq+km+hxNpQ==} + /@babel/parser/7.20.5: + resolution: {integrity: sha512-r27t/cy/m9uKLXQNWWebeCUHgnAZq0CpG1OwKRxzJMP1vpSU4bSIK2hq+/cp0bQxetkXx38n09rNu8jVkcK/zA==} engines: {node: '>=6.0.0'} hasBin: true - dependencies: - '@babel/types': 7.19.3 - /@babel/types/7.19.3: - resolution: {integrity: sha512-hGCaQzIY22DJlDh9CH7NOxgKkFjBk0Cw9xDO1Xmh2151ti7wiGfQ3LauXzL4HP1fmFlTX6XjpRETTpUcv7wQLw==} + /@babel/types/7.20.5: + resolution: {integrity: sha512-c9fst/h2/dcF7H+MJKZ2T0KjEQ8hY/BNnDk/H3XY8C4Aw/eWQXWn/lWntHF9ooUBnGmEvbfGrTgLWc+um0YDUg==} engines: {node: '>=6.9.0'} dependencies: - '@babel/helper-string-parser': 7.18.10 + '@babel/helper-string-parser': 7.19.4 '@babel/helper-validator-identifier': 7.19.1 to-fast-properties: 2.0.0 + dev: false /@docsearch/css/3.3.0: resolution: {integrity: sha512-rODCdDtGyudLj+Va8b6w6Y85KE85bXRsps/R4Yjwt5vueXKXZQKYw0aA9knxLBT6a/bI/GMrAcmCR75KYOM6hg==} @@ -757,7 +769,7 @@ packages: resolution: {integrity: sha512-oFXWRPNvPxAzBhnFJ9UCFIYZiQNc3Yrv6912nZHw/UIGxsyzKpNRZgHq8HDk1niYmOSoLKtVFcxkccpQmYGFyg==} dependencies: '@docsearch/react': 3.3.0 - preact: 10.11.0 + preact: 10.11.3 transitivePeerDependencies: - '@algolia/client-search' - '@types/react' @@ -805,176 +817,176 @@ packages: resolution: {integrity: sha512-8HqW8EVqjnCmWXVpqAOZf+EGESdkR27odcMMMGefgKXtar00SoYNSryGv//TELI4T3QFsECo78p+0lmalk/CFA==} dev: false - /@esbuild/android-arm/0.16.7: - resolution: {integrity: sha512-yhzDbiVcmq6T1/XEvdcJIVcXHdLjDJ5cQ0Dp9R9p9ERMBTeO1dR5tc8YYv8zwDeBw1xZm+Eo3MRo8cwclhBS0g==} + /@esbuild/android-arm/0.16.8: + resolution: {integrity: sha512-r/qxYWkC3gY+Uq24wZacAUevGGb6d7d8VpyO8R0HGg31LXVi+eUr8XxHLCcmVzAjRjlZsZfzPelGpAKP/DafKg==} engines: {node: '>=12'} cpu: [arm] os: [android] requiresBuild: true optional: true - /@esbuild/android-arm64/0.16.7: - resolution: {integrity: sha512-tYFw0lBJSEvLoGzzYh1kXuzoX1iPkbOk3O29VqzQb0HbOy7t/yw1hGkvwoJhXHwzQUPsShyYcTgRf6bDBcfnTw==} + /@esbuild/android-arm64/0.16.8: + resolution: {integrity: sha512-TGQM/tdy5EV1KoFHu0+cMrKvPR8UBLGEfwS84PTCJ07KVp21Fr488aFEL2TCamz9CxoF1np36kY6XOSdLncg2Q==} engines: {node: '>=12'} cpu: [arm64] os: [android] requiresBuild: true optional: true - /@esbuild/android-x64/0.16.7: - resolution: {integrity: sha512-3P2OuTxwAtM3k/yEWTNUJRjMPG1ce8rXs51GTtvEC5z1j8fC1plHeVVczdeHECU7aM2/Buc0MwZ6ciM/zysnWg==} + /@esbuild/android-x64/0.16.8: + resolution: {integrity: sha512-HtA4BNfrf5Nyoz3G2IS3qW4A0yckPJ1NjCMA3SiOw3zS1IfpMkbepDGp/Gdokc/tASFd38IP2uIL3W6bHJzAQw==} engines: {node: '>=12'} cpu: [x64] os: [android] requiresBuild: true optional: true - /@esbuild/darwin-arm64/0.16.7: - resolution: {integrity: sha512-VUb9GK23z8jkosHU9yJNUgQpsfJn+7ZyBm6adi2Ec5/U241eR1tAn82QicnUzaFDaffeixiHwikjmnec/YXEZg==} + /@esbuild/darwin-arm64/0.16.8: + resolution: {integrity: sha512-Ks8K1HGFf6LEjLnnVqB/zyaJcv7zMjbJ9txRZAwQwj+bzg8/AP0TmLBMJf9Ahwn6ATnHrhORtpydP8A/mNthXg==} engines: {node: '>=12'} cpu: [arm64] os: [darwin] requiresBuild: true optional: true - /@esbuild/darwin-x64/0.16.7: - resolution: {integrity: sha512-duterlv3tit3HI9vhzMWnSVaB1B6YsXpFq1Ntd6Fou82BB1l4tucYy3FI9dHv3tvtDuS0NiGf/k6XsdBqPZ01w==} + /@esbuild/darwin-x64/0.16.8: + resolution: {integrity: sha512-XXh2070hatspZdG/uPqyHLFlHlGbytvT4JlqZuTU3AizcyOvmatPBSnuARvwCtJMw30wjjehcYY8DWPZ5UF2og==} engines: {node: '>=12'} cpu: [x64] os: [darwin] requiresBuild: true optional: true - /@esbuild/freebsd-arm64/0.16.7: - resolution: {integrity: sha512-9kkycpBFes/vhi7B7o0cf+q2WdJi+EpVzpVTqtWFNiutARWDFFLcB93J8PR1cG228sucsl3B+7Ts27izE6qiaQ==} + /@esbuild/freebsd-arm64/0.16.8: + resolution: {integrity: sha512-6DJuU3+tG9LcHCG/4K3e0AnqmmKWhUc9WDNIhLHOOdleafXwZeFvsqwfyaowNg9yUw5KipRLvV3JJMQ8kT1aPg==} engines: {node: '>=12'} cpu: [arm64] os: [freebsd] requiresBuild: true optional: true - /@esbuild/freebsd-x64/0.16.7: - resolution: {integrity: sha512-5Ahf6jzWXJ4J2uh9dpy5DKOO+PeRUE/9DMys6VuYfwgQzd6n5+pVFm58L2Z2gRe611RX6SdydnNaiIKM3svY7g==} + /@esbuild/freebsd-x64/0.16.8: + resolution: {integrity: sha512-UcsCaR25C0tZWnoImprPzr7vMEMjLImlTQAIfWXU2wvjF4gBWKO9GEH2JlsKYqBjfWfGgH+HHoGSF/evZbKyxA==} engines: {node: '>=12'} cpu: [x64] os: [freebsd] requiresBuild: true optional: true - /@esbuild/linux-arm/0.16.7: - resolution: {integrity: sha512-QqJnyCfu5OF78Olt7JJSZ7OSv/B4Hf+ZJWp4kkq9xwMsgu7yWq3crIic8gGOpDYTqVKKMDAVDgRXy5Wd/nWZyQ==} + /@esbuild/linux-arm/0.16.8: + resolution: {integrity: sha512-Hn36NbKd6Prh0Ehv1A2ObjfXtN2g81jTpmq1+uRLHrW7CJW+W8GdVgOCVwyeupADUIOOa8bars6IZGcjkwq21w==} engines: {node: '>=12'} cpu: [arm] os: [linux] requiresBuild: true optional: true - /@esbuild/linux-arm64/0.16.7: - resolution: {integrity: sha512-2wv0xYDskk2+MzIm/AEprDip39a23Chptc4mL7hsHg26P0gD8RUhzmDu0KCH2vMThUI1sChXXoK9uH0KYQKaDg==} + /@esbuild/linux-arm64/0.16.8: + resolution: {integrity: sha512-WTL1v/OhSxgE7rEELRFNWskym0e+hKDMl4JZs7jpQp7218yJPOjdOEWsbzVEYv4G1cbbtWFvp9DtaAONtdCW5w==} engines: {node: '>=12'} cpu: [arm64] os: [linux] requiresBuild: true optional: true - /@esbuild/linux-ia32/0.16.7: - resolution: {integrity: sha512-APVYbEilKbD5ptmKdnIcXej2/+GdV65TfTjxR2Uk8t1EsOk49t6HapZW6DS/Bwlvh5hDwtLapdSumIVNGxgqLg==} + /@esbuild/linux-ia32/0.16.8: + resolution: {integrity: sha512-Jt+8YBFR2Pk68oS7E9z9PtmgJrDonGdEW3Camb2plZcztKpu/OxfnxFu8f41+TYpKhzUDm5uNMwqxRH3yDYrsQ==} engines: {node: '>=12'} cpu: [ia32] os: [linux] requiresBuild: true optional: true - /@esbuild/linux-loong64/0.16.7: - resolution: {integrity: sha512-5wPUAGclplQrAW7EFr3F84Y/d++7G0KykohaF4p54+iNWhUnMVU8Bh2sxiEOXUy4zKIdpHByMgJ5/Ko6QhtTUw==} + /@esbuild/linux-loong64/0.16.8: + resolution: {integrity: sha512-P+5J/U/WwPEwcKOFTlTQBK6Gqw4OytpfBvR2V+kBRb5jujwMOQ1aG8iKX14DAwCLks1YHXrXPwXXDPNWEWC59A==} engines: {node: '>=12'} cpu: [loong64] os: [linux] requiresBuild: true optional: true - /@esbuild/linux-mips64el/0.16.7: - resolution: {integrity: sha512-hxzlXtWF6yWfkE/SMTscNiVqLOAn7fOuIF3q/kiZaXxftz1DhZW/HpnTmTTWrzrS7zJWQxHHT4QSxyAj33COmA==} + /@esbuild/linux-mips64el/0.16.8: + resolution: {integrity: sha512-RDSnljcka9UkVxcLtWv2lG5zcqkZUxIPY47ZSKytv4aoo8b05dH1gnKVWrxBZ+owp3dX48s2lXm6zp3hZHl8qw==} engines: {node: '>=12'} cpu: [mips64el] os: [linux] requiresBuild: true optional: true - /@esbuild/linux-ppc64/0.16.7: - resolution: {integrity: sha512-WM83Dac0LdXty5xPhlOuCD5Egfk1xLND/oRLYeB7Jb/tY4kzFSDgLlq91wYbHua/s03tQGA9iXvyjgymMw62Vw==} + /@esbuild/linux-ppc64/0.16.8: + resolution: {integrity: sha512-fNGvIKXyigXYhSflraBsqR/EBhXhuH0/0r7IpU+3reh+8yX3VjowjC/dwmqHDOSQXbcj+HJb1o9kWYi+fJQ/3g==} engines: {node: '>=12'} cpu: [ppc64] os: [linux] requiresBuild: true optional: true - /@esbuild/linux-riscv64/0.16.7: - resolution: {integrity: sha512-3nkNnNg4Ax6MS/l8O8Ynq2lGEVJYyJ2EoY3PHjNJ4PuZ80EYLMrFTFZ4L/Hc16AxgtXKwmNP9TM0YKNiBzBiJQ==} + /@esbuild/linux-riscv64/0.16.8: + resolution: {integrity: sha512-CsE1IKyVq/Y55PDnBUvm/e7XfvBgfb5kZxHbIEdmB9xt6cTcBkaVvv8EwLDZuYPkYI60WGl0UwyYYx9B2LLgkg==} engines: {node: '>=12'} cpu: [riscv64] os: [linux] requiresBuild: true optional: true - /@esbuild/linux-s390x/0.16.7: - resolution: {integrity: sha512-3SA/2VJuv0o1uD7zuqxEP+RrAyRxnkGddq0bwHQ98v1KNlzXD/JvxwTO3T6GM5RH6JUd29RTVQTOJfyzMkkppA==} + /@esbuild/linux-s390x/0.16.8: + resolution: {integrity: sha512-k8RIN4M+GWQAfJ/oGqwxZlpzOyGF8mxp5mH1A1WUJrpSUo4pe0zkq2EoP1KMQbYkjeJi45YsjwK3IOnSoueXbA==} engines: {node: '>=12'} cpu: [s390x] os: [linux] requiresBuild: true optional: true - /@esbuild/linux-x64/0.16.7: - resolution: {integrity: sha512-xi/tbqCqvPIzU+zJVyrpz12xqciTAPMi2fXEWGnapZymoGhuL2GIWIRXg4O2v5BXaYA5TSaiKYE14L0QhUTuQg==} + /@esbuild/linux-x64/0.16.8: + resolution: {integrity: sha512-u0hOo4E9PKyVDmPgJNeip1Tg63wxq+3KBJZKQFblqCl+d5N7n1h7pFwdN5ZzeLaaE645ep8aXzf76ndGnyOypg==} engines: {node: '>=12'} cpu: [x64] os: [linux] requiresBuild: true optional: true - /@esbuild/netbsd-x64/0.16.7: - resolution: {integrity: sha512-NUsYbq3B+JdNKn8SXkItFvdes9qTwEoS3aLALtiWciW/ystiCKM20Fgv9XQBOXfhUHyh5CLEeZDXzLOrwBXuCQ==} + /@esbuild/netbsd-x64/0.16.8: + resolution: {integrity: sha512-wtENU7TOrnEbUes9aQuNe5PeBM4cTK5dn1W7v6XCr1LatJxAOn6Jn8yDGRsa2uKeEbAS5HeYx7uBAbTBd98OXQ==} engines: {node: '>=12'} cpu: [x64] os: [netbsd] requiresBuild: true optional: true - /@esbuild/openbsd-x64/0.16.7: - resolution: {integrity: sha512-qjwzsgeve9I8Tbsko2FEkdSk2iiezuNGFgipQxY/736NePXDaDZRodIejYGWOlbYXugdxb0nif5yvypH6lKBmA==} + /@esbuild/openbsd-x64/0.16.8: + resolution: {integrity: sha512-Y0DRVd/PIiutCpAYvRZHkpDNN3tdSQ1oyKy6xoh5TFTElAmzdlO7CO8ABs8689gq47lJ466cQEq9adJrKXrgXg==} engines: {node: '>=12'} cpu: [x64] os: [openbsd] requiresBuild: true optional: true - /@esbuild/sunos-x64/0.16.7: - resolution: {integrity: sha512-mFWDz4RoBTzPphTCkM7Kc7Qpa0o/Z01acajR+Ai7LdfKgcP/C6jYOaKwv7nKzD0+MjOT20j7You9g4ozYy1dKQ==} + /@esbuild/sunos-x64/0.16.8: + resolution: {integrity: sha512-eKg0I3C5z4NTF396Yo9QByXA8DdRS7QiYPFf6JHcED0BanyLW/jX8csUy96wyGivTNrmU0mCOShbeLgzb0eX7w==} engines: {node: '>=12'} cpu: [x64] os: [sunos] requiresBuild: true optional: true - /@esbuild/win32-arm64/0.16.7: - resolution: {integrity: sha512-m39UmX19RvEIuC8sYZ0M+eQtdXw4IePDSZ78ZQmYyFaXY9krq4YzQCK2XWIJomNLtg4q+W5aXr8bW3AbqWNoVg==} + /@esbuild/win32-arm64/0.16.8: + resolution: {integrity: sha512-M2BZhsa7z8kMGre96HTMXpm266cfJkbdtcZgVfAL8hY4ptkh5MwNDasl85CDo++ffW2issVT+W/xIGJOr0v2pg==} engines: {node: '>=12'} cpu: [arm64] os: [win32] requiresBuild: true optional: true - /@esbuild/win32-ia32/0.16.7: - resolution: {integrity: sha512-1cbzSEZA1fANwmT6rjJ4G1qQXHxCxGIcNYFYR9ctI82/prT38lnwSRZ0i5p/MVXksw9eMlHlet6pGu2/qkXFCg==} + /@esbuild/win32-ia32/0.16.8: + resolution: {integrity: sha512-mzzHVpnuHQT+IrptiW+uUswEMpVIueYuAkjwt1m4tQuVq9dGWqCA1y9EE+W3S19nMg6JvHMbaRjv3mlCcmi0rA==} engines: {node: '>=12'} cpu: [ia32] os: [win32] requiresBuild: true optional: true - /@esbuild/win32-x64/0.16.7: - resolution: {integrity: sha512-QaQ8IH0JLacfGf5cf0HCCPnQuCTd/dAI257vXBgb/cccKGbH/6pVtI1gwhdAQ0Y48QSpTIFrh9etVyNdZY+zzw==} + /@esbuild/win32-x64/0.16.8: + resolution: {integrity: sha512-Zgzyn7njXpSSe1YGQk03eW4uei4QoZKloe/TBQZXgQHo6ul/ux0BtYdLz3MZ8WDlvqTG3QnLV4+gtV5ordM0+g==} engines: {node: '>=12'} cpu: [x64] os: [win32] @@ -1082,14 +1094,14 @@ packages: glob-parent: 6.0.2 globby: 11.1.0 graceful-fs: 4.2.10 - inquirer: 8.2.4 + inquirer: 8.2.5 is-ci: 3.0.1 is-stream: 2.0.1 load-json-file: 6.2.0 make-dir: 3.1.0 - minimatch: 5.1.0 + minimatch: 5.1.1 node-fetch: 2.6.7 - npm-package-arg: 10.0.0 + npm-package-arg: 10.1.0 npmlog: 7.0.1 p-map: 4.0.0 p-queue: 6.6.2 @@ -1156,27 +1168,27 @@ packages: dependencies: '@lerna-lite/core': 1.13.0 '@lerna-lite/version': 1.13.0 - '@npmcli/arborist': 6.1.3 + '@npmcli/arborist': 6.1.5 byte-size: 7.0.1 chalk: 4.1.2 columnify: 1.6.0 fs-extra: 10.1.0 has-unicode: 2.0.1 - libnpmaccess: 7.0.0 - libnpmpublish: 7.0.4 - npm-package-arg: 10.0.0 - npm-packlist: 7.0.2 - npm-registry-fetch: 14.0.2 + libnpmaccess: 7.0.1 + libnpmpublish: 7.0.6 + npm-package-arg: 10.1.0 + npm-packlist: 7.0.4 + npm-registry-fetch: 14.0.3 npmlog: 7.0.1 p-map: 4.0.0 p-pipe: 3.1.0 - pacote: 15.0.6 + pacote: 15.0.8 path: 0.12.7 pify: 5.0.0 read-package-json: 6.0.0 semver: 7.3.8 - ssri: 10.0.0 - tar: 6.1.12 + ssri: 10.0.1 + tar: 6.1.13 transitivePeerDependencies: - encoding - supports-color @@ -1191,7 +1203,7 @@ packages: chalk: 4.1.2 dedent: 0.7.0 load-json-file: 6.2.0 - minimatch: 5.1.0 + minimatch: 5.1.1 new-github-release-url: 1.0.0 npmlog: 7.0.1 p-map: 4.0.0 @@ -1223,17 +1235,17 @@ packages: engines: {node: '>= 8'} dependencies: '@nodelib/fs.scandir': 2.1.5 - fastq: 1.13.0 + fastq: 1.14.0 - /@npmcli/arborist/6.1.3: - resolution: {integrity: sha512-oPYO8WO21aB9ojhREzCbzdNnR+SNuloOtxqQ0Q4Mj8tZuUPdTS5SuatSIpPGKpdtpLi5642hr2sirrikqj33Vg==} + /@npmcli/arborist/6.1.5: + resolution: {integrity: sha512-bdnvRL1Js6uz+CDf0NdG5dIbuwYzHwzTV4/WS16JCDdfstjsYSa8J69bYHf9osUwza9zzg2HI/C5SSmeMN+yFg==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} hasBin: true dependencies: '@isaacs/string-locale-compare': 1.1.0 '@npmcli/fs': 3.1.0 '@npmcli/installed-package-contents': 2.0.1 - '@npmcli/map-workspaces': 3.0.0 + '@npmcli/map-workspaces': 3.0.1 '@npmcli/metavuln-calculator': 5.0.0 '@npmcli/name-from-folder': 1.0.1 '@npmcli/node-gyp': 3.0.0 @@ -1241,26 +1253,26 @@ packages: '@npmcli/query': 3.0.0 '@npmcli/run-script': 6.0.0 bin-links: 4.0.1 - cacache: 17.0.2 + cacache: 17.0.4 common-ancestor-path: 1.0.1 hosted-git-info: 6.1.1 json-parse-even-better-errors: 3.0.0 json-stringify-nice: 1.1.4 - minimatch: 5.1.0 + minimatch: 5.1.1 nopt: 7.0.0 npm-install-checks: 6.0.0 - npm-package-arg: 10.0.0 + npm-package-arg: 10.1.0 npm-pick-manifest: 8.0.1 - npm-registry-fetch: 14.0.2 + npm-registry-fetch: 14.0.3 npmlog: 7.0.1 - pacote: 15.0.6 + pacote: 15.0.8 parse-conflict-json: 3.0.0 proc-log: 3.0.0 promise-all-reject-late: 1.0.1 promise-call-limit: 1.0.1 - read-package-json-fast: 3.0.1 + read-package-json-fast: 3.0.2 semver: 7.3.8 - ssri: 10.0.0 + ssri: 10.0.1 treeverse: 3.0.0 walk-up-path: 1.0.0 transitivePeerDependencies: @@ -1289,8 +1301,8 @@ packages: resolution: {integrity: sha512-8cXNkDIbnXPVbhXMmQ7/bklCAjtmPaXfI9aEM4iH+xSuEHINLMHhlfESvVwdqmHJRJkR48vNJTSUvoF6GRPSFA==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} dependencies: - '@npmcli/promise-spawn': 6.0.1 - lru-cache: 7.14.0 + '@npmcli/promise-spawn': 6.0.2 + lru-cache: 7.14.1 mkdirp: 1.0.4 npm-pick-manifest: 8.0.1 proc-log: 3.0.0 @@ -1311,14 +1323,14 @@ packages: dev: false optional: true - /@npmcli/map-workspaces/3.0.0: - resolution: {integrity: sha512-aaEDwQ+fUH80iNYSDAcKv9lxIFWsgGkLjIPZENyep75hKeAk2CfSbCAZ6IHDDrVlNybvvNmlFjPap6GdTz9cCw==} + /@npmcli/map-workspaces/3.0.1: + resolution: {integrity: sha512-QXwE2p5zRTP6X8Irgf/swYwwdQEalSA1GBm0IGE/86R5EJbUGgKMOP0kOjaJWJxaWPkSqyhM8N50SPxFHTfkNg==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} dependencies: - '@npmcli/name-from-folder': 1.0.1 + '@npmcli/name-from-folder': 2.0.0 glob: 8.0.3 - minimatch: 5.1.0 - read-package-json-fast: 3.0.1 + minimatch: 5.1.1 + read-package-json-fast: 3.0.2 dev: false optional: true @@ -1326,9 +1338,9 @@ packages: resolution: {integrity: sha512-BBFQx4M12wiEuVwCgtX/Depx0B/+NHMwDWOlXT41/Pdy5W/1Fenk+hibUlMSrFWwASbX+fY90UbILAEIYH02/A==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} dependencies: - cacache: 17.0.2 + cacache: 17.0.4 json-parse-even-better-errors: 3.0.0 - pacote: 15.0.6 + pacote: 15.0.8 semver: 7.3.8 transitivePeerDependencies: - supports-color @@ -1350,6 +1362,12 @@ packages: dev: false optional: true + /@npmcli/name-from-folder/2.0.0: + resolution: {integrity: sha512-pwK+BfEBZJbKdNYpHHRTNBwBoqrN/iIMO0AiGvYsp3Hoaq0WbgGSWQR6SCldZovoDpY3yje5lkFUe6gsDgJ2vg==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dev: false + optional: true + /@npmcli/node-gyp/3.0.0: resolution: {integrity: sha512-gp8pRXC2oOxu0DUE1/M3bYtb1b3/DbJ5aM113+XJBgfXdussRAsX0YOrOhdd8WvnAR6auDBvJomGAkLKA5ydxA==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} @@ -1364,8 +1382,8 @@ packages: dev: false optional: true - /@npmcli/promise-spawn/6.0.1: - resolution: {integrity: sha512-+hcUpxgx0vEpDJI9Cn+lkTdKLoqKBXFCVps5H7FujEU2vLOp6KwqjLlxbnz8Wzgm8oEqW/u5FeNAXSFjLdCD0A==} + /@npmcli/promise-spawn/6.0.2: + resolution: {integrity: sha512-gGq0NJkIGSwdbUt4yhdF8ZrmkGKVz9vAdVzpOfnom+V8PLSmSOVhZwbNvZZS1EYcJN5hzzKBxmmVVAInM6HQLg==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} dependencies: which: 3.0.0 @@ -1376,7 +1394,7 @@ packages: resolution: {integrity: sha512-MFNDSJNgsLZIEBVZ0Q9w9K7o07j5N4o4yjtdz2uEpuCZlXGMuPENiRaFYk0vRqAA64qVuUQwC05g27fRtfUgnA==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} dependencies: - postcss-selector-parser: 6.0.10 + postcss-selector-parser: 6.0.11 dev: false optional: true @@ -1385,20 +1403,20 @@ packages: engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} dependencies: '@npmcli/node-gyp': 3.0.0 - '@npmcli/promise-spawn': 6.0.1 - node-gyp: 9.1.0 - read-package-json-fast: 3.0.1 + '@npmcli/promise-spawn': 6.0.2 + node-gyp: 9.3.0 + read-package-json-fast: 3.0.2 which: 3.0.0 transitivePeerDependencies: - supports-color dev: false optional: true - /@octokit/auth-token/3.0.1: - resolution: {integrity: sha512-/USkK4cioY209wXRpund6HZzHo9GmjakpV9ycOkpMcMxMk7QVcVFVyCMtzvXYiHsB2crgDgrtNYSELYFBXhhaA==} + /@octokit/auth-token/3.0.2: + resolution: {integrity: sha512-pq7CwIMV1kmzkFTimdwjAINCXKTajZErLB4wMLYapR2nuB/Jpr66+05wOTZMSCBXP6n4DdDWT2W19Bm17vU69Q==} engines: {node: '>= 14'} dependencies: - '@octokit/types': 7.5.1 + '@octokit/types': 8.0.0 dev: false optional: true @@ -1406,45 +1424,40 @@ packages: resolution: {integrity: sha512-Czz/59VefU+kKDy+ZfDwtOIYIkFjExOKf+HA92aiTZJ6EfWpFzYQWw0l54ji8bVmyhc+mGaLUbSUmXazG7z5OQ==} engines: {node: '>= 14'} dependencies: - '@octokit/auth-token': 3.0.1 - '@octokit/graphql': 5.0.1 - '@octokit/request': 6.2.1 - '@octokit/request-error': 3.0.1 + '@octokit/auth-token': 3.0.2 + '@octokit/graphql': 5.0.4 + '@octokit/request': 6.2.2 + '@octokit/request-error': 3.0.2 '@octokit/types': 8.0.0 - before-after-hook: 2.2.2 + before-after-hook: 2.2.3 universal-user-agent: 6.0.0 transitivePeerDependencies: - encoding dev: false optional: true - /@octokit/endpoint/7.0.2: - resolution: {integrity: sha512-8/AUACfE9vpRpehE6ZLfEtzkibe5nfsSwFZVMsG8qabqRt1M81qZYUFRZa1B8w8lP6cdfDJfRq9HWS+MbmR7tw==} + /@octokit/endpoint/7.0.3: + resolution: {integrity: sha512-57gRlb28bwTsdNXq+O3JTQ7ERmBTuik9+LelgcLIVfYwf235VHbN9QNo4kXExtp/h8T423cR5iJThKtFYxC7Lw==} engines: {node: '>= 14'} dependencies: - '@octokit/types': 7.5.1 + '@octokit/types': 8.0.0 is-plain-object: 5.0.0 universal-user-agent: 6.0.0 dev: false optional: true - /@octokit/graphql/5.0.1: - resolution: {integrity: sha512-sxmnewSwAixkP1TrLdE6yRG53eEhHhDTYUykUwdV9x8f91WcbhunIHk9x1PZLALdBZKRPUO2HRcm4kezZ79HoA==} + /@octokit/graphql/5.0.4: + resolution: {integrity: sha512-amO1M5QUQgYQo09aStR/XO7KAl13xpigcy/kI8/N1PnZYSS69fgte+xA4+c2DISKqUZfsh0wwjc2FaCt99L41A==} engines: {node: '>= 14'} dependencies: - '@octokit/request': 6.2.1 - '@octokit/types': 7.5.1 + '@octokit/request': 6.2.2 + '@octokit/types': 8.0.0 universal-user-agent: 6.0.0 transitivePeerDependencies: - encoding dev: false optional: true - /@octokit/openapi-types/13.13.1: - resolution: {integrity: sha512-4EuKSk3N95UBWFau3Bz9b3pheQ8jQYbKmBL5+GSuY8YDPDwu03J4BjI+66yNi8aaX/3h1qDpb0mbBkLdr+cfGQ==} - dev: false - optional: true - /@octokit/openapi-types/14.0.0: resolution: {integrity: sha512-HNWisMYlR8VCnNurDU6os2ikx0s0VyEjDYHNS/h4cgb8DeOxQ0n72HyinUtdDVxJhFy3FWLGl0DJhfEWk3P5Iw==} dev: false @@ -1487,23 +1500,23 @@ packages: dev: false optional: true - /@octokit/request-error/3.0.1: - resolution: {integrity: sha512-ym4Bp0HTP7F3VFssV88WD1ZyCIRoE8H35pXSKwLeMizcdZAYc/t6N9X9Yr9n6t3aG9IH75XDnZ6UeZph0vHMWQ==} + /@octokit/request-error/3.0.2: + resolution: {integrity: sha512-WMNOFYrSaX8zXWoJg9u/pKgWPo94JXilMLb2VManNOby9EZxrQaBe/QSC4a1TzpAlpxofg2X/jMnCyZgL6y7eg==} engines: {node: '>= 14'} dependencies: - '@octokit/types': 7.5.1 + '@octokit/types': 8.0.0 deprecation: 2.3.1 once: 1.4.0 dev: false optional: true - /@octokit/request/6.2.1: - resolution: {integrity: sha512-gYKRCia3cpajRzDSU+3pt1q2OcuC6PK8PmFIyxZDWCzRXRSIBH8jXjFJ8ZceoygBIm0KsEUg4x1+XcYBz7dHPQ==} + /@octokit/request/6.2.2: + resolution: {integrity: sha512-6VDqgj0HMc2FUX2awIs+sM6OwLgwHvAi4KCK3mT2H2IKRt6oH9d0fej5LluF5mck1lRR/rFWN0YIDSYXYSylbw==} engines: {node: '>= 14'} dependencies: - '@octokit/endpoint': 7.0.2 - '@octokit/request-error': 3.0.1 - '@octokit/types': 7.5.1 + '@octokit/endpoint': 7.0.3 + '@octokit/request-error': 3.0.2 + '@octokit/types': 8.0.0 is-plain-object: 5.0.0 node-fetch: 2.6.7 universal-user-agent: 6.0.0 @@ -1525,13 +1538,6 @@ packages: dev: false optional: true - /@octokit/types/7.5.1: - resolution: {integrity: sha512-Zk4OUMLCSpXNI8KZZn47lVLJSsgMyCimsWWQI5hyjZg7hdYm0kjotaIkbG0Pp8SfU2CofMBzonboTqvzn3FrJA==} - dependencies: - '@octokit/openapi-types': 13.13.1 - dev: false - optional: true - /@octokit/types/8.0.0: resolution: {integrity: sha512-65/TPpOJP1i3K4lBJMnWqPUJ6zuOtzhtagDvydAWbEXpbFYA0oMKKyLb95NFZZP0lSh/4b6K+DQlzvYQJQQePg==} dependencies: @@ -1555,6 +1561,21 @@ packages: resolution: {integrity: sha512-KnRanxnpfpjUTqTCXslZSEdLfXExwgNxYPdiO2WGUj8+HDjFi8R3k5RVKPeSCzLjCcshCAtVO2QBbVuAV4kTnw==} dev: true + /@types/eslint/8.4.10: + resolution: {integrity: sha512-Sl/HOqN8NKPmhWo2VBEPm0nvHnu2LL3v9vKo8MEq0EtbJ4eVzGPl41VNPvn5E1i5poMk4/XD8UriLHpJvEP/Nw==} + dependencies: + '@types/estree': 1.0.0 + '@types/json-schema': 7.0.11 + dev: true + + /@types/estree/1.0.0: + resolution: {integrity: sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ==} + dev: true + + /@types/json-schema/7.0.11: + resolution: {integrity: sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==} + dev: true + /@types/minimatch/5.1.2: resolution: {integrity: sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==} dev: true @@ -1564,12 +1585,12 @@ packages: dev: false optional: true - /@types/node/18.11.15: - resolution: {integrity: sha512-VkhBbVo2+2oozlkdHXLrb3zjsRkpdnaU2bXmX8Wgle3PUi569eLRaHGlgETQHR7lLL1w7GiG3h9SnePhxNDecw==} + /@types/node/18.11.16: + resolution: {integrity: sha512-6T7P5bDkRhqRxrQtwj7vru+bWTpelgtcETAZEUSdq0YISKz8WKdoBukQLYQQ6DFHvU9JRsbFq0JH5C51X2ZdnA==} dev: true - /@types/node/18.8.0: - resolution: {integrity: sha512-u+h43R6U8xXDt2vzUaVP3VwjjLyOJk6uEciZS8OSyziUQGOwmk+l+4drxcsDboHXwyTaqS1INebghmWMRxq3LA==} + /@types/node/18.11.17: + resolution: {integrity: sha512-HJSUJmni4BeDHhfzn6nF0sVmd1SMezP7/4F0Lq+aXzmp2xm9O7WXrUtHW/CHlYVtZUbByEvWidHqRtcJXGF2Ng==} dev: true /@types/normalize-package-data/2.4.1: @@ -1592,7 +1613,7 @@ packages: /@types/ws/8.5.3: resolution: {integrity: sha512-6YOoWjruKj1uLf3INHH7D3qTXwFfEsg1kf3c0uDdSBJwfa/llkwIjrAGV7j7mVgGNbzTQ3HiHKKDXl6bJPD97w==} dependencies: - '@types/node': 18.8.0 + '@types/node': 18.11.16 dev: true /@vitejs/plugin-vue/4.0.0_vite@4.0.1+vue@3.2.45: @@ -1602,7 +1623,7 @@ packages: vite: ^4.0.0 vue: ^3.2.25 dependencies: - vite: 4.0.1_@types+node@18.11.15 + vite: 4.0.1_@types+node@18.11.17 vue: 3.2.45 dev: false optional: true @@ -1612,7 +1633,7 @@ packages: dependencies: emmet: 2.3.6 jsonc-parser: 2.3.1 - vscode-languageserver-textdocument: 1.0.7 + vscode-languageserver-textdocument: 1.0.8 vscode-languageserver-types: 3.17.2 vscode-nls: 5.2.0 vscode-uri: 2.1.2 @@ -1634,13 +1655,13 @@ packages: get-stream: 6.0.1 http-proxy-agent: 5.0.0 https-proxy-agent: 5.0.1 - koa: 2.13.4 + koa: 2.14.1 koa-morgan: 1.0.1 koa-mount: 4.0.0 koa-static: 5.0.0 minimist: 1.2.7 - playwright: 1.28.1 - vscode-uri: 3.0.6 + playwright: 1.29.0 + vscode-uri: 3.0.7 transitivePeerDependencies: - supports-color dev: false @@ -1649,7 +1670,7 @@ packages: /@vue/compiler-core/3.2.45: resolution: {integrity: sha512-rcMj7H+PYe5wBV3iYeUgbCglC+pbpN8hBLTJvRiK2eKQiWqu+fG9F+8sW99JdL4LQi7Re178UOxn09puSXvn4A==} dependencies: - '@babel/parser': 7.19.3 + '@babel/parser': 7.20.5 '@vue/shared': 3.2.45 estree-walker: 2.0.2 source-map: 0.6.1 @@ -1663,7 +1684,7 @@ packages: /@vue/compiler-sfc/3.2.45: resolution: {integrity: sha512-1jXDuWah1ggsnSAOGsec8cFjT/K6TMZ0sPL3o3d84Ft2AYZi2jWJgRMjw4iaK0rBfA89L5gw427H4n1RZQBu6Q==} dependencies: - '@babel/parser': 7.19.3 + '@babel/parser': 7.20.5 '@vue/compiler-core': 3.2.45 '@vue/compiler-dom': 3.2.45 '@vue/compiler-ssr': 3.2.45 @@ -1671,7 +1692,7 @@ packages: '@vue/shared': 3.2.45 estree-walker: 2.0.2 magic-string: 0.25.9 - postcss: 8.4.18 + postcss: 8.4.20 source-map: 0.6.1 /@vue/compiler-ssr/3.2.45: @@ -1688,7 +1709,7 @@ packages: /@vue/reactivity-transform/3.2.45: resolution: {integrity: sha512-BHVmzYAvM7vcU5WmuYqXpwaBHjsS8T63jlKGWVtHxAHIoMIlmaMyurUSEs1Zcg46M4AYT5MtB1U274/2aNzjJQ==} dependencies: - '@babel/parser': 7.19.3 + '@babel/parser': 7.20.5 '@vue/compiler-core': 3.2.45 '@vue/shared': 3.2.45 estree-walker: 2.0.2 @@ -1724,12 +1745,12 @@ packages: /@vue/shared/3.2.45: resolution: {integrity: sha512-Ewzq5Yhimg7pSztDV+RH1UDKBzmtqieXQlpTVm2AwraoRL/Rks96mvd8Vgi7Lj+h+TH8dv7mXD3FRZR3TUvbSg==} - /@vueuse/core/9.6.0_vue@3.2.45: - resolution: {integrity: sha512-qGUcjKQXHgN+jqXEgpeZGoxdCbIDCdVPz3QiF1uyecVGbMuM63o96I1GjYx5zskKgRI0FKSNsVWM7rwrRMTf6A==} + /@vueuse/core/9.7.0_vue@3.2.45: + resolution: {integrity: sha512-/AGY/t7jJPxCyRoVTygNKoroTiCvRaaZIW+yeSlBCnI7QRpQ9cvXNTdNaSl3GvSyFbn83+XwZwEZvI1OpQfeGw==} dependencies: '@types/web-bluetooth': 0.0.16 - '@vueuse/metadata': 9.6.0 - '@vueuse/shared': 9.6.0_vue@3.2.45 + '@vueuse/metadata': 9.7.0 + '@vueuse/shared': 9.7.0_vue@3.2.45 vue-demi: 0.13.11_vue@3.2.45 transitivePeerDependencies: - '@vue/composition-api' @@ -1737,13 +1758,13 @@ packages: dev: false optional: true - /@vueuse/metadata/9.6.0: - resolution: {integrity: sha512-sIC8R+kWkIdpi5X2z2Gk8TRYzmczDwHRhEFfCu2P+XW2JdPoXrziqsGpDDsN7ykBx4ilwieS7JUIweVGhvZ93w==} + /@vueuse/metadata/9.7.0: + resolution: {integrity: sha512-M7WsAgw28FNtTH0bzsGuHEtJOPJqPpyeHS6PHq+8UesLgNjZ9waMAntiUrgUQlxt09M4i2lH7y9sRi0jkfeXGA==} dev: false optional: true - /@vueuse/shared/9.6.0_vue@3.2.45: - resolution: {integrity: sha512-/eDchxYYhkHnFyrb00t90UfjCx94kRHxc7J1GtBCqCG4HyPMX+krV9XJgVtWIsAMaxKVU4fC8NSUviG1JkwhUQ==} + /@vueuse/shared/9.7.0_vue@3.2.45: + resolution: {integrity: sha512-pwmt1y3TJ2s5KqWmkv9ZKEV59GwuZQZk8XLiU+hGswz0jej318ozbea9E4A/A50ksyM26swSFr7sZ9llNPsZHg==} dependencies: vue-demi: 0.13.11_vue@3.2.45 transitivePeerDependencies: @@ -1950,7 +1971,7 @@ packages: resolution: {integrity: sha512-GAwkz0AihzY5bkwIY5QDR+LvsRQgB/B+1foMPvi0FZPMl5fjD7ICiznUiBdLYMH1QYe6vqu4gWYytZOccLouFw==} engines: {node: '>= 10.0.0'} dependencies: - '@babel/types': 7.19.3 + '@babel/types': 7.20.5 dev: false /balanced-match/1.0.2: @@ -1967,8 +1988,8 @@ packages: dev: false optional: true - /before-after-hook/2.2.2: - resolution: {integrity: sha512-3pZEU3NT5BFUo/AD5ERPWOgQOCZITni6iavr5AUw5AUwQjMlI0kzu5btnyD39AF0gUEsDPwJT+oY1ORBJijPjQ==} + /before-after-hook/2.2.3: + resolution: {integrity: sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ==} dev: false optional: true @@ -1976,7 +1997,7 @@ packages: resolution: {integrity: sha512-bmFEM39CyX336ZGGRsGPlc6jZHriIoHacOQcTt72MktIjpPhZoP4te2jOyUXF3BLILmJ8aNLncoPVeIIFlrDeA==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} dependencies: - cmd-shim: 6.0.0 + cmd-shim: 6.0.1 npm-normalize-package-bin: 3.0.0 read-cmd-shim: 4.0.0 write-file-atomic: 5.0.0 @@ -2088,8 +2109,8 @@ packages: fs-minipass: 2.1.0 glob: 8.0.3 infer-owner: 1.0.4 - lru-cache: 7.14.0 - minipass: 3.3.4 + lru-cache: 7.14.1 + minipass: 3.3.6 minipass-collect: 1.0.2 minipass-flush: 1.0.5 minipass-pipeline: 1.2.4 @@ -2098,27 +2119,27 @@ packages: promise-inflight: 1.0.1 rimraf: 3.0.2 ssri: 9.0.1 - tar: 6.1.12 + tar: 6.1.13 unique-filename: 2.0.1 dev: false optional: true - /cacache/17.0.2: - resolution: {integrity: sha512-rYUs2x4OjSgCQND7nTrh21AHIBFgd7s/ctAYvU3a8u+nK+R5YaX/SFPDYz4Azz7SGL6+6L9ZZWI4Kawpb7grzQ==} + /cacache/17.0.4: + resolution: {integrity: sha512-Z/nL3gU+zTUjz5pCA5vVjYM8pmaw2kxM7JEiE0fv3w77Wj+sFbi70CrBruUWH0uNcEdvLDixFpgA2JM4F4DBjA==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} dependencies: '@npmcli/fs': 3.1.0 - fs-minipass: 2.1.0 + fs-minipass: 3.0.0 glob: 8.0.3 - lru-cache: 7.14.0 - minipass: 3.3.4 + lru-cache: 7.14.1 + minipass: 4.0.0 minipass-collect: 1.0.2 minipass-flush: 1.0.5 minipass-pipeline: 1.2.4 p-map: 4.0.0 promise-inflight: 1.0.1 - ssri: 10.0.0 - tar: 6.1.12 + ssri: 10.0.1 + tar: 6.1.13 unique-filename: 3.0.0 dev: false optional: true @@ -2168,7 +2189,7 @@ packages: check-error: 1.0.2 deep-eql: 4.1.3 get-func-name: 2.0.0 - loupe: 2.3.4 + loupe: 2.3.6 pathval: 1.1.1 type-detect: 4.0.8 dev: true @@ -2223,7 +2244,7 @@ packages: domhandler: 5.0.3 domutils: 3.0.1 htmlparser2: 8.0.1 - parse5: 7.1.1 + parse5: 7.1.2 parse5-htmlparser2-tree-adapter: 7.0.0 dev: true @@ -2237,8 +2258,9 @@ packages: dev: false optional: true - /ci-info/3.4.0: - resolution: {integrity: sha512-t5QdPT5jq3o262DOQ8zA6E1tlH2upmUc4Hlvrbx1pGYJuiiHl7O7rvVNI+l8HTVhd/q3Qc9vqimkNk5yiXsAug==} + /ci-info/3.7.0: + resolution: {integrity: sha512-2CpRNYmImPx+RXKLq6jko/L07phmS9I02TyqkcNU20GCF/GgaWvc58hPtjxDX8lPpkdwc9sNh72V9k00S7ezog==} + engines: {node: '>=8'} dev: false optional: true @@ -2301,8 +2323,8 @@ packages: dev: false optional: true - /cmd-shim/6.0.0: - resolution: {integrity: sha512-wx+RWLgiSU6SCDzMtxG0Dv1lsuOcEfqq5SbqAViezaJIkR5sbveKzFU31YnWhqrJx3o3Iu3H0Rq8R00OS3oI+Q==} + /cmd-shim/6.0.1: + resolution: {integrity: sha512-S9iI9y0nKR4hwEQsVWpyxld/6kRfGepGfzff83FcaiEBpmvlbA2nnGe7Cylgrx2f/p1P5S5wpRm9oL8z1PbS3Q==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} dev: false optional: true @@ -2398,8 +2420,8 @@ packages: /constantinople/4.0.1: resolution: {integrity: sha512-vCrqcSIq4//Gx74TXXCGnHpulY1dskqLTFGDmhrGxzeXL8lF8kvXv6mpNWlJj1uD4DW23D4ljAqbY4RRaaUZIw==} dependencies: - '@babel/parser': 7.19.3 - '@babel/types': 7.19.3 + '@babel/parser': 7.20.5 + '@babel/types': 7.20.5 dev: false /content-disposition/0.5.4: @@ -2608,8 +2630,8 @@ packages: dependencies: ms: 2.1.2 - /decamelize-keys/1.1.0: - resolution: {integrity: sha512-ocLWuYzRPoS9bfiSdDd3cxvrzovVMZnRDVEzAs+hWIVXGDbHxWMECij2OBuyB/An0FFW/nLuq6Kv1i/YC5Qfzg==} + /decamelize-keys/1.1.1: + resolution: {integrity: sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==} engines: {node: '>=0.10.0'} dependencies: decamelize: 1.2.0 @@ -2714,8 +2736,8 @@ packages: engines: {node: '>=4.0.0'} dev: true - /defaults/1.0.3: - resolution: {integrity: sha512-s82itHOnYrN0Ib8r+z7laQz3sdE+4FP3d9Q7VLO7U+KRT+CR0GsWuyHxzdAY82I7cXv0G/twrqomTJLOssO5HA==} + /defaults/1.0.4: + resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} dependencies: clone: 1.0.4 dev: false @@ -2926,13 +2948,13 @@ packages: dev: false optional: true - /esbuild-plugin-copy/2.0.1_esbuild@0.16.7: + /esbuild-plugin-copy/2.0.1_esbuild@0.16.8: resolution: {integrity: sha512-/mvriqGv2QAyrkui3REZaLEjwqESBKWZQQJtOZEausI8C4QMChREXGASNzmWpTlHo/v+ipLW73QCiNemBKggMw==} peerDependencies: esbuild: '>= 0.14.0' dependencies: chalk: 4.1.2 - esbuild: 0.16.7 + esbuild: 0.16.8 fs-extra: 10.1.0 globby: 11.1.0 dev: true @@ -2946,34 +2968,34 @@ packages: yargs: 17.6.2 dev: true - /esbuild/0.16.7: - resolution: {integrity: sha512-P6OBFYFSQOGzfApqCeYKqfKRRbCIRsdppTXFo4aAvtiW3o8TTyiIplBvHJI171saPAiy3WlawJHCveJVIOIx1A==} + /esbuild/0.16.8: + resolution: {integrity: sha512-RKxRaLYAI5b/IVJ5k8jK3bO2G7cch2ZIZFbfKHbBzpwsWt9+VChcBEndNISBBZ5c3WwekFfkfl11/2QfIGHgDw==} engines: {node: '>=12'} hasBin: true requiresBuild: true optionalDependencies: - '@esbuild/android-arm': 0.16.7 - '@esbuild/android-arm64': 0.16.7 - '@esbuild/android-x64': 0.16.7 - '@esbuild/darwin-arm64': 0.16.7 - '@esbuild/darwin-x64': 0.16.7 - '@esbuild/freebsd-arm64': 0.16.7 - '@esbuild/freebsd-x64': 0.16.7 - '@esbuild/linux-arm': 0.16.7 - '@esbuild/linux-arm64': 0.16.7 - '@esbuild/linux-ia32': 0.16.7 - '@esbuild/linux-loong64': 0.16.7 - '@esbuild/linux-mips64el': 0.16.7 - '@esbuild/linux-ppc64': 0.16.7 - '@esbuild/linux-riscv64': 0.16.7 - '@esbuild/linux-s390x': 0.16.7 - '@esbuild/linux-x64': 0.16.7 - '@esbuild/netbsd-x64': 0.16.7 - '@esbuild/openbsd-x64': 0.16.7 - '@esbuild/sunos-x64': 0.16.7 - '@esbuild/win32-arm64': 0.16.7 - '@esbuild/win32-ia32': 0.16.7 - '@esbuild/win32-x64': 0.16.7 + '@esbuild/android-arm': 0.16.8 + '@esbuild/android-arm64': 0.16.8 + '@esbuild/android-x64': 0.16.8 + '@esbuild/darwin-arm64': 0.16.8 + '@esbuild/darwin-x64': 0.16.8 + '@esbuild/freebsd-arm64': 0.16.8 + '@esbuild/freebsd-x64': 0.16.8 + '@esbuild/linux-arm': 0.16.8 + '@esbuild/linux-arm64': 0.16.8 + '@esbuild/linux-ia32': 0.16.8 + '@esbuild/linux-loong64': 0.16.8 + '@esbuild/linux-mips64el': 0.16.8 + '@esbuild/linux-ppc64': 0.16.8 + '@esbuild/linux-riscv64': 0.16.8 + '@esbuild/linux-s390x': 0.16.8 + '@esbuild/linux-x64': 0.16.8 + '@esbuild/netbsd-x64': 0.16.8 + '@esbuild/openbsd-x64': 0.16.8 + '@esbuild/sunos-x64': 0.16.8 + '@esbuild/win32-arm64': 0.16.8 + '@esbuild/win32-ia32': 0.16.8 + '@esbuild/win32-x64': 0.16.8 /escalade/3.1.1: resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} @@ -3049,8 +3071,8 @@ packages: merge2: 1.4.1 micromatch: 4.0.5 - /fastq/1.13.0: - resolution: {integrity: sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==} + /fastq/1.14.0: + resolution: {integrity: sha512-eR2D+V9/ExcbF9ls441yIuN6TI2ED1Y2ZcA5BmMtJsOkWOFRJQ0Jt0g1UwqXJJVAb+V+umH5Dfr8oh4EVP7VVg==} dependencies: reusify: 1.0.4 @@ -3129,7 +3151,15 @@ packages: resolution: {integrity: sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==} engines: {node: '>= 8'} dependencies: - minipass: 3.3.4 + minipass: 3.3.6 + dev: false + optional: true + + /fs-minipass/3.0.0: + resolution: {integrity: sha512-EUojgQaSPy6sxcqcZgQv6TVF6jiKvurji3AxhAivs/Ep4O1UpS8TusaxpybfFHZ2skRhLqzk6WR8nqNYIMMDeA==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dependencies: + minipass: 4.0.0 dev: false optional: true @@ -3307,7 +3337,7 @@ packages: fs.realpath: 1.0.0 inflight: 1.0.6 inherits: 2.0.4 - minimatch: 5.1.0 + minimatch: 5.1.1 once: 1.4.0 dev: false optional: true @@ -3319,7 +3349,7 @@ packages: array-union: 2.1.0 dir-glob: 3.0.1 fast-glob: 3.2.12 - ignore: 5.2.0 + ignore: 5.2.1 merge2: 1.4.1 slash: 3.0.0 @@ -3336,7 +3366,7 @@ packages: source-map: 0.6.1 wordwrap: 1.0.0 optionalDependencies: - uglify-js: 3.17.2 + uglify-js: 3.17.4 dev: false optional: true @@ -3396,7 +3426,7 @@ packages: resolution: {integrity: sha512-r0EI+HBMcXadMrugk0GCQ+6BQV39PiWAZVfq7oIckeGiN7sjRGyQxPdft3nQekFTCQbYxLBH+/axZMeH8UX6+w==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} dependencies: - lru-cache: 7.14.0 + lru-cache: 7.14.1 dev: false optional: true @@ -3526,12 +3556,12 @@ packages: resolution: {integrity: sha512-bTf9UWe/UP1yxG3QUrj/KOvEhTAUWPcv+WvbFZ28LcqznXabp7Xu6o9y1JEC18+oqODuS7VhTpekV5XvFwsxJg==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} dependencies: - minimatch: 5.1.0 + minimatch: 5.1.1 dev: false optional: true - /ignore/5.2.0: - resolution: {integrity: sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==} + /ignore/5.2.1: + resolution: {integrity: sha512-d2qQLzTJ9WxQftPAuEQpSPmKqzxePjzVbpAVv62AQ64NTL+wR4JkrVqR/LqFsFEUsHDAiId52mJteHDFuDkElA==} engines: {node: '>= 4'} /import-fresh/3.3.0: @@ -3587,8 +3617,8 @@ packages: /ini/1.3.8: resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} - /inquirer/8.2.4: - resolution: {integrity: sha512-nn4F01dxU8VeKfq192IjLsxu0/OmMZ4Lg3xKAns148rCaXP6ntAoEkVYZThWjwON8AlzdZZi6oqnhNbxUG9hVg==} + /inquirer/8.2.5: + resolution: {integrity: sha512-QAgPDQMEgrDssk1XiwwHoOGYF9BAbUcc1+j+FhEvaOt8/cKRqyLn0U5qA6F74fGhTMGxf92pOvPBeh29jQJDTQ==} engines: {node: '>=12.0.0'} dependencies: ansi-escapes: 4.3.2 @@ -3601,7 +3631,7 @@ packages: mute-stream: 0.0.8 ora: 5.4.1 run-async: 2.4.1 - rxjs: 7.5.7 + rxjs: 7.8.0 string-width: 4.2.3 strip-ansi: 6.0.1 through: 2.3.8 @@ -3623,12 +3653,12 @@ packages: resolution: {integrity: sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==} hasBin: true dependencies: - ci-info: 3.4.0 + ci-info: 3.7.0 dev: false optional: true - /is-core-module/2.10.0: - resolution: {integrity: sha512-Erxj2n/LDAZ7H8WNJXd9tw38GYM3dv8rk8Zcs+jJuxYTW7sozH+SS8NtrSjVL1/vpLvWi1hxy96IzjJ3EHTJJg==} + /is-core-module/2.11.0: + resolution: {integrity: sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==} dependencies: has: 1.0.3 @@ -3950,8 +3980,8 @@ packages: dev: false optional: true - /koa/2.13.4: - resolution: {integrity: sha512-43zkIKubNbnrULWlHdN5h1g3SEKXOEzoAlRsHOTFpnlDu8JlAOZSMJBLULusuXRequboiwJcj5vtYXKB3k7+2g==} + /koa/2.14.1: + resolution: {integrity: sha512-USJFyZgi2l0wDgqkfD27gL4YGno7TfUkcmOe6UOLFOVuN+J7FwnNu4Dydl4CUQzraM1lBAiGed0M9OVJoT0Kqw==} engines: {node: ^4.8.4 || ^6.10.1 || ^7.10.1 || >= 8.1.4} dependencies: accepts: 1.3.8 @@ -3987,26 +4017,26 @@ packages: engines: {node: '>=6'} dev: true - /libnpmaccess/7.0.0: - resolution: {integrity: sha512-WwDa6CExp74s0FKI1eP2pbJ4hMiq5x6kl9XqE0F7RDpmk8sgqvNcCAr/JmMdfpUTqUq6KNddT3bnYBCT/pxniQ==} + /libnpmaccess/7.0.1: + resolution: {integrity: sha512-fvKKAXW1v3YfekgYEJi0eCur9ZD9gJ7akWxfwzad/zxzmD2ylk0K9BRhhcTRIWdFgdCr0oQe3ea0R0gUMeaPhQ==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} dependencies: - npm-package-arg: 10.0.0 - npm-registry-fetch: 14.0.2 + npm-package-arg: 10.1.0 + npm-registry-fetch: 14.0.3 transitivePeerDependencies: - supports-color dev: false optional: true - /libnpmpublish/7.0.4: - resolution: {integrity: sha512-NTupBqF6hgufdy7BNVHVtmmh51epOU3+l2Ll4BA+RjGlSnyOpzs1qHPZVlGG8Ll/MWy0PsMdsCBHp3TZR5GH4Q==} + /libnpmpublish/7.0.6: + resolution: {integrity: sha512-3KbZaY6z+no5InP7d5GDyHPSSBBfew/ofwwD/rkX78zGNXz+S6VcLLLueX1XLdTY7r8TiAJy3cRQ0U9DxfK/YQ==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} dependencies: normalize-package-data: 5.0.0 - npm-package-arg: 10.0.0 - npm-registry-fetch: 14.0.2 + npm-package-arg: 10.1.0 + npm-registry-fetch: 14.0.3 semver: 7.3.8 - ssri: 10.0.0 + ssri: 10.0.1 transitivePeerDependencies: - supports-color dev: false @@ -4086,8 +4116,8 @@ packages: dev: false optional: true - /loupe/2.3.4: - resolution: {integrity: sha512-OvKfgCC2Ndby6aSTREl5aCCPTNIzlDfQZvZxNUrBrihDhL3xcrYegTblhmEiCrg2kKQz4XsFIaemE5BF4ybSaQ==} + /loupe/2.3.6: + resolution: {integrity: sha512-RaPMZKiMy8/JruncMU5Bt6na1eftNoo++R4Y+N2FrxkDVTrGvcyzFTsaGif4QTeKESheMGegbhw6iUAq+5A8zA==} dependencies: get-func-name: 2.0.0 dev: true @@ -4095,7 +4125,7 @@ packages: /lower-case/2.0.2: resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==} dependencies: - tslib: 2.4.0 + tslib: 2.4.1 dev: false /lru-cache/6.0.0: @@ -4104,8 +4134,8 @@ packages: dependencies: yallist: 4.0.0 - /lru-cache/7.14.0: - resolution: {integrity: sha512-EIRtP1GrSJny0dqb50QXRUNBxHJhcpxHC++M5tD7RYbvLLn5KVWKsbyswSSqDuU15UFi3bgTQIY8nhDMeF6aDQ==} + /lru-cache/7.14.1: + resolution: {integrity: sha512-ysxwsnTKdAx96aTRdhDOCQfDgbHnt8SK0KY8SEjO0wHinhWOFTESbjVCMPbU1uGXg/ch4lifqx0wfjOawU2+WA==} engines: {node: '>=12'} dev: false optional: true @@ -4150,8 +4180,8 @@ packages: http-proxy-agent: 5.0.0 https-proxy-agent: 5.0.1 is-lambda: 1.0.1 - lru-cache: 7.14.0 - minipass: 3.3.4 + lru-cache: 7.14.1 + minipass: 3.3.6 minipass-collect: 1.0.2 minipass-fetch: 2.1.2 minipass-flush: 1.0.5 @@ -4165,26 +4195,26 @@ packages: dev: false optional: true - /make-fetch-happen/11.0.0: - resolution: {integrity: sha512-oVk/+BQuW+fUB/RjF8jUtgsVI9wMzcHyahdea6gcshVLWQygW4OlxqEibCEh9XamMVbrXVOAH9dCZrzdLQ1lwg==} + /make-fetch-happen/11.0.2: + resolution: {integrity: sha512-5n/Pq41w/uZghpdlXAY5kIM85RgJThtTH/NYBRAZ9VUOBWV90USaQjwGrw76fZP3Lj5hl/VZjpVvOaRBMoL/2w==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} dependencies: agentkeepalive: 4.2.1 - cacache: 17.0.2 + cacache: 17.0.4 http-cache-semantics: 4.1.0 http-proxy-agent: 5.0.0 https-proxy-agent: 5.0.1 is-lambda: 1.0.1 - lru-cache: 7.14.0 - minipass: 3.3.4 + lru-cache: 7.14.1 + minipass: 4.0.0 minipass-collect: 1.0.2 - minipass-fetch: 2.1.2 + minipass-fetch: 3.0.1 minipass-flush: 1.0.5 minipass-pipeline: 1.2.4 negotiator: 0.6.3 promise-retry: 2.0.1 socks-proxy-agent: 7.0.0 - ssri: 9.0.1 + ssri: 10.0.1 transitivePeerDependencies: - supports-color dev: false @@ -4229,7 +4259,7 @@ packages: dependencies: '@types/minimist': 1.2.2 camelcase-keys: 6.2.2 - decamelize-keys: 1.1.0 + decamelize-keys: 1.1.1 hard-rejection: 2.1.0 minimist-options: 4.1.0 normalize-package-data: 3.0.3 @@ -4305,8 +4335,8 @@ packages: dependencies: brace-expansion: 1.1.11 - /minimatch/5.1.0: - resolution: {integrity: sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==} + /minimatch/5.1.1: + resolution: {integrity: sha512-362NP+zlprccbEt/SkxKfRMHnNY85V74mVnpUpNyr3F35covl09Kec7/sEFLt3RA4oXmewtoaanoIf67SE5Y5g==} engines: {node: '>=10'} dependencies: brace-expansion: 2.0.1 @@ -4329,7 +4359,7 @@ packages: resolution: {integrity: sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==} engines: {node: '>= 8'} dependencies: - minipass: 3.3.4 + minipass: 3.3.6 dev: false optional: true @@ -4337,7 +4367,7 @@ packages: resolution: {integrity: sha512-LT49Zi2/WMROHYoqGgdlQIZh8mLPZmOrN2NdJjMXxYe4nkN6FUyuPuOAOedNJDrx0IRGg9+4guZewtp8hE6TxA==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} dependencies: - minipass: 3.3.4 + minipass: 3.3.6 minipass-sized: 1.0.3 minizlib: 2.1.2 optionalDependencies: @@ -4345,11 +4375,11 @@ packages: dev: false optional: true - /minipass-fetch/3.0.0: - resolution: {integrity: sha512-NSx3k5gR4Q5Ts2poCM/19d45VwhVLBtJZ6ypYcthj2BwmDx/e7lW8Aadnyt3edd2W0ecb+b0o7FYLRYE2AGcQg==} + /minipass-fetch/3.0.1: + resolution: {integrity: sha512-t9/wowtf7DYkwz8cfMSt0rMwiyNIBXf5CKZ3S5ZMqRqMYT0oLTp0x1WorMI9WTwvaPg21r1JbFxJMum8JrLGfw==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} dependencies: - minipass: 3.3.4 + minipass: 4.0.0 minipass-sized: 1.0.3 minizlib: 2.1.2 optionalDependencies: @@ -4361,7 +4391,7 @@ packages: resolution: {integrity: sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==} engines: {node: '>= 8'} dependencies: - minipass: 3.3.4 + minipass: 3.3.6 dev: false optional: true @@ -4369,7 +4399,7 @@ packages: resolution: {integrity: sha512-ODqY18UZt/I8k+b7rl2AENgbWE8IDYam+undIJONvigAz8KR5GWblsFTEfQs0WODsjbSXWlm+JHEv8Gr6Tfdbg==} dependencies: jsonparse: 1.3.1 - minipass: 3.3.4 + minipass: 3.3.6 dev: false optional: true @@ -4377,7 +4407,7 @@ packages: resolution: {integrity: sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==} engines: {node: '>=8'} dependencies: - minipass: 3.3.4 + minipass: 3.3.6 dev: false optional: true @@ -4385,12 +4415,20 @@ packages: resolution: {integrity: sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==} engines: {node: '>=8'} dependencies: - minipass: 3.3.4 + minipass: 3.3.6 dev: false optional: true - /minipass/3.3.4: - resolution: {integrity: sha512-I9WPbWHCGu8W+6k1ZiGpPu0GkoKBeorkfKNuAFBNS1HNFJvke82sxvI5bzcCNpWPorkOO5QQ+zomzzwRxejXiw==} + /minipass/3.3.6: + resolution: {integrity: sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==} + engines: {node: '>=8'} + dependencies: + yallist: 4.0.0 + dev: false + optional: true + + /minipass/4.0.0: + resolution: {integrity: sha512-g2Uuh2jEKoht+zvO6vJqXmYpflPqzRBT+Th2h01DKh5z7wbY/AZ2gCQ78cP70YoHPyFdY30YBV5WxgLOEwOykw==} engines: {node: '>=8'} dependencies: yallist: 4.0.0 @@ -4401,7 +4439,7 @@ packages: resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==} engines: {node: '>= 8'} dependencies: - minipass: 3.3.4 + minipass: 3.3.6 yallist: 4.0.0 dev: false optional: true @@ -4487,11 +4525,11 @@ packages: resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==} dependencies: lower-case: 2.0.2 - tslib: 2.4.0 + tslib: 2.4.1 dev: false - /node-abi/3.25.0: - resolution: {integrity: sha512-p+0xx5ruIQ+8X57CRIMxbTZRT7tU0Tjn2C/aAK68AEMrbGsCo6IjnDdPNhEyyjWCT4bRtzomXchYd3sSgk3BJQ==} + /node-abi/3.30.0: + resolution: {integrity: sha512-qWO5l3SCqbwQavymOmtTVuCWZE23++S+rxyoHjXqUmPyzRcaoI4lA2gO55/drddGnedAyjA7sk76SfQ5lfUMnw==} engines: {node: '>=10'} dependencies: semver: 7.3.8 @@ -4514,8 +4552,8 @@ packages: dev: false optional: true - /node-gyp/9.1.0: - resolution: {integrity: sha512-HkmN0ZpQJU7FLbJauJTHkHlSVAXlNGDAzH/VYFZGDOnFyn/Na3GlNJfkudmufOdS6/jNFhy88ObzL7ERz9es1g==} + /node-gyp/9.3.0: + resolution: {integrity: sha512-A6rJWfXFz7TQNjpldJ915WFb1LnhO4lIve3ANPbWreuEoLoKlFT3sxIepPBkLhM27crW8YmN+pjlgbasH6cH/Q==} engines: {node: ^12.22 || ^14.13 || >=16} hasBin: true dependencies: @@ -4523,20 +4561,20 @@ packages: glob: 7.2.3 graceful-fs: 4.2.10 make-fetch-happen: 10.2.1 - nopt: 5.0.0 + nopt: 6.0.0 npmlog: 6.0.2 rimraf: 3.0.2 semver: 7.3.8 - tar: 6.1.12 + tar: 6.1.13 which: 2.0.2 transitivePeerDependencies: - supports-color dev: false optional: true - /nopt/5.0.0: - resolution: {integrity: sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==} - engines: {node: '>=6'} + /nopt/6.0.0: + resolution: {integrity: sha512-ZwLpbTgdhuZUnZzjd7nb1ZV+4DoiC6/sfiVKok72ym/4Tlf+DFdlHYmT2JPmcNNWV6Pi3SDf1kT+A4r9RTuT9g==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} hasBin: true dependencies: abbrev: 1.1.1 @@ -4567,7 +4605,7 @@ packages: engines: {node: '>=10'} dependencies: hosted-git-info: 4.1.0 - is-core-module: 2.10.0 + is-core-module: 2.11.0 semver: 7.3.8 validate-npm-package-license: 3.0.4 dev: false @@ -4578,7 +4616,7 @@ packages: engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} dependencies: hosted-git-info: 6.1.1 - is-core-module: 2.10.0 + is-core-module: 2.11.0 semver: 7.3.8 validate-npm-package-license: 3.0.4 dev: false @@ -4606,8 +4644,8 @@ packages: dev: false optional: true - /npm-package-arg/10.0.0: - resolution: {integrity: sha512-7dkh8mRp7s0KwVHKIVJnFCJQ2B34gOGnzgBjDGyprycmARq/82SX/lhilQ95ZuacP/G/1gsS345iAkKmxWBQ2Q==} + /npm-package-arg/10.1.0: + resolution: {integrity: sha512-uFyyCEmgBfZTtrKk/5xDfHp6+MdrqGotX/VoOyEEl3mBwiEE5FlBaePanazJSVMPT7vKepcjYBY2ztg9A3yPIA==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} dependencies: hosted-git-info: 6.1.1 @@ -4617,8 +4655,8 @@ packages: dev: false optional: true - /npm-packlist/7.0.2: - resolution: {integrity: sha512-d2+7RMySjVXssww23rV5NuIq1NzGvM04OlI5kwnvtYKfFTAPVs6Zxmxns2HRtJEA1oNj7D/BbFXeVAOLmW3N3Q==} + /npm-packlist/7.0.4: + resolution: {integrity: sha512-d6RGEuRrNS5/N84iglPivjaJPxhDbZmlbTwTDX2IbcRHG5bZCdtysYMhwiPvcF4GisXHGn7xsxv+GQ7T/02M5Q==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} dependencies: ignore-walk: 6.0.0 @@ -4631,21 +4669,21 @@ packages: dependencies: npm-install-checks: 6.0.0 npm-normalize-package-bin: 3.0.0 - npm-package-arg: 10.0.0 + npm-package-arg: 10.1.0 semver: 7.3.8 dev: false optional: true - /npm-registry-fetch/14.0.2: - resolution: {integrity: sha512-TMenrMagFA9KF81E2bkS5XRyzERK4KXu70vgXt5+i8FcrFeLNgNsc6e5hekTqjDwPDkL3HGn/holWcXDMfnFgw==} + /npm-registry-fetch/14.0.3: + resolution: {integrity: sha512-YaeRbVNpnWvsGOjX2wk5s85XJ7l1qQBGAp724h8e2CZFFhMSuw9enom7K1mWVUtvXO1uUSFIAPofQK0pPN0ZcA==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} dependencies: - make-fetch-happen: 11.0.0 - minipass: 3.3.4 - minipass-fetch: 3.0.0 + make-fetch-happen: 11.0.2 + minipass: 4.0.0 + minipass-fetch: 3.0.1 minipass-json-stream: 1.0.1 minizlib: 2.1.2 - npm-package-arg: 10.0.0 + npm-package-arg: 10.1.0 proc-log: 3.0.0 transitivePeerDependencies: - supports-color @@ -4855,28 +4893,28 @@ packages: dev: false optional: true - /pacote/15.0.6: - resolution: {integrity: sha512-dQwcz/sME7QIL+cdrw/jftQfMMXxSo17i2kJ/gnhBhUvvBAsxoBu1lw9B5IzCH/Ce8CvEkG/QYZ6txzKfn0bTw==} + /pacote/15.0.8: + resolution: {integrity: sha512-UlcumB/XS6xyyIMwg/WwMAyUmga+RivB5KgkRwA1hZNtrx+0Bt41KxHCvg1kr0pZ/ZeD8qjhW4fph6VaYRCbLw==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} hasBin: true dependencies: '@npmcli/git': 4.0.3 '@npmcli/installed-package-contents': 2.0.1 - '@npmcli/promise-spawn': 6.0.1 + '@npmcli/promise-spawn': 6.0.2 '@npmcli/run-script': 6.0.0 - cacache: 17.0.2 - fs-minipass: 2.1.0 - minipass: 3.3.4 - npm-package-arg: 10.0.0 - npm-packlist: 7.0.2 + cacache: 17.0.4 + fs-minipass: 3.0.0 + minipass: 4.0.0 + npm-package-arg: 10.1.0 + npm-packlist: 7.0.4 npm-pick-manifest: 8.0.1 - npm-registry-fetch: 14.0.2 + npm-registry-fetch: 14.0.3 proc-log: 3.0.0 promise-retry: 2.0.1 read-package-json: 6.0.0 - read-package-json-fast: 3.0.1 - ssri: 10.0.0 - tar: 6.1.12 + read-package-json-fast: 3.0.2 + ssri: 10.0.1 + tar: 6.1.13 transitivePeerDependencies: - supports-color dev: false @@ -4944,11 +4982,11 @@ packages: resolution: {integrity: sha512-B77tOZrqqfUfnVcOrUvfdLbz4pu4RopLD/4vmu3HUPswwTA8OH0EMW9BlWR2B0RCoiZRAHEUu7IxeP1Pd1UU+g==} dependencies: domhandler: 5.0.3 - parse5: 7.1.1 + parse5: 7.1.2 dev: true - /parse5/7.1.1: - resolution: {integrity: sha512-kwpuwzB+px5WUg9pyK0IcK/shltJN5/OVhQagxhCQNtT9Y9QRZqNY2e1cmbu/paRh5LMnz/oVTVLBpjFmMZhSg==} + /parse5/7.1.2: + resolution: {integrity: sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==} dependencies: entities: 4.4.0 dev: true @@ -4963,7 +5001,7 @@ packages: resolution: {integrity: sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==} dependencies: no-case: 3.0.4 - tslib: 2.4.0 + tslib: 2.4.1 dev: false /path-browserify/1.0.1: @@ -5080,25 +5118,25 @@ packages: dev: false optional: true - /playwright-core/1.28.1: - resolution: {integrity: sha512-3PixLnGPno0E8rSBJjtwqTwJe3Yw72QwBBBxNoukIj3lEeBNXwbNiKrNuB1oyQgTBw5QHUhNO3SteEtHaMK6ag==} + /playwright-core/1.29.0: + resolution: {integrity: sha512-pboOm1m0RD6z1GtwAbEH60PYRfF87vKdzOSRw2RyO0Y0a7utrMyWN2Au1ojGvQr4umuBMODkKTv607YIRypDSQ==} engines: {node: '>=14'} hasBin: true dev: false optional: true - /playwright/1.28.1: - resolution: {integrity: sha512-92Sz6XBlfHlb9tK5UCDzIFAuIkHHpemA9zwUaqvo+w7sFMSmVMGmvKcbptof/eJObq63PGnMhM75x7qxhTR78Q==} + /playwright/1.29.0: + resolution: {integrity: sha512-vtXgX3FPNcAJq1QoIVCvmiHHKOLVTZkSYEo60n+EnX5MrNznAJzGquxT8c2sv+BG3CDyLeKm351e491HnF7yjw==} engines: {node: '>=14'} hasBin: true requiresBuild: true dependencies: - playwright-core: 1.28.1 + playwright-core: 1.29.0 dev: false optional: true - /postcss-selector-parser/6.0.10: - resolution: {integrity: sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==} + /postcss-selector-parser/6.0.11: + resolution: {integrity: sha512-zbARubNdogI9j7WY4nQJBiNqQf3sLS3wCP4WfOidu+p28LofJqDH1tcXypGrcmMHhDk2t9wGhCsYe/+szLTy1g==} engines: {node: '>=4'} dependencies: cssesc: 3.0.0 @@ -5106,14 +5144,6 @@ packages: dev: false optional: true - /postcss/8.4.18: - resolution: {integrity: sha512-Wi8mWhncLJm11GATDaQKobXSNEYGUHeQLiQqDFG1qQ5UTDPTEvKw0Xt5NsTpktGTwLps3ByrWsBrG0rB8YQ9oA==} - engines: {node: ^10 || ^12 || >=14} - dependencies: - nanoid: 3.3.4 - picocolors: 1.0.0 - source-map-js: 1.0.2 - /postcss/8.4.20: resolution: {integrity: sha512-6Q04AXR1212bXr5fh03u8aAwbLxAQNGQ/Q1LNa0VfOI06ZAlhPHtQvE4OIdpj4kLThXilalPnmDSOD65DcHt+g==} engines: {node: ^10 || ^12 || >=14} @@ -5122,8 +5152,8 @@ packages: picocolors: 1.0.0 source-map-js: 1.0.2 - /preact/10.11.0: - resolution: {integrity: sha512-Fk6+vB2kb6mSJfDgODq0YDhMfl0HNtK5+Uc9QqECO4nlyPAQwCI+BKyWO//idA7ikV7o+0Fm6LQmNuQi1wXI1w==} + /preact/10.11.3: + resolution: {integrity: sha512-eY93IVpod/zG3uMF22Unl8h9KkrcKIRs2EGar8hwLZZDU1lkjph303V9HZBwufh2s736U6VXuhD109LYqPoffg==} dev: false optional: true @@ -5138,7 +5168,7 @@ packages: minimist: 1.2.7 mkdirp-classic: 0.5.3 napi-build-utils: 1.0.2 - node-abi: 3.25.0 + node-abi: 3.30.0 pump: 3.0.0 rc: 1.2.8 simple-get: 4.0.1 @@ -5344,8 +5374,8 @@ packages: dev: false optional: true - /read-package-json-fast/3.0.1: - resolution: {integrity: sha512-8+HW7Yo+cjfF+md8DqsZHgats2mxf7gGYow/+2JjxrftoHFZz9v4dzd0EubzYbkNaLxrTVcnllHwklXN2+7aTQ==} + /read-package-json-fast/3.0.2: + resolution: {integrity: sha512-0J+Msgym3vrLOUB3hzQCuZHII0xkNGCtz/HJH9xZshwv9DbDwkw1KaE3gx/e2J5rpEY5rtOy6cyhKOPrkP7FZw==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} dependencies: json-parse-even-better-errors: 3.0.0 @@ -5493,7 +5523,7 @@ packages: resolution: {integrity: sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==} hasBin: true dependencies: - is-core-module: 2.10.0 + is-core-module: 2.11.0 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 @@ -5522,8 +5552,8 @@ packages: dependencies: glob: 7.2.3 - /rollup/3.7.1: - resolution: {integrity: sha512-ek6+FORvI79VQTNlIYtXpIrGEPRlYSNZO+5EcmaozKkRL5L6KLvGDUbM5E+bd6jnHW9fgcK0DKTdWjIsEmNb4g==} + /rollup/3.7.5: + resolution: {integrity: sha512-z0ZbqHBtS/et2EEUKMrAl2CoSdwN7ZPzL17UMiKN9RjjqHShTlv7F9J6ZJZJNREYjBh3TvBrdfjkFDIXFNeuiQ==} engines: {node: '>=14.18.0', npm: '>=8.0.0'} hasBin: true optionalDependencies: @@ -5540,10 +5570,10 @@ packages: dependencies: queue-microtask: 1.2.3 - /rxjs/7.5.7: - resolution: {integrity: sha512-z9MzKh/UcOqB3i20H6rtrlaE/CgjLOvheWK/9ILrbhROGTweAi1BaFsTT9FbwZi5Trr1qNRs+MXkhmR06awzQA==} + /rxjs/7.8.0: + resolution: {integrity: sha512-F2+gxDshqmIub1KdvZkaEfGDwLNpPvk9Fs6LD/MyQxNgMds/WH9OdDDXOmxUZpME+iSK3rQCctkL0DYyytUqMg==} dependencies: - tslib: 2.4.0 + tslib: 2.4.1 dev: false optional: true @@ -5630,7 +5660,7 @@ packages: resolution: {integrity: sha512-EugY9VASFuDqOexOgXR18ZV+TbFrQHeCpEYaXamO+SZlsnT/2LxuLBX25GGtIrwaEVFXUAbUQ601SWE2rMwWHA==} dependencies: jsonc-parser: 3.2.0 - vscode-oniguruma: 1.6.2 + vscode-oniguruma: 1.7.0 vscode-textmate: 6.0.0 dev: false optional: true @@ -5676,14 +5706,14 @@ packages: dependencies: agent-base: 6.0.2 debug: 4.3.4 - socks: 2.7.0 + socks: 2.7.1 transitivePeerDependencies: - supports-color dev: false optional: true - /socks/2.7.0: - resolution: {integrity: sha512-scnOe9y4VuiNUULJN72GrM26BNOjVsfPXI+j+98PkyEfsIXroa5ofyjT+FzGvn/xHs73U2JtoBYAVx9Hl4quSA==} + /socks/2.7.1: + resolution: {integrity: sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==} engines: {node: '>= 10.13.0', npm: '>= 3.0.0'} dependencies: ip: 2.0.0 @@ -5717,6 +5747,7 @@ packages: /sourcemap-codec/1.4.8: resolution: {integrity: sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==} + deprecated: Please use @jridgewell/sourcemap-codec instead /spdx-correct/3.1.1: resolution: {integrity: sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==} @@ -5758,11 +5789,11 @@ packages: dev: false optional: true - /ssri/10.0.0: - resolution: {integrity: sha512-64ghGOpqW0k+jh7m5jndBGdVEoPikWwGQmBNN5ks6jyUSMymzHDTlnNHOvzp+6MmHOljr2MokUzvRksnTwG0Iw==} + /ssri/10.0.1: + resolution: {integrity: sha512-WVy6di9DlPOeBWEjMScpNipeSX2jIZBGEn5Uuo8Q7aIuFEuDX0pw8RxcOjlD1TWP4obi24ki7m/13+nFpcbXrw==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} dependencies: - minipass: 3.3.4 + minipass: 4.0.0 dev: false optional: true @@ -5770,7 +5801,7 @@ packages: resolution: {integrity: sha512-o57Wcn66jMQvfHG1FlYbWeZWW/dHZhJXjpIcTfXldXEk5nz5lStPo3mK0OJQfGR3RbZUlbISexbljkJzuEj/8Q==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} dependencies: - minipass: 3.3.4 + minipass: 3.3.6 dev: false optional: true @@ -5883,20 +5914,20 @@ packages: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} - /svelte/3.53.1: - resolution: {integrity: sha512-Q4/hHkktZogGhN5iqxqSi9sjEVoe/NbIxX4hXEHoasTxj+TxEQVAq66LnDMdAZxjmsodkoI5F3slqsS68U7FNw==} + /svelte/3.55.0: + resolution: {integrity: sha512-uGu2FVMlOuey4JoKHKrpZFkoYyj0VLjJdz47zX5+gVK5odxHM40RVhar9/iK2YFRVxvfg9FkhfVlR0sjeIrOiA==} engines: {node: '>= 8'} dev: false - /svelte2tsx/0.5.20_svelte@3.53.1: - resolution: {integrity: sha512-yNHmN/uoAnJ7d1XqVohiNA6TMFOxibHyEddUAHVt1PiLXtbwAJF3WaGYlg8QbOdoXzOVsVNCAlqRUIdULUm+OA==} + /svelte2tsx/0.5.22_svelte@3.55.0: + resolution: {integrity: sha512-OytIql7Bv53oFuL0jjsnp/gNvR4ngAUdAjswgibmIQT2Lj2OIQYn2J3gKqRd+wSj/n3M/wrz4zJpudQRSfncZw==} peerDependencies: svelte: ^3.24 typescript: ^4.1.2 dependencies: dedent-js: 1.0.1 pascal-case: 3.1.2 - svelte: 3.53.1 + svelte: 3.55.0 dev: false /tar-fs/2.1.1: @@ -5933,13 +5964,13 @@ packages: readable-stream: 3.6.0 dev: true - /tar/6.1.12: - resolution: {integrity: sha512-jU4TdemS31uABHd+Lt5WEYJuzn+TJTCBLljvIAHZOz6M9Os5pJ4dD+vRFLxPa/n3T0iEFzpi+0x1UfuDZYbRMw==} + /tar/6.1.13: + resolution: {integrity: sha512-jdIBIN6LTIe2jqzay/2vtYLlBHa3JF42ot3h1dW8Q0PaAG4v8rm0cvpVePtau5C6OKXGGcgO9q2AMNSWxiLqKw==} engines: {node: '>=10'} dependencies: chownr: 2.0.0 fs-minipass: 2.1.0 - minipass: 3.3.4 + minipass: 4.0.0 minizlib: 2.1.2 mkdirp: 1.0.4 yallist: 4.0.0 @@ -6015,6 +6046,7 @@ packages: /to-fast-properties/2.0.0: resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} engines: {node: '>=4'} + dev: false /to-regex-range/5.0.1: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} @@ -6049,8 +6081,8 @@ packages: dev: false optional: true - /tslib/2.4.0: - resolution: {integrity: sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==} + /tslib/2.4.1: + resolution: {integrity: sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==} /tsscmp/1.0.6: resolution: {integrity: sha512-LxhtAkPDTkVCMQjt2h6eBVY28KCjikZqZfMcC15YBeNjkgUpdCfBu5HoiOTDu86v6smE8yOjyEktJ8hlbANHQA==} @@ -6146,8 +6178,8 @@ packages: resolution: {integrity: sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==} dev: true - /uglify-js/3.17.2: - resolution: {integrity: sha512-bbxglRjsGQMchfvXZNusUcYgiB9Hx2K4AHYXQy2DITZ9Rd+JzhX7+hoocE5Winr7z2oHvPsekkBwXtigvxevXg==} + /uglify-js/3.17.4: + resolution: {integrity: sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==} engines: {node: '>=0.8.0'} hasBin: true requiresBuild: true @@ -6249,7 +6281,7 @@ packages: dev: false optional: true - /vite/4.0.1_@types+node@18.11.15: + /vite/4.0.1_@types+node@18.11.17: resolution: {integrity: sha512-kZQPzbDau35iWOhy3CpkrRC7It+HIHtulAzBhMqzGHKRf/4+vmh8rPDDdv98SWQrFWo6//3ozwsRmwQIPZsK9g==} engines: {node: ^14.18.0 || >=16.0.0} hasBin: true @@ -6274,15 +6306,15 @@ packages: terser: optional: true dependencies: - '@types/node': 18.11.15 - esbuild: 0.16.7 + '@types/node': 18.11.17 + esbuild: 0.16.8 postcss: 8.4.20 resolve: 1.22.1 - rollup: 3.7.1 + rollup: 3.7.5 optionalDependencies: fsevents: 2.3.2 - /vitepress/1.0.0-alpha.32_@types+node@18.11.15: + /vitepress/1.0.0-alpha.32_@types+node@18.11.17: resolution: {integrity: sha512-Q45N1cLdRr8MAu/+wAKKow7CNQD4sNBlSNsW1UxYfkvSgwPN/dlEmpEkQl/uOpE3C1kv3jvvEJVY0RAIaJFWYQ==} hasBin: true requiresBuild: true @@ -6291,10 +6323,10 @@ packages: '@docsearch/js': 3.3.0 '@vitejs/plugin-vue': 4.0.0_vite@4.0.1+vue@3.2.45 '@vue/devtools-api': 6.4.5 - '@vueuse/core': 9.6.0_vue@3.2.45 + '@vueuse/core': 9.7.0_vue@3.2.45 body-scroll-lock: 4.0.0-beta.0 shiki: 0.11.1 - vite: 4.0.1_@types+node@18.11.15 + vite: 4.0.1_@types+node@18.11.17 vue: 3.2.45 transitivePeerDependencies: - '@algolia/client-search' @@ -6335,7 +6367,7 @@ packages: dependencies: '@types/chai': 4.3.4 '@types/chai-subset': 1.3.3 - '@types/node': 18.11.15 + '@types/node': 18.11.17 acorn: 8.8.1 acorn-walk: 8.2.0 chai: 4.3.7 @@ -6346,7 +6378,7 @@ packages: tinybench: 2.3.1 tinypool: 0.3.0 tinyspy: 1.0.2 - vite: 4.0.1_@types+node@18.11.15 + vite: 4.0.1_@types+node@18.11.17 transitivePeerDependencies: - less - sass @@ -6393,27 +6425,27 @@ packages: resolution: {integrity: sha512-FMaMjB2LQdkHjTCP2CWh2S94xuGsxSc8xr0H9nAACVd/iUDyZLoKFjwoB+mA3v0rpCH2U5vVCVwxyULy61CgqA==} dependencies: '@vscode/l10n': 0.0.10 - vscode-languageserver-textdocument: 1.0.7 + vscode-languageserver-textdocument: 1.0.8 vscode-languageserver-types: 3.17.2 - vscode-uri: 3.0.6 + vscode-uri: 3.0.7 dev: false /vscode-html-languageservice/5.0.3: resolution: {integrity: sha512-6rfrtcHhXDMXmC5pR2WXrx02HiNCzQDynOBMn+53zLxr2hvZrDzoc0QgC0FaFGfcglf7GeOsfhkWvJBFC/a70g==} dependencies: '@vscode/l10n': 0.0.10 - vscode-languageserver-textdocument: 1.0.7 + vscode-languageserver-textdocument: 1.0.8 vscode-languageserver-types: 3.17.2 - vscode-uri: 3.0.6 + vscode-uri: 3.0.7 /vscode-json-languageservice/5.1.3: resolution: {integrity: sha512-p0O1Ql5+zyWFIBU4cSxnDcuq9OnbE0MmvNKDYYvz4EPsZ9EHBT3I6KJb5Gk3snkj+jQTFILEZ06cfY7WZxxqPw==} dependencies: '@vscode/l10n': 0.0.10 jsonc-parser: 3.2.0 - vscode-languageserver-textdocument: 1.0.7 + vscode-languageserver-textdocument: 1.0.8 vscode-languageserver-types: 3.17.2 - vscode-uri: 3.0.6 + vscode-uri: 3.0.7 dev: false /vscode-jsonrpc/8.0.2: @@ -6434,8 +6466,8 @@ packages: vscode-jsonrpc: 8.0.2 vscode-languageserver-types: 3.17.2 - /vscode-languageserver-textdocument/1.0.7: - resolution: {integrity: sha512-bFJH7UQxlXT8kKeyiyu41r22jCZXG8kuuVVA33OEJn1diWOZK5n8zBSPZFHVBOu8kXZ6h0LIRhf5UnCo61J4Hg==} + /vscode-languageserver-textdocument/1.0.8: + resolution: {integrity: sha512-1bonkGqQs5/fxGT5UchTgjGVnfysL0O8v1AYMBjqTbWQTFn721zaPGDYFkOKtfDgFiSgXM3KwaG3FMGfW4Ed9Q==} /vscode-languageserver-types/3.17.2: resolution: {integrity: sha512-zHhCWatviizPIq9B7Vh9uvrH6x3sK8itC84HkamnBWoDFJtzBf7SWlpLCZUit72b3os45h6RWQNC9xHRDF8dRA==} @@ -6450,8 +6482,8 @@ packages: /vscode-nls/5.2.0: resolution: {integrity: sha512-RAaHx7B14ZU04EU31pT+rKz2/zSl7xMsfIZuo8pd+KZO6PXtQmpevpq3vxvWNcrGbdmhM/rr5Uw5Mz+NBfhVng==} - /vscode-oniguruma/1.6.2: - resolution: {integrity: sha512-KH8+KKov5eS/9WhofZR8M8dMHWN2gTxjMsG4jd04YhpbPR91fUj7rYQ2/XjeHCJWbg7X++ApRIU9NUwM2vTvLA==} + /vscode-oniguruma/1.7.0: + resolution: {integrity: sha512-L9WMGRfrjOhgHSdOYgCt/yRMsXzLDJSL7BPrOZt73gU0iWO4mpqzqQzOz5srxqTvMBaR0XZTSrVWo4j55Rc6cA==} dev: false optional: true @@ -6464,8 +6496,8 @@ packages: resolution: {integrity: sha512-8TEXQxlldWAuIODdukIb+TR5s+9Ds40eSJrw+1iDDA9IFORPjMELarNQE3myz5XIkWWpdprmJjm1/SxMlWOC8A==} dev: false - /vscode-uri/3.0.6: - resolution: {integrity: sha512-fmL7V1eiDBFRRnu+gfRWTzyPpNIHJTc4mWnFkwBUmO9U3KPgJAmTx7oxi2bl/Rh6HLdU7+4C9wlj0k2E4AdKFQ==} + /vscode-uri/3.0.7: + resolution: {integrity: sha512-eOpPHogvorZRobNqJGhapa0JdwaxpjVvyBp0QIUMRMSf8ZAlqOdEquKuRmw9Qwu0qXtJIWqFtMkmvJjUZmMjVA==} /vue-demi/0.13.11_vue@3.2.45: resolution: {integrity: sha512-IR8HoEEGM65YY3ZJYAjMlKygDQn25D5ajNFNoKh9RSDMQtlzCxtfQjdQgv9jjK+m3377SsJXY8ysq8kLCZL25A==} @@ -6507,7 +6539,7 @@ packages: /wcwidth/1.0.1: resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} dependencies: - defaults: 1.0.3 + defaults: 1.0.4 dev: false optional: true @@ -6553,8 +6585,8 @@ packages: resolution: {integrity: sha512-RNGKj82nUPg3g5ygxkQl0R937xLyho1J24ItRCBTr/m1YnZkzJy1hUiHUJrc/VlsDQzsCnInEGSg3bci0Lmd4w==} engines: {node: '>= 10.0.0'} dependencies: - '@babel/parser': 7.19.3 - '@babel/types': 7.19.3 + '@babel/parser': 7.20.5 + '@babel/types': 7.20.5 assert-never: 1.2.1 babel-walk: 3.0.0-canary-5 dev: false diff --git a/tsconfig.build.json b/tsconfig.build.json index 1163d9c64..0c8d2c218 100644 --- a/tsconfig.build.json +++ b/tsconfig.build.json @@ -22,6 +22,9 @@ { "path": "./vue-language-tools/vue-tsc/tsconfig.build.json" }, + { + "path": "./vue-language-tools/vue-tsc-eslint-hook/tsconfig.build.json" + }, { "path": "./vue-language-tools/vue-component-meta/tsconfig.build.json" }, diff --git a/vue-language-tools/vue-language-core/schemas/vue-tsconfig.schema.json b/vue-language-tools/vue-language-core/schemas/vue-tsconfig.schema.json index 3fe6bc6ef..fcda48dbc 100644 --- a/vue-language-tools/vue-language-core/schemas/vue-tsconfig.schema.json +++ b/vue-language-tools/vue-language-core/schemas/vue-tsconfig.schema.json @@ -107,7 +107,7 @@ }, "markdownDescription": "https://github.com/johnsoncodehk/volar/issues/1969" }, - "experimentalTscProgramCallbacks": { + "hooks": { "type": "array", "markdownDescription": "https://github.com/johnsoncodehk/volar/pull/2217" } diff --git a/vue-language-tools/vue-language-core/src/generators/template.ts b/vue-language-tools/vue-language-core/src/generators/template.ts index 659a8806a..b2c578f97 100644 --- a/vue-language-tools/vue-language-core/src/generators/template.ts +++ b/vue-language-tools/vue-language-core/src/generators/template.ts @@ -441,6 +441,8 @@ export function generate( endTagOffset = undefined; } + const tagOffsets = endTagOffset !== undefined ? [startTagOffset, endTagOffset] : [startTagOffset]; + let _unwritedExps: CompilerDOM.SimpleExpressionNode[]; const _isIntrinsicElement = nativeTags.has(node.tag); @@ -517,25 +519,13 @@ export function generate( } else { - const var_props = `__VLS_${elementIndex++}`; - if (_isIntrinsicElement) { - codeGen.push(`let ${var_props} = ({} as JSX.IntrinsicElements)`); - writePropertyAccess( - node.tag, - startTagOffset, - { - ...capabilitiesSet.tagReference, - ...capabilitiesSet.tagHover, - }, - ); - codeGen.push(`;\n`); - if (endTagOffset !== undefined) { + for (const offset of tagOffsets) { codeGen.push(`({} as JSX.IntrinsicElements)`); writePropertyAccess( node.tag, - endTagOffset, + offset, { ...capabilitiesSet.tagReference, ...capabilitiesSet.tagHover, @@ -543,43 +533,25 @@ export function generate( ); codeGen.push(`;\n`); } + + codeGen.push(`let __VLS_${elementIndex++}: JSX.IntrinsicElements = { `); } else if (_isNamespacedTag) { - codeGen.push(`let ${var_props}!: import('./__VLS_types.js').ComponentProps;\n`); - - codeGen.push([ - node.tag, - 'template', - [startTagOffset, startTagOffset + node.tag.length], - capabilitiesSet.all, - ]); - codeGen.push(`;\n`); - - if (endTagOffset !== undefined) { + for (const offset of tagOffsets) { codeGen.push([ node.tag, 'template', - [endTagOffset, endTagOffset + node.tag.length], + [offset, offset + node.tag.length], capabilitiesSet.all, ]); codeGen.push(`;\n`); } + + codeGen.push(`const __VLS_${elementIndex++}: import('./__VLS_types.js').ComponentProps = { `); } else { - codeGen.push(`let ${var_props}!: import('./__VLS_types.js').ComponentProps;\n`); - if (endTagOffset !== undefined) { if (componentVars[node.tag]) { codeGen.push(`__VLS_templateComponents.`); @@ -592,18 +564,25 @@ export function generate( ]); codeGen.push(`;\n`); } + + codeGen.push(`const __VLS_${elementIndex++}: { '${node.tag}': import('./__VLS_types.js').ComponentProps } = { `); } - codeGen.push([ - var_props, - 'template', - [startTagOffset, startTagOffset + node.tag.length], - capabilitiesSet.diagnosticOnly, - ]); - codeGen.push(` = { `); + writeObjectProperty(node.tag, startTagOffset, capabilitiesSet.diagnosticOnly, node); + codeGen.push(` : { `); const { unwritedExps } = writeProps(node, 'class', 'props'); _unwritedExps = unwritedExps; - codeGen.push(` };\n`); + codeGen.push(` } };\n`); } { @@ -1331,7 +1310,6 @@ export function generate( ...capabilitiesSet.slotName, completion: !!prop.arg, }, - false, ); } else { @@ -1662,8 +1640,8 @@ export function generate( return 2; } } - function writePropertyAccess(mapCode: string, sourceRange: number | [number, number], data: PositionCapabilities, checkValid = true) { - if (checkValid && validTsVar.test(mapCode)) { + function writePropertyAccess(mapCode: string, sourceRange: number | [number, number], data: PositionCapabilities) { + if (validTsVar.test(mapCode)) { codeGen.push(`.`); codeGen.push([mapCode, 'template', sourceRange, data]); } diff --git a/vue-language-tools/vue-language-core/src/types.ts b/vue-language-tools/vue-language-core/src/types.ts index c3d994f4f..acc7ad3ed 100644 --- a/vue-language-tools/vue-language-core/src/types.ts +++ b/vue-language-tools/vue-language-core/src/types.ts @@ -24,6 +24,7 @@ export interface ResolvedVueCompilerOptions { htmlAttributes: string[]; optionsWrapper: [string, string] | []; plugins: string[]; + hooks: string[]; narrowingTypesInInlineHandlers: boolean; // experimental diff --git a/vue-language-tools/vue-language-core/src/utils/ts.ts b/vue-language-tools/vue-language-core/src/utils/ts.ts index 404bc3ac8..4eaefeb14 100644 --- a/vue-language-tools/vue-language-core/src/utils/ts.ts +++ b/vue-language-tools/vue-language-core/src/utils/ts.ts @@ -135,6 +135,7 @@ export function resolveVueCompilerOptions(vueOptions: VueCompilerOptions): Resol ), narrowingTypesInInlineHandlers: vueOptions.narrowingTypesInInlineHandlers ?? false, plugins: vueOptions.plugins ?? [], + hooks: vueOptions.hooks ?? [], // experimental experimentalResolveStyleCssClasses: vueOptions.experimentalResolveStyleCssClasses ?? 'scoped', diff --git a/vue-language-tools/vue-tsc-eslint-hook/LICENSE b/vue-language-tools/vue-tsc-eslint-hook/LICENSE new file mode 100644 index 000000000..b55e47a7e --- /dev/null +++ b/vue-language-tools/vue-tsc-eslint-hook/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2021-present Johnson Chu + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/vue-language-tools/vue-tsc-eslint-hook/README.md b/vue-language-tools/vue-tsc-eslint-hook/README.md new file mode 100644 index 000000000..349a73fe3 --- /dev/null +++ b/vue-language-tools/vue-tsc-eslint-hook/README.md @@ -0,0 +1,59 @@ +# vue-tsc-eslint-hook + +Use ESLint with vue-tsc to have better performance and accuracy. + +Example: https://github.com/DrJume/vue-volar-eslint + +## Usage + +`package.json` + +```json +{ + "devDependencies": { + "eslint": "latest", + "vue-tsc": "latest", + "vue-tsc-eslint-hook": "latest" + } +} +``` + +`tsconfig.json` + +```js +{ + "vueCompilerOptions": { + "hooks": [ + "./vue-tsc-hook.js" + ] + } +} +``` + +`vue-tsc-hook.js` + +```js +module.exports = (program) => + require('vue-tsc-eslint-hook')( + program, + (program) => ({ + ...baseConfig, + parserOptions: { + ...baseConfig.parserOptions, + programs: [program], // replace eslint typescript program + }, + // ignore non-ts virtual files that was generated by volar + ignorePatterns: ['**/*.vue', '**/*.html', '**/*.pug', '**/*.css', '**/*.scss'], + overrides: [ + ...baseConfig.overrides ?? [], + { + // ignore format linting for virtual ts code + files: ['*.vue.ts', '*.vue.js', '*.vue.tsx', '*.vue.jsx'], + rules: { + 'prettier/prettier': 'off', + }, + }, + ], + }) + ) +``` diff --git a/vue-language-tools/vue-tsc-eslint-hook/package.json b/vue-language-tools/vue-tsc-eslint-hook/package.json new file mode 100644 index 000000000..93cee686c --- /dev/null +++ b/vue-language-tools/vue-tsc-eslint-hook/package.json @@ -0,0 +1,26 @@ +{ + "name": "vue-tsc-eslint-hook", + "version": "1.0.13", + "main": "out/index.js", + "license": "MIT", + "files": [ + "bin", + "out/**/*.js", + "out/**/*.d.ts" + ], + "repository": { + "type": "git", + "url": "https://github.com/johnsoncodehk/volar.git", + "directory": "vue-language-tools/vue-tsc-eslint" + }, + "devDependencies": { + "@types/eslint": "latest", + "vue-tsc": "1.0.13" + }, + "peerDependencies": { + "eslint": "*" + }, + "dependencies": { + "vscode-languageserver-textdocument": "^1.0.7" + } +} diff --git a/vue-language-tools/vue-tsc-eslint-hook/src/index.ts b/vue-language-tools/vue-tsc-eslint-hook/src/index.ts new file mode 100644 index 000000000..24e4fa28c --- /dev/null +++ b/vue-language-tools/vue-tsc-eslint-hook/src/index.ts @@ -0,0 +1,131 @@ +import { ESLint, Linter } from 'eslint'; +import { TextDocument } from 'vscode-languageserver-textdocument'; +import type { createProgram } from 'vue-tsc'; + +export = async function ( + program: ReturnType, + resolveConfig: (tsProgram: ts.Program) => Linter.Config, +) { + + const tsProgram = program.__vue.languageService.__internal__.languageService.getProgram()!; + const eslint = new ESLint({ + baseConfig: resolveConfig(tsProgram), + useEslintrc: false, + }); + const fileNames = program.__vue.languageServiceHost.getScriptFileNames(); + const mapper = program.__vue.languageService.__internal__.context.mapper; + const formatter = await eslint.loadFormatter(); + + for (const fileName of fileNames) { + + const vueFile = mapper.get(fileName)?.[0]; + + if (vueFile) { + + const sourceDocument = TextDocument.create('', '', 0, vueFile.text); + const all: typeof vueFile.embeddeds = []; + + vueFile.embeddeds.forEach(async function visit(embeddedFile) { + if (embeddedFile.capabilities.diagnostic) { + all.push(embeddedFile); + } + embeddedFile.embeddeds.forEach(visit); + }); + + for (const embeddedFile of all) { + + const lintResult = await eslint.lintText( + embeddedFile.text, + { filePath: embeddedFile.fileName }, + ); + const embeddedDocument = TextDocument.create('', '', 0, embeddedFile.text); + + for (const result of lintResult) { + + result.filePath = vueFile.fileName; + result.errorCount = 0; + result.warningCount = 0; + result.fixableErrorCount = 0; + result.fixableWarningCount = 0; + const messages: Linter.LintMessage[] = []; + + for (const message of result.messages) { + + if (!message.line || !message.column) { + message.line = 1; + message.column = 1; + } + + const msgStart = embeddedDocument.offsetAt({ + line: message.line - 1, + character: message.column - 1, + }); + const msgEnd = embeddedDocument.offsetAt({ + line: (message.endLine ?? message.line) - 1, + character: (message.endColumn ?? message.column) - 1, + }); + + for (const start of mapper.fromEmbeddedLocation(embeddedFile.fileName, msgStart)) { + + if (start.mapping && !start.mapping.data.diagnostic) + continue; + + if (start.fileName !== vueFile.fileName) + continue; + + for (const end of mapper.fromEmbeddedLocation( + embeddedFile.fileName, + msgEnd, + true, + )) { + + if (end.mapping && !end.mapping.data.diagnostic) + continue; + + const range = { + start: sourceDocument.positionAt(start.offset), + end: sourceDocument.positionAt(end.offset), + }; + messages.push({ + ...message, + line: range.start.line + 1, + column: range.start.character + 1, + endLine: range.end.line + 1, + endColumn: range.end.character + 1, + }); + result.errorCount += message.severity === 2 ? 1 : 0; + result.warningCount += message.severity === 1 ? 1 : 0; + result.fixableErrorCount += message.severity === 2 && message.fix ? 1 : 0; + result.fixableWarningCount += message.severity === 1 && message.fix ? 1 : 0; + + break; + } + break; + } + } + + result.messages = messages; + } + + const text = await formatter.format(lintResult); + if (text) { + console.log(text); + } + break; + } + } + else { + + const fileText = tsProgram?.getSourceFile(fileName)?.text ?? ''; + const lintResult = await eslint.lintText( + fileText, + { filePath: fileName }, + ); + + const text = await formatter.format(lintResult); + if (text) { + console.log(text); + } + } + } +}; diff --git a/vue-language-tools/vue-tsc-eslint-hook/tsconfig.build.json b/vue-language-tools/vue-tsc-eslint-hook/tsconfig.build.json new file mode 100644 index 000000000..a77e93f6a --- /dev/null +++ b/vue-language-tools/vue-tsc-eslint-hook/tsconfig.build.json @@ -0,0 +1,20 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "noEmit": false, + "outDir": "out", + "rootDir": "src", + }, + "include": [ + "src" + ], + "exclude": [ + "node_modules", + ".vscode-test" + ], + "references": [ + { + "path": "../vue-tsc/tsconfig.build.json" + }, + ], +} \ No newline at end of file diff --git a/vue-language-tools/vue-tsc/bin/vue-tsc.js b/vue-language-tools/vue-tsc/bin/vue-tsc.js index d64ecf0be..f63a8b619 100755 --- a/vue-language-tools/vue-tsc/bin/vue-tsc.js +++ b/vue-language-tools/vue-tsc/bin/vue-tsc.js @@ -1,9 +1,9 @@ #!/usr/bin/env node const fs = require('fs'); - const readFileSync = fs.readFileSync; const tscPath = require.resolve('typescript/lib/tsc'); -const proxyPath = require.resolve('../out/proxy'); +const proxyApiPath = require.resolve('../out/index'); +const { state } = require('../out/shared'); fs.readFileSync = (...args) => { if (args[0] === tscPath) { @@ -15,10 +15,10 @@ fs.readFileSync = (...args) => { tryReplace(/allSupportedExtensions = .*(?=;)/, s => s + '.concat([[".vue"]])'); // proxy startTracing, dumpTracingLegend - tryReplace(/ = tracingEnabled\./g, ` = require(${JSON.stringify(proxyPath)}).loadTsLib().`); + tryReplace(/ = tracingEnabled\./g, ` = require(${JSON.stringify(proxyApiPath)}).loadTsLib().`); // proxy createProgram apis - tryReplace(/function createProgram\(.+\) {/, s => s + ` return require(${JSON.stringify(proxyPath)}).createProgramProxy(...arguments);`); + tryReplace(/function createProgram\(.+\) {/, s => s + ` return require(${JSON.stringify(proxyApiPath)}).createProgram(...arguments);`); return tsc; @@ -34,4 +34,16 @@ fs.readFileSync = (...args) => { return readFileSync(...args); }; -require(tscPath); +(function main() { + try { + require(tscPath); + } + catch (err) { + if (err === 'hook') { + state.hook.worker.then(main); + } + else { + throw err; + } + } +})(); diff --git a/vue-language-tools/vue-tsc/package.json b/vue-language-tools/vue-tsc/package.json index bf7bc0d3b..fbe3f82d2 100644 --- a/vue-language-tools/vue-tsc/package.json +++ b/vue-language-tools/vue-tsc/package.json @@ -1,6 +1,7 @@ { "name": "vue-tsc", "version": "1.0.13", + "main": "out/index.js", "license": "MIT", "files": [ "bin", diff --git a/vue-language-tools/vue-tsc/src/proxy.ts b/vue-language-tools/vue-tsc/src/index.ts similarity index 74% rename from vue-language-tools/vue-tsc/src/proxy.ts rename to vue-language-tools/vue-tsc/src/index.ts index ad4324714..dcd5e3550 100644 --- a/vue-language-tools/vue-tsc/src/proxy.ts +++ b/vue-language-tools/vue-tsc/src/index.ts @@ -1,8 +1,18 @@ import * as ts from 'typescript/lib/tsserverlibrary'; import * as vue from '@volar/vue-language-core'; import * as vueTs from '@volar/vue-typescript'; +import { state } from './shared'; -export function createProgramProxy( +export type _Program = ts.Program & { __vue: ProgramContext; }; + +interface ProgramContext { + projectVersion: number, + options: ts.CreateProgramOptions, + languageServiceHost: vue.LanguageServiceHost, + languageService: ReturnType, +} + +export function createProgram( options: ts.CreateProgramOptions, // rootNamesOrOptions: readonly string[] | CreateProgramOptions, _options?: ts.CompilerOptions, _host?: ts.CompilerHost, @@ -11,24 +21,31 @@ export function createProgramProxy( ) { if (!options.options.noEmit && !options.options.emitDeclarationOnly) - return doThrow('js emit is not supported'); + throw toThrow('js emit is not supported'); if (!options.options.noEmit && options.options.noEmitOnError) - return doThrow('noEmitOnError is not supported'); + throw toThrow('noEmitOnError is not supported'); if (!options.host) - return doThrow('!options.host'); + throw toThrow('!options.host'); - let program = options.oldProgram as any; + let program = options.oldProgram as _Program | undefined; - if (!program) { + if (state.hook) { + program = state.hook.program; + program.__vue.options = options; + } + else if (!program) { - const ctx = { + const ctx: ProgramContext = { projectVersion: 0, options, get languageServiceHost() { return vueLsHost; }, + get languageService() { + return vueTsLs; + }, }; const vueCompilerOptions = getVueCompilerOptions(); const scripts = new Map await cb(program))(), + }; + throw 'hook'; } } + for (const rootName of options.rootNames) { + // register file watchers + options.host.getSourceFile(rootName, ts.ScriptTarget.ESNext); + } + return program; } @@ -137,7 +162,7 @@ export function loadTsLib() { return ts; } -function doThrow(msg: string) { +function toThrow(msg: string) { console.error(msg); - throw msg; + return msg; } diff --git a/vue-language-tools/vue-tsc/src/shared.ts b/vue-language-tools/vue-tsc/src/shared.ts new file mode 100644 index 000000000..d529192e3 --- /dev/null +++ b/vue-language-tools/vue-tsc/src/shared.ts @@ -0,0 +1,9 @@ +import type { _Program } from './index'; + +export const state: { + hook?: { + program: _Program, + index: number, + worker: Promise, + }; +} = {};