@typespec/compiler 1.2.0-dev.0 → 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 (77) 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/decorators.d.ts.map +1 -1
  8. package/dist/src/lib/decorators.js +5 -2
  9. package/dist/src/lib/decorators.js.map +1 -1
  10. package/dist/src/lib/visibility.d.ts.map +1 -1
  11. package/dist/src/lib/visibility.js +11 -0
  12. package/dist/src/lib/visibility.js.map +1 -1
  13. package/dist/src/server/client-config-provider.d.ts +24 -0
  14. package/dist/src/server/client-config-provider.d.ts.map +1 -0
  15. package/dist/src/server/client-config-provider.js +40 -0
  16. package/dist/src/server/client-config-provider.js.map +1 -0
  17. package/dist/src/server/compile-service.d.ts +3 -1
  18. package/dist/src/server/compile-service.d.ts.map +1 -1
  19. package/dist/src/server/compile-service.js +9 -1
  20. package/dist/src/server/compile-service.js.map +1 -1
  21. package/dist/src/server/server.js +6 -2
  22. package/dist/src/server/server.js.map +1 -1
  23. package/dist/src/server/serverlib.d.ts +2 -1
  24. package/dist/src/server/serverlib.d.ts.map +1 -1
  25. package/dist/src/server/serverlib.js +2 -1
  26. package/dist/src/server/serverlib.js.map +1 -1
  27. package/dist/src/testing/fourslash.d.ts +16 -0
  28. package/dist/src/testing/fourslash.d.ts.map +1 -0
  29. package/dist/src/testing/fourslash.js +17 -0
  30. package/dist/src/testing/fourslash.js.map +1 -0
  31. package/dist/src/testing/fs.d.ts +12 -0
  32. package/dist/src/testing/fs.d.ts.map +1 -0
  33. package/dist/src/testing/fs.js +133 -0
  34. package/dist/src/testing/fs.js.map +1 -0
  35. package/dist/src/testing/index.d.ts +9 -2
  36. package/dist/src/testing/index.d.ts.map +1 -1
  37. package/dist/src/testing/index.js +7 -1
  38. package/dist/src/testing/index.js.map +1 -1
  39. package/dist/src/testing/marked-template.d.ts +96 -0
  40. package/dist/src/testing/marked-template.d.ts.map +1 -0
  41. package/dist/src/testing/marked-template.js +107 -0
  42. package/dist/src/testing/marked-template.js.map +1 -0
  43. package/dist/src/testing/rule-tester.d.ts +2 -2
  44. package/dist/src/testing/rule-tester.d.ts.map +1 -1
  45. package/dist/src/testing/rule-tester.js +2 -1
  46. package/dist/src/testing/rule-tester.js.map +1 -1
  47. package/dist/src/testing/test-compiler-host.d.ts +11 -0
  48. package/dist/src/testing/test-compiler-host.d.ts.map +1 -0
  49. package/dist/src/testing/test-compiler-host.js +138 -0
  50. package/dist/src/testing/test-compiler-host.js.map +1 -0
  51. package/dist/src/testing/test-host.d.ts +3 -9
  52. package/dist/src/testing/test-host.d.ts.map +1 -1
  53. package/dist/src/testing/test-host.js +6 -218
  54. package/dist/src/testing/test-host.js.map +1 -1
  55. package/dist/src/testing/test-server-host.d.ts +1 -1
  56. package/dist/src/testing/test-server-host.d.ts.map +1 -1
  57. package/dist/src/testing/test-server-host.js +5 -2
  58. package/dist/src/testing/test-server-host.js.map +1 -1
  59. package/dist/src/testing/tester.d.ts +12 -0
  60. package/dist/src/testing/tester.d.ts.map +1 -0
  61. package/dist/src/testing/tester.js +341 -0
  62. package/dist/src/testing/tester.js.map +1 -0
  63. package/dist/src/testing/types.d.ts +146 -3
  64. package/dist/src/testing/types.d.ts.map +1 -1
  65. package/dist/src/testing/types.js +1 -0
  66. package/dist/src/testing/types.js.map +1 -1
  67. package/dist/src/typekit/kits/literal.d.ts.map +1 -1
  68. package/dist/src/typekit/kits/literal.js +4 -25
  69. package/dist/src/typekit/kits/literal.js.map +1 -1
  70. package/lib/intrinsics.tsp +1 -1
  71. package/package.json +4 -4
  72. package/templates/__snapshots__/emitter-ts/package.json +1 -1
  73. package/templates/__snapshots__/library-ts/package.json +1 -1
  74. package/templates/__snapshots__/library-ts/test/decorators.test.ts +1 -1
  75. package/templates/emitter-ts/package.json +1 -1
  76. package/templates/library-ts/package.json +1 -1
  77. package/templates/library-ts/test/decorators.test.ts.mu +1 -1
