@typespec/compiler 1.5.0-dev.0 → 1.5.0-dev.2

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.
Files changed (36) hide show
  1. package/dist/manifest.js +2 -2
  2. package/dist/src/server/compile-service.d.ts +6 -6
  3. package/dist/src/server/compile-service.d.ts.map +1 -1
  4. package/dist/src/server/compile-service.js +46 -36
  5. package/dist/src/server/compile-service.js.map +1 -1
  6. package/dist/src/server/constants.d.ts +5 -4
  7. package/dist/src/server/constants.d.ts.map +1 -1
  8. package/dist/src/server/constants.js +5 -4
  9. package/dist/src/server/constants.js.map +1 -1
  10. package/dist/src/server/diagnostics.d.ts.map +1 -1
  11. package/dist/src/server/diagnostics.js +23 -8
  12. package/dist/src/server/diagnostics.js.map +1 -1
  13. package/dist/src/server/file-service.d.ts +4 -1
  14. package/dist/src/server/file-service.d.ts.map +1 -1
  15. package/dist/src/server/file-service.js +30 -0
  16. package/dist/src/server/file-service.js.map +1 -1
  17. package/dist/src/server/server-compile-manager.d.ts +55 -0
  18. package/dist/src/server/server-compile-manager.d.ts.map +1 -0
  19. package/dist/src/server/server-compile-manager.js +269 -0
  20. package/dist/src/server/server-compile-manager.js.map +1 -0
  21. package/dist/src/server/server.js +1 -0
  22. package/dist/src/server/server.js.map +1 -1
  23. package/dist/src/server/serverlib.d.ts.map +1 -1
  24. package/dist/src/server/serverlib.js +127 -34
  25. package/dist/src/server/serverlib.js.map +1 -1
  26. package/dist/src/server/types.d.ts +7 -3
  27. package/dist/src/server/types.d.ts.map +1 -1
  28. package/dist/src/server/types.js.map +1 -1
  29. package/dist/src/server/update-manager.d.ts +23 -4
  30. package/dist/src/server/update-manager.d.ts.map +1 -1
  31. package/dist/src/server/update-manager.js +110 -18
  32. package/dist/src/server/update-manager.js.map +1 -1
  33. package/dist/src/testing/test-server-host.d.ts.map +1 -1
  34. package/dist/src/testing/test-server-host.js +15 -1
  35. package/dist/src/testing/test-server-host.js.map +1 -1
  36. package/package.json +1 -1
package/dist/manifest.js CHANGED
@@ -1,4 +1,4 @@
1
1
  export default {
2
- "version": "1.5.0-dev.0",
3
- "commit": "f971ed2598c5bcf24776119f8dc24131ebc070c9"
2
+ "version": "1.5.0-dev.2",
3
+ "commit": "d72c63e10dc350d6b9dc66d26a20f81b9bfd63f7"
4
4
  };
@@ -5,7 +5,9 @@ import type { CompilerHost, TypeSpecScriptNode } from "../core/types.js";
5
5
  import { ClientConfigProvider } from "./client-config-provider.js";
6
6
  import { FileService } from "./file-service.js";
7
7
  import { FileSystemCache } from "./file-system-cache.js";
8
+ import { ServerCompileOptions } from "./server-compile-manager.js";
8
9
  import { CompileResult, ServerHost, ServerLog } from "./types.js";
10
+ import { UpdateManger, UpdateType } from "./update-manager.js";
9
11
  /**
10
12
  * Service managing compilation/caching of different TypeSpec projects
11
13
  */
@@ -19,10 +21,7 @@ export interface CompileService {
19
21
  * @param document The document to compile. This is not necessarily the entrypoint, compile will try to guess which entrypoint to compile to include this one.
20
22
  * @returns the compiled result or undefined if compilation was aborted.
21
23
  */
22
- compile(document: TextDocument | TextDocumentIdentifier, additionalOptions?: CompilerOptions, compileOptions?: {
23
- bypassCache?: boolean;
24
- trackAction?: boolean;
25
- }): Promise<CompileResult | undefined>;
24
+ compile(document: TextDocument | TextDocumentIdentifier, additionalOptions: CompilerOptions | undefined, serverCompileOptions: ServerCompileOptions): Promise<CompileResult | undefined>;
26
25
  /**
27
26
  * Load the AST for the given document.
28
27
  * @param document The document to load the AST for.
@@ -33,7 +32,7 @@ export interface CompileService {
33
32
  * It will recompile after a debounce timer so we don't recompile on every keystroke.
34
33
  * @param document Document that changed.
35
34
  */
36
- notifyChange(document: TextDocument): void;
35
+ notifyChange(document: TextDocument | TextDocumentIdentifier, updateType: UpdateType): void;
37
36
  on(event: "compileEnd", listener: (result: CompileResult) => void): void;
38
37
  getMainFileForDocument(path: string): Promise<string>;
39
38
  }
