@typespec/compiler 1.2.0-dev.1 → 1.2.0-dev.10

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 (74) hide show
  1. package/dist/manifest.js +2 -2
  2. package/dist/src/config/config-interpolation.d.ts.map +1 -1
  3. package/dist/src/config/config-interpolation.js +23 -52
  4. package/dist/src/config/config-interpolation.js.map +1 -1
  5. package/dist/src/experimental/realm.d.ts +4 -4
  6. package/dist/src/experimental/realm.d.ts.map +1 -1
  7. package/dist/src/lib/visibility.d.ts.map +1 -1
  8. package/dist/src/lib/visibility.js +11 -0
  9. package/dist/src/lib/visibility.js.map +1 -1
  10. package/dist/src/server/client-config-provider.d.ts +24 -0
  11. package/dist/src/server/client-config-provider.d.ts.map +1 -0
  12. package/dist/src/server/client-config-provider.js +40 -0
  13. package/dist/src/server/client-config-provider.js.map +1 -0
  14. package/dist/src/server/compile-service.d.ts +3 -1
  15. package/dist/src/server/compile-service.d.ts.map +1 -1
  16. package/dist/src/server/compile-service.js +9 -1
  17. package/dist/src/server/compile-service.js.map +1 -1
  18. package/dist/src/server/server.js +6 -2
  19. package/dist/src/server/server.js.map +1 -1
  20. package/dist/src/server/serverlib.d.ts +2 -1
  21. package/dist/src/server/serverlib.d.ts.map +1 -1
  22. package/dist/src/server/serverlib.js +2 -1
  23. package/dist/src/server/serverlib.js.map +1 -1
  24. package/dist/src/testing/fourslash.d.ts +16 -0
  25. package/dist/src/testing/fourslash.d.ts.map +1 -0
  26. package/dist/src/testing/fourslash.js +17 -0
  27. package/dist/src/testing/fourslash.js.map +1 -0
  28. package/dist/src/testing/fs.d.ts +12 -0
  29. package/dist/src/testing/fs.d.ts.map +1 -0
  30. package/dist/src/testing/fs.js +133 -0
  31. package/dist/src/testing/fs.js.map +1 -0
  32. package/dist/src/testing/index.d.ts +9 -2
  33. package/dist/src/testing/index.d.ts.map +1 -1
  34. package/dist/src/testing/index.js +7 -1
  35. package/dist/src/testing/index.js.map +1 -1
  36. package/dist/src/testing/marked-template.d.ts +96 -0
  37. package/dist/src/testing/marked-template.d.ts.map +1 -0
  38. package/dist/src/testing/marked-template.js +107 -0
  39. package/dist/src/testing/marked-template.js.map +1 -0
  40. package/dist/src/testing/rule-tester.d.ts +2 -2
  41. package/dist/src/testing/rule-tester.d.ts.map +1 -1
  42. package/dist/src/testing/rule-tester.js +2 -1
  43. package/dist/src/testing/rule-tester.js.map +1 -1
  44. package/dist/src/testing/test-compiler-host.d.ts +11 -0
  45. package/dist/src/testing/test-compiler-host.d.ts.map +1 -0
  46. package/dist/src/testing/test-compiler-host.js +138 -0
  47. package/dist/src/testing/test-compiler-host.js.map +1 -0
  48. package/dist/src/testing/test-host.d.ts +3 -9
  49. package/dist/src/testing/test-host.d.ts.map +1 -1
  50. package/dist/src/testing/test-host.js +6 -218
  51. package/dist/src/testing/test-host.js.map +1 -1
  52. package/dist/src/testing/test-server-host.d.ts +1 -1
  53. package/dist/src/testing/test-server-host.d.ts.map +1 -1
  54. package/dist/src/testing/test-server-host.js +5 -2
  55. package/dist/src/testing/test-server-host.js.map +1 -1
  56. package/dist/src/testing/tester.d.ts +12 -0
  57. package/dist/src/testing/tester.d.ts.map +1 -0
  58. package/dist/src/testing/tester.js +341 -0
  59. package/dist/src/testing/tester.js.map +1 -0
  60. package/dist/src/testing/types.d.ts +146 -3
  61. package/dist/src/testing/types.d.ts.map +1 -1
  62. package/dist/src/testing/types.js +1 -0
  63. package/dist/src/testing/types.js.map +1 -1
  64. package/dist/src/typekit/kits/literal.d.ts.map +1 -1
  65. package/dist/src/typekit/kits/literal.js +4 -25
  66. package/dist/src/typekit/kits/literal.js.map +1 -1
  67. package/lib/intrinsics.tsp +1 -1
  68. package/package.json +4 -4
  69. package/templates/__snapshots__/emitter-ts/package.json +1 -1
  70. package/templates/__snapshots__/library-ts/package.json +1 -1
  71. package/templates/__snapshots__/library-ts/test/decorators.test.ts +1 -1
  72. package/templates/emitter-ts/package.json +1 -1
  73. package/templates/library-ts/package.json +1 -1
  74. package/templates/library-ts/test/decorators.test.ts.mu +1 -1
