@typespec/compiler 1.2.0-dev.4 → 1.2.0-dev.6

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 (45) hide show
  1. package/dist/manifest.js +2 -2
  2. package/dist/src/testing/fourslash.d.ts +16 -0
  3. package/dist/src/testing/fourslash.d.ts.map +1 -0
  4. package/dist/src/testing/fourslash.js +17 -0
  5. package/dist/src/testing/fourslash.js.map +1 -0
  6. package/dist/src/testing/fs.d.ts +12 -0
  7. package/dist/src/testing/fs.d.ts.map +1 -0
  8. package/dist/src/testing/fs.js +133 -0
  9. package/dist/src/testing/fs.js.map +1 -0
  10. package/dist/src/testing/index.d.ts +9 -2
  11. package/dist/src/testing/index.d.ts.map +1 -1
  12. package/dist/src/testing/index.js +7 -1
  13. package/dist/src/testing/index.js.map +1 -1
  14. package/dist/src/testing/marked-template.d.ts +96 -0
  15. package/dist/src/testing/marked-template.d.ts.map +1 -0
  16. package/dist/src/testing/marked-template.js +107 -0
  17. package/dist/src/testing/marked-template.js.map +1 -0
  18. package/dist/src/testing/rule-tester.d.ts +2 -2
  19. package/dist/src/testing/rule-tester.d.ts.map +1 -1
  20. package/dist/src/testing/rule-tester.js +2 -1
  21. package/dist/src/testing/rule-tester.js.map +1 -1
  22. package/dist/src/testing/test-compiler-host.d.ts +11 -0
  23. package/dist/src/testing/test-compiler-host.d.ts.map +1 -0
  24. package/dist/src/testing/test-compiler-host.js +138 -0
  25. package/dist/src/testing/test-compiler-host.js.map +1 -0
  26. package/dist/src/testing/test-host.d.ts +3 -9
  27. package/dist/src/testing/test-host.d.ts.map +1 -1
  28. package/dist/src/testing/test-host.js +6 -218
  29. package/dist/src/testing/test-host.js.map +1 -1
  30. package/dist/src/testing/test-server-host.d.ts +1 -1
  31. package/dist/src/testing/test-server-host.d.ts.map +1 -1
  32. package/dist/src/testing/test-server-host.js +2 -1
  33. package/dist/src/testing/test-server-host.js.map +1 -1
  34. package/dist/src/testing/tester.d.ts +12 -0
  35. package/dist/src/testing/tester.d.ts.map +1 -0
  36. package/dist/src/testing/tester.js +339 -0
  37. package/dist/src/testing/tester.js.map +1 -0
  38. package/dist/src/testing/types.d.ts +146 -3
  39. package/dist/src/testing/types.d.ts.map +1 -1
  40. package/dist/src/testing/types.js +1 -0
  41. package/dist/src/testing/types.js.map +1 -1
  42. package/dist/src/typekit/kits/literal.d.ts.map +1 -1
  43. package/dist/src/typekit/kits/literal.js +4 -25
  44. package/dist/src/typekit/kits/literal.js.map +1 -1
  45. package/package.json +1 -1
package/dist/manifest.js CHANGED
@@ -1,4 +1,4 @@
1
1
  export default {
2
- "version": "1.2.0-dev.4",
3
- "commit": "3c2615dc89f2923f78d12eb7a82548433621d9da"
2
+ "version": "1.2.0-dev.6",
3
+ "commit": "bd581b10337b5656a1e76637b98b8c1475c08397"
4
4
  };
