volar-service-typescript 0.0.0 → 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/out/index.d.ts CHANGED
@@ -1,3 +1,11 @@
1
- import type { Service } from '@volar/language-service';
1
+ import { InjectionKey, Service } from '@volar/language-service';
2
+ import type * as ts from 'typescript/lib/tsserverlibrary';
3
+ import type { TextDocument } from 'vscode-languageserver-textdocument';
4
+ export declare const rulesInjectionKey: InjectionKey<{
5
+ sourceFile: ts.SourceFile;
6
+ languageService: ts.LanguageService;
7
+ languageServiceHost: ts.LanguageServiceHost;
8
+ getTextDocument(uri: string): TextDocument | undefined;
9
+ }>;
2
10
  declare const _default: () => Service;
3
11
  export default _default;
package/out/index.js CHANGED
@@ -23,6 +23,8 @@ var __importStar = (this && this.__importStar) || function (mod) {
23
23
  return result;
24
24
  };
25
25
  Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.rulesInjectionKey = void 0;
27
+ const language_service_1 = require("@volar/language-service");
26
28
  const semver = __importStar(require("semver"));
27
29
  const vscode = __importStar(require("vscode-languageserver-protocol"));
28
30
  const shared_1 = require("./shared");
@@ -53,6 +55,7 @@ const signatureHelp = __importStar(require("./services/signatureHelp"));
53
55
  const typeDefinitions = __importStar(require("./services/typeDefinition"));
54
56
  const workspaceSymbols = __importStar(require("./services/workspaceSymbol"));
55
57
  const tsconfig = __importStar(require("./services/tsconfig"));
58
+ exports.rulesInjectionKey = Symbol();
56
59
  exports.default = () => (contextOrNull, modules) => {
57
60
  const jsDocTriggerCharacter = '*';
58
61
  const directiveCommentTriggerCharacter = '@';
@@ -72,7 +75,7 @@ exports.default = () => (contextOrNull, modules) => {
72
75
  }
73
76
  const context = contextOrNull;
74
77
  if (!modules?.typescript) {
75
- console.warn('[volar-service-typescript] context.typescript not found, @volar/typescript plugin disabled. Make sure you have provide tsdk in language client.');
78
+ console.warn('[volar-service-typescript] context.typescript not found, volar-service-typescript is disabled. Make sure you have provide tsdk in language client.');
76
79
  return {};
77
80
  }
78
81
  const ts = modules.typescript;
@@ -140,35 +143,43 @@ exports.default = () => (contextOrNull, modules) => {
140
143
  const doFormatting = formatting.register(syntacticCtx);
141
144
  const getFoldingRanges = foldingRanges.register(syntacticCtx);
142
145
  return {
146
+ rules: {
147
+ provide: {
148
+ [exports.rulesInjectionKey](document, type) {
149
+ if ((0, shared_1.isTsDocument)(document)) {
150
+ if (type === language_service_1.RuleType.Format || type === language_service_1.RuleType.Syntax) {
151
+ prepareSyntacticService(document);
152
+ const sourceFile = syntacticCtx.typescript.languageService.getProgram()?.getSourceFile(syntacticHostCtx.fileName);
153
+ if (sourceFile) {
154
+ return {
155
+ sourceFile,
156
+ languageService: syntacticCtx.typescript.languageService,
157
+ languageServiceHost: syntacticCtx.typescript.languageServiceHost,
158
+ getTextDocument: syntacticCtx.getTextDocument,
159
+ };
160
+ }
161
+ }
162
+ else {
163
+ const sourceFile = semanticCtx.typescript.languageService.getProgram()?.getSourceFile(context.env.uriToFileName(document.uri));
164
+ if (sourceFile) {
165
+ return {
166
+ sourceFile,
167
+ languageService: semanticCtx.typescript.languageService,
168
+ languageServiceHost: semanticCtx.typescript.languageServiceHost,
169
+ getTextDocument: semanticCtx.getTextDocument,
170
+ };
171
+ }
172
+ }
173
+ }
174
+ },
175
+ },
176
+ },
143
177
  ...triggerCharacters,
144
178
  triggerCharacters: [
145
179
  ...basicTriggerCharacters,
146
180
  jsDocTriggerCharacter,
147
181
  directiveCommentTriggerCharacter,
148
182
  ],
149
- resolveRuleContext(ruleCtx, type) {
150
- if ((0, shared_1.isTsDocument)(ruleCtx.document)) {
151
- let sourceFile;
152
- if (type === 'format' || type === 'syntax') {
153
- prepareSyntacticService(ruleCtx.document);
154
- sourceFile = syntacticCtx.typescript.languageService.getProgram()?.getSourceFile(syntacticHostCtx.fileName);
155
- }
156
- else {
157
- sourceFile = semanticCtx.typescript.languageService.getProgram()?.getSourceFile(context.env.uriToFileName(ruleCtx.document.uri));
158
- }
159
- if (sourceFile) {
160
- ruleCtx.typescript = {
161
- sourceFile,
162
- getTextDocument: syntacticCtx.getTextDocument,
163
- ...syntacticCtx.typescript,
164
- };
165
- }
166
- else {
167
- console.warn('[volar-service-typescript] sourceFile not found', ruleCtx.document.uri);
168
- }
169
- }
170
- return ruleCtx;
171
- },
172
183
  provideAutoInsertionEdit(document, position, ctx) {
173
184
  if ((document.languageId === 'javascriptreact' || document.languageId === 'typescriptreact')
174
185
  && ctx.lastChange.text.endsWith('>')) {
@@ -1,4 +1,4 @@
1
1
  import type * as ts from 'typescript/lib/tsserverlibrary';
2
2
  export declare namespace SymbolKind {
3
- function fromProtocolScriptElementKind(kind: ts.ScriptElementKind): 2 | 5 | 10 | 22 | 11 | 6 | 7 | 13 | 12 | 9 | 26 | 15;
3
+ function fromProtocolScriptElementKind(kind: ts.ScriptElementKind): 2 | 5 | 6 | 7 | 9 | 10 | 11 | 12 | 13 | 15 | 22 | 26;
4
4
  }
package/package.json CHANGED
@@ -1,10 +1,9 @@
1
1
  {
2
2
  "name": "volar-service-typescript",
3
- "version": "0.0.0",
3
+ "version": "0.0.1",
4
4
  "main": "out/index.js",
5
5
  "license": "MIT",
6
6
  "files": [
7
- "rules.d.ts",
8
7
  "out/**/*.js",
9
8
  "out/**/*.d.ts"
10
9
  ],
@@ -28,5 +27,5 @@
28
27
  "peerDependencies": {
29
28
  "@volar/language-service": "*"
30
29
  },
31
- "gitHead": "1011561ac4bbf79c53c3b80c27692569bf861519"
30
+ "gitHead": "5bf5152f076f25cb1ddbc7aa6978a8d1c7009fd6"
32
31
  }
package/rules.d.ts DELETED
@@ -1,13 +0,0 @@
1
- import type * as ts from 'typescript/lib/tsserverlibrary';
2
- import type { TextDocument } from 'vscode-languageserver-textdocument';
3
-
4
- declare module '@volar/language-service' {
5
- interface RuleContext {
6
- typescript?: {
7
- sourceFile: ts.SourceFile;
8
- getTextDocument(uri: string): TextDocument | undefined;
9
- languageService: ts.LanguageService;
10
- languageServiceHost: ts.LanguageServiceHost;
11
- }
12
- }
13
- }