@@ -42,8 +41,9 @@ export interface CompileServiceOptions {
42
41
  readonly fileService: FileService;
43
42
  readonly serverHost: ServerHost;
44
43
  readonly compilerHost: CompilerHost;
44
+ readonly updateManager: UpdateManger;
45
45
  readonly log: (log: ServerLog) => void;
46
46
  readonly clientConfigsProvider?: ClientConfigProvider;
47
47
  }
48
- export declare function createCompileService({ compilerHost, serverHost, fileService, fileSystemCache, log, clientConfigsProvider, }: CompileServiceOptions): CompileService;
48
+ export declare function createCompileService({ compilerHost, serverHost, fileService, fileSystemCache, updateManager, log, clientConfigsProvider, }: CompileServiceOptions): CompileService;
49
49
  //# sourceMappingURL=compile-service.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"compile-service.d.ts","sourceRoot":"","sources":["../../../src/server/compile-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAA6B,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC1F,OAAO,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;AAalE,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAIrD,OAAO,KAAK,EACV,YAAY,EAEZ,kBAAkB,EACnB,MAAM,kBAAkB,CAAC;AAK1B,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAEnE,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAEzD,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAGlE;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B;;;;;;;;OAQG;IACH,OAAO,CACL,QAAQ,EAAE,YAAY,GAAG,sBAAsB,EAC/C,iBAAiB,CAAC,EAAE,eAAe,EACnC,cAAc,CAAC,EAAE;QACf,WAAW,CAAC,EAAE,OAAO,CAAC;QACtB,WAAW,CAAC,EAAE,OAAO,CAAC;KACvB,GACA,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC,CAAC;IAEtC;;;OAGG;IACH,SAAS,CAAC,QAAQ,EAAE,YAAY,GAAG,sBAAsB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAExF;;;;OAIG;IACH,YAAY,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI,CAAC;IAE3C,EAAE,CAAC,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,CAAC,MAAM,EAAE,aAAa,KAAK,IAAI,GAAG,IAAI,CAAC;IAEzE,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CACvD;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,eAAe,EAAE,eAAe,CAAC;IAC1C,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC;IAClC,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;IAChC,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC;IACpC,QAAQ,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,SAAS,KAAK,IAAI,CAAC;IACvC,QAAQ,CAAC,qBAAqB,CAAC,EAAE,oBAAoB,CAAC;CACvD;AAED,wBAAgB,oBAAoB,CAAC,EACnC,YAAY,EACZ,UAAU,EACV,WAAW,EACX,eAAe,EACf,GAAG,EACH,qBAAqB,GACtB,EAAE,qBAAqB,GAAG,cAAc,CAkTxC"}