@@ -0,0 +1,16 @@
1
+ /**
2
+ * PositionedMarker represents a marker in the code with its name and position.
3
+ */
4
+ export interface PositionedMarker {
5
+ /** Marker name */
6
+ readonly name: string;
7
+ /** Position of the marker */
8
+ readonly pos: number;
9
+ }
10
+ /**
11
+ * Extract TypeScript fourslash-style markers: /\*markerName*\/
12
+ * @param code
13
+ * @returns an array of Marker objects with name, pos, and end
14
+ */
15
+ export declare function extractMarkers(code: string): PositionedMarker[];
16
+ //# sourceMappingURL=fourslash.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fourslash.d.ts","sourceRoot":"","sources":["../../../src/testing/fourslash.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,kBAAkB;IAClB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,6BAA6B;IAC7B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;CACtB;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,gBAAgB,EAAE,CAU/D"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Extract TypeScript fourslash-style markers: /\*markerName*\/
3
+ * @param code
4
+ * @returns an array of Marker objects with name, pos, and end
5
+ */
6
+ export function extractMarkers(code) {
7
+ const markerRegex = /\/\*([a-zA-Z0-9_]+)\*\//g;
8
+ const markers = [];
9
+ let match;
10
+ while ((match = markerRegex.exec(code)) !== null) {
11
+ const markerName = match[1];
12
+ const pos = markerRegex.lastIndex;
13
+ markers.push({ name: markerName, pos });
14
+ }
15
+ return markers;
16
+ }
17
+ //# sourceMappingURL=fourslash.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fourslash.js","sourceRoot":"","sources":["../../../src/testing/fourslash.ts"],"names":[],"mappings":"AAUA;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAAC,IAAY;IACzC,MAAM,WAAW,GAAG,0BAA0B,CAAC;IAC/C,MAAM,OAAO,GAAuB,EAAE,CAAC;IACvC,IAAI,KAA6B,CAAC;IAClC,OAAO,CAAC,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QACjD,MAAM,UAAU,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QAC5B,MAAM,GAAG,GAAG,WAAW,CAAC,SAAS,CAAC;QAClC,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,EAAE,CAAC,CAAC;IAC1C,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC"}
@@ -0,0 +1,12 @@
1
+ import { TestHostOptions } from "./test-compiler-host.js";
2
+ import type { JsFile, TestFileSystem } from "./types.js";
3
+ export declare function resolveVirtualPath(path: string, ...paths: string[]): string;
4
+ /**
5
+ * Constructor for various mock files.
6
+ */
7
+ export declare const mockFile: {
8
+ /** Define a JS file with the given named exports */
9
+ js: (exports: Record<string, unknown>) => JsFile;
10
+ };
11
+ export declare function createTestFileSystem(options?: TestHostOptions): TestFileSystem;
12
+ //# sourceMappingURL=fs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fs.d.ts","sourceRoot":"","sources":["../../../src/testing/fs.ts"],"names":[],"mappings":"AAKA,OAAO,EAA0B,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAElF,OAAO,KAAK,EAAE,MAAM,EAAY,cAAc,EAAuB,MAAM,YAAY,CAAC;AAExF,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,KAAK,EAAE,MAAM,EAAE,UAMlE;AAED;;GAEG;AACH,eAAO,MAAM,QAAQ;IACnB,oDAAoD;kBACtC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAG,MAAM;CAG/C,CAAC;AAEF,wBAAgB,oBAAoB,CAAC,OAAO,CAAC,EAAE,eAAe,GAAG,cAAc,CAI9E"}
@@ -0,0 +1,133 @@
1
+ import { readdir, readFile, stat } from "fs/promises";
2
+ import { join } from "path";
3
+ import { pathToFileURL } from "url";
4
+ import { getAnyExtensionFromPath, resolvePath } from "../core/path-utils.js";
5
+ import { createStringMap } from "../utils/misc.js";
6
+ import { createTestCompilerHost } from "./test-compiler-host.js";
7
+ import { findFilesFromPattern } from "./test-host.js";
8
+ export function resolveVirtualPath(path, ...paths) {
9
+ // NB: We should always resolve an absolute path, and there is no absolute
10
+ // path that works across OSes. This ensures that we can still rely on API
11
+ // like pathToFileURL in tests.
12
+ const rootDir = process.platform === "win32" ? "Z:/test" : "/test";
13
+ return resolvePath(rootDir, path, ...paths);
14
+ }
15
+ /**
16
+ * Constructor for various mock files.
17
+ */
18
+ export const mockFile = {
19
+ /** Define a JS file with the given named exports */
20
+ js: (exports) => {
21
+ return { kind: "js", exports };
22
+ },
23
+ };
24
+ export function createTestFileSystem(options) {
25
+ const virtualFs = createStringMap(!!options?.caseInsensitiveFileSystem);
26
+ const jsImports = createStringMap(!!options?.caseInsensitiveFileSystem);
27
+ return createTestFileSystemInternal(virtualFs, jsImports, options);
28
+ }
29
+ function createTestFileSystemInternal(virtualFs, jsImports, options) {
30
+ const compilerHost = createTestCompilerHost(virtualFs, jsImports, options);
31
+ let frozen = false;
32
+ return {
33
+ add,
34
+ addTypeSpecFile,
35
+ addJsFile,
36
+ addRealTypeSpecFile,
37
+ addRealJsFile,
38
+ addRealFolder,
39
+ addTypeSpecLibrary,
40
+ fs: virtualFs,
41
+ compilerHost,
42
+ freeze,
43
+ clone,
44
+ };
45
+ function assertNotFrozen() {
46
+ if (frozen) {
47
+ throw new Error("Cannot modify the file system after it has been frozen.");
48
+ }
49
+ }
50
+ function add(path, contents) {
51
+ assertNotFrozen();
52
+ if (typeof contents === "string") {
53
+ addRaw(path, contents);
54
+ }
55
+ else {
56
+ addJsFile(path, contents.exports);
57
+ }
58
+ }
59
+ function addRaw(path, contents) {
60
+ assertNotFrozen();
61
+ virtualFs.set(resolveVirtualPath(path), contents);
62
+ }
63
+ function addJsFile(path, contents) {
64
+ assertNotFrozen();
65
+ const key = resolveVirtualPath(path);
66
+ virtualFs.set(key, ""); // don't need contents
67
+ jsImports.set(key, new Promise((r) => r(contents)));
68
+ }
69
+ function addTypeSpecFile(path, contents) {
70
+ assertNotFrozen();
71
+ virtualFs.set(resolveVirtualPath(path), contents);
72
+ }
73
+ async function addRealTypeSpecFile(path, existingPath) {
74
+ assertNotFrozen();
75
+ virtualFs.set(resolveVirtualPath(path), await readFile(existingPath, "utf8"));
76
+ }
77
+ async function addRealFolder(folder, existingFolder) {
78
+ assertNotFrozen();
79
+ const entries = await readdir(existingFolder);
80
+ for (const entry of entries) {
81
+ const existingPath = join(existingFolder, entry);
82
+ const virtualPath = join(folder, entry);
83
+ const s = await stat(existingPath);
84
+ if (s.isFile()) {
85
+ if (existingPath.endsWith(".js")) {
86
+ await addRealJsFile(virtualPath, existingPath);
87
+ }
88
+ else {
89
+ await addRealTypeSpecFile(virtualPath, existingPath);
90
+ }
91
+ }
92
+ if (s.isDirectory()) {
93
+ await addRealFolder(virtualPath, existingPath);
94
+ }
95
+ }
96
+ }
97
+ async function addRealJsFile(path, existingPath) {
98
+ assertNotFrozen();
99
+ const key = resolveVirtualPath(path);
100
+ const exports = await import(pathToFileURL(existingPath).href);
101
+ virtualFs.set(key, "");
102
+ jsImports.set(key, exports);
103
+ }
104
+ async function addTypeSpecLibrary(testLibrary) {
105
+ assertNotFrozen();
106
+ for (const { realDir, pattern, virtualPath } of testLibrary.files) {
107
+ const lookupDir = resolvePath(testLibrary.packageRoot, realDir);
108
+ const entries = await findFilesFromPattern(lookupDir, pattern);
109
+ for (const entry of entries) {
110
+ const fileRealPath = resolvePath(lookupDir, entry);
111
+ const fileVirtualPath = resolveVirtualPath(virtualPath, entry);
112
+ switch (getAnyExtensionFromPath(fileRealPath)) {
113
+ case ".tsp":
114
+ case ".json":
115
+ const contents = await readFile(fileRealPath, "utf-8");
116
+ addTypeSpecFile(fileVirtualPath, contents);
117
+ break;
118
+ case ".js":
119
+ case ".mjs":
120
+ await addRealJsFile(fileVirtualPath, fileRealPath);
121
+ break;
122
+ }
123
+ }
124
+ }
125
+ }
126
+ function freeze() {
127
+ frozen = true;
128
+ }
129
+ function clone() {
130
+ return createTestFileSystemInternal(new Map(virtualFs), new Map(jsImports), options);
131
+ }
132
+ }
133
+ //# sourceMappingURL=fs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fs.js","sourceRoot":"","sources":["../../../src/testing/fs.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,15 @@
1
+ export {
2
+ /** @deprecated Using this should be a noop. Prefer new test framework*/
3
+ StandardTestLibrary, } from "./test-compiler-host.js";
1
4
  export { expectCodeFixOnAst } from "./code-fix-testing.js";
