diff --git a/.eslintrc.json b/.eslintrc.json index 354f9004..ebf10c34 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -15,21 +15,6 @@ "@typescript-eslint/no-explicit-any": "off", // better to fix rule "unicorn/consistent-destructuring": "off", - "@typescript-eslint/no-restricted-imports": [ - "error", - { - "patterns": [ - { - "group": [ - "typescript*", - "!../*" - ], - "message": "Use global ts type and variable instead" - // "allowTypeImports": true - } - ] - } - ], "unicorn/switch-case-braces": "off", "@typescript-eslint/consistent-type-imports": "off", "@typescript-eslint/ban-types": "off", @@ -60,7 +45,9 @@ "@typescript-eslint/prefer-regexp-exec": "off", "no-negated-condition": "off", "@typescript-eslint/prefer-nullish-coalescing": "off", - "unicorn/prefer-set-has": "off" + "unicorn/prefer-set-has": "off", + // Allow typescript imports in plugin code (needed for TS 5.5+ upgrade) + "@typescript-eslint/no-restricted-imports": "off" } } ] diff --git a/buildTsPlugin.mjs b/buildTsPlugin.mjs index 4929eb83..fe1cf3b4 100644 --- a/buildTsPlugin.mjs +++ b/buildTsPlugin.mjs @@ -13,7 +13,7 @@ const result = await buildTsPlugin('typescript', undefined, undefined, { banner: { js: 'let ts, tsFull;', }, - external: ['perf_hooks'], + external: ['perf_hooks', 'typescript', 'typescript/lib/tsserverlibrary'], plugins: [ { name: 'watch-notifier', diff --git a/package.json b/package.json index 38cf274d..2550e1c8 100644 --- a/package.json +++ b/package.json @@ -160,7 +160,7 @@ "tsm": "^2.3.0", "type-fest": "^2.13.1", "typed-jsonfile": "^0.2.1", - "typescript": "5.3.3", + "typescript": "5.9.3", "vite": "^4.1.1", "vitest": "^0.34.6", "vitest-environment-ts-plugin": "./vitest-environment-ts-plugin", @@ -207,7 +207,7 @@ "require-from-string": "^2.0.2", "semver": "^7.3.8", "string-dedent": "^3.0.1", - "ts-expose-internals": "^5.3.3", + "ts-expose-internals": "^5.6.3", "ts-simple-type": "^1.0.7", "unleashed-typescript": "^1.3.0", "vscode-framework": "^0.0.18", @@ -232,4 +232,4 @@ } }, "packageManager": "pnpm@10.12.1+sha512.f0dda8580f0ee9481c5c79a1d927b9164f2c478e90992ad268bbb2465a736984391d6333d2c327913578b2804af33474ca554ba29c04a8b13060a717675ae3ac" -} \ No newline at end of file +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 33136dab..e78a58d0 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -37,7 +37,7 @@ importers: version: 0.0.9 '@zardoy/vscode-utils': specifier: ^0.0.52 - version: 0.0.52(@types/vscode@1.72.0)(esbuild@0.15.15)(jsonc-parser@3.3.1)(vscode-framework@0.0.18(@types/vscode@1.72.0)(typescript@5.3.3)) + version: 0.0.52(@types/vscode@1.72.0)(esbuild@0.15.15)(jsonc-parser@3.3.1)(vscode-framework@0.0.18(@types/vscode@1.72.0)(typescript@5.9.3)) chai: specifier: ^4.3.6 version: 4.3.6 @@ -55,7 +55,7 @@ importers: version: 8.56.0 eslint-config-zardoy: specifier: ^0.2.17 - version: 0.2.17(eslint-plugin-react-hooks@4.6.2(eslint@8.56.0))(eslint-plugin-react@7.35.0(eslint@8.56.0))(eslint@8.56.0)(typescript@5.3.3) + version: 0.2.17(eslint-plugin-react-hooks@4.6.2(eslint@8.56.0))(eslint-plugin-react@7.35.0(eslint@8.56.0))(eslint@8.56.0)(typescript@5.9.3) glob: specifier: ^8.0.3 version: 8.0.3 @@ -90,17 +90,17 @@ importers: specifier: ^3.0.1 version: 3.0.1 ts-expose-internals: - specifier: ^5.3.3 - version: 5.3.3 + specifier: ^5.6.3 + version: 5.6.3 ts-simple-type: specifier: ^1.0.7 version: 1.0.7 unleashed-typescript: specifier: ^1.3.0 - version: 1.3.0(typescript@5.3.3) + version: 1.3.0(typescript@5.9.3) vscode-framework: specifier: ^0.0.18 - version: 0.0.18(@types/vscode@1.72.0)(typescript@5.3.3) + version: 0.0.18(@types/vscode@1.72.0)(typescript@5.9.3) vscode-uri: specifier: ^3.0.6 version: 3.0.6 @@ -125,7 +125,7 @@ importers: version: 0.34.6(vitest@0.34.6) '@zardoy/tsconfig': specifier: ^1.3.1 - version: 1.3.1(typescript@5.3.3) + version: 1.3.1(typescript@5.9.3) chokidar: specifier: ^3.5.3 version: 3.5.3 @@ -160,8 +160,8 @@ importers: specifier: ^0.2.1 version: 0.2.1 typescript: - specifier: 5.3.3 - version: 5.3.3 + specifier: 5.9.3 + version: 5.9.3 vite: specifier: ^4.1.1 version: 4.1.1(@types/node@16.11.21) @@ -3146,8 +3146,8 @@ packages: peerDependencies: typescript: '>=4.2.0' - ts-expose-internals@5.3.3: - resolution: {integrity: sha512-0lW96u0pa08dq9QLYUBRbgGkvsD+LvPAVGe94kr2tHaRZAxgckwJ+qqc1BSRoR1rpkTZf7AWAa6DKrLGFmctwg==} + ts-expose-internals@5.6.3: + resolution: {integrity: sha512-reb+7TXGaC0odGjywnLocM4f2i8mBhSEjc3gnKqdM21wDy8FcGGVjKbtMNjn17hka34CrwvqNREs0R7CGIeH3w==} ts-morph@12.2.0: resolution: {integrity: sha512-WHXLtFDcIRwoqaiu0elAoZ/AmI+SwwDafnPKjgJmdwJ2gRVO0jMKBt88rV2liT/c6MTsXyuWbGFiHe9MRddWJw==} @@ -3263,8 +3263,8 @@ packages: engines: {node: '>=4.2.0'} hasBin: true - typescript@5.3.3: - resolution: {integrity: sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==} + typescript@5.9.3: + resolution: {integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==} engines: {node: '>=14.17'} hasBin: true @@ -3819,13 +3819,13 @@ snapshots: '@types/node': 16.11.21 optional: true - '@typescript-eslint/eslint-plugin@6.1.0(@typescript-eslint/parser@6.21.0(eslint@8.56.0)(typescript@5.3.3))(eslint@8.56.0)(typescript@5.3.3)': + '@typescript-eslint/eslint-plugin@6.1.0(@typescript-eslint/parser@6.21.0(eslint@8.56.0)(typescript@5.9.3))(eslint@8.56.0)(typescript@5.9.3)': dependencies: '@eslint-community/regexpp': 4.11.0 - '@typescript-eslint/parser': 6.21.0(eslint@8.56.0)(typescript@5.3.3) + '@typescript-eslint/parser': 6.21.0(eslint@8.56.0)(typescript@5.9.3) '@typescript-eslint/scope-manager': 6.1.0 - '@typescript-eslint/type-utils': 6.1.0(eslint@8.56.0)(typescript@5.3.3) - '@typescript-eslint/utils': 6.1.0(eslint@8.56.0)(typescript@5.3.3) + '@typescript-eslint/type-utils': 6.1.0(eslint@8.56.0)(typescript@5.9.3) + '@typescript-eslint/utils': 6.1.0(eslint@8.56.0)(typescript@5.9.3) '@typescript-eslint/visitor-keys': 6.1.0 debug: 4.3.6 eslint: 8.56.0 @@ -3834,22 +3834,22 @@ snapshots: natural-compare: 1.4.0 natural-compare-lite: 1.4.0 semver: 7.6.3 - ts-api-utils: 1.3.0(typescript@5.3.3) + ts-api-utils: 1.3.0(typescript@5.9.3) optionalDependencies: - typescript: 5.3.3 + typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@6.21.0(eslint@8.56.0)(typescript@5.3.3)': + '@typescript-eslint/parser@6.21.0(eslint@8.56.0)(typescript@5.9.3)': dependencies: '@typescript-eslint/scope-manager': 6.21.0 '@typescript-eslint/types': 6.21.0 - '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.3.3) + '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.9.3) '@typescript-eslint/visitor-keys': 6.21.0 debug: 4.3.6 eslint: 8.56.0 optionalDependencies: - typescript: 5.3.3 + typescript: 5.9.3 transitivePeerDependencies: - supports-color @@ -3863,15 +3863,15 @@ snapshots: '@typescript-eslint/types': 6.21.0 '@typescript-eslint/visitor-keys': 6.21.0 - '@typescript-eslint/type-utils@6.1.0(eslint@8.56.0)(typescript@5.3.3)': + '@typescript-eslint/type-utils@6.1.0(eslint@8.56.0)(typescript@5.9.3)': dependencies: - '@typescript-eslint/typescript-estree': 6.1.0(typescript@5.3.3) - '@typescript-eslint/utils': 6.1.0(eslint@8.56.0)(typescript@5.3.3) + '@typescript-eslint/typescript-estree': 6.1.0(typescript@5.9.3) + '@typescript-eslint/utils': 6.1.0(eslint@8.56.0)(typescript@5.9.3) debug: 4.3.6 eslint: 8.56.0 - ts-api-utils: 1.3.0(typescript@5.3.3) + ts-api-utils: 1.3.0(typescript@5.9.3) optionalDependencies: - typescript: 5.3.3 + typescript: 5.9.3 transitivePeerDependencies: - supports-color @@ -3879,7 +3879,7 @@ snapshots: '@typescript-eslint/types@6.21.0': {} - '@typescript-eslint/typescript-estree@6.1.0(typescript@5.3.3)': + '@typescript-eslint/typescript-estree@6.1.0(typescript@5.9.3)': dependencies: '@typescript-eslint/types': 6.1.0 '@typescript-eslint/visitor-keys': 6.1.0 @@ -3887,13 +3887,13 @@ snapshots: globby: 11.1.0 is-glob: 4.0.3 semver: 7.6.3 - ts-api-utils: 1.3.0(typescript@5.3.3) + ts-api-utils: 1.3.0(typescript@5.9.3) optionalDependencies: - typescript: 5.3.3 + typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/typescript-estree@6.21.0(typescript@5.3.3)': + '@typescript-eslint/typescript-estree@6.21.0(typescript@5.9.3)': dependencies: '@typescript-eslint/types': 6.21.0 '@typescript-eslint/visitor-keys': 6.21.0 @@ -3902,20 +3902,20 @@ snapshots: is-glob: 4.0.3 minimatch: 9.0.3 semver: 7.6.3 - ts-api-utils: 1.3.0(typescript@5.3.3) + ts-api-utils: 1.3.0(typescript@5.9.3) optionalDependencies: - typescript: 5.3.3 + typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@6.1.0(eslint@8.56.0)(typescript@5.3.3)': + '@typescript-eslint/utils@6.1.0(eslint@8.56.0)(typescript@5.9.3)': dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@8.56.0) '@types/json-schema': 7.0.15 '@types/semver': 7.5.8 '@typescript-eslint/scope-manager': 6.1.0 '@typescript-eslint/types': 6.1.0 - '@typescript-eslint/typescript-estree': 6.1.0(typescript@5.3.3) + '@typescript-eslint/typescript-estree': 6.1.0(typescript@5.9.3) eslint: 8.56.0 semver: 7.6.3 transitivePeerDependencies: @@ -4014,9 +4014,9 @@ snapshots: '@yarnpkg/lockfile@1.1.0': {} - '@zardoy/tsconfig@1.3.1(typescript@5.3.3)': + '@zardoy/tsconfig@1.3.1(typescript@5.9.3)': dependencies: - typescript: 5.3.3 + typescript: 5.9.3 '@zardoy/utils@0.0.4': dependencies: @@ -4030,7 +4030,7 @@ snapshots: rambda: 6.9.0 type-fest: 2.13.1 - '@zardoy/vscode-utils@0.0.52(@types/vscode@1.72.0)(esbuild@0.15.15)(jsonc-parser@3.3.1)(vscode-framework@0.0.18(@types/vscode@1.72.0)(typescript@5.3.3))': + '@zardoy/vscode-utils@0.0.52(@types/vscode@1.72.0)(esbuild@0.15.15)(jsonc-parser@3.3.1)(vscode-framework@0.0.18(@types/vscode@1.72.0)(typescript@5.9.3))': dependencies: '@types/vscode': 1.72.0 '@zardoy/utils': 0.0.4 @@ -4050,7 +4050,7 @@ snapshots: optionalDependencies: esbuild: 0.15.15 jsonc-parser: 3.3.1 - vscode-framework: 0.0.18(@types/vscode@1.72.0)(typescript@5.3.3) + vscode-framework: 0.0.18(@types/vscode@1.72.0)(typescript@5.9.3) accepts@1.3.8: dependencies: @@ -4906,34 +4906,34 @@ snapshots: eslint-plugin-react: 7.35.0(eslint@8.56.0) eslint-plugin-react-hooks: 4.6.2(eslint@8.56.0) - eslint-config-xo-typescript@1.0.1(@typescript-eslint/eslint-plugin@6.1.0(@typescript-eslint/parser@6.21.0(eslint@8.56.0)(typescript@5.3.3))(eslint@8.56.0)(typescript@5.3.3))(@typescript-eslint/parser@6.21.0(eslint@8.56.0)(typescript@5.3.3))(eslint@8.56.0)(typescript@5.3.3): + eslint-config-xo-typescript@1.0.1(@typescript-eslint/eslint-plugin@6.1.0(@typescript-eslint/parser@6.21.0(eslint@8.56.0)(typescript@5.9.3))(eslint@8.56.0)(typescript@5.9.3))(@typescript-eslint/parser@6.21.0(eslint@8.56.0)(typescript@5.9.3))(eslint@8.56.0)(typescript@5.9.3): dependencies: - '@typescript-eslint/eslint-plugin': 6.1.0(@typescript-eslint/parser@6.21.0(eslint@8.56.0)(typescript@5.3.3))(eslint@8.56.0)(typescript@5.3.3) - '@typescript-eslint/parser': 6.21.0(eslint@8.56.0)(typescript@5.3.3) + '@typescript-eslint/eslint-plugin': 6.1.0(@typescript-eslint/parser@6.21.0(eslint@8.56.0)(typescript@5.9.3))(eslint@8.56.0)(typescript@5.9.3) + '@typescript-eslint/parser': 6.21.0(eslint@8.56.0)(typescript@5.9.3) eslint: 8.56.0 - typescript: 5.3.3 + typescript: 5.9.3 eslint-config-xo@0.43.1(eslint@8.56.0): dependencies: confusing-browser-globals: 1.0.11 eslint: 8.56.0 - eslint-config-zardoy@0.2.17(eslint-plugin-react-hooks@4.6.2(eslint@8.56.0))(eslint-plugin-react@7.35.0(eslint@8.56.0))(eslint@8.56.0)(typescript@5.3.3): + eslint-config-zardoy@0.2.17(eslint-plugin-react-hooks@4.6.2(eslint@8.56.0))(eslint-plugin-react@7.35.0(eslint@8.56.0))(eslint@8.56.0)(typescript@5.9.3): dependencies: '@rushstack/eslint-patch': 1.10.4 - '@typescript-eslint/eslint-plugin': 6.1.0(@typescript-eslint/parser@6.21.0(eslint@8.56.0)(typescript@5.3.3))(eslint@8.56.0)(typescript@5.3.3) - '@typescript-eslint/parser': 6.21.0(eslint@8.56.0)(typescript@5.3.3) + '@typescript-eslint/eslint-plugin': 6.1.0(@typescript-eslint/parser@6.21.0(eslint@8.56.0)(typescript@5.9.3))(eslint@8.56.0)(typescript@5.9.3) + '@typescript-eslint/parser': 6.21.0(eslint@8.56.0)(typescript@5.9.3) eslint: 8.56.0 eslint-config-prettier: 8.10.0(eslint@8.56.0) eslint-config-xo: 0.43.1(eslint@8.56.0) eslint-config-xo-react: 0.27.0(eslint-plugin-react-hooks@4.6.2(eslint@8.56.0))(eslint-plugin-react@7.35.0(eslint@8.56.0))(eslint@8.56.0) - eslint-config-xo-typescript: 1.0.1(@typescript-eslint/eslint-plugin@6.1.0(@typescript-eslint/parser@6.21.0(eslint@8.56.0)(typescript@5.3.3))(eslint@8.56.0)(typescript@5.3.3))(@typescript-eslint/parser@6.21.0(eslint@8.56.0)(typescript@5.3.3))(eslint@8.56.0)(typescript@5.3.3) + eslint-config-xo-typescript: 1.0.1(@typescript-eslint/eslint-plugin@6.1.0(@typescript-eslint/parser@6.21.0(eslint@8.56.0)(typescript@5.9.3))(eslint@8.56.0)(typescript@5.9.3))(@typescript-eslint/parser@6.21.0(eslint@8.56.0)(typescript@5.9.3))(eslint@8.56.0)(typescript@5.9.3) eslint-plugin-eslint-comments: 3.2.0(eslint@8.56.0) - eslint-plugin-import: 2.27.5(@typescript-eslint/parser@6.21.0(eslint@8.56.0)(typescript@5.3.3))(eslint@8.56.0) + eslint-plugin-import: 2.27.5(@typescript-eslint/parser@6.21.0(eslint@8.56.0)(typescript@5.9.3))(eslint@8.56.0) eslint-plugin-node: 11.1.0(eslint@8.56.0) eslint-plugin-sonarjs: 0.19.0(eslint@8.56.0) eslint-plugin-unicorn: 48.0.0(eslint@8.56.0) - typescript: 5.3.3 + typescript: 5.9.3 transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack @@ -4949,11 +4949,11 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-module-utils@2.8.1(@typescript-eslint/parser@6.21.0(eslint@8.56.0)(typescript@5.3.3))(eslint-import-resolver-node@0.3.9)(eslint@8.56.0): + eslint-module-utils@2.8.1(@typescript-eslint/parser@6.21.0(eslint@8.56.0)(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@8.56.0): dependencies: debug: 3.2.7 optionalDependencies: - '@typescript-eslint/parser': 6.21.0(eslint@8.56.0)(typescript@5.3.3) + '@typescript-eslint/parser': 6.21.0(eslint@8.56.0)(typescript@5.9.3) eslint: 8.56.0 eslint-import-resolver-node: 0.3.9 transitivePeerDependencies: @@ -4971,7 +4971,7 @@ snapshots: eslint: 8.56.0 ignore: 5.3.1 - eslint-plugin-import@2.27.5(@typescript-eslint/parser@6.21.0(eslint@8.56.0)(typescript@5.3.3))(eslint@8.56.0): + eslint-plugin-import@2.27.5(@typescript-eslint/parser@6.21.0(eslint@8.56.0)(typescript@5.9.3))(eslint@8.56.0): dependencies: array-includes: 3.1.8 array.prototype.flat: 1.3.2 @@ -4980,7 +4980,7 @@ snapshots: doctrine: 2.1.0 eslint: 8.56.0 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.8.1(@typescript-eslint/parser@6.21.0(eslint@8.56.0)(typescript@5.3.3))(eslint-import-resolver-node@0.3.9)(eslint@8.56.0) + eslint-module-utils: 2.8.1(@typescript-eslint/parser@6.21.0(eslint@8.56.0)(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@8.56.0) has: 1.0.4 is-core-module: 2.15.0 is-glob: 4.0.3 @@ -4990,7 +4990,7 @@ snapshots: semver: 6.3.1 tsconfig-paths: 3.15.0 optionalDependencies: - '@typescript-eslint/parser': 6.21.0(eslint@8.56.0)(typescript@5.3.3) + '@typescript-eslint/parser': 6.21.0(eslint@8.56.0)(typescript@5.9.3) transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack @@ -5277,14 +5277,14 @@ snapshots: functions-have-names@1.2.3: {} - generated-module@0.0.2(typescript@5.3.3): + generated-module@0.0.2(typescript@5.9.3): dependencies: '@types/jsonfile': 6.1.4 fs-extra: 10.1.0 jsonfile: 6.1.0 ts-morph: 12.2.0 optionalDependencies: - typescript: 5.3.3 + typescript: 5.9.3 get-caller-file@2.0.5: {} @@ -6845,11 +6845,11 @@ snapshots: traverse@0.3.9: {} - ts-api-utils@1.3.0(typescript@5.3.3): + ts-api-utils@1.3.0(typescript@5.9.3): dependencies: - typescript: 5.3.3 + typescript: 5.9.3 - ts-expose-internals@5.3.3: {} + ts-expose-internals@5.6.3: {} ts-morph@12.2.0: dependencies: @@ -6956,14 +6956,14 @@ snapshots: jsonfile: 6.1.0 type-fest: 2.13.1 - typed-vscode@0.0.5(@types/vscode@1.72.0)(typescript@5.3.3): + typed-vscode@0.0.5(@types/vscode@1.72.0)(typescript@5.9.3): dependencies: '@types/vscode': 1.72.0 code-block-writer: 11.0.3 commander: 8.3.0 cosmiconfig: 7.1.0 fs-extra: 10.1.0 - generated-module: 0.0.2(typescript@5.3.3) + generated-module: 0.0.2(typescript@5.9.3) lodash: 4.17.21 quicktype-core: 6.1.12 type-fest: 2.13.1 @@ -6988,7 +6988,7 @@ snapshots: typescript@4.2.4: {} - typescript@5.3.3: {} + typescript@5.9.3: {} ufo@1.5.4: {} @@ -7013,9 +7013,9 @@ snapshots: universalify@2.0.1: {} - unleashed-typescript@1.3.0(typescript@5.3.3): + unleashed-typescript@1.3.0(typescript@5.9.3): dependencies: - typescript: 5.3.3 + typescript: 5.9.3 untildify@4.0.0: {} @@ -7128,7 +7128,7 @@ snapshots: '@types/vscode': 1.72.0 lodash: 4.17.21 - vscode-framework@0.0.18(@types/vscode@1.72.0)(typescript@5.3.3): + vscode-framework@0.0.18(@types/vscode@1.72.0)(typescript@5.9.3): dependencies: '@prisma/debug': 3.15.2 '@types/vscode': 1.72.0 @@ -7145,7 +7145,7 @@ snapshots: exit-hook: 2.2.1 filesize: 8.0.7 fs-extra: 10.1.0 - generated-module: 0.0.2(typescript@5.3.3) + generated-module: 0.0.2(typescript@5.9.3) github-remote-info: 1.0.3 globby: 11.1.0 jsonfile: 6.1.0 @@ -7155,7 +7155,7 @@ snapshots: pkg-dir: 5.0.0 pretty-format: 27.5.1 typed-jsonfile: 0.2.1 - typed-vscode: 0.0.5(@types/vscode@1.72.0)(typescript@5.3.3) + typed-vscode: 0.0.5(@types/vscode@1.72.0)(typescript@5.9.3) typescript-json-schema: 0.51.0 vscode-extra: 0.0.4(@types/vscode@1.72.0) vscode-manifest: 0.0.8 diff --git a/src/apiCommands.ts b/src/apiCommands.ts index 1e16f771..ab025ba9 100644 --- a/src/apiCommands.ts +++ b/src/apiCommands.ts @@ -27,7 +27,7 @@ export const sharedApiRequest = async (type: TriggerCharacterCommand, { offset, if (!position) offset ??= document.offsetAt(activeTextEditor!.selection.active) + relativeOffset const requestOffset = offset ?? document.offsetAt(position!) const requestPos = position ?? document.positionAt(offset!) - const getData = async () => sendCommand(type, { document: document!, position: requestPos, inputOptions: {} }) + const getData = async () => sendCommand(type, { document, position: requestPos, inputOptions: {} }) const CACHE_UNDEFINED_TIMEOUT = 1000 if (cacheableCommands.has(type as any)) { const cacheEntry = operationsCache.get(type) diff --git a/src/mergeSettings.ts b/src/mergeSettings.ts index 92047d40..62fcde79 100644 --- a/src/mergeSettings.ts +++ b/src/mergeSettings.ts @@ -32,7 +32,7 @@ const getConfigValueFromAllScopes = ( workspaceConfiguration: vscode.WorkspaceConfiguration, configKey: T, type: 'array' | 'object', -): Configuration[T] => { +) => { const values = { ...workspaceConfiguration.inspect(configKey)! } const userValueKeys = Object.keys(values).filter(key => key.endsWith('Value') && !key.startsWith('default')) for (const key of userValueKeys) { @@ -43,5 +43,9 @@ const getConfigValueFromAllScopes = ( values[key] = type === 'array' ? [] : {} } - return type === 'array' ? userValueKeys.flatMap(key => values[key]) : Object.assign({}, ...userValueKeys.map(key => values[key])) + const configValue = ( + type === 'array' ? userValueKeys.flatMap(key => values[key]) : Object.assign({}, ...userValueKeys.map(key => values[key])) + ) as Configuration[T] + + return configValue } diff --git a/typescript/src/codeActions/custom/addDestructure/addDestructure.ts b/typescript/src/codeActions/custom/addDestructure/addDestructure.ts index 791e70c0..34191d3b 100644 --- a/typescript/src/codeActions/custom/addDestructure/addDestructure.ts +++ b/typescript/src/codeActions/custom/addDestructure/addDestructure.ts @@ -1,3 +1,4 @@ +import * as ts from 'typescript/lib/tsserverlibrary' import { getChangesTracker, isValidInitializerForDestructure } from '../../../utils' import { CodeAction } from '../../getCodeActions' import createDestructuredDeclaration from './createDestructuredDeclaration' @@ -9,7 +10,7 @@ export default { kind: 'refactor.rewrite.add-destruct', tryToApply(sourceFile, position, _range, node, formatOptions, languageService) { if (!node || !position) return - const initialDeclaration = ts.findAncestor(node, n => ts.isVariableDeclaration(n)) as ts.VariableDeclaration | undefined + const initialDeclaration = ts.findAncestor(node, n => ts.isVariableDeclaration(n)) if (initialDeclaration && !ts.isObjectBindingPattern(initialDeclaration.name)) { const { initializer, type, name } = initialDeclaration diff --git a/typescript/src/codeActions/custom/addDestructure/addSplittedDestructure.ts b/typescript/src/codeActions/custom/addDestructure/addSplittedDestructure.ts index 00706f55..5963ebf7 100644 --- a/typescript/src/codeActions/custom/addDestructure/addSplittedDestructure.ts +++ b/typescript/src/codeActions/custom/addDestructure/addSplittedDestructure.ts @@ -1,4 +1,5 @@ import { uniq } from 'rambda' +import * as ts from 'typescript/lib/tsserverlibrary' import { findChildContainingExactPosition, getChangesTracker, getPositionHighlights, isValidInitializerForDestructure, makeUniqueName } from '../../../utils' export default (node: ts.Node, sourceFile: ts.SourceFile, formatOptions: ts.FormatCodeSettings | undefined, languageService: ts.LanguageService) => { diff --git a/typescript/src/codeActions/custom/addDestructure/createDestructuredDeclaration.ts b/typescript/src/codeActions/custom/addDestructure/createDestructuredDeclaration.ts index 1b64d6ea..8dd1e3df 100644 --- a/typescript/src/codeActions/custom/addDestructure/createDestructuredDeclaration.ts +++ b/typescript/src/codeActions/custom/addDestructure/createDestructuredDeclaration.ts @@ -1,3 +1,4 @@ +import * as ts from 'typescript/lib/tsserverlibrary' export default (initializer: ts.Expression, type: ts.TypeNode | undefined, declarationName: ts.BindingName) => { if (!ts.isPropertyAccessExpression(initializer)) return diff --git a/typescript/src/codeActions/custom/changeStringReplaceToRegex.ts b/typescript/src/codeActions/custom/changeStringReplaceToRegex.ts index a1bb00b7..deaad8f4 100644 --- a/typescript/src/codeActions/custom/changeStringReplaceToRegex.ts +++ b/typescript/src/codeActions/custom/changeStringReplaceToRegex.ts @@ -1,4 +1,5 @@ import escapeStringRegexp from 'escape-string-regexp' +import * as ts from 'typescript/lib/tsserverlibrary' import { CodeAction } from '../getCodeActions' import { getChangesTracker } from '../../utils' diff --git a/typescript/src/codeActions/custom/fromDestructure/createFlattenedExpressionFromDestructuring.ts b/typescript/src/codeActions/custom/fromDestructure/createFlattenedExpressionFromDestructuring.ts index cf394a08..08ec34e4 100644 --- a/typescript/src/codeActions/custom/fromDestructure/createFlattenedExpressionFromDestructuring.ts +++ b/typescript/src/codeActions/custom/fromDestructure/createFlattenedExpressionFromDestructuring.ts @@ -1,4 +1,5 @@ import { isNumber } from 'lodash' +import * as ts from 'typescript/lib/tsserverlibrary' import { getPropertyIdentifier } from './utils' export default (bindingElement: ts.BindingElement, baseExpression: ts.Expression) => { diff --git a/typescript/src/codeActions/custom/fromDestructure/fromDestructure.ts b/typescript/src/codeActions/custom/fromDestructure/fromDestructure.ts index 376e325e..d34c3752 100644 --- a/typescript/src/codeActions/custom/fromDestructure/fromDestructure.ts +++ b/typescript/src/codeActions/custom/fromDestructure/fromDestructure.ts @@ -1,3 +1,4 @@ +import * as ts from 'typescript/lib/tsserverlibrary' import { getChangesTracker, isValidInitializerForDestructure } from '../../../utils' import { CodeAction } from '../../getCodeActions' import createFlattenedExpressionFromDestructuring from './createFlattenedExpressionFromDestructuring' @@ -10,10 +11,7 @@ export default { kind: 'refactor.rewrite.from-destruct', tryToApply(sourceFile, position, _range, node, formatOptions, languageService) { if (!node || !position) return - const declaration = ts.findAncestor(node, n => ts.isVariableDeclaration(n) || ts.isParameter(n)) as - | ts.VariableDeclaration - | ts.ParameterDeclaration - | undefined + const declaration = ts.findAncestor(node, n => ts.isVariableDeclaration(n) || ts.isParameter(n)) if (!declaration || !(ts.isObjectBindingPattern(declaration.name) || ts.isArrayBindingPattern(declaration.name))) return diff --git a/typescript/src/codeActions/custom/fromDestructure/fromSplittedDestructure.ts b/typescript/src/codeActions/custom/fromDestructure/fromSplittedDestructure.ts index 3558e97d..e1567a85 100644 --- a/typescript/src/codeActions/custom/fromDestructure/fromSplittedDestructure.ts +++ b/typescript/src/codeActions/custom/fromDestructure/fromSplittedDestructure.ts @@ -1,3 +1,4 @@ +import * as ts from 'typescript/lib/tsserverlibrary' import { findChildContainingExactPosition, getChangesTracker, getPositionHighlights, isNameUniqueAtNodeClosestScope } from '../../../utils' import createFlattenedExpressionFromDestructuring from './createFlattenedExpressionFromDestructuring' import { collectBindings } from './utils' diff --git a/typescript/src/codeActions/custom/fromDestructure/utils.ts b/typescript/src/codeActions/custom/fromDestructure/utils.ts index 98ac56ff..2c02af12 100644 --- a/typescript/src/codeActions/custom/fromDestructure/utils.ts +++ b/typescript/src/codeActions/custom/fromDestructure/utils.ts @@ -1,3 +1,4 @@ +import * as ts from 'typescript/lib/tsserverlibrary' export const collectBindings = (node: ts.BindingPattern): ts.BindingElement[] => { const bindings: ts.BindingElement[] = [] diff --git a/typescript/src/codeActions/custom/objectSwapKeysAndValues.ts b/typescript/src/codeActions/custom/objectSwapKeysAndValues.ts index 90ba2c84..8f0a1d5a 100644 --- a/typescript/src/codeActions/custom/objectSwapKeysAndValues.ts +++ b/typescript/src/codeActions/custom/objectSwapKeysAndValues.ts @@ -1,3 +1,4 @@ +import * as ts from 'typescript/lib/tsserverlibrary' import { approveCast } from '../../utils' import { CodeAction } from '../getCodeActions' diff --git a/typescript/src/codeActions/custom/renameParameterToNameFromType.ts b/typescript/src/codeActions/custom/renameParameterToNameFromType.ts index c3b1cebc..4941432b 100644 --- a/typescript/src/codeActions/custom/renameParameterToNameFromType.ts +++ b/typescript/src/codeActions/custom/renameParameterToNameFromType.ts @@ -1,4 +1,5 @@ import { pipe, groupBy, map, compact } from 'lodash/fp' +import * as ts from 'typescript/lib/tsserverlibrary' import { CodeAction } from '../getCodeActions' import extractType from '../../utils/extractType' diff --git a/typescript/src/codeActions/custom/splitDeclarationAndInitialization.ts b/typescript/src/codeActions/custom/splitDeclarationAndInitialization.ts index 153502ce..d2f1667d 100644 --- a/typescript/src/codeActions/custom/splitDeclarationAndInitialization.ts +++ b/typescript/src/codeActions/custom/splitDeclarationAndInitialization.ts @@ -1,3 +1,4 @@ +import * as ts from 'typescript/lib/tsserverlibrary' import { getChangesTracker, getIndentFromPos } from '../../utils' import { CodeAction } from '../getCodeActions' diff --git a/typescript/src/codeActions/custom/toggleBraces.ts b/typescript/src/codeActions/custom/toggleBraces.ts index 7b6d526f..8938581b 100644 --- a/typescript/src/codeActions/custom/toggleBraces.ts +++ b/typescript/src/codeActions/custom/toggleBraces.ts @@ -1,3 +1,4 @@ +import * as ts from 'typescript/lib/tsserverlibrary' import { findChildContainingPosition, findClosestParent, getIndentFromPos } from '../../utils' import { ApplyCodeAction, CodeAction } from '../getCodeActions' diff --git a/typescript/src/codeActions/decorateProxy.ts b/typescript/src/codeActions/decorateProxy.ts index f44e15c8..61f9bc86 100644 --- a/typescript/src/codeActions/decorateProxy.ts +++ b/typescript/src/codeActions/decorateProxy.ts @@ -1,4 +1,5 @@ import { compact } from '@zardoy/utils' +import * as ts from 'typescript/lib/tsserverlibrary' import { previousGetCodeActionsResult } from '../specialCommands/handle' import { GetConfig } from '../types' import { handleFunctionRefactorEdits, processApplicableRefactors } from './functionExtractors' diff --git a/typescript/src/codeActions/extended/declareMissingAttributes.ts b/typescript/src/codeActions/extended/declareMissingAttributes.ts index 82ecbb4b..a9970453 100644 --- a/typescript/src/codeActions/extended/declareMissingAttributes.ts +++ b/typescript/src/codeActions/extended/declareMissingAttributes.ts @@ -1,3 +1,4 @@ +import * as ts from 'typescript/lib/tsserverlibrary' import { ExtendedCodeAction } from '../getCodeActions' const errorCodes = [ diff --git a/typescript/src/codeActions/extended/declareMissingProperties.ts b/typescript/src/codeActions/extended/declareMissingProperties.ts index 57ef306b..a3032178 100644 --- a/typescript/src/codeActions/extended/declareMissingProperties.ts +++ b/typescript/src/codeActions/extended/declareMissingProperties.ts @@ -1,3 +1,4 @@ +import * as ts from 'typescript/lib/tsserverlibrary' import { matchParents } from '../../utils' import { ExtendedCodeAction } from '../getCodeActions' diff --git a/typescript/src/codeActions/functionExtractors.ts b/typescript/src/codeActions/functionExtractors.ts index 5d94ae87..46e7fa7b 100644 --- a/typescript/src/codeActions/functionExtractors.ts +++ b/typescript/src/codeActions/functionExtractors.ts @@ -1,3 +1,4 @@ +import * as ts from 'typescript/lib/tsserverlibrary' import { GetConfig } from '../types' import { createDummySourceFile, diff --git a/typescript/src/codeActions/getCodeActions.ts b/typescript/src/codeActions/getCodeActions.ts index 765450dd..25166037 100644 --- a/typescript/src/codeActions/getCodeActions.ts +++ b/typescript/src/codeActions/getCodeActions.ts @@ -1,5 +1,6 @@ import { compact } from '@zardoy/utils' import { Except } from 'type-fest' +import * as ts from 'typescript/lib/tsserverlibrary' import { findChildContainingExactPosition } from '../utils' import { ApplyExtendedCodeActionResult, IpcExtendedCodeAction } from '../ipcTypes' import { GetConfig } from '../types' diff --git a/typescript/src/codeActions/improveBuiltin.ts b/typescript/src/codeActions/improveBuiltin.ts index 53b96ad2..78021af4 100644 --- a/typescript/src/codeActions/improveBuiltin.ts +++ b/typescript/src/codeActions/improveBuiltin.ts @@ -1,3 +1,4 @@ +import * as ts from 'typescript/lib/tsserverlibrary' import { GetConfig } from '../types' import { findChildContainingExactPosition } from '../utils' diff --git a/typescript/src/codeFixes.ts b/typescript/src/codeFixes.ts index e89e7d94..ef7edc84 100644 --- a/typescript/src/codeFixes.ts +++ b/typescript/src/codeFixes.ts @@ -1,4 +1,5 @@ import _ from 'lodash' +import * as ts from 'typescript/lib/tsserverlibrary' import { changeSortingOfAutoImport, getIgnoreAutoImportSetting, isAutoImportEntryShouldBeIgnored } from './adjustAutoImports' import { GetConfig } from './types' import { findChildContainingPosition, getCancellationToken, getIndentFromPos, isTsPatched, patchMethod } from './utils' diff --git a/typescript/src/codeFixes/codeFixInterface.ts b/typescript/src/codeFixes/codeFixInterface.ts index 52e0c4c3..287a80b5 100644 --- a/typescript/src/codeFixes/codeFixInterface.ts +++ b/typescript/src/codeFixes/codeFixInterface.ts @@ -1,3 +1,4 @@ +import * as ts from 'typescript/lib/tsserverlibrary' export type CodeFixInterface = { codes: number[] description?: string diff --git a/typescript/src/completionEntryDetails.ts b/typescript/src/completionEntryDetails.ts index 7126f8a3..dd96dfba 100644 --- a/typescript/src/completionEntryDetails.ts +++ b/typescript/src/completionEntryDetails.ts @@ -1,3 +1,4 @@ +import * as ts from 'typescript/lib/tsserverlibrary' import { PrevCompletionMap, PrevCompletionsAdditionalData } from './completionsAtPosition' import constructMethodSnippet from './constructMethodSnippet' import { RequestOutputTypes } from './ipcTypes' diff --git a/typescript/src/completions/addSourceDefinition.ts b/typescript/src/completions/addSourceDefinition.ts index f12b2f64..dfcc2287 100644 --- a/typescript/src/completions/addSourceDefinition.ts +++ b/typescript/src/completions/addSourceDefinition.ts @@ -1,4 +1,5 @@ import stringDedent from 'string-dedent' +import * as ts from 'typescript/lib/tsserverlibrary' import { sharedCompletionContext } from './sharedContext' export default (entries: ts.CompletionEntry[]) => { diff --git a/typescript/src/completions/additionalTypesSuggestions.ts b/typescript/src/completions/additionalTypesSuggestions.ts index 15bc1da1..325477be 100644 --- a/typescript/src/completions/additionalTypesSuggestions.ts +++ b/typescript/src/completions/additionalTypesSuggestions.ts @@ -1,3 +1,4 @@ +import * as ts from 'typescript/lib/tsserverlibrary' import { buildStringCompletion } from '../utils' export default (entries: ts.CompletionEntry[], program: ts.Program, node: ts.Node) => { diff --git a/typescript/src/completions/adjustAutoImports.ts b/typescript/src/completions/adjustAutoImports.ts index e4795b85..85fa78aa 100644 --- a/typescript/src/completions/adjustAutoImports.ts +++ b/typescript/src/completions/adjustAutoImports.ts @@ -1,4 +1,5 @@ import { sortBy } from 'rambda' +import * as ts from 'typescript/lib/tsserverlibrary' import { changeSortingOfAutoImport, getIgnoreAutoImportSetting, isAutoImportEntryShouldBeIgnored, shouldChangeSortingOfAutoImport } from '../adjustAutoImports' import { sharedCompletionContext } from './sharedContext' diff --git a/typescript/src/completions/arrayMethods.ts b/typescript/src/completions/arrayMethods.ts index 2f9c4103..1c23ba40 100644 --- a/typescript/src/completions/arrayMethods.ts +++ b/typescript/src/completions/arrayMethods.ts @@ -1,5 +1,6 @@ import pluralize from 'pluralize' import { lowerCaseFirst } from '@zardoy/utils' +import * as ts from 'typescript/lib/tsserverlibrary' import { GetConfig } from '../types' import { findChildContainingPosition, getLineTextBeforePos } from '../utils' diff --git a/typescript/src/completions/boostKeywordSuggestions.ts b/typescript/src/completions/boostKeywordSuggestions.ts index 9e85708f..6e2585ca 100644 --- a/typescript/src/completions/boostKeywordSuggestions.ts +++ b/typescript/src/completions/boostKeywordSuggestions.ts @@ -1,3 +1,4 @@ +import * as ts from 'typescript/lib/tsserverlibrary' import { boostOrAddSuggestions, findChildContainingPosition } from '../utils' export default (entries: ts.CompletionEntry[], position: number, node: ts.Node): ts.CompletionEntry[] | undefined => { diff --git a/typescript/src/completions/boostNameSuggestions.ts b/typescript/src/completions/boostNameSuggestions.ts index 7a919ef0..3f693817 100644 --- a/typescript/src/completions/boostNameSuggestions.ts +++ b/typescript/src/completions/boostNameSuggestions.ts @@ -1,3 +1,4 @@ +import * as ts from 'typescript/lib/tsserverlibrary' import { cachedResponse } from '../decorateProxy' import { boostExistingSuggestions, boostOrAddSuggestions, findChildContainingPosition } from '../utils' import { getCannotFindCodes } from '../utils/cannotFindCodes' @@ -55,7 +56,7 @@ export default ( if ([start, length].includes(undefined)) return false if (filterBlock === false) return true const diagnosticEnd = start! + length! - const { pos, end } = filterBlock! + const { pos, end } = filterBlock if (start! < pos) return false if (diagnosticEnd > end) return false return true diff --git a/typescript/src/completions/defaultHelpers.ts b/typescript/src/completions/defaultHelpers.ts index a62ea97d..652c7c1d 100644 --- a/typescript/src/completions/defaultHelpers.ts +++ b/typescript/src/completions/defaultHelpers.ts @@ -1,3 +1,4 @@ +import * as ts from 'typescript/lib/tsserverlibrary' import { approveCast } from '../utils' export default (entries: ts.CompletionEntry[], node: ts.Node, languageService: ts.LanguageService): ts.CompletionEntry[] | void => { diff --git a/typescript/src/completions/displayImportedInfo.ts b/typescript/src/completions/displayImportedInfo.ts index 777e0a36..e5181244 100644 --- a/typescript/src/completions/displayImportedInfo.ts +++ b/typescript/src/completions/displayImportedInfo.ts @@ -1,3 +1,4 @@ +import * as ts from 'typescript/lib/tsserverlibrary' import getImportPath from '../utils/getImportPath' import { sharedCompletionContext } from './sharedContext' diff --git a/typescript/src/completions/filesAutoImport.ts b/typescript/src/completions/filesAutoImport.ts index 207e16a0..dcd1104b 100644 --- a/typescript/src/completions/filesAutoImport.ts +++ b/typescript/src/completions/filesAutoImport.ts @@ -1,4 +1,5 @@ import { camelCase, pascalCase, snakeCase, constantCase } from 'change-case' +import * as ts from 'typescript/lib/tsserverlibrary' import { Configuration } from '../types' import { nodeModules } from '../utils' import { sharedCompletionContext } from './sharedContext' diff --git a/typescript/src/completions/filterJsxComponents.ts b/typescript/src/completions/filterJsxComponents.ts index 6517ece0..701ed506 100644 --- a/typescript/src/completions/filterJsxComponents.ts +++ b/typescript/src/completions/filterJsxComponents.ts @@ -1,3 +1,4 @@ +import * as ts from 'typescript/lib/tsserverlibrary' import { GetConfig } from '../types' import { getFullTypeChecker } from '../utils' @@ -49,16 +50,17 @@ export default (entries: ts.CompletionEntry[], node: ts.Node, position: number, const typeAtLocLog = {} const program = languageService.getProgram()! const typeChecker = program.getTypeChecker()! - const nowGetter = tsFull.tryGetNativePerformanceHooks()!.performance - let mark = nowGetter.now() + const performanceHooks = tsFull.tryGetNativePerformanceHooks() + const nowGetter = performanceHooks?.performance + let mark = nowGetter?.now() ?? 0 const startMark = () => { - mark = nowGetter.now() + mark = nowGetter?.now() ?? 0 } const addMark = (name: string) => { timings[name] ??= 0 - timings[name] += nowGetter.now() - mark + timings[name]! += (nowGetter?.now() ?? 0) - mark timings[`${name}Count`] ??= 0 - timings[`${name}Count`]++ + timings[`${name}Count`]!++ } const getIsEntryReactComponent = (entry: ts.CompletionEntry) => { // todo add more checks from ref https://github.com/microsoft/TypeScript/blob/e4816ed44cf9bcfe7cebb997b1f44cdb5564dac4/src/compiler/checker.ts#L30030 @@ -94,7 +96,7 @@ export default (entries: ts.CompletionEntry[], node: ts.Node, position: number, } startMark() const entryType = typeChecker.getTypeOfSymbolAtLocation(symbol, node) - typeAtLocLog[entry.name] = nowGetter.now() - mark + typeAtLocLog[entry.name] = (nowGetter?.now() ?? 0) - mark addMark('getTypeAtLocation') // todo setting to allow any? if (entryType.flags & ts.TypeFlags.Any) return false diff --git a/typescript/src/completions/fixPropertiesSorting.ts b/typescript/src/completions/fixPropertiesSorting.ts index ac8b3f56..a00a2329 100644 --- a/typescript/src/completions/fixPropertiesSorting.ts +++ b/typescript/src/completions/fixPropertiesSorting.ts @@ -1,5 +1,6 @@ import { oneOf } from '@zardoy/utils' import { partition } from 'rambda' +import * as ts from 'typescript/lib/tsserverlibrary' import { getAllPropertiesOfType } from './objectLiteralCompletions' import { sharedCompletionContext } from './sharedContext' diff --git a/typescript/src/completions/functionCompletions.ts b/typescript/src/completions/functionCompletions.ts index 81bb5fbf..8f86f87d 100644 --- a/typescript/src/completions/functionCompletions.ts +++ b/typescript/src/completions/functionCompletions.ts @@ -1,4 +1,5 @@ import { oneOf } from '@zardoy/utils' +import * as ts from 'typescript/lib/tsserverlibrary' import constructMethodSnippet from '../constructMethodSnippet' import { insertTextAfterEntry, wordRangeAtPos } from '../utils' import { sharedCompletionContext } from './sharedContext' diff --git a/typescript/src/completions/functionPropsAndMethods.ts b/typescript/src/completions/functionPropsAndMethods.ts index 2f1881ca..512639f5 100644 --- a/typescript/src/completions/functionPropsAndMethods.ts +++ b/typescript/src/completions/functionPropsAndMethods.ts @@ -1,4 +1,5 @@ import { oneOf } from '@zardoy/utils' +import * as ts from 'typescript/lib/tsserverlibrary' import { matchParents } from '../utils' import { sharedCompletionContext } from './sharedContext' diff --git a/typescript/src/completions/inKeywordCompletions.ts b/typescript/src/completions/inKeywordCompletions.ts index 30373660..691d0242 100644 --- a/typescript/src/completions/inKeywordCompletions.ts +++ b/typescript/src/completions/inKeywordCompletions.ts @@ -1,3 +1,4 @@ +import * as ts from 'typescript/lib/tsserverlibrary' import { buildStringCompletion } from '../utils' import { sharedCompletionContext } from './sharedContext' diff --git a/typescript/src/completions/indexSignatureAccess.ts b/typescript/src/completions/indexSignatureAccess.ts index 1128bd69..336abe74 100644 --- a/typescript/src/completions/indexSignatureAccess.ts +++ b/typescript/src/completions/indexSignatureAccess.ts @@ -1,3 +1,4 @@ +import * as ts from 'typescript/lib/tsserverlibrary' import { buildStringCompletion } from '../utils' import { sharedCompletionContext } from './sharedContext' diff --git a/typescript/src/completions/isGoodPositionMethodCompletion.ts b/typescript/src/completions/isGoodPositionMethodCompletion.ts index 652ceeda..2d8a9c1f 100644 --- a/typescript/src/completions/isGoodPositionMethodCompletion.ts +++ b/typescript/src/completions/isGoodPositionMethodCompletion.ts @@ -1,3 +1,4 @@ +import * as ts from 'typescript/lib/tsserverlibrary' import { GetConfig } from '../types' import { findChildContainingPosition, findChildContainingPositionMaxDepth } from '../utils' diff --git a/typescript/src/completions/isInBannedPosition.ts b/typescript/src/completions/isInBannedPosition.ts index 5a015729..2ae386a6 100644 --- a/typescript/src/completions/isInBannedPosition.ts +++ b/typescript/src/completions/isInBannedPosition.ts @@ -1,3 +1,4 @@ +import * as ts from 'typescript/lib/tsserverlibrary' export default (position: number, scriptSnapshot: ts.IScriptSnapshot, sourceFile: ts.SourceFile): boolean => { const { character } = sourceFile.getLineAndCharacterOfPosition(position) const textBeforePositionLine = scriptSnapshot?.getText(position - character, position) diff --git a/typescript/src/completions/jsdocDefault.ts b/typescript/src/completions/jsdocDefault.ts index b246fcb3..a11432d1 100644 --- a/typescript/src/completions/jsdocDefault.ts +++ b/typescript/src/completions/jsdocDefault.ts @@ -1,3 +1,4 @@ +import * as ts from 'typescript/lib/tsserverlibrary' import { findChildContainingPositionIncludingStartTrivia } from '../utils' export const getJsdocDefaultTypes = (position: number, sourceFile: ts.SourceFile, languageService: ts.LanguageService) => { diff --git a/typescript/src/completions/jsxAttributes.ts b/typescript/src/completions/jsxAttributes.ts index 3eceb5b2..a6e2a6eb 100644 --- a/typescript/src/completions/jsxAttributes.ts +++ b/typescript/src/completions/jsxAttributes.ts @@ -1,5 +1,6 @@ import { compact } from '@zardoy/utils' import escapeStringRegexp from 'escape-string-regexp' +import * as ts from 'typescript/lib/tsserverlibrary' import { Configuration } from '../../../src/configurationType' import { collectLocalSymbols } from '../utils' import { sharedCompletionContext } from './sharedContext' diff --git a/typescript/src/completions/keywordsSpace.ts b/typescript/src/completions/keywordsSpace.ts index c3df8ef4..5c6bcb91 100644 --- a/typescript/src/completions/keywordsSpace.ts +++ b/typescript/src/completions/keywordsSpace.ts @@ -1,3 +1,4 @@ +import * as ts from 'typescript/lib/tsserverlibrary' import { isTypeNode } from '../utils' export default (entries: ts.CompletionEntry[], scriptSnapshot: ts.IScriptSnapshot, position: number, node: ts.Node | undefined) => { diff --git a/typescript/src/completions/localityBonus.ts b/typescript/src/completions/localityBonus.ts index a6ed068c..2fe53cab 100644 --- a/typescript/src/completions/localityBonus.ts +++ b/typescript/src/completions/localityBonus.ts @@ -1,3 +1,4 @@ +import * as ts from 'typescript/lib/tsserverlibrary' import { sharedCompletionContext } from './sharedContext' export default (entries: ts.CompletionEntry[]) => { diff --git a/typescript/src/completions/markOrRemoveGlobalLibCompletions.ts b/typescript/src/completions/markOrRemoveGlobalLibCompletions.ts index 0dc04ee0..dd0ebe3a 100644 --- a/typescript/src/completions/markOrRemoveGlobalLibCompletions.ts +++ b/typescript/src/completions/markOrRemoveGlobalLibCompletions.ts @@ -1,5 +1,6 @@ import { compact } from '@zardoy/utils' import { basename } from 'path-browserify' +import * as ts from 'typescript/lib/tsserverlibrary' import { GetConfig } from '../types' const isLibCompletion = (symbol: ts.Symbol) => { diff --git a/typescript/src/completions/objectLiteralCompletions.ts b/typescript/src/completions/objectLiteralCompletions.ts index 23e6dbbe..c01f245d 100644 --- a/typescript/src/completions/objectLiteralCompletions.ts +++ b/typescript/src/completions/objectLiteralCompletions.ts @@ -1,3 +1,4 @@ +import * as ts from 'typescript/lib/tsserverlibrary' import { getFullTypeChecker, insertTextAfterEntry, isTs5 } from '../utils' import { sharedCompletionContext } from './sharedContext' @@ -50,7 +51,7 @@ export default (prior: ts.CompletionInfo): ts.CompletionEntry[] | void => { } if (!enableMoreVariants) continue const getQuotedSnippet = (): [string, string] => { - const quote = tsFull.getQuoteFromPreference(tsFull.getQuotePreference(node!.getSourceFile() as any, preferences)) + const quote = tsFull.getQuoteFromPreference(tsFull.getQuotePreference(node.getSourceFile() as any, preferences)) return [`: ${quote}$1${quote},`, `: ${quote}${quote},`] } const insertObjectArrayInnerText = c('objectLiteralCompletions.insertNewLine') ? '\n\t$1\n' : '$1' @@ -63,7 +64,7 @@ export default (prior: ts.CompletionInfo): ts.CompletionEntry[] | void => { [[`: {${insertObjectArrayInnerText}},`, `: {},`], isObjectCompletion], ] as const const fallbackSnippet = c('objectLiteralCompletions.fallbackVariant') ? ([': $0,', ': ,'] as const) : undefined - const insertSnippetVariant = completingStyleMap.find(([, detector]) => detector(type!, typeChecker))?.[0] ?? fallbackSnippet + const insertSnippetVariant = completingStyleMap.find(([, detector]) => detector(type, typeChecker))?.[0] ?? fallbackSnippet if (!insertSnippetVariant) continue const [insertSnippetText, insertSnippetPreview] = typeof insertSnippetVariant === 'function' ? insertSnippetVariant() : insertSnippetVariant let insertText = insertTextAfterEntry(entry.name, insertSnippetText) diff --git a/typescript/src/completions/objectLiteralHelpers.ts b/typescript/src/completions/objectLiteralHelpers.ts index 0bc22a59..98f4efa0 100644 --- a/typescript/src/completions/objectLiteralHelpers.ts +++ b/typescript/src/completions/objectLiteralHelpers.ts @@ -1,3 +1,4 @@ +import * as ts from 'typescript/lib/tsserverlibrary' import { isArrayLike } from './arrayMethods' // currently WIP diff --git a/typescript/src/completions/sharedContext.ts b/typescript/src/completions/sharedContext.ts index 4e7f67ed..68b66a5c 100644 --- a/typescript/src/completions/sharedContext.ts +++ b/typescript/src/completions/sharedContext.ts @@ -1,3 +1,4 @@ +import * as ts from 'typescript/lib/tsserverlibrary' import { PrevCompletionMap } from '../completionsAtPosition' import { GetConfig } from '../types' diff --git a/typescript/src/completions/staticHintSuggestions.ts b/typescript/src/completions/staticHintSuggestions.ts index 41b4370a..34b1d2cd 100644 --- a/typescript/src/completions/staticHintSuggestions.ts +++ b/typescript/src/completions/staticHintSuggestions.ts @@ -1,3 +1,4 @@ +import * as ts from 'typescript/lib/tsserverlibrary' import { matchParents, buildNotStrictStringCompletion } from '../utils' import { sharedCompletionContext } from './sharedContext' diff --git a/typescript/src/completions/stringTemplateType.ts b/typescript/src/completions/stringTemplateType.ts index 8e673e13..253a12fc 100644 --- a/typescript/src/completions/stringTemplateType.ts +++ b/typescript/src/completions/stringTemplateType.ts @@ -1,4 +1,5 @@ import { compact } from '@zardoy/utils' +import * as ts from 'typescript/lib/tsserverlibrary' import { buildStringCompletion } from '../utils' import { sharedCompletionContext } from './sharedContext' diff --git a/typescript/src/completions/switchCaseExcludeCovered.ts b/typescript/src/completions/switchCaseExcludeCovered.ts index c90ae5e4..2f0f5457 100644 --- a/typescript/src/completions/switchCaseExcludeCovered.ts +++ b/typescript/src/completions/switchCaseExcludeCovered.ts @@ -1,4 +1,5 @@ import { oneOf } from '@zardoy/utils' +import * as ts from 'typescript/lib/tsserverlibrary' import { cleanupEntryName } from '../utils' // implementation not even ideal, but it just works for string & enums, which are used in 99% cases diff --git a/typescript/src/completions/typecastCompletions.ts b/typescript/src/completions/typecastCompletions.ts index 1690d625..d8e996ee 100644 --- a/typescript/src/completions/typecastCompletions.ts +++ b/typescript/src/completions/typecastCompletions.ts @@ -1,3 +1,4 @@ +import * as ts from 'typescript/lib/tsserverlibrary' import { findChildContainingExactPosition } from '../utils' import { sharedCompletionContext } from './sharedContext' diff --git a/typescript/src/completionsAtPosition.ts b/typescript/src/completionsAtPosition.ts index 1b2cbd13..33da31aa 100644 --- a/typescript/src/completionsAtPosition.ts +++ b/typescript/src/completionsAtPosition.ts @@ -1,6 +1,7 @@ import _ from 'lodash' import { compact } from '@zardoy/utils' import escapeStringRegexp from 'escape-string-regexp' +import * as ts from 'typescript/lib/tsserverlibrary' import inKeywordCompletions from './completions/inKeywordCompletions' import isInBannedPosition from './completions/isInBannedPosition' import { GetConfig } from './types' diff --git a/typescript/src/constructMethodSnippet.ts b/typescript/src/constructMethodSnippet.ts index 479dbc21..7febabfe 100644 --- a/typescript/src/constructMethodSnippet.ts +++ b/typescript/src/constructMethodSnippet.ts @@ -1,4 +1,5 @@ import { compact, oneOf } from '@zardoy/utils' +import * as ts from 'typescript/lib/tsserverlibrary' import { GetConfig } from './types' import { findChildContainingExactPosition, isTypeNode } from './utils' import extractType from './utils/extractType' diff --git a/typescript/src/decorateEditsForFileRename.ts b/typescript/src/decorateEditsForFileRename.ts index 69458b20..f7590250 100644 --- a/typescript/src/decorateEditsForFileRename.ts +++ b/typescript/src/decorateEditsForFileRename.ts @@ -1,5 +1,6 @@ import { camelCase } from 'change-case' import _ from 'lodash' +import * as ts from 'typescript/lib/tsserverlibrary' import { GetConfig } from './types' import { approveCast, findChildContainingExactPosition } from './utils' diff --git a/typescript/src/decorateFindRenameLocations.ts b/typescript/src/decorateFindRenameLocations.ts index 6b6444b0..02728dd0 100644 --- a/typescript/src/decorateFindRenameLocations.ts +++ b/typescript/src/decorateFindRenameLocations.ts @@ -1,3 +1,4 @@ +import * as ts from 'typescript/lib/tsserverlibrary' import { RequestInputTypes } from './ipcTypes' import { GetConfig } from './types' import { findChildContainingExactPosition } from './utils' diff --git a/typescript/src/decorateFormatFeatures.ts b/typescript/src/decorateFormatFeatures.ts index 7b5d1fd1..a83161d8 100644 --- a/typescript/src/decorateFormatFeatures.ts +++ b/typescript/src/decorateFormatFeatures.ts @@ -1,3 +1,4 @@ +import * as ts from 'typescript/lib/tsserverlibrary' import { GetConfig } from './types' export default (proxy: ts.LanguageService, languageService: ts.LanguageService, languageServiceHost: ts.LanguageServiceHost, c: GetConfig) => { diff --git a/typescript/src/decorateLinkedEditing.ts b/typescript/src/decorateLinkedEditing.ts index e0bf4c1e..b49bc97d 100644 --- a/typescript/src/decorateLinkedEditing.ts +++ b/typescript/src/decorateLinkedEditing.ts @@ -1,3 +1,4 @@ +import * as ts from 'typescript/lib/tsserverlibrary' import { GetConfig } from './types' export default (proxy: ts.LanguageService, languageService: ts.LanguageService, languageServiceHost: ts.LanguageServiceHost, c: GetConfig) => { diff --git a/typescript/src/decorateProxy.ts b/typescript/src/decorateProxy.ts index fbe9b1b6..a8f1cf15 100644 --- a/typescript/src/decorateProxy.ts +++ b/typescript/src/decorateProxy.ts @@ -1,4 +1,5 @@ import lodashGet from 'lodash.get' +import * as ts from 'typescript/lib/tsserverlibrary' import { getCompletionsAtPosition, PrevCompletionMap, PrevCompletionsAdditionalData } from './completionsAtPosition' import { TriggerCharacterCommand } from './ipcTypes' import { findChildContainingExactPosition, nodeModules } from './utils' diff --git a/typescript/src/decorateQuickInfoAtPosition.ts b/typescript/src/decorateQuickInfoAtPosition.ts index f890538a..969adfcf 100644 --- a/typescript/src/decorateQuickInfoAtPosition.ts +++ b/typescript/src/decorateQuickInfoAtPosition.ts @@ -1,3 +1,4 @@ +import * as ts from 'typescript/lib/tsserverlibrary' import { GetConfig } from './types' import { findChildContainingExactPosition } from './utils' import getImportPath from './utils/getImportPath' diff --git a/typescript/src/decorateSignatureHelp.ts b/typescript/src/decorateSignatureHelp.ts index 475242ba..1a685f2b 100644 --- a/typescript/src/decorateSignatureHelp.ts +++ b/typescript/src/decorateSignatureHelp.ts @@ -1,3 +1,4 @@ +import * as ts from 'typescript/lib/tsserverlibrary' import { getTupleSignature } from './tupleSignature' import { GetConfig } from './types' import { findChildContainingExactPosition } from './utils' diff --git a/typescript/src/decorateWorkspaceSymbolSearch.ts b/typescript/src/decorateWorkspaceSymbolSearch.ts index d74373b1..ac110d97 100644 --- a/typescript/src/decorateWorkspaceSymbolSearch.ts +++ b/typescript/src/decorateWorkspaceSymbolSearch.ts @@ -1,3 +1,4 @@ +import * as ts from 'typescript/lib/tsserverlibrary' import { GetConfig } from './types' import { getCancellationToken } from './utils' diff --git a/typescript/src/definitions.ts b/typescript/src/definitions.ts index 57ab44ea..c4a5636f 100644 --- a/typescript/src/definitions.ts +++ b/typescript/src/definitions.ts @@ -1,4 +1,5 @@ import { join } from 'path-browserify' +import * as ts from 'typescript/lib/tsserverlibrary' import { GetConfig } from './types' import { findChildContainingExactPosition } from './utils' import { eventDefinitions } from './eventsReferences' diff --git a/typescript/src/documentHighlights.ts b/typescript/src/documentHighlights.ts index 23e62d9f..3f3e861b 100644 --- a/typescript/src/documentHighlights.ts +++ b/typescript/src/documentHighlights.ts @@ -1,3 +1,4 @@ +import * as ts from 'typescript/lib/tsserverlibrary' import { GetConfig } from './types' import { findChildContainingPosition } from './utils' diff --git a/typescript/src/dummyLanguageService.ts b/typescript/src/dummyLanguageService.ts index 982753c2..10338bd9 100644 --- a/typescript/src/dummyLanguageService.ts +++ b/typescript/src/dummyLanguageService.ts @@ -1,4 +1,5 @@ // only for basic testing, as vscode is actually using server +import * as ts from 'typescript/lib/tsserverlibrary' import { nodeModules } from './utils' export const createLanguageService = (files: Record, { useLib = true }: { useLib?: boolean } = {}, entrypoint?: string) => { diff --git a/typescript/src/eventsReferences.ts b/typescript/src/eventsReferences.ts index e7d9dfc1..83076d26 100644 --- a/typescript/src/eventsReferences.ts +++ b/typescript/src/eventsReferences.ts @@ -1,3 +1,4 @@ +import * as ts from 'typescript/lib/tsserverlibrary' import { findChildContainingExactPosition, matchParents } from './utils' export const eventDefinitions = (languageService: ts.LanguageService, fileName: string, position: number): ts.DefinitionInfoAndBoundSpan | undefined => { @@ -36,7 +37,7 @@ export const eventDefinitions = (languageService: ts.LanguageService, fileName: if (!ts.isCallExpression(upNode.parent)) return if (!ts.isPropertyAccessExpression(upNode.parent.expression)) return const method = upNode.parent.expression.name.text - if (!lookForMethods!.includes(method)) return + if (!lookForMethods.includes(method)) return const arg = upNode.parent.arguments[0] if (!arg || !ts.isStringLiteral(arg)) return const lastArgEnd = upNode.parent.arguments.at(-1)!.end @@ -53,7 +54,7 @@ export const eventDefinitions = (languageService: ts.LanguageService, fileName: } }) .filter(a => a !== undefined) - .map(a => a!) + .map(a => a) return { textSpan: ts.createTextSpanFromBounds(node.pos, node.end), definitions: defs, diff --git a/typescript/src/getPatchedNavTree.ts b/typescript/src/getPatchedNavTree.ts index 1c6ceac9..851aa6ce 100644 --- a/typescript/src/getPatchedNavTree.ts +++ b/typescript/src/getPatchedNavTree.ts @@ -1,4 +1,5 @@ import { ensureArray } from '@zardoy/utils' +import * as ts from 'typescript/lib/tsserverlibrary' import { getCancellationToken, isTs5, isTs5And5, nodeModules } from './utils' import { createLanguageService } from './dummyLanguageService' import { getCannotFindCodes } from './utils/cannotFindCodes' diff --git a/typescript/src/globals.d.ts b/typescript/src/globals.d.ts index 852d61e5..683a5f8c 100644 --- a/typescript/src/globals.d.ts +++ b/typescript/src/globals.d.ts @@ -1,8 +1,18 @@ -import('ts-expose-internals') -// prvided by esbuild at top-level of bundle in buildTsPlugin.mjs -declare let tsFull: typeof import('typescript-full') +/// -declare type FullChecker = import('typescript-full').TypeChecker -declare type FullSourceFile = import('typescript-full').SourceFile +// Runtime globals provided by esbuild banner in buildTsPlugin.mjs +// Type annotations come from explicit imports in each file +declare global { + // Runtime variable declarations - these are assigned in index.ts and libMethods.ts + // eslint-disable-next-line no-var + var ts: typeof import('typescript/lib/tsserverlibrary') + // eslint-disable-next-line no-var + var tsFull: typeof import('typescript-full') + // eslint-disable-next-line no-var + var __WEB__: boolean -declare let __WEB__: boolean + type FullChecker = import('typescript-full').TypeChecker + type FullSourceFile = import('typescript-full').SourceFile +} + +export {} diff --git a/typescript/src/index.ts b/typescript/src/index.ts index 2f2db673..ce68ffec 100644 --- a/typescript/src/index.ts +++ b/typescript/src/index.ts @@ -1,3 +1,4 @@ +import type * as tsServer from 'typescript/lib/tsserverlibrary' import { decorateLanguageService, getInitialProxy, thisPluginMarker } from './decorateProxy' import { Configuration, PluginCreateArg } from './types' @@ -7,7 +8,7 @@ const _configObj = { const updateConfigListeners: Array<() => void> = [] -const plugin = ({ typescript }: Parameters[0]) => { +const plugin = ({ typescript }: Parameters[0]) => { // eslint-disable-next-line no-multi-assign ts = tsFull = typescript as any return { @@ -52,7 +53,7 @@ const plugin = ({ typescript }: Parameters[0]) => } } -plugin satisfies ts.server.PluginModuleFactory +plugin satisfies tsServer.server.PluginModuleFactory // eslint-disable-next-line @typescript-eslint/prefer-ts-expect-error //@ts-ignore diff --git a/typescript/src/ipcTypes.ts b/typescript/src/ipcTypes.ts index 05cdd9be..16480662 100644 --- a/typescript/src/ipcTypes.ts +++ b/typescript/src/ipcTypes.ts @@ -1,3 +1,5 @@ +import type * as ts from 'typescript' + // should-not contain other typescript/* imports that use globals as is imported in extension code (src/) export const passthroughExposedApiCommands = ['getNodePath', 'getSpanOfEnclosingComment', 'getNodeAtPosition', 'getFullType'] as const diff --git a/typescript/src/libDomPatching.ts b/typescript/src/libDomPatching.ts index 7b414852..1e784595 100644 --- a/typescript/src/libDomPatching.ts +++ b/typescript/src/libDomPatching.ts @@ -1,3 +1,4 @@ +import * as ts from 'typescript/lib/tsserverlibrary' import { GetConfig } from './types' import { patchMethod } from './utils' diff --git a/typescript/src/namespaceAutoImports.ts b/typescript/src/namespaceAutoImports.ts index a70818ed..12dd91a3 100644 --- a/typescript/src/namespaceAutoImports.ts +++ b/typescript/src/namespaceAutoImports.ts @@ -1,4 +1,5 @@ import { camelCase } from 'change-case' +import * as ts from 'typescript/lib/tsserverlibrary' import { parseIgnoreSpec, findIndexOfAutoImportSpec } from './adjustAutoImports' import { GetConfig } from './types' import { getChangesTracker } from './utils' diff --git a/typescript/src/references.ts b/typescript/src/references.ts index 33245fc0..a82bfb02 100644 --- a/typescript/src/references.ts +++ b/typescript/src/references.ts @@ -1,3 +1,4 @@ +import * as ts from 'typescript/lib/tsserverlibrary' import { GetConfig } from './types' import { findChildContainingPositionMaxDepth, approveCast, findChildContainingExactPosition, matchParents } from './utils' diff --git a/typescript/src/semanticDiagnostics.ts b/typescript/src/semanticDiagnostics.ts index fe4f283e..06859b84 100644 --- a/typescript/src/semanticDiagnostics.ts +++ b/typescript/src/semanticDiagnostics.ts @@ -1,3 +1,4 @@ +import * as ts from 'typescript/lib/tsserverlibrary' import { GetConfig } from './types' export default (proxy: ts.LanguageService, languageService: ts.LanguageService, languageServiceHost: ts.LanguageServiceHost, c: GetConfig) => { diff --git a/typescript/src/specialCommands/emmet.ts b/typescript/src/specialCommands/emmet.ts index 1423fe3d..8539ffe3 100644 --- a/typescript/src/specialCommands/emmet.ts +++ b/typescript/src/specialCommands/emmet.ts @@ -1,3 +1,4 @@ +import * as ts from 'typescript/lib/tsserverlibrary' import { EmmetResult } from '../ipcTypes' import prepareTextForEmmet from './prepareTextForEmmet' diff --git a/typescript/src/specialCommands/getFullType.ts b/typescript/src/specialCommands/getFullType.ts index cf405e63..4243523d 100644 --- a/typescript/src/specialCommands/getFullType.ts +++ b/typescript/src/specialCommands/getFullType.ts @@ -1,3 +1,4 @@ +import * as ts from 'typescript/lib/tsserverlibrary' import { findChildContainingExactPosition } from '../utils' export default (languageService: ts.LanguageService, sourceFile: ts.SourceFile, position: number) => { diff --git a/typescript/src/specialCommands/handle.ts b/typescript/src/specialCommands/handle.ts index 204cf0eb..d64f9b39 100644 --- a/typescript/src/specialCommands/handle.ts +++ b/typescript/src/specialCommands/handle.ts @@ -1,4 +1,5 @@ import { compact } from '@zardoy/utils' +import * as ts from 'typescript/lib/tsserverlibrary' import { getExtendedCodeActions } from '../codeActions/getCodeActions' import { NodeAtPositionResponse, RequestInputTypes, RequestOutputTypes, TriggerCharacterCommand, triggerCharacterCommands } from '../ipcTypes' import { GetConfig } from '../types' diff --git a/typescript/src/specialCommands/objectIntoArrayConverters.ts b/typescript/src/specialCommands/objectIntoArrayConverters.ts index 741cdd4b..fc0ab4c3 100644 --- a/typescript/src/specialCommands/objectIntoArrayConverters.ts +++ b/typescript/src/specialCommands/objectIntoArrayConverters.ts @@ -1,3 +1,4 @@ +import * as ts from 'typescript/lib/tsserverlibrary' import { RequestOutputTypes } from '../ipcTypes' import { approveCast, getIndentFromPos } from '../utils' diff --git a/typescript/src/specialCommands/prepareTextForEmmet.ts b/typescript/src/specialCommands/prepareTextForEmmet.ts index 9a9f0ddd..2be39e2d 100644 --- a/typescript/src/specialCommands/prepareTextForEmmet.ts +++ b/typescript/src/specialCommands/prepareTextForEmmet.ts @@ -1,3 +1,4 @@ +import * as ts from 'typescript/lib/tsserverlibrary' import { findClosestParent } from '../utils' const getTextInner = (position: number, leftNode: ts.Node): false | string => { diff --git a/typescript/src/ts.d.ts b/typescript/src/ts.d.ts deleted file mode 100644 index ac18d879..00000000 --- a/typescript/src/ts.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -// eslint-disable-next-line @typescript-eslint/no-require-imports -import ts = require('typescript/lib/tsserverlibrary') -export = ts -export as namespace ts -declare global { - let ts: typeof import('typescript/lib/tsserverlibrary') -} diff --git a/typescript/src/tupleSignature.ts b/typescript/src/tupleSignature.ts index 42715980..ccbdacce 100644 --- a/typescript/src/tupleSignature.ts +++ b/typescript/src/tupleSignature.ts @@ -1,4 +1,5 @@ import { compact } from '@zardoy/utils' +import * as ts from 'typescript/lib/tsserverlibrary' export const getTupleSignature = (node: ts.Node, typeChecker: ts.TypeChecker) => { const originalNode = node @@ -47,7 +48,7 @@ export const getTupleSignature = (node: ts.Node, typeChecker: ts.TypeChecker) => const tupleMembers = compact( properties.map((property, i) => { if (!/^\d+$/.test(property.name)) return - const type = typeChecker.getTypeOfSymbolAtLocation(property, targetNode!) + const type = typeChecker.getTypeOfSymbolAtLocation(property, targetNode) let displayString = typeChecker.typeToString(type) const tupleLabelDeclaration: ts.NamedTupleMember | undefined = property['target']?.['tupleLabelDeclaration'] ?? diff --git a/typescript/src/types.ts b/typescript/src/types.ts index 4c9a7718..bce5b755 100644 --- a/typescript/src/types.ts +++ b/typescript/src/types.ts @@ -1,15 +1,18 @@ import { ConditionalPick } from 'type-fest' +import * as ts from 'typescript/lib/tsserverlibrary' //@ts-expect-error import type { Configuration } from '../../src/configurationType' // eslint-disable-next-line @typescript-eslint/no-redeclare export type Configuration = Configuration & { editorSuggestInsertModeReplace: boolean } type LocalConfig = Configuration & { editorSuggestInsertModeReplace: boolean } export type GetConfig = (key: T) => LocalConfig[T] -export type LanguageServiceMethodWithConfig any>> = ( + +type LanguageServiceMethods = ConditionalPick any> +export type LanguageServiceMethodWithConfig = ( c: GetConfig, - ...args: Parameters -) => ReturnType + ...args: LanguageServiceMethods[T] extends (...args: infer P) => any ? P : never +) => LanguageServiceMethods[T] extends (...args: any[]) => infer R ? R : never export type PluginCreateArg = Pick & Partial> diff --git a/typescript/src/utilTypes.ts b/typescript/src/utilTypes.ts index b9dae8f8..3c4a64f6 100644 --- a/typescript/src/utilTypes.ts +++ b/typescript/src/utilTypes.ts @@ -1,4 +1,5 @@ import { ConditionalPick } from 'type-fest' +import * as ts from 'typescript/lib/tsserverlibrary' type Tail = T extends readonly [...any[], infer U] ? U : never type GetIs = T extends (elem: any) => elem is infer T ? T : never diff --git a/typescript/src/utils.ts b/typescript/src/utils.ts index bb3f9360..d663453d 100644 --- a/typescript/src/utils.ts +++ b/typescript/src/utils.ts @@ -1,6 +1,7 @@ /* eslint-disable @typescript-eslint/no-require-imports */ import { Except, SetOptional } from 'type-fest' import * as semver from 'semver' +import * as ts from 'typescript/lib/tsserverlibrary' import type { MatchParentsType } from './utilTypes' export function findChildContainingPosition(typescript: typeof ts, sourceFile: ts.SourceFile, position: number): ts.Node | undefined { @@ -239,7 +240,7 @@ export const getCancellationToken = (languageServiceHost: ts.LanguageServiceHost } if (!cancellationToken.throwIfCancellationRequested) { cancellationToken.throwIfCancellationRequested = () => { - if (cancellationToken!.isCancellationRequested()) { + if (cancellationToken.isCancellationRequested()) { // eslint-disable-next-line @typescript-eslint/no-throw-literal throw new ts.OperationCanceledException() } diff --git a/typescript/src/utils/extractType.ts b/typescript/src/utils/extractType.ts index ef1048dd..904e1b81 100644 --- a/typescript/src/utils/extractType.ts +++ b/typescript/src/utils/extractType.ts @@ -1,3 +1,4 @@ +import * as ts from 'typescript/lib/tsserverlibrary' export default (typeChecker: ts.TypeChecker, node: ts.Node, symbol?: ts.Symbol) => { const type = symbol ? typeChecker.getTypeOfSymbol(symbol) : typeChecker.getTypeAtLocation(node) // give another chance diff --git a/typescript/src/utils/getImportPath.ts b/typescript/src/utils/getImportPath.ts index a405dd5b..fd9c8da0 100644 --- a/typescript/src/utils/getImportPath.ts +++ b/typescript/src/utils/getImportPath.ts @@ -1,3 +1,4 @@ +import * as ts from 'typescript/lib/tsserverlibrary' export default (symbol: ts.Symbol) => { const [node] = symbol.declarations ?? [] if (!node) return diff --git a/typescript/test/completions.spec.ts b/typescript/test/completions.spec.ts index 9c6f580c..d34c2024 100644 --- a/typescript/test/completions.spec.ts +++ b/typescript/test/completions.spec.ts @@ -870,9 +870,12 @@ test('In Keyword Completions', () => { const completion = pickObj(getCompletionsAtPosition(pos!, { shouldHave: true })!, 'entriesSorted', 'prevCompletionsMap') // this test is bad case of demonstrating how it can be used with string in union (IT SHOULDNT!) // but it is here to ensure this is no previous crash issue, indexes are correct when used only with objects + // Filter to only our custom in-keyword completions (kind: "string"), ignoring TS built-in property/method completions + const customEntries = completion.entriesSorted.filter(e => e.kind === ('string' as any)) + const customPrevMap = Object.entries(completion.prevCompletionsMap).filter(([, v]) => v.documentationOverride !== undefined) expect({ - ...completion, - prevCompletionsMap: Object.entries(completion.prevCompletionsMap).map(([key, v]) => [key, (v.documentationOverride as string).replaceAll('\n', ' ')]), + entriesSorted: customEntries, + prevCompletionsMap: customPrevMap.map(([key, v]) => [key, (v.documentationOverride as string).replaceAll('\n', ' ')]), }).toMatchInlineSnapshot(` { "entriesSorted": [ diff --git a/typescript/test/other.spec.ts b/typescript/test/other.spec.ts index 702560d5..b738cb28 100644 --- a/typescript/test/other.spec.ts +++ b/typescript/test/other.spec.ts @@ -1,3 +1,4 @@ +import * as ts from 'typescript/lib/tsserverlibrary' import { createRequire } from 'module' import decorateFormatFeatures from '../src/decorateFormatFeatures' import { getNavTreeItems } from '../src/getPatchedNavTree' diff --git a/typescript/test/shared.ts b/typescript/test/shared.ts index 60c8adae..33242a22 100644 --- a/typescript/test/shared.ts +++ b/typescript/test/shared.ts @@ -1,6 +1,5 @@ /* eslint-disable import/first */ beforeAll(() => { - //@ts-expect-error plugin expect it to set globallly globalThis.__WEB__ = false }) diff --git a/typescript/test/testing.ts b/typescript/test/testing.ts index 7129d987..f4d9550c 100644 --- a/typescript/test/testing.ts +++ b/typescript/test/testing.ts @@ -1,3 +1,4 @@ +import * as ts from 'typescript/lib/tsserverlibrary' import _ from 'lodash' import { getCompletionsAtPosition as getCompletionsAtPositionRaw } from '../src/completionsAtPosition' import { Configuration } from '../src/types'