@@ -0,0 +1,107 @@
1
+ export const TemplateWithMarkers = {
2
+ is: (value) => {
3
+ return typeof value === "object" && value !== null && "isTemplateWithMarkers" in value;
4
+ },
5
+ };
6
+ /** Specify that this value is dynamic and needs to be interpolated with the given keys */
7
+ function code(strings, ...keys) {
8
+ const markers = {};
9
+ const result = [strings[0]];
10
+ keys.forEach((key, i) => {
11
+ if (typeof key === "string") {
12
+ result.push(key);
13
+ }
14
+ else {
15
+ result.push(`/*${key.name}*/${key.name}`);
16
+ markers[key.name] = {
17
+ entityKind: key.entityKind,
18
+ name: key.name,
19
+ kind: key.kind,
20
+ valueKind: key.valueKind,
21
+ };
22
+ }
23
+ result.push(strings[i + 1]);
24
+ });
25
+ return {
26
+ isTemplateWithMarkers: true,
27
+ code: result.join(""),
28
+ markers: markers,
29
+ };
30
+ }
31
+ function typeMarker(kind) {
32
+ return (name) => {
33
+ return {
34
+ entityKind: "Type",
35
+ kind,
36
+ name,
37
+ };
38
+ };
39
+ }
40
+ function valueMarker(valueKind) {
41
+ return (name) => {
42
+ return {
43
+ entityKind: "Value",
44
+ valueKind,
45
+ name,
46
+ };
47
+ };
48
+ }
49
+ /** TypeSpec template marker */
50
+ export const t = {
51
+ /**
52
+ * Define a marked code block
53
+ *
54
+ * @example
55
+ * ```ts
56
+ * const code = t.code`model ${t.model("Foo")} { bar: string }`;
57
+ * ```
58
+ */
59
+ code: code,
60
+ // -- Types --
61
+ /** Mark any type */
62
+ type: typeMarker(),
63
+ /** Mark a model */
64
+ model: typeMarker("Model"),
65
+ /** Mark an enum */
66
+ enum: typeMarker("Enum"),
67
+ /** Mark an union */
68
+ union: typeMarker("Union"),
69
+ /** Mark an interface */
70
+ interface: typeMarker("Interface"),
71
+ /** Mark an operation */
72
+ op: typeMarker("Operation"),
73
+ /** Mark an enum member */
74
+ enumMember: typeMarker("EnumMember"),
75
+ /** Mark a model property */
76
+ modelProperty: typeMarker("ModelProperty"),
77
+ /** Mark a namespace */
78
+ namespace: typeMarker("Namespace"),
79
+ /** Mark a scalar */
80
+ scalar: typeMarker("Scalar"),
81
+ /** Mark a union variant */
82
+ unionVariant: typeMarker("UnionVariant"),
83
+ /** Mark a boolean literal */
84
+ boolean: typeMarker("Boolean"),
85
+ /** Mark a number literal */
86
+ number: typeMarker("Number"),
87
+ /** Mark a string literal */
88
+ string: typeMarker("String"),
89
+ // -- Values --
90
+ /** Mark any value */
91
+ value: valueMarker(),
92
+ /** Mark an object value */
93
+ object: valueMarker("ObjectValue"),
94
+ /** Mark an array value */
95
+ array: valueMarker("ArrayValue"),
96
+ /** Mark a numeric value */
97
+ numericValue: valueMarker("NumericValue"),
98
+ /** Mark a string value */
99
+ stringValue: valueMarker("StringValue"),
100
+ /** Mark a boolean value */
101
+ booleanValue: valueMarker("BooleanValue"),
102
+ /** Mark a scalar value */
103
+ scalarValue: valueMarker("ScalarValue"),
104
+ /** Mark an enum value */
105
+ enumValue: valueMarker("EnumValue"),
106
+ };
107
+ //# sourceMappingURL=marked-template.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"marked-template.js","sourceRoot":"","sources":["../../../src/testing/marked-template.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { DiagnosticMessages, LinterRuleDefinition } from "../core/types.js";
2
2
  import { DiagnosticMatch } from "./expect.js";
3
- import { BasicTestRunner } from "./types.js";
3
+ import { BasicTestRunner, TesterInstance } from "./types.js";
4
4
  export interface LinterRuleTester {
5
5
  expect(code: string): LinterRuleTestExpect;
6
6
  }
@@ -12,5 +12,5 @@ export interface LinterRuleTestExpect {
12
12
  export interface ApplyCodeFixExpect {
13
13
  toEqual(code: string): Promise<void>;
14
14
  }
15
- export declare function createLinterRuleTester(runner: BasicTestRunner, ruleDef: LinterRuleDefinition<string, DiagnosticMessages>, libraryName: string): LinterRuleTester;
15
+ export declare function createLinterRuleTester(runner: BasicTestRunner | TesterInstance, ruleDef: LinterRuleDefinition<string, DiagnosticMessages>, libraryName: string): LinterRuleTester;
16
16
  //# sourceMappingURL=rule-tester.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"rule-tester.d.ts","sourceRoot":"","sources":["../../../src/testing/rule-tester.ts"],"names":[],"mappings":"AAKA,OAAO,EAGL,kBAAkB,EAClB,oBAAoB,EACrB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,eAAe,EAA4C,MAAM,aAAa,CAAC;AAExF,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAE7C,MAAM,WAAW,gBAAgB;IAC/B,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,oBAAoB,CAAC;CAC5C;AAED,MAAM,WAAW,oBAAoB;IACnC,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3B,iBAAiB,CAAC,WAAW,EAAE,eAAe,GAAG,eAAe,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACnF,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,kBAAkB,CAAC;CACrD;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACtC;AAED,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,eAAe,EACvB,OAAO,EAAE,oBAAoB,CAAC,MAAM,EAAE,kBAAkB,CAAC,EACzD,WAAW,EAAE,MAAM,GAClB,gBAAgB,CA0DlB"}
1
+ {"version":3,"file":"rule-tester.d.ts","sourceRoot":"","sources":["../../../src/testing/rule-tester.ts"],"names":[],"mappings":"AAKA,OAAO,EAGL,kBAAkB,EAClB,oBAAoB,EACrB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,eAAe,EAA4C,MAAM,aAAa,CAAC;AAExF,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAE7D,MAAM,WAAW,gBAAgB;IAC/B,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,oBAAoB,CAAC;CAC5C;AAED,MAAM,WAAW,oBAAoB;IACnC,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3B,iBAAiB,CAAC,WAAW,EAAE,eAAe,GAAG,eAAe,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACnF,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,kBAAkB,CAAC;CACrD;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACtC;AAED,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,eAAe,GAAG,cAAc,EACxC,OAAO,EAAE,oBAAoB,CAAC,MAAM,EAAE,kBAAkB,CAAC,EACzD,WAAW,EAAE,MAAM,GAClB,gBAAgB,CA2DlB"}
@@ -39,7 +39,8 @@ export function createLinterRuleTester(runner, ruleDef, libraryName) {
39
39
  };
40
40
  await applyCodeFixReal(host, codefix);
41
41
  ok(content, "No content was written to the host.");
42
- const offset = runner.fs.get(resolveVirtualPath("./main.tsp"))?.indexOf(code);
42
+ const fs = "keys" in runner.fs ? runner.fs : runner.fs.fs;
43
+ const offset = fs.get(resolveVirtualPath("./main.tsp"))?.indexOf(code);
43
44
  strictEqual(trimBlankLines(content.slice(offset)), trimBlankLines(expectedCode));
44
45
  }