2
5
  export { expectDiagnosticEmpty, expectDiagnostics, type DiagnosticMatch } from "./expect.js";
6
+ export { createTestFileSystem, mockFile } from "./fs.js";
7
+ export { t } from "./marked-template.js";
3
8
  export { createLinterRuleTester, type ApplyCodeFixExpect, type LinterRuleTestExpect, type LinterRuleTester, } from "./rule-tester.js";
4
9
  export { extractCursor, extractSquiggles } from "./source-utils.js";
5
- export { StandardTestLibrary, createTestFileSystem, createTestHost, createTestRunner, findFilesFromPattern, type TestHostOptions, } from "./test-host.js";
10
+ export type { TestHostOptions } from "./test-compiler-host.js";
11
+ export { createTestHost, createTestRunner, findFilesFromPattern } from "./test-host.js";
6
12
  export { createTestLibrary, createTestWrapper, expectTypeEquals, findTestPackageRoot, resolveVirtualPath, trimBlankLines, type TestWrapperOptions, } from "./test-utils.js";
7
- export type { BasicTestRunner, TestFileSystem, TestFiles, TestHost, TestHostConfig, TestHostError, TypeSpecTestLibrary, TypeSpecTestLibraryInit, } from "./types.js";
13
+ export { createTester } from "./tester.js";
14
+ export type { BasicTestRunner, EmitterTester, EmitterTesterInstance, JsFile, MockFile, TestCompileOptions, TestCompileResult, TestEmitterCompileResult, TestFileSystem as TestFileSystem, TestFiles, TestHost, TestHostConfig, TestHostError, Tester, TesterInstance, TypeSpecTestLibrary, TypeSpecTestLibraryInit, } from "./types.js";
8
15
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/testing/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,KAAK,eAAe,EAAE,MAAM,aAAa,CAAC;AAC7F,OAAO,EACL,sBAAsB,EACtB,KAAK,kBAAkB,EACvB,KAAK,oBAAoB,EACzB,KAAK,gBAAgB,GACtB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACpE,OAAO,EACL,mBAAmB,EACnB,oBAAoB,EACpB,cAAc,EACd,gBAAgB,EAChB,oBAAoB,EACpB,KAAK,eAAe,GACrB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,iBAAiB,EACjB,iBAAiB,EACjB,gBAAgB,EAChB,mBAAmB,EACnB,kBAAkB,EAClB,cAAc,EACd,KAAK,kBAAkB,GACxB,MAAM,iBAAiB,CAAC;AACzB,YAAY,EACV,eAAe,EACf,cAAc,EACd,SAAS,EACT,QAAQ,EACR,cAAc,EACd,aAAa,EACb,mBAAmB,EACnB,uBAAuB,GACxB,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/testing/index.ts"],"names":[],"mappings":"AAAA,OAAO;AACL,wEAAwE;AACxE,mBAAmB,GACpB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,KAAK,eAAe,EAAE,MAAM,aAAa,CAAC;AAC7F,OAAO,EAAE,oBAAoB,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACzD,OAAO,EAAE,CAAC,EAAE,MAAM,sBAAsB,CAAC;AACzC,OAAO,EACL,sBAAsB,EACtB,KAAK,kBAAkB,EACvB,KAAK,oBAAoB,EACzB,KAAK,gBAAgB,GACtB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACpE,YAAY,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AACxF,OAAO,EACL,iBAAiB,EACjB,iBAAiB,EACjB,gBAAgB,EAChB,mBAAmB,EACnB,kBAAkB,EAClB,cAAc,EACd,KAAK,kBAAkB,GACxB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,YAAY,EACV,eAAe,EACf,aAAa,EACb,qBAAqB,EACrB,MAAM,EACN,QAAQ,EACR,kBAAkB,EAClB,iBAAiB,EACjB,wBAAwB,EACxB,cAAc,IAAI,cAAc,EAChC,SAAS,EACT,QAAQ,EACR,cAAc,EACd,aAAa,EACb,MAAM,EACN,cAAc,EACd,mBAAmB,EACnB,uBAAuB,GACxB,MAAM,YAAY,CAAC"}
@@ -1,7 +1,13 @@
1
+ export {
2
+ /** @deprecated Using this should be a noop. Prefer new test framework*/
3
+ StandardTestLibrary, } from "./test-compiler-host.js";
1
4
  export { expectCodeFixOnAst } from "./code-fix-testing.js";