1
+ {"version":3,"file":"compile-service.d.ts","sourceRoot":"","sources":["../../../src/server/compile-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAA6B,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC1F,OAAO,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;AAalE,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAGrD,OAAO,KAAK,EACV,YAAY,EAEZ,kBAAkB,EACnB,MAAM,kBAAkB,CAAC;AAK1B,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAEnE,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAGL,oBAAoB,EACrB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAClE,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAE/D;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B;;;;;;;;OAQG;IACH,OAAO,CACL,QAAQ,EAAE,YAAY,GAAG,sBAAsB,EAC/C,iBAAiB,EAAE,eAAe,GAAG,SAAS,EAC9C,oBAAoB,EAAE,oBAAoB,GACzC,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC,CAAC;IAEtC;;;OAGG;IACH,SAAS,CAAC,QAAQ,EAAE,YAAY,GAAG,sBAAsB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAExF;;;;OAIG;IACH,YAAY,CAAC,QAAQ,EAAE,YAAY,GAAG,sBAAsB,EAAE,UAAU,EAAE,UAAU,GAAG,IAAI,CAAC;IAE5F,EAAE,CAAC,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,CAAC,MAAM,EAAE,aAAa,KAAK,IAAI,GAAG,IAAI,CAAC;IAEzE,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CACvD;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,eAAe,EAAE,eAAe,CAAC;IAC1C,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC;IAClC,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;IAChC,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC;IACpC,QAAQ,CAAC,aAAa,EAAE,YAAY,CAAC;IACrC,QAAQ,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,SAAS,KAAK,IAAI,CAAC;IACvC,QAAQ,CAAC,qBAAqB,CAAC,EAAE,oBAAoB,CAAC;CACvD;AAED,wBAAgB,oBAAoB,CAAC,EACnC,YAAY,EACZ,UAAU,EACV,WAAW,EACX,eAAe,EACf,aAAa,EACb,GAAG,EACH,qBAAqB,GACtB,EAAE,qBAAqB,GAAG,cAAc,CAwTxC"}
@@ -1,25 +1,21 @@
1
1
  import { DiagnosticSeverity, Range } from "vscode-languageserver";
2
- import { defaultConfig, findTypeSpecConfigPath, loadTypeSpecConfigFile, } from "../config/config-loader.js";
2
+ import { defaultConfig, findTypeSpecConfigPath, loadTypeSpecConfigFile, TypeSpecConfigFilename, } from "../config/config-loader.js";
3
3
  import { resolveOptionsFromConfig } from "../config/config-to-options.js";
4
- import { compilerAssert } from "../core/diagnostics.js";
5
4
  import { builtInLinterRule_UnusedTemplateParameter } from "../core/linter-rules/unused-template-parameter.rule.js";
6
5
  import { builtInLinterRule_UnusedUsing } from "../core/linter-rules/unused-using.rule.js";
7
6
  import { builtInLinterLibraryName } from "../core/linter.js";
8
7
  import { formatDiagnostic } from "../core/logger/console-sink.js";
9
8
  import { parse } from "../core/parser.js";
10
- import { getDirectoryPath, joinPaths } from "../core/path-utils.js";
11
- import { compile as compileProgram } from "../core/program.js";
9
+ import { getBaseFileName, getDirectoryPath, joinPaths } from "../core/path-utils.js";
12
10
  import { doIO, loadFile } from "../utils/io.js";
13
- import { resolveTspMain } from "../utils/misc.js";
11
+ import { distinctArray, resolveTspMain } from "../utils/misc.js";
14
12
  import { getLocationInYamlScript } from "../yaml/diagnostics.js";
15
13
  import { parseYaml } from "../yaml/parser.js";
16
14
  import { serverOptions } from "./constants.js";
17
- import { trackActionFunc } from "./server-track-action-task.js";
18
- import { UpdateManger } from "./update-manager.js";
19
- export function createCompileService({ compilerHost, serverHost, fileService, fileSystemCache, log, clientConfigsProvider, }) {
20
- const oldPrograms = new Map();
15
+ import { ServerCompileManager, } from "./server-compile-manager.js";
16
+ export function createCompileService({ compilerHost, serverHost, fileService, fileSystemCache, updateManager, log, clientConfigsProvider, }) {
21
17
  const eventListeners = new Map();
22
- const updated = new UpdateManger((document) => compile(document));
18
+ const compileManager = new ServerCompileManager(updateManager, compilerHost, log);
23
19
  let configFilePath;
24
20
  return { compile, getScript, on, notifyChange, getMainFileForDocument };
25
21
  function on(event, listener) {
@@ -28,11 +24,11 @@ export function createCompileService({ compilerHost, serverHost, fileService, fi
28
24
  function notify(event, ...args) {
29
25
  const listener = eventListeners.get(event);
30
26
  if (listener) {
31
- listener(...args);
27
+ void listener(...args);
32
28
  }
33
29
  }
34
- function notifyChange(document) {
35
- updated.scheduleUpdate(document);
30
+ function notifyChange(document, updateType) {
31
+ updateManager.scheduleUpdate(document, updateType);
36
32
  }
37
33
  /**
38
34
  * Compile the given document.
@@ -43,9 +39,16 @@ export function createCompileService({ compilerHost, serverHost, fileService, fi
43
39
  * @param document The document to compile. tsp file that is open or not opened in workspace.
44
40
  * @returns see {@link CompileResult} for more details.
45
41
  */
46
- async function compile(document, additionalOptions, runOptions) {
42
+ async function compile(document, additionalOptions, serverCompileOptions) {
47
43
  const path = await fileService.getPath(document);
44
+ const pathBaseName = getBaseFileName(path);
45
+ if (!path.endsWith(".tsp") && pathBaseName !== TypeSpecConfigFilename) {
46
+ return undefined;
47
+ }
48
48
  const mainFile = await getMainFileForDocument(path);
49
+ if (!mainFile.endsWith(".tsp")) {
50
+ return undefined;
51
+ }
49
52
  const config = await getConfig(mainFile);
50
53
  configFilePath = config.filename;
51
54
  log({ level: "debug", message: `config resolved`, detail: config });
@@ -61,8 +64,21 @@ export function createCompileService({ compilerHost, serverHost, fileService, fi
61
64
  // otherwise, obtain the `typespec.lsp.emit` configuration from clientConfigsProvider
62
65
  if (additionalOptions?.emit === undefined) {
63
66
  const configEmits = clientConfigsProvider?.config?.lsp?.emit;
67
+ const CONFIG_DEFAULTS = "<config:defaults>";
64
68
  if (configEmits) {
65
- options.emit = configEmits;
69
+ if (configEmits.find((e) => e === CONFIG_DEFAULTS)) {
70
+ // keep the emits in tspconfig only when user configs "<config:defaults>", and append other emits from vscode settings if there is any
71
+ options.emit = distinctArray([...(options.emit ?? []), ...configEmits.filter((e) => e !== CONFIG_DEFAULTS)], (s) => s);
72
+ }
73
+ else {
74
+ // use the configured emits if no "<config:defaults>" is found
75
+ options.emit = configEmits;
76
+ }
77
+ }
78
+ else {
79
+ // by default, exclude emits from compile which are not useful in most case but may cause perf issue
80
+ // User can set ['<config:defaults>'] to opt-in
81
+ options.emit = [];
66
82
  }
67
83
  }
68
84
  // add linter rule for unused using if user didn't configure it explicitly
@@ -81,43 +97,37 @@ export function createCompileService({ compilerHost, serverHost, fileService, fi
81
97
  options.linterRuleSet.enable ??= {};
82
98
  options.linterRuleSet.enable[unusedTemplateParameterRule] = true;
83
99
  }
84
- log({ level: "debug", message: `compiler options resolved`, detail: options });
85
- if (!fileService.upToDate(document)) {
100
+ const isCancelledOrOutOfDate = () => {
101
+ return serverCompileOptions.isCancelled?.() || !fileService.upToDate(document);
102
+ };
103
+ if (isCancelledOrOutOfDate()) {
86
104
  return undefined;
87
105
  }
88
- let program;
106
+ let tracker;
89
107
  try {
90
- program = await compileProgram(runOptions?.trackAction
91
- ? {
92
- ...compilerHost,
93
- logSink: {
94
- log: compilerHost.logSink.log,
95
- getPath: compilerHost.logSink.getPath,
96
- trackAction: (message, finalMessage, action) => trackActionFunc(serverHost.log, message, finalMessage, action),
97
- },
98
- }
99
- : compilerHost, mainFile, options, runOptions?.bypassCache ? undefined : oldPrograms.get(mainFile));
100
- oldPrograms.set(mainFile, program);
101
- if (!fileService.upToDate(document)) {
108
+ tracker = await compileManager.compile(mainFile, options, serverCompileOptions);
109
+ let program = await tracker.getCompileResult();
110
+ if (isCancelledOrOutOfDate()) {
102
111
  return undefined;
103
112
  }
104
- if (mainFile !== path && !program.sourceFiles.has(path)) {
113
+ if (mainFile !== path &&
114
+ !program.sourceFiles.has(path) &&
115
+ pathBaseName !== TypeSpecConfigFilename) {
105
116
  // If the file that changed wasn't imported by anything from the main
106
117
  // file, retry using the file itself as the main file.
107
118
  log({
108
119
  level: "debug",
109
120
  message: `target file was not included in compiling, try to compile ${path} as main file directly`,
110
121
  });
111
- program = await compileProgram(compilerHost, path, options, oldPrograms.get(path));
112
- oldPrograms.set(path, program);
122
+ tracker = await compileManager.compile(path, options, serverCompileOptions);
123
+ program = await tracker.getCompileResult();
113
124
  }
114
- if (!fileService.upToDate(document)) {
125
+ if (isCancelledOrOutOfDate()) {
115
126
  return undefined;
116
127
  }
117
128
  const doc = "version" in document ? document : serverHost.getOpenDocumentByURL(document.uri);
118
129
  const script = program.sourceFiles.get(path);
119
- compilerAssert(script, "Failed to get script.");
120
- const result = { program, document: doc, script, optionsFromConfig };
130
+ const result = { program, document: doc, script, optionsFromConfig, tracker };
121
131
  notify("compileEnd", result);
122
132
  return result;
123
133
  }
@@ -1 +1 @@
1
- {"version":3,"file":"compile-service.js","sourceRoot":"","sources":["../../../src/server/compile-service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"compile-service.js","sourceRoot":"","sources":["../../../src/server/compile-service.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,11 @@
1
1
  import { CompilerOptions } from "../core/options.js";
2
2
  export declare const serverOptions: CompilerOptions;
3
- /**
4
- * Time in milliseconds to wait after a file change before recompiling.
5
- */
6
- export declare const UPDATE_DEBOUNCE_TIME = 200;
7
3
  export declare const Commands: {
8
4
  APPLY_CODE_FIX: string;
9
5
  };
6
+ /**
7
+ * Environment variables to enable some logging when needed
8
+ */
9
+ export declare const ENABLE_SERVER_COMPILE_LOGGING = "ENABLE_SERVER_COMPILE_LOGGING";
10
+ export declare const ENABLE_UPDATE_MANAGER_LOGGING = "ENABLE_UPDATE_MANAGER_LOGGING";
10
11
  //# sourceMappingURL=constants.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/server/constants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAErD,eAAO,MAAM,aAAa,EAAE,eAO3B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,oBAAoB,MAAM,CAAC;AAExC,eAAO,MAAM,QAAQ;;CAEpB,CAAC"}
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/server/constants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAErD,eAAO,MAAM,aAAa,EAAE,eAO3B,CAAC;AAEF,eAAO,MAAM,QAAQ;;CAEpB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,6BAA6B,kCAAkC,CAAC;AAC7E,eAAO,MAAM,6BAA6B,kCAAkC,CAAC"}
@@ -6,11 +6,12 @@ export const serverOptions = {
6
6
  docs: true,
7
7
  },
8
8
  };
9
- /**
10
- * Time in milliseconds to wait after a file change before recompiling.
11
- */
12
- export const UPDATE_DEBOUNCE_TIME = 200;
13
9
  export const Commands = {
14
10
  APPLY_CODE_FIX: "typespec.applyCodeFix",
15
11
  };
12
+ /**
13
+ * Environment variables to enable some logging when needed
14
+ */
15
+ export const ENABLE_SERVER_COMPILE_LOGGING = "ENABLE_SERVER_COMPILE_LOGGING";
16
+ export const ENABLE_UPDATE_MANAGER_LOGGING = "ENABLE_UPDATE_MANAGER_LOGGING";
16
17
  //# sourceMappingURL=constants.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/server/constants.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,aAAa,GAAoB;IAC5C,MAAM,EAAE,IAAI;IACZ,eAAe,EAAE,IAAI;IACrB,YAAY,EAAE;QACZ,QAAQ,EAAE,IAAI;QACd,IAAI,EAAE,IAAI;KACX;CACF,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,GAAG,CAAC;AAExC,MAAM,CAAC,MAAM,QAAQ,GAAG;IACtB,cAAc,EAAE,uBAAuB;CACxC,CAAC"}
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/server/constants.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,aAAa,GAAoB;IAC5C,MAAM,EAAE,IAAI;IACZ,eAAe,EAAE,IAAI;IACrB,YAAY,EAAE;QACZ,QAAQ,EAAE,IAAI;QACd,IAAI,EAAE,IAAI;KACX;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,QAAQ,GAAG;IACtB,cAAc,EAAE,uBAAuB;CACxC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAG,+BAA+B,CAAC;AAC7E,MAAM,CAAC,MAAM,6BAA6B,GAAG,+BAA+B,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"diagnostics.d.ts","sourceRoot":"","sources":["../../../src/server/diagnostics.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAGV,UAAU,IAAI,YAAY,EAC3B,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;AAOvE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAElD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGrD,kJAAkJ;AAClJ,wBAAgB,sBAAsB,CACpC,WAAW,EAAE,WAAW,EACxB,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,YAAY,EACtB,UAAU,EAAE,UAAU,GACrB,CAAC,YAAY,EAAE,YAAY,CAAC,EAAE,CAsDhC"}
1
+ {"version":3,"file":"diagnostics.d.ts","sourceRoot":"","sources":["../../../src/server/diagnostics.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAGV,UAAU,IAAI,YAAY,EAC3B,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;AAOvE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAElD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGrD,kJAAkJ;AAClJ,wBAAgB,sBAAsB,CACpC,WAAW,EAAE,WAAW,EACxB,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,YAAY,EACtB,UAAU,EAAE,UAAU,GACrB,CAAC,YAAY,EAAE,YAAY,CAAC,EAAE,CA0DhC"}
@@ -4,7 +4,7 @@ import { getTypeName } from "../core/helpers/type-name-utils.js";
4
4
  import { isDefined } from "../utils/misc.js";
5
5
  /** Convert TypeSpec Diagnostic to Lsp diagnostic. Each TypeSpec diagnostic could produce multiple lsp ones when it involve multiple locations. */
6
6
  export function convertDiagnosticToLsp(fileService, program, document, diagnostic) {
7
- const root = getVSLocation(getSourceLocation(diagnostic.target, { locateId: true }), document);
7
+ const root = getVSLocation(fileService, getSourceLocation(diagnostic.target, { locateId: true }), document);
8
8
  if (root === undefined || !fileService.upToDate(root.document))
9
9
  return [];
10
10
  const instantiationNodes = getDiagnosticTemplateInstantitationTrace(diagnostic.target);
@@ -12,7 +12,7 @@ export function convertDiagnosticToLsp(fileService, program, document, diagnosti
12
12
  const relatedDiagnostics = [];
13
13
  if (instantiationNodes.length > 0) {
14
14
  const items = instantiationNodes
15
- .map((node) => getVSLocationWithTypeInfo(program, node, document))
15
+ .map((node) => getVSLocationWithTypeInfo(program, fileService, node, document))
16
16
  .filter(isDefined);
17
17
  for (const location of items) {
18
18
  relatedInformation.push({
@@ -61,9 +61,24 @@ function createLspDiagnostic(diag) {
61
61
  ...diag,
62
62
  };
63
63
  }
64
- function getDocumentForLocation(location, currentDocument) {
64
+ function getDocumentForLocation(fileService, location, currentDocument) {
65
65
  if (location?.file) {
66
- return location.file.document;
66
+ const doc = location.file.document;
67
+ if (doc) {
68
+ return doc;
69
+ }
70
+ // Since we are using cache between compilations, it's possible that when the result is used as cache, the file is actually opened or closed,
71
+ // so need to do some handling for the open case here. No special handling for the closed case which will just be ignored by client
72
+ const opened = fileService.getOpenDocument(location.file.path);
73
+ if (opened) {
74
+ // the doc is opened now and return it if it's not out-of-date
75
+ // compared to when it was first opened.
76
+ const initVersion = fileService.getOpenDocumentInitVersion(opened.uri);
77
+ if (opened.version === initVersion) {
78
+ return opened;
79
+ }
80
+ }
81
+ return undefined;
67
82
  }
68
83
  else {
69
84
  // https://github.com/microsoft/language-server-protocol/issues/256
@@ -74,10 +89,10 @@ function getDocumentForLocation(location, currentDocument) {
74
89
  return currentDocument;
75
90
  }
76
91
  }
77
- function getVSLocation(location, currentDocument) {
92
+ function getVSLocation(fileService, location, currentDocument) {
78
93
  if (location === undefined)
79
94
  return undefined;
80
- const document = getDocumentForLocation(location, currentDocument);
95
+ const document = getDocumentForLocation(fileService, location, currentDocument);
81
96
  if (!document) {
82
97
  return undefined;
83
98
  }
@@ -85,8 +100,8 @@ function getVSLocation(location, currentDocument) {
85
100
  const end = document.positionAt(location?.end ?? 0);
86
101
  return { range: { start, end }, document };
87
102
  }
88
- function getVSLocationWithTypeInfo(program, node, document) {
89
- const location = getVSLocation(getSourceLocation(node, { locateId: true }), document);
103
+ function getVSLocationWithTypeInfo(program, fileService, node, document) {
104
+ const location = getVSLocation(fileService, getSourceLocation(node, { locateId: true }), document);
90
105
  if (location === undefined)
91
106
  return undefined;
92
107
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"diagnostics.js","sourceRoot":"","sources":["../../../src/server/diagnostics.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"diagnostics.js","sourceRoot":"","sources":["../../../src/server/diagnostics.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { TextDocumentIdentifier } from "vscode-languageserver";
1
+ import { TextDocumentChangeEvent, TextDocumentIdentifier } from "vscode-languageserver";
2
2
  import { TextDocument } from "vscode-languageserver-textdocument";
3
3
  import { ServerHost } from "./types.js";
4
4
  /**
@@ -10,6 +10,9 @@ export interface FileService {
10
10
  getPath(document: TextDocument | TextDocumentIdentifier): Promise<string>;
11
11
  getOpenDocument(path: string): TextDocument | undefined;
12
12
  getURL(path: string): string;
13
+ getOpenDocumentInitVersion(uri: string): number | undefined;
14
+ notifyDocumentOpened(arg: TextDocumentChangeEvent<TextDocument>): void;
15
+ notifyDocumentClosed(arg: TextDocumentChangeEvent<TextDocument>): void;
13
16
  }
14
17
  export interface FileServiceOptions {
15
18
  serverHost: ServerHost;
@@ -1 +1 @@
1
- {"version":3,"file":"file-service.d.ts","sourceRoot":"","sources":["../../../src/server/file-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;AAElE,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAExC;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,QAAQ,EAAE,YAAY,GAAG,sBAAsB,GAAG,OAAO,CAAC;IACnE,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAChD,OAAO,CAAC,QAAQ,EAAE,YAAY,GAAG,sBAAsB,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC1E,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS,CAAC;IACxD,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;CAC9B;AAED,MAAM,WAAW,kBAAkB;IACjC,UAAU,EAAE,UAAU,CAAC;CACxB;AAED,wBAAgB,iBAAiB,CAAC,EAAE,UAAU,EAAE,EAAE,kBAAkB,GAAG,WAAW,CAsDjF"}
1
+ {"version":3,"file":"file-service.d.ts","sourceRoot":"","sources":["../../../src/server/file-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AACxF,OAAO,EAAe,YAAY,EAAE,MAAM,oCAAoC,CAAC;AAE/E,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAExC;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,QAAQ,EAAE,YAAY,GAAG,sBAAsB,GAAG,OAAO,CAAC;IACnE,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAChD,OAAO,CAAC,QAAQ,EAAE,YAAY,GAAG,sBAAsB,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC1E,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS,CAAC;IACxD,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;IAC7B,0BAA0B,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;IAC5D,oBAAoB,CAAC,GAAG,EAAE,uBAAuB,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC;IACvE,oBAAoB,CAAC,GAAG,EAAE,uBAAuB,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC;CACxE;AAED,MAAM,WAAW,kBAAkB;IACjC,UAAU,EAAE,UAAU,CAAC;CACxB;AAED,wBAAgB,iBAAiB,CAAC,EAAE,UAAU,EAAE,EAAE,kBAAkB,GAAG,WAAW,CAuFjF"}
@@ -7,12 +7,17 @@ export function createFileService({ serverHost }) {
7
7
  // URL is used as a key into the opened documents and so we must reproduce
8
8
  // it exactly.
9
9
  const pathToURLMap = new Map();
10
+ /** Track the init version when a doc is opened so that we can distinguish whether the doc is opened or changed */
11
+ const documentsOpenedInitVersion = new Map();
10
12
  return {
11
13
  upToDate,
12
14
  fileURLToRealPath,
13
15
  getPath,
14
16
  getURL,
15
17
  getOpenDocument,
18
+ getOpenDocumentInitVersion,
19
+ notifyDocumentOpened,
20
+ notifyDocumentClosed,
16
21
  };
17
22
  /**
18
23
  * Determine if the given document is the latest version.
@@ -47,6 +52,31 @@ export function createFileService({ serverHost }) {
47
52
  const url = getURL(path);
48
53
  return url ? serverHost.getOpenDocumentByURL(url) : undefined;
49
54
  }
55
+ function getOpenDocumentInitVersion(uri) {
56
+ return documentsOpenedInitVersion.get(uri) ?? undefined;
57
+ }
58
+ function notifyDocumentOpened(arg) {
59
+ if (documentsOpenedInitVersion.has(arg.document.uri)) {
60
+ // not expected, log something for troubleshooting
61
+ serverHost.log({
62
+ level: "debug",
63
+ message: "Document already opened",
64
+ detail: arg.document.uri,
65
+ });
66
+ }
67
+ documentsOpenedInitVersion.set(arg.document.uri, arg.document.version);
68
+ }
69
+ function notifyDocumentClosed(arg) {
70
+ if (!documentsOpenedInitVersion.has(arg.document.uri)) {
71
+ // not expected, log something for troubleshooting
72
+ serverHost.log({
73
+ level: "debug",
74
+ message: "Document already closed",
75
+ detail: arg.document.uri,
76
+ });
77
+ }
78
+ documentsOpenedInitVersion.delete(arg.document.uri);
79
+ }
50
80
  }
51
81
  function isUntitled(pathOrUrl) {
52
82
  return pathOrUrl.startsWith("untitled:");
@@ -1 +1 @@
1
- {"version":3,"file":"file-service.js","sourceRoot":"","sources":["../../../src/server/file-service.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AAkBzD,MAAM,UAAU,iBAAiB,CAAC,EAAE,UAAU,EAAsB;IAClE,MAAM,YAAY,GAAG,UAAU,CAAC,YAAY,CAAC;IAC7C,0EAA0E;IAC1E,yEAAyE;IACzE,0EAA0E;IAC1E,0EAA0E;IAC1E,cAAc;IACd,MAAM,YAAY,GAAG,IAAI,GAAG,EAAkB,CAAC;IAE/C,OAAO;QACL,QAAQ;QACR,iBAAiB;QACjB,OAAO;QACP,MAAM;QACN,eAAe;KAChB,CAAC;IAEF;;;;;OAKG;IACH,SAAS,QAAQ,CAAC,QAA+C;QAC/D,IAAI,CAAC,CAAC,SAAS,IAAI,QAAQ,CAAC,EAAE,CAAC;YAC7B,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,QAAQ,CAAC,OAAO,KAAK,UAAU,CAAC,oBAAoB,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC;IACrF,CAAC;IAED,KAAK,UAAU,iBAAiB,CAAC,GAAW;QAC1C,OAAO,qBAAqB,CAAC,YAAY,EAAE,YAAY,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC;IAC9E,CAAC;IAED,KAAK,UAAU,OAAO,CAAC,QAA+C;QACpE,IAAI,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YAC7B,OAAO,QAAQ,CAAC,GAAG,CAAC;QACtB,CAAC;QACD,MAAM,IAAI,GAAG,MAAM,iBAAiB,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QACnD,YAAY,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC;QACrC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,SAAS,MAAM,CAAC,IAAY;QAC1B,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YACrB,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,YAAY,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;IACpE,CAAC;IAED,SAAS,eAAe,CAAC,IAAY;QACnC,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;QACzB,OAAO,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAChE,CAAC;AACH,CAAC;AAED,SAAS,UAAU,CAAC,SAAiB;IACnC,OAAO,SAAS,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;AAC3C,CAAC"}
1
+ {"version":3,"file":"file-service.js","sourceRoot":"","sources":["../../../src/server/file-service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,55 @@
1
+ import { CompilerHost, CompilerOptions, Program, ServerLog } from "../index.js";
2
+ import { UpdateManger } from "./update-manager.js";
3
+ /**
4
+ * core: linter and emitter will be set to [] when trigger compilation
5
+ * full: compile as it is
6
+ */
7
+ export type ServerCompileMode = "core" | "full";
8
+ export interface ServerCompileOptions {
9
+ skipCache?: boolean;
10
+ skipOldProgramFromCache?: boolean;
11
+ /** Make this non-optional on purpose so that the caller needs to determine the correct mode to compile explicitly */
12
+ mode: ServerCompileMode;
13
+ /** A simple func to check if the compilation is cancelled. After compiler supports cancellation, we may want to change to use it */
14
+ isCancelled?: () => boolean;
15
+ }
16
+ /**
17
+ * This class purely manages compilations triggered and the caches used underneath. It doesn't have or care about any extra knowledge beyond compile itself.
18
+ * Instead compiler service would have more knowledge about the lsp scenarios to provide higher level service. It will be responsible to make sure compilation request
19
+ * is built properly (i.e. figure out the correct entrypoint file, double check whether compilation result covers given document, and so on) and then trigger the actual
20
+ * compilation with proper options through this class.
21
+ */
22
+ export declare class ServerCompileManager {
23
+ private updateManager;
24
+ private compilerHost;
25
+ private log;
26
+ private trackerCache;
27
+ private compileId;
28
+ private logDebug;
29
+ constructor(updateManager: UpdateManger, compilerHost: CompilerHost, log: (log: ServerLog) => void);
30
+ compile(mainFile: string, compileOptions: CompilerOptions | undefined, serverCompileOptions: ServerCompileOptions): Promise<CompileTracker>;
31
+ }
32
+ export declare class CompileTracker {
33
+ private id;
34
+ private updateManager;
35
+ private entrypoint;
36
+ private compileResultPromise;
37
+ private version;
38
+ private startTime;
39
+ private mode;
40
+ private logs;
41
+ private endTime;
42
+ static compile(id: number, updateManager: UpdateManger, host: CompilerHost, mainFile: string, options: CompilerOptions | undefined, mode: ServerCompileMode, oldProgram: Program | undefined, log: (msg: string) => void): CompileTracker;
43
+ private constructor();
44
+ getCompileId(): number;
45
+ getEntryPoint(): string;
46
+ getCompileResult(): Promise<Program>;
47
+ getVersion(): number;
48
+ getStartTime(): Date;
49
+ getEndTime(): Date | undefined;
50
+ isCompleted(): boolean;
51
+ isUpToDate(): boolean;
52
+ getMode(): ServerCompileMode;
53
+ getLogs(): ServerLog[];
54
+ }
55
+ //# sourceMappingURL=server-compile-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server-compile-manager.d.ts","sourceRoot":"","sources":["../../../src/server/server-compile-manager.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,YAAY,EACZ,eAAe,EAGf,OAAO,EACP,SAAS,EACV,MAAM,aAAa,CAAC;AAGrB,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAEnD;;;GAGG;AACH,MAAM,MAAM,iBAAiB,GAAG,MAAM,GAAG,MAAM,CAAC;AAEhD,MAAM,WAAW,oBAAoB;IACnC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAClC,qHAAqH;IACrH,IAAI,EAAE,iBAAiB,CAAC;IACxB,oIAAoI;IACpI,WAAW,CAAC,EAAE,MAAM,OAAO,CAAC;CAC7B;AAED;;;;;GAKG;AACH,qBAAa,oBAAoB;IAO7B,OAAO,CAAC,aAAa;IACrB,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,GAAG;IAPb,OAAO,CAAC,YAAY,CAAiD;IACrE,OAAO,CAAC,SAAS,CAAK;IACtB,OAAO,CAAC,QAAQ,CAAwB;gBAG9B,aAAa,EAAE,YAAY,EAC3B,YAAY,EAAE,YAAY,EAC1B,GAAG,EAAE,CAAC,GAAG,EAAE,SAAS,KAAK,IAAI;IASjC,OAAO,CACX,QAAQ,EAAE,MAAM,EAChB,cAAc,EAAE,eAAe,YAAK,EACpC,oBAAoB,EAAE,oBAAoB,GACzC,OAAO,CAAC,cAAc,CAAC;CAwD3B;AAuID,qBAAa,cAAc;IAqDvB,OAAO,CAAC,EAAE;IACV,OAAO,CAAC,aAAa;IACrB,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,oBAAoB;IAC5B,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,IAAI;IACZ,OAAO,CAAC,IAAI;IA3Dd,OAAO,CAAC,OAAO,CAAmB;IAElC,MAAM,CAAC,OAAO,CACZ,EAAE,EAAE,MAAM,EACV,aAAa,EAAE,YAAY,EAC3B,IAAI,EAAE,YAAY,EAClB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,eAAe,YAAK,EAC7B,IAAI,EAAE,iBAAiB,EACvB,UAAU,EAAE,OAAO,GAAG,SAAS,EAC/B,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI;IAyC5B,OAAO;IA4BP,YAAY;IAIZ,aAAa;IAIP,gBAAgB;IAItB,UAAU;IAIV,YAAY,IAAI,IAAI;IAIpB,UAAU,IAAI,IAAI,GAAG,SAAS;IAI9B,WAAW,IAAI,OAAO;IAItB,UAAU,IAAI,OAAO;IAIrB,OAAO,IAAI,iBAAiB;IAI5B,OAAO,IAAI,SAAS,EAAE;CAGvB"}