45
46
  }
@@ -1 +1 @@
1
- {"version":3,"file":"rule-tester.js","sourceRoot":"","sources":["../../../src/testing/rule-tester.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"rule-tester.js","sourceRoot":"","sources":["../../../src/testing/rule-tester.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import { CompilerHost, Type } from "../core/types.js";
2
+ import { TestFileSystem, TypeSpecTestLibrary } from "./types.js";
3
+ export declare const StandardTestLibrary: TypeSpecTestLibrary;
4
+ export interface TestHostOptions {
5
+ caseInsensitiveFileSystem?: boolean;
6
+ excludeTestLib?: boolean;
7
+ compilerHostOverrides?: Partial<CompilerHost>;
8
+ }
9
+ export declare function createTestCompilerHost(virtualFs: Map<string, string>, jsImports: Map<string, Record<string, any>>, options?: TestHostOptions): CompilerHost;
10
+ export declare function addTestLib(fs: TestFileSystem): Record<string, Type>;
11
+ //# sourceMappingURL=test-compiler-host.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-compiler-host.d.ts","sourceRoot":"","sources":["../../../src/testing/test-compiler-host.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,YAAY,EAAiB,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAErE,OAAO,EAAE,cAAc,EAAiB,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAEhF,eAAO,MAAM,mBAAmB,EAAE,mBAOjC,CAAC;AAEF,MAAM,WAAW,eAAe;IAC9B,yBAAyB,CAAC,EAAE,OAAO,CAAC;IACpC,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,qBAAqB,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;CAC/C;AAED,wBAAgB,sBAAsB,CACpC,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EAC9B,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,EAC3C,OAAO,CAAC,EAAE,eAAe,GACxB,YAAY,CAoHd;AAED,wBAAgB,UAAU,CAAC,EAAE,EAAE,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAoBnE"}
@@ -0,0 +1,138 @@
1
+ import { fileURLToPath, pathToFileURL } from "url";
2
+ import { CompilerPackageRoot, NodeHost } from "../core/node-host.js";
3
+ import { createSourceFile, getSourceFileKindFromExt } from "../core/source-file.js";
4
+ import { resolveVirtualPath } from "./fs.js";
5
+ import { TestHostError } from "./types.js";
6
+ export const StandardTestLibrary = {
7
+ name: "@typespec/compiler",
8
+ packageRoot: CompilerPackageRoot,
9
+ files: [
10
+ { virtualPath: "./.tsp/dist/src/lib", realDir: "./dist/src/lib", pattern: "**" },
11
+ { virtualPath: "./.tsp/lib", realDir: "./lib", pattern: "**" },
12
+ ],
13
+ };
14
+ export function createTestCompilerHost(virtualFs, jsImports, options) {
15
+ const libDirs = [resolveVirtualPath(".tsp/lib/std")];
16
+ if (!options?.excludeTestLib) {
17
+ libDirs.push(resolveVirtualPath(".tsp/test-lib"));
18
+ }
19
+ return {
20
+ async readUrl(url) {
21
+ const contents = virtualFs.get(url);
22
+ if (contents === undefined) {
23
+ throw new TestHostError(`File ${url} not found.`, "ENOENT");
24
+ }
25
+ return createSourceFile(contents, url);
26
+ },
27
+ async readFile(path) {
28
+ path = resolveVirtualPath(path);
29
+ const contents = virtualFs.get(path);
30
+ if (contents === undefined) {
31
+ throw new TestHostError(`File ${path} not found.`, "ENOENT");
32
+ }
33
+ return createSourceFile(contents, path);
34
+ },
35
+ async writeFile(path, content) {
36
+ path = resolveVirtualPath(path);
37
+ virtualFs.set(path, content);
38
+ },
39
+ async readDir(path) {
40
+ path = resolveVirtualPath(path);
41
+ const fileFolder = [...virtualFs.keys()]
42
+ .filter((x) => x.startsWith(`${path}/`))
43
+ .map((x) => x.replace(`${path}/`, ""))
44
+ .map((x) => {
45
+ const index = x.indexOf("/");
46
+ return index !== -1 ? x.substring(0, index) : x;
47
+ });
48
+ return [...new Set(fileFolder)];
49
+ },
50
+ async rm(path, options) {
51
+ path = resolveVirtualPath(path);
52
+ if (options.recursive && !virtualFs.has(path)) {
53
+ for (const key of virtualFs.keys()) {
54
+ if (key.startsWith(`${path}/`)) {
55
+ virtualFs.delete(key);
56
+ }
57
+ }
58
+ }
59
+ else {
60
+ virtualFs.delete(path);
61
+ }
62
+ },
63
+ getLibDirs() {
64
+ return libDirs;
65
+ },
66
+ getExecutionRoot() {
67
+ return resolveVirtualPath(".tsp");
68
+ },
69
+ async getJsImport(path) {
70
+ path = resolveVirtualPath(path);
71
+ const module = jsImports.get(path);
72
+ if (module === undefined) {
73
+ throw new TestHostError(`Module ${path} not found`, "ERR_MODULE_NOT_FOUND");
74
+ }
75
+ return module;
76
+ },
77
+ async stat(path) {
78
+ path = resolveVirtualPath(path);
79
+ if (virtualFs.has(path)) {
80
+ return {
81
+ isDirectory() {
82
+ return false;
83
+ },
84
+ isFile() {
85
+ return true;
86
+ },
87
+ };
88
+ }
89
+ for (const fsPath of virtualFs.keys()) {
90
+ if (fsPath.startsWith(path) && fsPath !== path) {
91
+ return {
92
+ isDirectory() {
93
+ return true;
94
+ },
95
+ isFile() {
96
+ return false;
97
+ },
98
+ };
99
+ }
100
+ }
101
+ throw new TestHostError(`File ${path} not found`, "ENOENT");
102
+ },
103
+ // symlinks not supported in test-host
104
+ async realpath(path) {
105
+ return path;
106
+ },
107
+ getSourceFileKind: getSourceFileKindFromExt,
108
+ logSink: { log: NodeHost.logSink.log },
109
+ mkdirp: async (path) => path,
110
+ fileURLToPath,
111
+ pathToFileURL(path) {
112
+ return pathToFileURL(path).href;
113
+ },
114
+ ...options?.compilerHostOverrides,
115
+ };
116
+ }
117
+ export function addTestLib(fs) {
118
+ const testTypes = {};
119
+ // add test decorators
120
+ fs.add(".tsp/test-lib/main.tsp", 'import "./test.js";');
121
+ fs.addJsFile(".tsp/test-lib/test.js", {
122
+ namespace: "TypeSpec",
123
+ $test(_, target, nameLiteral) {
124
+ let name = nameLiteral?.value;
125
+ if (!name) {
126
+ if ("name" in target && typeof target.name === "string") {
127
+ name = target.name;
128
+ }
129
+ else {
130
+ throw new Error("Need to specify a name for test type");
131
+ }
132
+ }
133
+ testTypes[name] = target;
134
+ },
135
+ });
136
+ return testTypes;
137
+ }
138
+ //# sourceMappingURL=test-compiler-host.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-compiler-host.js","sourceRoot":"","sources":["../../../src/testing/test-compiler-host.ts"],"names":[],"mappings":"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"}
@@ -1,13 +1,7 @@
1
- import type { CompilerHost } from "../core/types.js";
2
- import { BasicTestRunner, TestFileSystem, TestHost, TestHostConfig, TypeSpecTestLibrary } from "./types.js";
3
- export interface TestHostOptions {
4
- caseInsensitiveFileSystem?: boolean;
5
- excludeTestLib?: boolean;
6
- compilerHostOverrides?: Partial<CompilerHost>;
7
- }
8
- export declare function createTestFileSystem(options?: TestHostOptions): Promise<TestFileSystem>;
9
- export declare const StandardTestLibrary: TypeSpecTestLibrary;
1
+ import { BasicTestRunner, TestHost, TestHostConfig } from "./types.js";
2
+ /** Use {@link createTester} */
10
3
  export declare function createTestHost(config?: TestHostConfig): Promise<TestHost>;
4
+ /** Use {@link createTester} */
11
5
  export declare function createTestRunner(host?: TestHost): Promise<BasicTestRunner>;
12
6
  export declare function findFilesFromPattern(directory: string, pattern: string): Promise<string[]>;
13
7
  //# sourceMappingURL=test-host.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"test-host.d.ts","sourceRoot":"","sources":["../../../src/testing/test-host.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,YAAY,EAAmC,MAAM,kBAAkB,CAAC;AAKtF,OAAO,EACL,eAAe,EACf,cAAc,EACd,QAAQ,EACR,cAAc,EAEd,mBAAmB,EACpB,MAAM,YAAY,CAAC;AAEpB,MAAM,WAAW,eAAe;IAC9B,yBAAyB,CAAC,EAAE,OAAO,CAAC;IACpC,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,qBAAqB,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;CAC/C;AA4HD,wBAAsB,oBAAoB,CAAC,OAAO,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,cAAc,CAAC,CA8E7F;AAED,eAAO,MAAM,mBAAmB,EAAE,mBAOjC,CAAC;AAEF,wBAAsB,cAAc,CAAC,MAAM,GAAE,cAAmB,GAAG,OAAO,CAAC,QAAQ,CAAC,CASnF;AAED,wBAAsB,gBAAgB,CAAC,IAAI,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC,eAAe,CAAC,CAGhF;AAkFD,wBAAsB,oBAAoB,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAKhG"}
1
+ {"version":3,"file":"test-host.d.ts","sourceRoot":"","sources":["../../../src/testing/test-host.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,cAAc,EAAuB,MAAM,YAAY,CAAC;AAE5F,+BAA+B;AAC/B,wBAAsB,cAAc,CAAC,MAAM,GAAE,cAAmB,GAAG,OAAO,CAAC,QAAQ,CAAC,CASnF;AAED,+BAA+B;AAC/B,wBAAsB,gBAAgB,CAAC,IAAI,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC,eAAe,CAAC,CAGhF;AAsDD,wBAAsB,oBAAoB,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAKhG"}
@@ -1,201 +1,13 @@
1
1
  import assert from "assert";
2
- import { readdir, readFile, stat } from "fs/promises";
3
2
  import { globby } from "globby";
4
- import { join } from "path";
5
- import { fileURLToPath, pathToFileURL } from "url";
6
3
  import { logDiagnostics, logVerboseTestOutput } from "../core/diagnostics.js";
7
4
  import { createLogger } from "../core/logger/logger.js";
8
- import { NodeHost } from "../core/node-host.js";
9
- import { getAnyExtensionFromPath, resolvePath } from "../core/path-utils.js";
10
5
  import { compile as compileProgram } from "../core/program.js";
11
- import { createSourceFile, getSourceFileKindFromExt } from "../index.js";
12
- import { createStringMap } from "../utils/misc.js";
13
6
  import { expectDiagnosticEmpty } from "./expect.js";
14
- import { createTestWrapper, findTestPackageRoot, resolveVirtualPath } from "./test-utils.js";
15
- import { TestHostError, } from "./types.js";
16
- function createTestCompilerHost(virtualFs, jsImports, options) {
17
- const libDirs = [resolveVirtualPath(".tsp/lib/std")];
18
- if (!options?.excludeTestLib) {
19
- libDirs.push(resolveVirtualPath(".tsp/test-lib"));
20
- }
21
- return {
22
- async readUrl(url) {
23
- const contents = virtualFs.get(url);
24
- if (contents === undefined) {
25
- throw new TestHostError(`File ${url} not found.`, "ENOENT");
26
- }
27
- return createSourceFile(contents, url);
28
- },
29
- async readFile(path) {
30
- path = resolveVirtualPath(path);
31
- const contents = virtualFs.get(path);
32
- if (contents === undefined) {
33
- throw new TestHostError(`File ${path} not found.`, "ENOENT");
34
- }
35
- return createSourceFile(contents, path);
36
- },
37
- async writeFile(path, content) {
38
- path = resolveVirtualPath(path);
39
- virtualFs.set(path, content);
40
- },
41
- async readDir(path) {
42
- path = resolveVirtualPath(path);
43
- const fileFolder = [...virtualFs.keys()]
44
- .filter((x) => x.startsWith(`${path}/`))
45
- .map((x) => x.replace(`${path}/`, ""))
46
- .map((x) => {
47
- const index = x.indexOf("/");
48
- return index !== -1 ? x.substring(0, index) : x;
49
- });
50
- return [...new Set(fileFolder)];
51
- },
52
- async rm(path, options) {
53
- path = resolveVirtualPath(path);
54
- if (options.recursive && !virtualFs.has(path)) {
55
- for (const key of virtualFs.keys()) {
56
- if (key.startsWith(`${path}/`)) {
57
- virtualFs.delete(key);
58
- }
59
- }
60
- }
61
- else {
62
- virtualFs.delete(path);
63
- }
64
- },
65
- getLibDirs() {
66
- return libDirs;
67
- },
68
- getExecutionRoot() {
69
- return resolveVirtualPath(".tsp");
70
- },
71
- async getJsImport(path) {
72
- path = resolveVirtualPath(path);
73
- const module = jsImports.get(path);
74
- if (module === undefined) {
75
- throw new TestHostError(`Module ${path} not found`, "ERR_MODULE_NOT_FOUND");
76
- }
77
- return module;
78
- },
79
- async stat(path) {
80
- path = resolveVirtualPath(path);
81
- if (virtualFs.has(path)) {
82
- return {
83
- isDirectory() {
84
- return false;
85
- },
86
- isFile() {
87
- return true;
88
- },
89
- };
90
- }
91
- for (const fsPath of virtualFs.keys()) {
92
- if (fsPath.startsWith(path) && fsPath !== path) {
93
- return {
94
- isDirectory() {
95
- return true;
96
- },
97
- isFile() {
98
- return false;
99
- },
100
- };
101
- }
102
- }
103
- throw new TestHostError(`File ${path} not found`, "ENOENT");
104
- },
105
- // symlinks not supported in test-host
106
- async realpath(path) {
107
- return path;
108
- },
109
- getSourceFileKind: getSourceFileKindFromExt,
110
- logSink: { log: NodeHost.logSink.log },
111
- mkdirp: async (path) => path,
112
- fileURLToPath,
113
- pathToFileURL(path) {
114
- return pathToFileURL(path).href;
115
- },
116
- ...options?.compilerHostOverrides,
117
- };
118
- }
119
- export async function createTestFileSystem(options) {
120
- const virtualFs = createStringMap(!!options?.caseInsensitiveFileSystem);
121
- const jsImports = createStringMap(!!options?.caseInsensitiveFileSystem);
122
- const compilerHost = createTestCompilerHost(virtualFs, jsImports, options);
123
- return {
124
- addTypeSpecFile,
125
- addJsFile,
126
- addRealTypeSpecFile,
127
- addRealJsFile,
128
- addRealFolder,
129
- addTypeSpecLibrary,
130
- compilerHost,
131
- fs: virtualFs,
132
- };
133
- function addTypeSpecFile(path, contents) {
134
- virtualFs.set(resolveVirtualPath(path), contents);
135
- }
136
- function addJsFile(path, contents) {
137
- const key = resolveVirtualPath(path);
138
- virtualFs.set(key, ""); // don't need contents
139
- jsImports.set(key, new Promise((r) => r(contents)));
140
- }
141
- async function addRealTypeSpecFile(path, existingPath) {
142
- virtualFs.set(resolveVirtualPath(path), await readFile(existingPath, "utf8"));
143
- }
144
- async function addRealFolder(folder, existingFolder) {
145
- const entries = await readdir(existingFolder);
146
- for (const entry of entries) {
147
- const existingPath = join(existingFolder, entry);
148
- const virtualPath = join(folder, entry);
149
- const s = await stat(existingPath);
150
- if (s.isFile()) {
151
- if (existingPath.endsWith(".js")) {
152
- await addRealJsFile(virtualPath, existingPath);
153
- }
154
- else {
155
- await addRealTypeSpecFile(virtualPath, existingPath);
156
- }
157
- }
158
- if (s.isDirectory()) {
159
- await addRealFolder(virtualPath, existingPath);
160
- }
161
- }
162
- }
163
- async function addRealJsFile(path, existingPath) {
164
- const key = resolveVirtualPath(path);
165
- const exports = await import(pathToFileURL(existingPath).href);
166
- virtualFs.set(key, "");
167
- jsImports.set(key, exports);
168
- }
169
- async function addTypeSpecLibrary(testLibrary) {
170
- for (const { realDir, pattern, virtualPath } of testLibrary.files) {
171
- const lookupDir = resolvePath(testLibrary.packageRoot, realDir);
172
- const entries = await findFilesFromPattern(lookupDir, pattern);
173
- for (const entry of entries) {
174
- const fileRealPath = resolvePath(lookupDir, entry);
175
- const fileVirtualPath = resolveVirtualPath(virtualPath, entry);
176
- switch (getAnyExtensionFromPath(fileRealPath)) {
177
- case ".tsp":
178
- case ".json":
179
- const contents = await readFile(fileRealPath, "utf-8");
180
- addTypeSpecFile(fileVirtualPath, contents);
181
- break;
182
- case ".js":
183
- case ".mjs":
184
- await addRealJsFile(fileVirtualPath, fileRealPath);
185
- break;
186
- }
187
- }
188
- }
189
- }
190
- }
191
- export const StandardTestLibrary = {
192
- name: "@typespec/compiler",
193
- packageRoot: await findTestPackageRoot(import.meta.url),
194
- files: [
195
- { virtualPath: "./.tsp/dist/src/lib", realDir: "./dist/src/lib", pattern: "**" },
196
- { virtualPath: "./.tsp/lib", realDir: "./lib", pattern: "**" },
197
- ],
198
- };
7
+ import { createTestFileSystem } from "./fs.js";
8
+ import { addTestLib, StandardTestLibrary } from "./test-compiler-host.js";
9
+ import { createTestWrapper, resolveVirtualPath } from "./test-utils.js";
10
+ /** Use {@link createTester} */
199
11
  export async function createTestHost(config = {}) {
200
12
  const testHost = await createTestHostInternal();
201
13
  await testHost.addTypeSpecLibrary(StandardTestLibrary);
@@ -206,6 +18,7 @@ export async function createTestHost(config = {}) {
206
18
  }
207
19
  return testHost;
208
20
  }
21
+ /** Use {@link createTester} */
209
22
  export async function createTestRunner(host) {
210
23
  const testHost = host ?? (await createTestHost());
211
24
  return createTestWrapper(testHost);
@@ -213,33 +26,8 @@ export async function createTestRunner(host) {
213
26
  async function createTestHostInternal() {
214
27
  let program;
215
28
  const libraries = [];
216
- const testTypes = {};
217
29
  const fileSystem = await createTestFileSystem();
218
- // add test decorators
219
- fileSystem.addTypeSpecFile(".tsp/test-lib/main.tsp", 'import "./test.js";');
220
- fileSystem.addJsFile(".tsp/test-lib/test.js", {
221
- namespace: "TypeSpec",
222
- $test(_, target, nameLiteral) {
223
- let name = nameLiteral?.value;
224
- if (!name) {
225
- if (target.kind === "Model" ||
226
- target.kind === "Scalar" ||
227
- target.kind === "Namespace" ||
228
- target.kind === "Enum" ||
229
- target.kind === "Operation" ||
230
- target.kind === "ModelProperty" ||
231
- target.kind === "EnumMember" ||
232
- target.kind === "Interface" ||
233
- (target.kind === "Union" && !target.expression)) {
234
- name = target.name;
235
- }
236
- else {
237
- throw new Error("Need to specify a name for test type");
238
- }
239
- }
240
- testTypes[name] = target;
241
- },
242
- });
30
+ const testTypes = addTestLib(fileSystem);
243
31
  return {
244
32
  ...fileSystem,
245
33
  addTypeSpecLibrary: async (lib) => {
@@ -1 +1 @@
1
- {"version":3,"file":"test-host.js","sourceRoot":"","sources":["../../../src/testing/test-host.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAE5B,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9E,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAEhD,OAAO,EAAE,uBAAuB,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAC7E,OAAO,EAAE,OAAO,IAAI,cAAc,EAAW,MAAM,oBAAoB,CAAC;AAExE,OAAO,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AACzE,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAC7F,OAAO,EAKL,aAAa,GAEd,MAAM,YAAY,CAAC;AAQpB,SAAS,sBAAsB,CAC7B,SAA8B,EAC9B,SAA2C,EAC3C,OAAyB;IAEzB,MAAM,OAAO,GAAG,CAAC,kBAAkB,CAAC,cAAc,CAAC,CAAC,CAAC;IACrD,IAAI,CAAC,OAAO,EAAE,cAAc,EAAE,CAAC;QAC7B,OAAO,CAAC,IAAI,CAAC,kBAAkB,CAAC,eAAe,CAAC,CAAC,CAAC;IACpD,CAAC;IAED,OAAO;QACL,KAAK,CAAC,OAAO,CAAC,GAAW;YACvB,MAAM,QAAQ,GAAG,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACpC,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;gBAC3B,MAAM,IAAI,aAAa,CAAC,QAAQ,GAAG,aAAa,EAAE,QAAQ,CAAC,CAAC;YAC9D,CAAC;YACD,OAAO,gBAAgB,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;QACzC,CAAC;QACD,KAAK,CAAC,QAAQ,CAAC,IAAY;YACzB,IAAI,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;YAChC,MAAM,QAAQ,GAAG,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACrC,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;gBAC3B,MAAM,IAAI,aAAa,CAAC,QAAQ,IAAI,aAAa,EAAE,QAAQ,CAAC,CAAC;YAC/D,CAAC;YACD,OAAO,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QAC1C,CAAC;QAED,KAAK,CAAC,SAAS,CAAC,IAAY,EAAE,OAAe;YAC3C,IAAI,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;YAChC,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAC/B,CAAC;QAED,KAAK,CAAC,OAAO,CAAC,IAAY;YACxB,IAAI,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;YAChC,MAAM,UAAU,GAAG,CAAC,GAAG,SAAS,CAAC,IAAI,EAAE,CAAC;iBACrC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC;iBACvC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,IAAI,GAAG,EAAE,EAAE,CAAC,CAAC;iBACrC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;gBACT,MAAM,KAAK,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;gBAC7B,OAAO,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAClD,CAAC,CAAC,CAAC;YACL,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC;QAClC,CAAC;QAED,KAAK,CAAC,EAAE,CAAC,IAAY,EAAE,OAAkB;YACvC,IAAI,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;YAEhC,IAAI,OAAO,CAAC,SAAS,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC9C,KAAK,MAAM,GAAG,IAAI,SAAS,CAAC,IAAI,EAAE,EAAE,CAAC;oBACnC,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,IAAI,GAAG,CAAC,EAAE,CAAC;wBAC/B,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;oBACxB,CAAC;gBACH,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YACzB,CAAC;QACH,CAAC;QAED,UAAU;YACR,OAAO,OAAO,CAAC;QACjB,CAAC;QAED,gBAAgB;YACd,OAAO,kBAAkB,CAAC,MAAM,CAAC,CAAC;QACpC,CAAC;QAED,KAAK,CAAC,WAAW,CAAC,IAAI;YACpB,IAAI,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;YAChC,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACnC,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;gBACzB,MAAM,IAAI,aAAa,CAAC,UAAU,IAAI,YAAY,EAAE,sBAAsB,CAAC,CAAC;YAC9E,CAAC;YACD,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,KAAK,CAAC,IAAI,CAAC,IAAY;YACrB,IAAI,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;YAEhC,IAAI,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;gBACxB,OAAO;oBACL,WAAW;wBACT,OAAO,KAAK,CAAC;oBACf,CAAC;oBACD,MAAM;wBACJ,OAAO,IAAI,CAAC;oBACd,CAAC;iBACF,CAAC;YACJ,CAAC;YAED,KAAK,MAAM,MAAM,IAAI,SAAS,CAAC,IAAI,EAAE,EAAE,CAAC;gBACtC,IAAI,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;oBAC/C,OAAO;wBACL,WAAW;4BACT,OAAO,IAAI,CAAC;wBACd,CAAC;wBACD,MAAM;4BACJ,OAAO,KAAK,CAAC;wBACf,CAAC;qBACF,CAAC;gBACJ,CAAC;YACH,CAAC;YAED,MAAM,IAAI,aAAa,CAAC,QAAQ,IAAI,YAAY,EAAE,QAAQ,CAAC,CAAC;QAC9D,CAAC;QAED,sCAAsC;QACtC,KAAK,CAAC,QAAQ,CAAC,IAAI;YACjB,OAAO,IAAI,CAAC;QACd,CAAC;QACD,iBAAiB,EAAE,wBAAwB;QAE3C,OAAO,EAAE,EAAE,GAAG,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE;QACtC,MAAM,EAAE,KAAK,EAAE,IAAY,EAAE,EAAE,CAAC,IAAI;QACpC,aAAa;QACb,aAAa,CAAC,IAAY;YACxB,OAAO,aAAa,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC;QAClC,CAAC;QAED,GAAG,OAAO,EAAE,qBAAqB;KAClC,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,OAAyB;IAClE,MAAM,SAAS,GAAG,eAAe,CAAS,CAAC,CAAC,OAAO,EAAE,yBAAyB,CAAC,CAAC;IAChF,MAAM,SAAS,GAAG,eAAe,CAAe,CAAC,CAAC,OAAO,EAAE,yBAAyB,CAAC,CAAC;IAEtF,MAAM,YAAY,GAAG,sBAAsB,CAAC,SAAS,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;IAC3E,OAAO;QACL,eAAe;QACf,SAAS;QACT,mBAAmB;QACnB,aAAa;QACb,aAAa;QACb,kBAAkB;QAClB,YAAY;QACZ,EAAE,EAAE,SAAS;KACd,CAAC;IAEF,SAAS,eAAe,CAAC,IAAY,EAAE,QAAgB;QACrD,SAAS,CAAC,GAAG,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC,CAAC;IACpD,CAAC;IAED,SAAS,SAAS,CAAC,IAAY,EAAE,QAAa;QAC5C,MAAM,GAAG,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;QACrC,SAAS,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,sBAAsB;QAC9C,SAAS,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IACtD,CAAC;IAED,KAAK,UAAU,mBAAmB,CAAC,IAAY,EAAE,YAAoB;QACnE,SAAS,CAAC,GAAG,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAE,MAAM,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC,CAAC;IAChF,CAAC;IAED,KAAK,UAAU,aAAa,CAAC,MAAc,EAAE,cAAsB;QACjE,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,cAAc,CAAC,CAAC;QAC9C,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,MAAM,YAAY,GAAG,IAAI,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;YACjD,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;YACxC,MAAM,CAAC,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,CAAC;YACnC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC;gBACf,IAAI,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;oBACjC,MAAM,aAAa,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;gBACjD,CAAC;qBAAM,CAAC;oBACN,MAAM,mBAAmB,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;gBACvD,CAAC;YACH,CAAC;YACD,IAAI,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;gBACpB,MAAM,aAAa,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;YACjD,CAAC;QACH,CAAC;IACH,CAAC;IAED,KAAK,UAAU,aAAa,CAAC,IAAY,EAAE,YAAoB;QAC7D,MAAM,GAAG,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;QACrC,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC;QAE/D,SAAS,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QACvB,SAAS,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IAC9B,CAAC;IAED,KAAK,UAAU,kBAAkB,CAAC,WAAgC;QAChE,KAAK,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,IAAI,WAAW,CAAC,KAAK,EAAE,CAAC;YAClE,MAAM,SAAS,GAAG,WAAW,CAAC,WAAW,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;YAChE,MAAM,OAAO,GAAG,MAAM,oBAAoB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;YAC/D,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;gBAC5B,MAAM,YAAY,GAAG,WAAW,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;gBACnD,MAAM,eAAe,GAAG,kBAAkB,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;gBAC/D,QAAQ,uBAAuB,CAAC,YAAY,CAAC,EAAE,CAAC;oBAC9C,KAAK,MAAM,CAAC;oBACZ,KAAK,OAAO;wBACV,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;wBACvD,eAAe,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAC;wBAC3C,MAAM;oBACR,KAAK,KAAK,CAAC;oBACX,KAAK,MAAM;wBACT,MAAM,aAAa,CAAC,eAAe,EAAE,YAAY,CAAC,CAAC;wBACnD,MAAM;gBACV,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC;AAED,MAAM,CAAC,MAAM,mBAAmB,GAAwB;IACtD,IAAI,EAAE,oBAAoB;IAC1B,WAAW,EAAE,MAAM,mBAAmB,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;IACvD,KAAK,EAAE;QACL,EAAE,WAAW,EAAE,qBAAqB,EAAE,OAAO,EAAE,gBAAgB,EAAE,OAAO,EAAE,IAAI,EAAE;QAChF,EAAE,WAAW,EAAE,YAAY,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE;KAC/D;CACF,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,SAAyB,EAAE;IAC9D,MAAM,QAAQ,GAAG,MAAM,sBAAsB,EAAE,CAAC;IAChD,MAAM,QAAQ,CAAC,kBAAkB,CAAC,mBAAmB,CAAC,CAAC;IACvD,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;QACrB,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;YACvC,MAAM,QAAQ,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;QAC7C,CAAC;IACH,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,IAAe;IACpD,MAAM,QAAQ,GAAG,IAAI,IAAI,CAAC,MAAM,cAAc,EAAE,CAAC,CAAC;IAClD,OAAO,iBAAiB,CAAC,QAAQ,CAAC,CAAC;AACrC,CAAC;AAED,KAAK,UAAU,sBAAsB;IACnC,IAAI,OAA4B,CAAC;IACjC,MAAM,SAAS,GAA0B,EAAE,CAAC;IAC5C,MAAM,SAAS,GAAyB,EAAE,CAAC;IAC3C,MAAM,UAAU,GAAG,MAAM,oBAAoB,EAAE,CAAC;IAEhD,sBAAsB;IACtB,UAAU,CAAC,eAAe,CAAC,wBAAwB,EAAE,qBAAqB,CAAC,CAAC;IAC5E,UAAU,CAAC,SAAS,CAAC,uBAAuB,EAAE;QAC5C,SAAS,EAAE,UAAU;QACrB,KAAK,CAAC,CAAM,EAAE,MAAY,EAAE,WAA2B;YACrD,IAAI,IAAI,GAAG,WAAW,EAAE,KAAK,CAAC;YAC9B,IAAI,CAAC,IAAI,EAAE,CAAC;gBACV,IACE,MAAM,CAAC,IAAI,KAAK,OAAO;oBACvB,MAAM,CAAC,IAAI,KAAK,QAAQ;oBACxB,MAAM,CAAC,IAAI,KAAK,WAAW;oBAC3B,MAAM,CAAC,IAAI,KAAK,MAAM;oBACtB,MAAM,CAAC,IAAI,KAAK,WAAW;oBAC3B,MAAM,CAAC,IAAI,KAAK,eAAe;oBAC/B,MAAM,CAAC,IAAI,KAAK,YAAY;oBAC5B,MAAM,CAAC,IAAI,KAAK,WAAW;oBAC3B,CAAC,MAAM,CAAC,IAAI,KAAK,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,EAC/C,CAAC;oBACD,IAAI,GAAG,MAAM,CAAC,IAAK,CAAC;gBACtB,CAAC;qBAAM,CAAC;oBACN,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;gBAC1D,CAAC;YACH,CAAC;YAED,SAAS,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC;QAC3B,CAAC;KACF,CAAC,CAAC;IAEH,OAAO;QACL,GAAG,UAAU;QACb,kBAAkB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;YAChC,IAAI,GAAG,KAAK,mBAAmB,EAAE,CAAC;gBAChC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACtB,CAAC;YACD,MAAM,UAAU,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC;QAC3C,CAAC;QACD,OAAO;QACP,QAAQ;QACR,kBAAkB;QAClB,SAAS;QACT,SAAS;QACT,IAAI,OAAO;YACT,MAAM,CACJ,OAAO,EACP,sFAAsF,CACvF,CAAC;YACF,OAAO,OAAO,CAAC;QACjB,CAAC;KACF,CAAC;IAEF,KAAK,UAAU,OAAO,CAAC,IAAY,EAAE,UAA2B,EAAE;QAChE,MAAM,CAAC,SAAS,EAAE,WAAW,CAAC,GAAG,MAAM,kBAAkB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACzE,qBAAqB,CAAC,WAAW,CAAC,CAAC;QACnC,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,KAAK,UAAU,QAAQ,CAAC,IAAY,EAAE,UAA2B,EAAE;QACjE,MAAM,CAAC,EAAE,WAAW,CAAC,GAAG,MAAM,kBAAkB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAChE,OAAO,WAAW,CAAC;IACrB,CAAC;IAED,KAAK,UAAU,kBAAkB,CAC/B,QAAgB,EAChB,UAA2B,EAAE;QAE7B,MAAM,CAAC,GAAG,MAAM,cAAc,CAAC,UAAU,CAAC,YAAY,EAAE,kBAAkB,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC,CAAC;QAC/F,OAAO,GAAG,CAAC,CAAC;QACZ,oBAAoB,CAAC,CAAC,GAAG,EAAE,EAAE,CAC3B,cAAc,CAAC,CAAC,CAAC,WAAW,EAAE,YAAY,CAAC,EAAE,IAAI,EAAE,UAAU,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC,CAAC,CACvF,CAAC;QACF,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC;IACpC,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,SAAiB,EAAE,OAAe;IAC3E,OAAO,MAAM,CAAC,OAAO,EAAE;QACrB,GAAG,EAAE,SAAS;QACd,SAAS,EAAE,IAAI;KAChB,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"test-host.js","sourceRoot":"","sources":["../../../src/testing/test-host.ts"],"names":[],"mappings":"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"}
@@ -2,7 +2,7 @@ import { TextDocument } from "vscode-languageserver-textdocument";
2
2
  import { Diagnostic } from "vscode-languageserver/node.js";
3
3
  import { IdentifierNode } from "../core/types.js";
4
4
  import { Server, ServerHost } from "../server/index.js";
5
- import { TestHostOptions } from "./test-host.js";
5
+ import { TestHostOptions } from "./test-compiler-host.js";
6
6
  import { TestFileSystem } from "./types.js";
7
7
  export interface TestServerHost extends ServerHost, TestFileSystem {
8
8
  server: Server;
@@ -1 +1 @@
1
- {"version":3,"file":"test-server-host.d.ts","sourceRoot":"","sources":["../../../src/testing/test-server-host.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;AAClE,OAAO,EAAE,UAAU,EAAkB,MAAM,+BAA+B,CAAC;AAG3E,OAAO,EAAE,cAAc,EAAc,MAAM,kBAAkB,CAAC;AAC9D,OAAO,EAAE,MAAM,EAAE,UAAU,EAAgB,MAAM,oBAAoB,CAAC;AAEtE,OAAO,EAAuB,eAAe,EAAwB,MAAM,gBAAgB,CAAC;AAE5F,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAE5C,MAAM,WAAW,cAAe,SAAQ,UAAU,EAAE,cAAc;IAChE,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,SAAS,MAAM,EAAE,CAAC;IAC/B,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS,CAAC;IACxD,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,YAAY,CAAC;IACjE,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,CAAC;IACzC,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,UAAU,EAAE,CAAC;IACpD,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;CAC9B;AAED,wBAAsB,oBAAoB,CAAC,OAAO,CAAC,EAAE,eAAe,GAAG;IAAE,YAAY,CAAC,EAAE,MAAM,CAAA;CAAE,2BAkG/F;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,cAAc,EAAE,CAanE"}
1
+ {"version":3,"file":"test-server-host.d.ts","sourceRoot":"","sources":["../../../src/testing/test-server-host.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;AAClE,OAAO,EAAE,UAAU,EAAkB,MAAM,+BAA+B,CAAC;AAG3E,OAAO,EAAE,cAAc,EAAc,MAAM,kBAAkB,CAAC;AAE9D,OAAO,EAAE,MAAM,EAAE,UAAU,EAAgB,MAAM,oBAAoB,CAAC;AAGtE,OAAO,EAAuB,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAE/E,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAE5C,MAAM,WAAW,cAAe,SAAQ,UAAU,EAAE,cAAc;IAChE,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,SAAS,MAAM,EAAE,CAAC;IAC/B,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS,CAAC;IACxD,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,YAAY,CAAC;IACjE,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,CAAC;IACzC,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,UAAU,EAAE,CAAC;IACpD,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;CAC9B;AAED,wBAAsB,oBAAoB,CAAC,OAAO,CAAC,EAAE,eAAe,GAAG;IAAE,YAAY,CAAC,EAAE,MAAM,CAAA;CAAE,2BAmG/F;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,cAAc,EAAE,CAanE"}