2
5
  export { expectDiagnosticEmpty, expectDiagnostics } from "./expect.js";
6
+ export { createTestFileSystem, mockFile } from "./fs.js";
7
+ export { t } from "./marked-template.js";
3
8
  export { createLinterRuleTester, } from "./rule-tester.js";
4
9
  export { extractCursor, extractSquiggles } from "./source-utils.js";
5
- export { StandardTestLibrary, createTestFileSystem, createTestHost, createTestRunner, findFilesFromPattern, } from "./test-host.js";
10
+ export { createTestHost, createTestRunner, findFilesFromPattern } from "./test-host.js";
6
11
  export { createTestLibrary, createTestWrapper, expectTypeEquals, findTestPackageRoot, resolveVirtualPath, trimBlankLines, } from "./test-utils.js";
12
+ export { createTester } from "./tester.js";
7
13
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/testing/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,qBAAqB,EAAE,iBAAiB,EAAwB,MAAM,aAAa,CAAC;AAC7F,OAAO,EACL,sBAAsB,GAIvB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACpE,OAAO,EACL,mBAAmB,EACnB,oBAAoB,EACpB,cAAc,EACd,gBAAgB,EAChB,oBAAoB,GAErB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,iBAAiB,EACjB,iBAAiB,EACjB,gBAAgB,EAChB,mBAAmB,EACnB,kBAAkB,EAClB,cAAc,GAEf,MAAM,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/testing/index.ts"],"names":[],"mappings":"AAAA,OAAO;AACL,wEAAwE;AACxE,mBAAmB,GACpB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,qBAAqB,EAAE,iBAAiB,EAAwB,MAAM,aAAa,CAAC;AAC7F,OAAO,EAAE,oBAAoB,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACzD,OAAO,EAAE,CAAC,EAAE,MAAM,sBAAsB,CAAC;AACzC,OAAO,EACL,sBAAsB,GAIvB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAEpE,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AACxF,OAAO,EACL,iBAAiB,EACjB,iBAAiB,EACjB,gBAAgB,EAChB,mBAAmB,EACnB,kBAAkB,EAClB,cAAc,GAEf,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC"}
@@ -0,0 +1,96 @@
1
+ import type { ArrayValue, BooleanLiteral, BooleanValue, Entity, Enum, EnumMember, EnumValue, Interface, Model, ModelProperty, Namespace, NumericLiteral, NumericValue, ObjectValue, Operation, Scalar, ScalarValue, StringLiteral, StringValue, Type, Union, UnionVariant, Value } from "../core/types.js";
2
+ export type Marker<T extends Entity, N extends string> = T extends Type ? TypeMarker<T, N> : T extends Value ? ValueMarker<T, N> : never;
3
+ export interface TypeMarker<T extends Type, N extends string> {
4
+ readonly entityKind: "Type";
5
+ readonly kind?: T["kind"];
6
+ readonly name: N;
7
+ }
8
+ export interface ValueMarker<T extends Value, N extends string> {
9
+ readonly entityKind: "Value";
10
+ readonly valueKind?: T["valueKind"];
11
+ readonly name: N;
12
+ }
13
+ export type MarkerConfig<T extends Record<string, Entity>> = {
14
+ [K in keyof T]: Marker<T[K], K & string>;
15
+ };
16
+ export interface TemplateWithMarkers<T extends Record<string, Entity>> {
17
+ readonly isTemplateWithMarkers: true;
18
+ readonly code: string;
19
+ readonly markers: MarkerConfig<T>;
20
+ }
21
+ export declare const TemplateWithMarkers: {
22
+ is: (value: unknown) => value is TemplateWithMarkers<any>;
23
+ };
24
+ /** Specify that this value is dynamic and needs to be interpolated with the given keys */
25
+ declare function code<const T extends (Marker<Entity, string> | string)[]>(strings: TemplateStringsArray, ...keys: T): TemplateWithMarkers<Prettify<CollectType<T>>>;
26
+ /** TypeSpec template marker */
27
+ export declare const t: {
28
+ /**
29
+ * Define a marked code block
30
+ *
31
+ * @example
32
+ * ```ts
33
+ * const code = t.code`model ${t.model("Foo")} { bar: string }`;
34
+ * ```
35
+ */
36
+ code: typeof code;
37
+ /** Mark any type */
38
+ type: <const N extends string>(name: N) => TypeMarker<Type, N>;
39
+ /** Mark a model */
40
+ model: <const N extends string>(name: N) => TypeMarker<Model, N>;
41
+ /** Mark an enum */
42
+ enum: <const N extends string>(name: N) => TypeMarker<Enum, N>;
43
+ /** Mark an union */
44
+ union: <const N extends string>(name: N) => TypeMarker<Union, N>;
45
+ /** Mark an interface */
46
+ interface: <const N extends string>(name: N) => TypeMarker<Interface, N>;
47
+ /** Mark an operation */
48
+ op: <const N extends string>(name: N) => TypeMarker<Operation, N>;
49
+ /** Mark an enum member */
50
+ enumMember: <const N extends string>(name: N) => TypeMarker<EnumMember, N>;
51
+ /** Mark a model property */
52
+ modelProperty: <const N extends string>(name: N) => TypeMarker<ModelProperty, N>;
53
+ /** Mark a namespace */
54
+ namespace: <const N extends string>(name: N) => TypeMarker<Namespace, N>;
55
+ /** Mark a scalar */
56
+ scalar: <const N extends string>(name: N) => TypeMarker<Scalar, N>;
57
+ /** Mark a union variant */
58
+ unionVariant: <const N extends string>(name: N) => TypeMarker<UnionVariant, N>;
59
+ /** Mark a boolean literal */
60
+ boolean: <const N extends string>(name: N) => TypeMarker<BooleanLiteral, N>;
61
+ /** Mark a number literal */
62
+ number: <const N extends string>(name: N) => TypeMarker<NumericLiteral, N>;
63
+ /** Mark a string literal */
64
+ string: <const N extends string>(name: N) => TypeMarker<StringLiteral, N>;
65
+ /** Mark any value */
66
+ value: <const N extends string>(name: N) => ValueMarker<Value, N>;
67
+ /** Mark an object value */
68
+ object: <const N extends string>(name: N) => ValueMarker<ObjectValue, N>;
69
+ /** Mark an array value */
70
+ array: <const N extends string>(name: N) => ValueMarker<ArrayValue, N>;
71
+ /** Mark a numeric value */
72
+ numericValue: <const N extends string>(name: N) => ValueMarker<NumericValue, N>;
73
+ /** Mark a string value */
74
+ stringValue: <const N extends string>(name: N) => ValueMarker<StringValue, N>;
75
+ /** Mark a boolean value */
76
+ booleanValue: <const N extends string>(name: N) => ValueMarker<BooleanValue, N>;
77
+ /** Mark a scalar value */
78
+ scalarValue: <const N extends string>(name: N) => ValueMarker<ScalarValue, N>;
79
+ /** Mark an enum value */
80
+ enumValue: <const N extends string>(name: N) => ValueMarker<EnumValue, N>;
81
+ };
82
+ type Prettify<T extends Record<string, Entity>> = {
83
+ [K in keyof T]: T[K] & Entity;
84
+ } & {};
85
+ type InferType<T> = T extends Marker<infer K, infer _> ? K : never;
86
+ type CollectType<T extends ReadonlyArray<Marker<Entity, string> | string>> = {
87
+ [K in T[number] as K extends Marker<infer _K, infer N> ? N : never]: InferType<K>;
88
+ };
89
+ type UnionToIntersection<U> = (U extends any ? (k: U) => void : never) extends (k: infer I) => void ? I : never;
90
+ type FlattenRecord<T extends Record<string, unknown>> = UnionToIntersection<T[keyof T]>;
91
+ type FlattenTemplates<M extends Record<string, string | TemplateWithMarkers<any>>> = FlattenRecord<{
92
+ [K in keyof M]: M[K] extends TemplateWithMarkers<infer T> ? T : never;
93
+ }>;
94
+ export type GetMarkedEntities<M extends string | TemplateWithMarkers<any> | Record<string, string | TemplateWithMarkers<any>>> = M extends Record<string, string | TemplateWithMarkers<any>> ? FlattenTemplates<M> : M extends string | TemplateWithMarkers<infer R> ? R : never;
95
+ export {};
96
+ //# sourceMappingURL=marked-template.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"marked-template.d.ts","sourceRoot":"","sources":["../../../src/testing/marked-template.ts"],"names":[],"mappings":"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"}
@@ -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"}