@@ -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":"AAsDA,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,EAAE,EAAE,CAAC,KAAc,EAAqC,EAAE;QACxD,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,uBAAuB,IAAI,KAAK,CAAC;IACzF,CAAC;CACF,CAAC;AAEF,0FAA0F;AAC1F,SAAS,IAAI,CACX,OAA6B,EAC7B,GAAG,IAAO;IAEV,MAAM,OAAO,GAAsB,EAAE,CAAC;IACtC,MAAM,MAAM,GAAa,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IACtC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE;QACtB,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;YAC5B,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACnB,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;YAC1C,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG;gBAClB,UAAU,EAAE,GAAG,CAAC,UAAU;gBAC1B,IAAI,EAAE,GAAG,CAAC,IAAI;gBACd,IAAI,EAAG,GAAW,CAAC,IAAI;gBACvB,SAAS,EAAG,GAAW,CAAC,SAAS;aAClC,CAAC;QACJ,CAAC;QACD,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAC9B,CAAC,CAAC,CAAC;IACH,OAAO;QACL,qBAAqB,EAAE,IAAI;QAC3B,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;QACrB,OAAO,EAAE,OAAc;KACxB,CAAC;AACJ,CAAC;AAED,SAAS,UAAU,CAAuB,IAAgB;IACxD,OAAO,CAAyB,IAAO,EAAoB,EAAE;QAC3D,OAAO;YACL,UAAU,EAAE,MAAM;YAClB,IAAI;YACJ,IAAI;SACL,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC;AAED,SAAS,WAAW,CAAwB,SAA0B;IACpE,OAAO,CAAyB,IAAO,EAAqB,EAAE;QAC5D,OAAO;YACL,UAAU,EAAE,OAAO;YACnB,SAAS;YACT,IAAI;SACL,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC;AAED,+BAA+B;AAC/B,MAAM,CAAC,MAAM,CAAC,GAAG;IACf;;;;;;;OAOG;IACH,IAAI,EAAE,IAAI;IAEV,cAAc;IAEd,oBAAoB;IACpB,IAAI,EAAE,UAAU,EAAQ;IACxB,mBAAmB;IACnB,KAAK,EAAE,UAAU,CAAQ,OAAO,CAAC;IACjC,mBAAmB;IACnB,IAAI,EAAE,UAAU,CAAO,MAAM,CAAC;IAC9B,oBAAoB;IACpB,KAAK,EAAE,UAAU,CAAQ,OAAO,CAAC;IACjC,wBAAwB;IACxB,SAAS,EAAE,UAAU,CAAY,WAAW,CAAC;IAC7C,wBAAwB;IACxB,EAAE,EAAE,UAAU,CAAY,WAAW,CAAC;IACtC,0BAA0B;IAC1B,UAAU,EAAE,UAAU,CAAa,YAAY,CAAC;IAChD,4BAA4B;IAC5B,aAAa,EAAE,UAAU,CAAgB,eAAe,CAAC;IACzD,uBAAuB;IACvB,SAAS,EAAE,UAAU,CAAY,WAAW,CAAC;IAC7C,oBAAoB;IACpB,MAAM,EAAE,UAAU,CAAS,QAAQ,CAAC;IACpC,2BAA2B;IAC3B,YAAY,EAAE,UAAU,CAAe,cAAc,CAAC;IACtD,6BAA6B;IAC7B,OAAO,EAAE,UAAU,CAAiB,SAAS,CAAC;IAC9C,4BAA4B;IAC5B,MAAM,EAAE,UAAU,CAAiB,QAAQ,CAAC;IAC5C,4BAA4B;IAC5B,MAAM,EAAE,UAAU,CAAgB,QAAQ,CAAC;IAE3C,eAAe;IAEf,qBAAqB;IACrB,KAAK,EAAE,WAAW,EAAS;IAC3B,2BAA2B;IAC3B,MAAM,EAAE,WAAW,CAAc,aAAa,CAAC;IAC/C,0BAA0B;IAC1B,KAAK,EAAE,WAAW,CAAa,YAAY,CAAC;IAC5C,2BAA2B;IAC3B,YAAY,EAAE,WAAW,CAAe,cAAc,CAAC;IACvD,0BAA0B;IAC1B,WAAW,EAAE,WAAW,CAAc,aAAa,CAAC;IACpD,2BAA2B;IAC3B,YAAY,EAAE,WAAW,CAAe,cAAc,CAAC;IACvD,0BAA0B;IAC1B,WAAW,EAAE,WAAW,CAAc,aAAa,CAAC;IACpD,yBAAyB;IACzB,SAAS,EAAE,WAAW,CAAY,WAAW,CAAC;CAC/C,CAAC"}
@@ -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":"AACA,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACnD,OAAO,EAAE,mBAAmB,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACrE,OAAO,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAEpF,OAAO,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAC7C,OAAO,EAAkB,aAAa,EAAuB,MAAM,YAAY,CAAC;AAEhF,MAAM,CAAC,MAAM,mBAAmB,GAAwB;IACtD,IAAI,EAAE,oBAAoB;IAC1B,WAAW,EAAE,mBAAmB;IAChC,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;AAQF,MAAM,UAAU,sBAAsB,CACpC,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,UAAU,UAAU,CAAC,EAAkB;IAC3C,MAAM,SAAS,GAAyB,EAAE,CAAC;IAC3C,sBAAsB;IACtB,EAAE,CAAC,GAAG,CAAC,wBAAwB,EAAE,qBAAqB,CAAC,CAAC;IACxD,EAAE,CAAC,SAAS,CAAC,uBAAuB,EAAE;QACpC,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,IAAI,MAAM,IAAI,MAAM,IAAI,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;oBACxD,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;gBACrB,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;IACH,OAAO,SAAS,CAAC;AACnB,CAAC"}
@@ -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"}