typespec-typescript-emitter 1.2.0 → 2.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (166) hide show
  1. package/.husky/pre-commit +2 -1
  2. package/.prettierignore +2 -1
  3. package/CHANGELOG.md +19 -24
  4. package/CODE_OF_CONDUCT.md +128 -0
  5. package/README.md +362 -219
  6. package/dist/src/emit_routedTypemap.d.ts +4 -0
  7. package/dist/src/emit_routedTypemap.js +83 -0
  8. package/dist/src/emit_routedTypemap.js.map +1 -0
  9. package/dist/src/emit_routes.d.ts +3 -2
  10. package/dist/src/emit_routes.js +73 -47
  11. package/dist/src/emit_routes.js.map +1 -1
  12. package/dist/src/emit_types.d.ts +3 -9
  13. package/dist/src/emit_types.js +109 -74
  14. package/dist/src/emit_types.js.map +1 -1
  15. package/dist/src/emitter.d.ts +2 -6
  16. package/dist/src/emitter.js +18 -76
  17. package/dist/src/emitter.js.map +1 -1
  18. package/dist/src/helpers/appendableString.d.ts +15 -0
  19. package/dist/src/helpers/appendableString.js +41 -0
  20. package/dist/src/helpers/appendableString.js.map +1 -0
  21. package/dist/src/helpers/arrays.d.ts +3 -0
  22. package/dist/src/helpers/arrays.js +23 -0
  23. package/dist/src/helpers/arrays.js.map +1 -0
  24. package/dist/src/{helper_autogenerateWarning.d.ts → helpers/autogenerateWarning.d.ts} +1 -1
  25. package/dist/src/{helper_autogenerateWarning.js → helpers/autogenerateWarning.js} +1 -2
  26. package/dist/src/helpers/autogenerateWarning.js.map +1 -0
  27. package/dist/src/helpers/buildTypeMap.d.ts +12 -0
  28. package/dist/src/helpers/buildTypeMap.js +44 -0
  29. package/dist/src/helpers/buildTypeMap.js.map +1 -0
  30. package/dist/src/helpers/diagnostics.d.ts +4 -0
  31. package/dist/src/helpers/diagnostics.js +15 -0
  32. package/dist/src/helpers/diagnostics.js.map +1 -0
  33. package/dist/src/helpers/getImports.d.ts +2 -0
  34. package/dist/src/helpers/getImports.js +3 -0
  35. package/dist/src/helpers/getImports.js.map +1 -0
  36. package/dist/src/helpers/namespaces.d.ts +4 -0
  37. package/dist/src/helpers/namespaces.js +14 -0
  38. package/dist/src/helpers/namespaces.js.map +1 -0
  39. package/dist/src/helpers/visibilityHelperFile.d.ts +4 -0
  40. package/dist/src/helpers/visibilityHelperFile.js +57 -0
  41. package/dist/src/helpers/visibilityHelperFile.js.map +1 -0
  42. package/dist/src/lib.d.ts +4 -1
  43. package/dist/src/lib.js +14 -3
  44. package/dist/src/lib.js.map +1 -1
  45. package/dist/src/parseOptions.d.ts +8 -0
  46. package/dist/src/parseOptions.js +26 -0
  47. package/dist/src/parseOptions.js.map +1 -0
  48. package/dist/src/resolve/Resolvable.d.ts +32 -0
  49. package/dist/src/resolve/Resolvable.js +180 -0
  50. package/dist/src/resolve/Resolvable.js.map +1 -0
  51. package/dist/src/resolve/Resolvable_helpers.d.ts +42 -0
  52. package/dist/src/resolve/Resolvable_helpers.js +19 -0
  53. package/dist/src/resolve/Resolvable_helpers.js.map +1 -0
  54. package/dist/src/resolve/operationTypemap.d.ts +21 -0
  55. package/dist/src/resolve/operationTypemap.js +138 -0
  56. package/dist/src/resolve/operationTypemap.js.map +1 -0
  57. package/dist/src/resolve/types/Enum.d.ts +21 -0
  58. package/dist/src/resolve/types/Enum.js +61 -0
  59. package/dist/src/resolve/types/Enum.js.map +1 -0
  60. package/dist/src/resolve/types/Model.Indexed.d.ts +12 -0
  61. package/dist/src/resolve/types/Model.Indexed.js +69 -0
  62. package/dist/src/resolve/types/Model.Indexed.js.map +1 -0
  63. package/dist/src/resolve/types/Model.Shaped.d.ts +17 -0
  64. package/dist/src/resolve/types/Model.Shaped.js +210 -0
  65. package/dist/src/resolve/types/Model.Shaped.js.map +1 -0
  66. package/dist/src/resolve/types/Scalar.d.ts +9 -0
  67. package/dist/src/resolve/types/Scalar.js +109 -0
  68. package/dist/src/resolve/types/Scalar.js.map +1 -0
  69. package/dist/src/resolve/types/Simple.d.ts +11 -0
  70. package/dist/src/resolve/types/Simple.js +49 -0
  71. package/dist/src/resolve/types/Simple.js.map +1 -0
  72. package/dist/src/resolve/types/Tuple.d.ts +9 -0
  73. package/dist/src/resolve/types/Tuple.js +38 -0
  74. package/dist/src/resolve/types/Tuple.js.map +1 -0
  75. package/dist/src/resolve/types/Union.d.ts +9 -0
  76. package/dist/src/resolve/types/Union.js +36 -0
  77. package/dist/src/resolve/types/Union.js.map +1 -0
  78. package/eslint.config.js +12 -4
  79. package/package.json +2 -2
  80. package/src/emit_routedTypemap.ts +128 -0
  81. package/src/emit_routes.ts +108 -61
  82. package/src/emit_types.ts +137 -92
  83. package/src/emitter.ts +19 -107
  84. package/src/helpers/appendableString.ts +52 -0
  85. package/src/helpers/arrays.ts +21 -0
  86. package/src/{helper_autogenerateWarning.ts → helpers/autogenerateWarning.ts} +0 -1
  87. package/src/helpers/buildTypeMap.ts +72 -0
  88. package/src/helpers/diagnostics.ts +19 -0
  89. package/src/helpers/getImports.ts +9 -0
  90. package/src/helpers/namespaces.ts +18 -0
  91. package/src/helpers/visibilityHelperFile.ts +63 -0
  92. package/src/lib.ts +25 -4
  93. package/src/parseOptions.ts +26 -0
  94. package/src/resolve/Resolvable.ts +267 -0
  95. package/src/resolve/Resolvable_helpers.ts +65 -0
  96. package/src/resolve/operationTypemap.ts +212 -0
  97. package/src/resolve/types/Enum.ts +92 -0
  98. package/src/resolve/types/Model.Indexed.ts +113 -0
  99. package/src/resolve/types/Model.Shaped.ts +291 -0
  100. package/src/resolve/types/Scalar.ts +140 -0
  101. package/src/resolve/types/Simple.ts +88 -0
  102. package/src/resolve/types/Tuple.ts +56 -0
  103. package/src/resolve/types/Union.ts +52 -0
  104. package/test/helpers/integrationTest-novis.tsp +51 -0
  105. package/test/helpers/integrationTest.tsp +53 -0
  106. package/test/helpers/largeModel.tsp +40 -0
  107. package/test/{runner.ts → helpers/runner.ts} +1 -1
  108. package/test/helpers/ts.ts +11 -0
  109. package/test/helpers/wrapper.ts +144 -0
  110. package/test/routes/routes.target.ts +35 -0
  111. package/test/routes/routes.test.ts +22 -0
  112. package/test/typeguards/combined.test.ts +78 -0
  113. package/test/typeguards/enum.test.ts +10 -0
  114. package/test/typeguards/model.indexed.test.ts +68 -0
  115. package/test/typeguards/model.shaped.test.ts +38 -0
  116. package/test/typeguards/scalar.test.ts +62 -0
  117. package/test/typeguards/simple.test.ts +35 -0
  118. package/test/typeguards/tuple.test.ts +34 -0
  119. package/test/typeguards/union.test.ts +29 -0
  120. package/test/typemap/typemap-novis.target.ts +38 -0
  121. package/test/typemap/typemap.target.ts +39 -0
  122. package/test/typemap/typemap.test.ts +48 -0
  123. package/test/types/combined.test.ts +71 -0
  124. package/test/types/enum.test.ts +57 -0
  125. package/test/types/model.indexed.test.ts +46 -0
  126. package/test/types/model.shaped.test.ts +23 -0
  127. package/test/types/scalar.test.ts +53 -0
  128. package/test/types/simple.test.ts +20 -0
  129. package/test/types/tuple.test.ts +29 -0
  130. package/test/types/union.test.ts +20 -0
  131. package/tsconfig.json +1 -0
  132. package/dist/src/emit_mapped_types.d.ts +0 -2
  133. package/dist/src/emit_mapped_types.js +0 -124
  134. package/dist/src/emit_mapped_types.js.map +0 -1
  135. package/dist/src/emit_types_resolve.d.ts +0 -22
  136. package/dist/src/emit_types_resolve.js +0 -217
  137. package/dist/src/emit_types_resolve.js.map +0 -1
  138. package/dist/src/emit_types_typeguards.d.ts +0 -17
  139. package/dist/src/emit_types_typeguards.js +0 -121
  140. package/dist/src/emit_types_typeguards.js.map +0 -1
  141. package/dist/src/helper_autogenerateWarning.js.map +0 -1
  142. package/src/emit_mapped_types.ts +0 -155
  143. package/src/emit_types_resolve.ts +0 -280
  144. package/src/emit_types_typeguards.ts +0 -178
  145. package/test/main.test.ts +0 -83
  146. package/test/out/.gitkeep +0 -0
  147. package/test/targets/enum.routed-types.ts +0 -59
  148. package/test/targets/enum.routes.ts +0 -29
  149. package/test/targets/enum.target.ts +0 -39
  150. package/test/targets/enum.tsp +0 -36
  151. package/test/targets/pr8.routed-types.ts +0 -131
  152. package/test/targets/pr8.routes.ts +0 -30
  153. package/test/targets/pr8.target.ts +0 -97
  154. package/test/targets/pr8.tsp +0 -62
  155. package/test/targets/simple-routes.routed-types.ts +0 -64
  156. package/test/targets/simple-routes.routes.ts +0 -29
  157. package/test/targets/simple-routes.target.ts +0 -21
  158. package/test/targets/simple-routes.tsp +0 -23
  159. package/test/targets/union.routed-types.ts +0 -59
  160. package/test/targets/union.routes.ts +0 -23
  161. package/test/targets/union.target.ts +0 -59
  162. package/test/targets/union.tsp +0 -38
  163. package/test/targets/visibility.routed-types.ts +0 -81
  164. package/test/targets/visibility.routes.ts +0 -38
  165. package/test/targets/visibility.target.ts +0 -36
  166. package/test/targets/visibility.tsp +0 -49
@@ -0,0 +1,210 @@
1
+ import { getDoc } from "@typespec/compiler";
2
+ import { isVisible, Visibility } from "@typespec/http";
3
+ import { AppendableString } from "../../helpers/appendableString.js";
4
+ import { compareArrays } from "../../helpers/arrays.js";
5
+ import { namespaceListFromNamespace } from "../../helpers/namespaces.js";
6
+ import { Resolvable } from "../Resolvable.js";
7
+ import { Resolver, } from "../Resolvable_helpers.js";
8
+ export class ShapedModel extends Resolvable {
9
+ expectedTypeKind = "Model";
10
+ getProps() {
11
+ return Array.from(this._t.properties).map((p) => p[1]);
12
+ }
13
+ getPropVisibilityType(program, prop) {
14
+ if (!prop.decorators.some((decorator) => decorator.definition?.name === "@visibility"))
15
+ return null;
16
+ const ret = [];
17
+ if (isVisible(program, prop, Visibility.Read))
18
+ ret.push("Read");
19
+ if (isVisible(program, prop, Visibility.Create))
20
+ ret.push("Create");
21
+ if (isVisible(program, prop, Visibility.Update))
22
+ ret.push("Update");
23
+ if (isVisible(program, prop, Visibility.Delete))
24
+ ret.push("Delete");
25
+ if (isVisible(program, prop, Visibility.Query))
26
+ ret.push("Query");
27
+ return ret;
28
+ }
29
+ /**
30
+ * Checks whether or not any of the model's properties has @visibility modifier.
31
+ * Also returns true if any base model (in the entire chain) has a visibility OR if
32
+ * any nested type (in the model's properties) has a visibility.
33
+ */
34
+ async hasVisibility(opts, out) {
35
+ if (await super.hasVisibility(opts, out))
36
+ return true;
37
+ // resolve base
38
+ if (this._t.baseModel &&
39
+ (await Resolvable.hasVisibility(this._t.baseModel, opts, out, this._t)))
40
+ return true;
41
+ // resolve props: check for decorators
42
+ const props = this.getProps();
43
+ if (props.some((prop) => prop.decorators.some((decorator) => decorator.definition?.name === "@visibility")))
44
+ return true;
45
+ // resolve props: check if any resolves to visibility
46
+ for (const prop of props) {
47
+ // check if this prop is somewhere up the resolution chain -> recursion -> skip (defaults to false)
48
+ const propNamespaces = namespaceListFromNamespace(prop.type.namespace);
49
+ if (opts.parents &&
50
+ opts.parents.some((parent) => {
51
+ const parentNamespaces = namespaceListFromNamespace(parent.namespace);
52
+ return (parent.kind === prop.type.kind &&
53
+ prop.type.name &&
54
+ parent.name === prop.type.name &&
55
+ propNamespaces &&
56
+ parentNamespaces &&
57
+ compareArrays(propNamespaces, parentNamespaces));
58
+ }))
59
+ continue;
60
+ // not recursion, resolve
61
+ if (await Resolvable.hasVisibility(prop.type, opts, out, this._t))
62
+ return true;
63
+ }
64
+ // nothing true
65
+ return false;
66
+ }
67
+ async type(opts, out) {
68
+ if (opts.emitDocs) {
69
+ out.doc = getDoc(opts.program, this._t);
70
+ }
71
+ const resolution = new AppendableString();
72
+ // check for base model (extended)
73
+ if (this._t.baseModel) {
74
+ const resolvedBase = await this.resolveNested(this._t.baseModel, opts, out);
75
+ out.imports.push(...resolvedBase.imports);
76
+ resolution.append(`${resolvedBase.resolved} & `);
77
+ }
78
+ const props = this.getProps();
79
+ const propVisibilityTypes = {};
80
+ if (props.length === 0) {
81
+ out.resolved.append("{}");
82
+ }
83
+ else {
84
+ resolution.append("{\n");
85
+ for (let i = 0; i < props.length; i++) {
86
+ const prop = props[i];
87
+ // add doc strings
88
+ if (opts.emitDocs) {
89
+ const doc = getDoc(opts.program, prop);
90
+ if (doc)
91
+ resolution.addLine(`/** ${doc} */`, opts.nestlevel + 1);
92
+ }
93
+ // resolve prop
94
+ const resolved = await this.resolveNested(prop.type, opts, out);
95
+ resolution.addLine(`${prop.name}${prop.optional ? "?" : ""}: ${resolved.resolved}${i + 1 < this._t.properties.size ? "," : ""}`, opts.nestlevel + 1);
96
+ out.imports.push(...resolved.imports);
97
+ // if prop has visibility, save to vismap
98
+ const propVis = this.getPropVisibilityType(opts.program, prop);
99
+ if (propVis !== null || resolved.hasVisibility) {
100
+ propVisibilityTypes[prop.name] = { type: null, nested: "" };
101
+ propVisibilityTypes[prop.name].type = propVis;
102
+ propVisibilityTypes[prop.name].nested = resolved.visibilityMap;
103
+ }
104
+ }
105
+ // build prop visibility map
106
+ const visMap = new AppendableString();
107
+ const propVisibilityTypesArr = Object.entries(propVisibilityTypes).filter((p) => p[1].type !== null || p[1].nested);
108
+ if (propVisibilityTypesArr.length > 0) {
109
+ visMap.addLine("{");
110
+ let i = 1;
111
+ for (const [prop, propvis] of propVisibilityTypesArr) {
112
+ const visLine = `vis: [${(propvis.type ?? []).map((t) => `Lifecycle.${t}`).join(", ")}]`;
113
+ if (propvis.type !== null && !propvis.nested) {
114
+ visMap.addLine(`'${prop}': {${visLine}}`, opts.nestlevel + 1, "continued");
115
+ }
116
+ if (propvis.nested) {
117
+ visMap.addLine(`'${prop}': {`, opts.nestlevel + 1);
118
+ if (propvis.type)
119
+ visMap.addLine(`${visLine},`, opts.nestlevel + 2);
120
+ visMap.addLine(`nested: ${propvis.nested
121
+ .split("\n")
122
+ .map((l) => ` ${l}`)
123
+ .join("\n")
124
+ .trim()}`, opts.nestlevel + 2);
125
+ visMap.addLine("}", opts.nestlevel + 1, "continued");
126
+ }
127
+ visMap.addLine(i < propVisibilityTypesArr.length ? "," : "");
128
+ i++;
129
+ }
130
+ visMap.addLine("}", opts.nestlevel, "continued");
131
+ }
132
+ resolution.addLine("}", opts.nestlevel, "continued");
133
+ out.visibilityMap = visMap.value;
134
+ if (opts.parents &&
135
+ opts.parents.every((p) => p.kind !== "Model" || p.name === "Array" || p.name === "Record") &&
136
+ visMap.value) {
137
+ // this model is nested in something that's not a model and has visibility; inline filters
138
+ out.resolved.append(`FilterLifecycle<${resolution}, ${visMap}, V>`);
139
+ // this model is the root type or nested in a model; do not inline visibility filter
140
+ }
141
+ else {
142
+ out.resolved.append(resolution);
143
+ }
144
+ }
145
+ }
146
+ async typeguard(opts, out) {
147
+ out.resolved.append("\n");
148
+ if (this._t.baseModel) {
149
+ const resolvedBase = await this.resolveNested(this._t.baseModel, opts, out);
150
+ out.resolved.append(`${" ".repeat(opts.nestlevel)}${resolvedBase.resolved} &&`);
151
+ out.imports.push(...resolvedBase.imports);
152
+ // derived type does not have extended properties; fix by casting
153
+ opts.accessor = `(${opts.accessor} as any)`;
154
+ }
155
+ const props = this.getProps();
156
+ const propGuards = [];
157
+ for (const prop of props) {
158
+ const oldAccessor = opts.accessor;
159
+ opts.accessor = `${opts.accessor}['${prop.name}']`;
160
+ const resolved = await this.resolveNested(prop.type, opts, out);
161
+ opts.accessor = oldAccessor;
162
+ out.imports.push(...resolved.imports);
163
+ const visibility = this.getPropVisibilityType(opts.program, prop);
164
+ let guard = " ".repeat(out.resolved.value.endsWith("&") ? 1 : opts.nestlevel * 2);
165
+ if (visibility !== null) {
166
+ guard += `((vis as any) !== Lifecycle.All && ![${(visibility ?? []).map((t) => `Lifecycle.${t}`).join(", ")}].includes(vis) ? !('${prop.name}' in ${opts.accessor}) : (`;
167
+ }
168
+ if (prop.type.kind === "Intrinsic" &&
169
+ ["never", "void"].includes(prop.type.name)) {
170
+ // some special intrinsic types need special treatment
171
+ switch (prop.type.name) {
172
+ case "never":
173
+ guard += `!('${prop.name}' in ${opts.accessor})`;
174
+ break;
175
+ case "void":
176
+ guard += `${opts.accessor}['${prop.name}'] === undefined`;
177
+ break;
178
+ }
179
+ }
180
+ else {
181
+ guard += prop.optional
182
+ ? `${opts.accessor}['${prop.name}'] === undefined || `
183
+ : `${opts.accessor}['${prop.name}'] !== undefined && `;
184
+ guard += `(${resolved.resolved}`;
185
+ guard += resolved.resolved.value.endsWith("\n")
186
+ ? " ".repeat(opts.nestlevel)
187
+ : "";
188
+ guard += ")";
189
+ }
190
+ if (visibility !== null)
191
+ guard += "))";
192
+ propGuards.push(guard);
193
+ }
194
+ out.resolved.append(propGuards.join(" &&\n"));
195
+ out.resolved.addLine("", opts.nestlevel);
196
+ }
197
+ transformKnownType(opts, out) {
198
+ // If this is a known type, it can't be the root of this resolution tree,
199
+ // because of the "originalTypeReady" flag.
200
+ // If it also has visibility, it must have its own visibility map,
201
+ // which is baked into the type definition, so it shouldn't be returned now.
202
+ if (this._r === Resolver.Type && out.hasVisibility) {
203
+ out.visibilityMap = "";
204
+ const newResolved = `${out.resolved}<V>`;
205
+ out.resolved.clear().append(newResolved);
206
+ // ret.visibilityMap = `${(t as any).name}_VisMap`;
207
+ }
208
+ }
209
+ }
210
+ //# sourceMappingURL=Model.Shaped.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Model.Shaped.js","sourceRoot":"","sources":["../../../../src/resolve/types/Model.Shaped.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import { Scalar } from "@typespec/compiler";
2
+ import { Resolvable } from "../Resolvable.js";
3
+ import { Resolver, ResolverOptions, ResolverResult } from "../Resolvable_helpers.js";
4
+ export declare class ResolvableScalar extends Resolvable<Scalar> {
5
+ protected expectedTypeKind: string;
6
+ private dateTypes;
7
+ protected type(opts: ResolverOptions<Resolver.Type>, out: ResolverResult<Resolver.Type>): Promise<void>;
8
+ protected typeguard(opts: ResolverOptions<Resolver.Typeguard>, out: ResolverResult<Resolver.Typeguard>): Promise<void>;
9
+ }
@@ -0,0 +1,109 @@
1
+ import { Resolvable } from "../Resolvable.js";
2
+ export class ResolvableScalar extends Resolvable {
3
+ expectedTypeKind = "Scalar";
4
+ dateTypes = [
5
+ "offsetDateTime",
6
+ "plainDate",
7
+ "utcDateTime",
8
+ "unixTimestamp32",
9
+ ];
10
+ async type(opts, out) {
11
+ if (this.dateTypes.includes(this._t.name)) {
12
+ switch (this._t.name) {
13
+ case "offsetDateTime":
14
+ case "plainDate":
15
+ case "utcDateTime":
16
+ out.resolved.append(opts.options["serializable-date-types"] ? "string" : "Date");
17
+ break;
18
+ case "unixTimestamp32":
19
+ out.resolved.append(opts.options["serializable-date-types"] ? "number" : "Date");
20
+ break;
21
+ }
22
+ }
23
+ else if (this._t.baseScalar) {
24
+ out.resolved.append((await this.resolveNested(this._t.baseScalar, opts, out)).resolved);
25
+ }
26
+ else {
27
+ switch (this._t.name) {
28
+ case "boolean":
29
+ out.resolved.append("boolean");
30
+ break;
31
+ case "bytes":
32
+ out.resolved.append("Uint8Array");
33
+ break;
34
+ case "duration":
35
+ out.resolved.append("number");
36
+ break;
37
+ case "numeric":
38
+ out.resolved.append("number");
39
+ break;
40
+ case "plainTime":
41
+ out.resolved.append("string");
42
+ break;
43
+ case "string":
44
+ out.resolved.append("string");
45
+ break;
46
+ case "url":
47
+ out.resolved.append("string");
48
+ break;
49
+ default:
50
+ this.diagnostic("resolve-unresolved-scalar", `Could not resolve scalar ${this._t.name}`, "error");
51
+ out.resolved.append("unknown");
52
+ break;
53
+ }
54
+ }
55
+ }
56
+ async typeguard(opts, out) {
57
+ if (this.dateTypes.includes(this._t.name)) {
58
+ switch (this._t.name) {
59
+ case "offsetDateTime":
60
+ case "plainDate":
61
+ case "utcDateTime":
62
+ out.resolved.append(opts.options["serializable-date-types"]
63
+ ? `typeof ${opts.accessor} === 'string'`
64
+ : `${opts.accessor} instanceof Date`);
65
+ break;
66
+ case "unixTimestamp32":
67
+ out.resolved.append(opts.options["serializable-date-types"]
68
+ ? `typeof ${opts.accessor} === 'number'`
69
+ : `${opts.accessor} instanceof Date`);
70
+ break;
71
+ }
72
+ }
73
+ else if (this._t.baseScalar) {
74
+ out.resolved.append((await this.resolveNested(this._t.baseScalar, opts, out)).resolved);
75
+ }
76
+ else if (this._t.name === "bytes") {
77
+ out.resolved.append(`${opts.accessor} instanceof Uint8Array`);
78
+ }
79
+ else {
80
+ out.resolved.append(`typeof ${opts.accessor} === '`);
81
+ switch (this._t.name) {
82
+ case "boolean":
83
+ out.resolved.append("boolean");
84
+ break;
85
+ case "duration":
86
+ out.resolved.append("number");
87
+ break;
88
+ case "numeric":
89
+ out.resolved.append("number");
90
+ break;
91
+ case "plainTime":
92
+ out.resolved.append("string");
93
+ break;
94
+ case "string":
95
+ out.resolved.append("string");
96
+ break;
97
+ case "url":
98
+ out.resolved.append("string");
99
+ break;
100
+ default:
101
+ this.diagnostic("resolve-unresolved-scalar", `Could not create typeguard for scalar ${this._t.name}`, "error");
102
+ out.resolved.append("unknown");
103
+ break;
104
+ }
105
+ out.resolved.append("'");
106
+ }
107
+ }
108
+ }
109
+ //# sourceMappingURL=Scalar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Scalar.js","sourceRoot":"","sources":["../../../../src/resolve/types/Scalar.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import { Type } from "@typespec/compiler";
2
+ import { Resolvable } from "../Resolvable.js";
3
+ import { Resolver, ResolverOptions, ResolverResult } from "../Resolvable_helpers.js";
4
+ export declare class ResolvableSimple extends Resolvable<Type> {
5
+ protected expectedTypeKind: string;
6
+ static AllowedTypeKinds: readonly ["Boolean", "Intrinsic", "Number", "String", "TemplateParameter"];
7
+ private static typeMap;
8
+ protected type(opts: ResolverOptions<Resolver.Type>, out: ResolverResult<Resolver.Type>): Promise<void>;
9
+ protected typeguard(opts: ResolverOptions<Resolver.Typeguard>, out: ResolverResult<Resolver.Typeguard>): Promise<void>;
10
+ protected validate(): void;
11
+ }
@@ -0,0 +1,49 @@
1
+ import { Resolvable } from "../Resolvable.js";
2
+ const allowedTypeKinds = [
3
+ "Boolean",
4
+ "Intrinsic",
5
+ "Number",
6
+ "String",
7
+ "TemplateParameter",
8
+ ];
9
+ export class ResolvableSimple extends Resolvable {
10
+ expectedTypeKind = ""; // placeholder as required; validate is overridden
11
+ static AllowedTypeKinds = allowedTypeKinds;
12
+ static typeMap = {
13
+ Boolean: (t) => (t.value ? "true" : "false"),
14
+ Intrinsic: (t) => t.name,
15
+ Number: (t) => t.valueAsString,
16
+ String: (t) => `'${t.value}'`,
17
+ TemplateParameter: () => "unknown",
18
+ };
19
+ async type(opts, out) {
20
+ const mapped = ResolvableSimple.typeMap[this._t.kind]; // check is in validate()
21
+ out.resolved.append(mapped(this._t));
22
+ }
23
+ async typeguard(opts, out) {
24
+ const mapped = ResolvableSimple.typeMap[this._t.kind]; // check is in validate()
25
+ const v = mapped(this._t);
26
+ // some special intrinsic types are handled directly in the model property
27
+ switch (v) {
28
+ case "unknown":
29
+ out.resolved.append("true");
30
+ break;
31
+ case "never":
32
+ out.resolved.append("false");
33
+ break; // instantly fails all type checks
34
+ case "void":
35
+ out.resolved.append(`${opts.accessor} === undefined`);
36
+ break;
37
+ default:
38
+ out.resolved.append(`${opts.accessor} === ${v}`);
39
+ break;
40
+ }
41
+ }
42
+ validate() {
43
+ if (!ResolvableSimple.AllowedTypeKinds.includes(this._t.kind)) {
44
+ this.diagnostic("typeclass-mismatch", `Tried resolving type ${this._t.kind} as primitive`, "error");
45
+ throw new TypeError(`Type-kind/class mismatch: tried resolving type ${this._t.kind} as primitive`);
46
+ }
47
+ }
48
+ }
49
+ //# sourceMappingURL=Simple.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Simple.js","sourceRoot":"","sources":["../../../../src/resolve/types/Simple.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAO9C,MAAM,gBAAgB,GAAG;IACvB,SAAS;IACT,WAAW;IACX,QAAQ;IACR,QAAQ;IACR,mBAAmB;CACX,CAAC;AAEX,MAAM,OAAO,gBAAiB,SAAQ,UAAgB;IAC1C,gBAAgB,GAAG,EAAE,CAAC,CAAC,kDAAkD;IAC5E,MAAM,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;IAE1C,MAAM,CAAC,OAAO,GAGlB;QACF,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAE,CAAS,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;QACrD,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE,CAAE,CAAmB,CAAC,IAAI;QAC3C,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAE,CAAoB,CAAC,aAAa;QAClD,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,IAAK,CAAmB,CAAC,KAAK,GAAG;QAChD,iBAAiB,EAAE,GAAG,EAAE,CAAC,SAAS;KACnC,CAAC;IAEQ,KAAK,CAAC,IAAI,CAClB,IAAoC,EACpC,GAAkC;QAElC,MAAM,MAAM,GACV,gBAAgB,CAAC,OAAO,CACtB,IAAI,CAAC,EAAE,CAAC,IAAyC,CAClD,CAAC,CAAC,yBAAyB;QAC9B,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;IACvC,CAAC;IAES,KAAK,CAAC,SAAS,CACvB,IAAyC,EACzC,GAAuC;QAEvC,MAAM,MAAM,GACV,gBAAgB,CAAC,OAAO,CACtB,IAAI,CAAC,EAAE,CAAC,IAAyC,CAClD,CAAC,CAAC,yBAAyB;QAC9B,MAAM,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAE1B,0EAA0E;QAC1E,QAAQ,CAAC,EAAE,CAAC;YACV,KAAK,SAAS;gBACZ,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;gBAC5B,MAAM;YACR,KAAK,OAAO;gBACV,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;gBAC7B,MAAM,CAAC,kCAAkC;YAC3C,KAAK,MAAM;gBACT,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,QAAQ,gBAAgB,CAAC,CAAC;gBACtD,MAAM;YAER;gBACE,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,QAAQ,QAAQ,CAAC,EAAE,CAAC,CAAC;gBACjD,MAAM;QACV,CAAC;IACH,CAAC;IAES,QAAQ;QAChB,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,IAAW,CAAC,EAAE,CAAC;YACrE,IAAI,CAAC,UAAU,CACb,oBAAoB,EACpB,wBAAwB,IAAI,CAAC,EAAE,CAAC,IAAI,eAAe,EACnD,OAAO,CACR,CAAC;YACF,MAAM,IAAI,SAAS,CACjB,kDAAkD,IAAI,CAAC,EAAE,CAAC,IAAI,eAAe,CAC9E,CAAC;QACJ,CAAC;IACH,CAAC"}
@@ -0,0 +1,9 @@
1
+ import { Tuple } from "@typespec/compiler";
2
+ import { Resolvable } from "../Resolvable.js";
3
+ import { Resolver, ResolverOptions, ResolverResult } from "../Resolvable_helpers.js";
4
+ export declare class ResolvableTuple extends Resolvable<Tuple> {
5
+ protected expectedTypeKind: string;
6
+ hasVisibility(opts: ResolverOptions<Resolver>, out: ResolverResult<Resolver>): Promise<boolean>;
7
+ protected type(opts: ResolverOptions<Resolver.Type>, out: ResolverResult<Resolver.Type>): Promise<void>;
8
+ protected typeguard(opts: ResolverOptions<Resolver.Typeguard>, out: ResolverResult<Resolver.Typeguard>): Promise<void>;
9
+ }
@@ -0,0 +1,38 @@
1
+ import { Resolvable } from "../Resolvable.js";
2
+ export class ResolvableTuple extends Resolvable {
3
+ expectedTypeKind = "Tuple";
4
+ async hasVisibility(opts, out) {
5
+ if (await super.hasVisibility(opts, out))
6
+ return true;
7
+ for (const v of this._t.values) {
8
+ if (await Resolvable.hasVisibility(v, opts, out, this._t))
9
+ return true;
10
+ }
11
+ return false;
12
+ }
13
+ async type(opts, out) {
14
+ const results = [];
15
+ for (const v of this._t.values) {
16
+ const resolved = await this.resolveNested(v, opts, out);
17
+ out.imports.push(...resolved.imports);
18
+ results.push(resolved.resolved.value);
19
+ }
20
+ out.resolved.append(`[${results.join(", ")}]`);
21
+ }
22
+ async typeguard(opts, out) {
23
+ const results = [];
24
+ const oldAccessor = opts.accessor;
25
+ let i = 0;
26
+ for (const v of this._t.values) {
27
+ opts.accessor = `${opts.accessor}[${i}]`;
28
+ const resolved = await this.resolveNested(v, opts, out);
29
+ opts.accessor = oldAccessor;
30
+ out.imports.push(...resolved.imports);
31
+ results.push(resolved.resolved.value);
32
+ i++;
33
+ }
34
+ opts.accessor = oldAccessor;
35
+ out.resolved.append(`Array.isArray(${opts.accessor}) && ${results.map((g) => `(${g})`).join(" && ")}`);
36
+ }
37
+ }
38
+ //# sourceMappingURL=Tuple.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Tuple.js","sourceRoot":"","sources":["../../../../src/resolve/types/Tuple.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAO9C,MAAM,OAAO,eAAgB,SAAQ,UAAiB;IAC1C,gBAAgB,GAAG,OAAO,CAAC;IAErB,KAAK,CAAC,aAAa,CACjC,IAA+B,EAC/B,GAA6B;QAE7B,IAAI,MAAM,KAAK,CAAC,aAAa,CAAC,IAAI,EAAE,GAAG,CAAC;YAAE,OAAO,IAAI,CAAC;QACtD,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC;YAC/B,IAAI,MAAM,UAAU,CAAC,aAAa,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE,CAAC;gBAAE,OAAO,IAAI,CAAC;QACzE,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAES,KAAK,CAAC,IAAI,CAClB,IAAoC,EACpC,GAAkC;QAElC,MAAM,OAAO,GAAa,EAAE,CAAC;QAC7B,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC;YAC/B,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;YACxD,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC;YACtC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QACxC,CAAC;QACD,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACjD,CAAC;IAES,KAAK,CAAC,SAAS,CACvB,IAAyC,EACzC,GAAuC;QAEvC,MAAM,OAAO,GAAa,EAAE,CAAC;QAC7B,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC;QAClC,IAAI,CAAC,GAAG,CAAC,CAAC;QACV,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC;YAC/B,IAAI,CAAC,QAAQ,GAAG,GAAG,IAAI,CAAC,QAAQ,IAAI,CAAC,GAAG,CAAC;YACzC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;YACxD,IAAI,CAAC,QAAQ,GAAG,WAAW,CAAC;YAC5B,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC;YACtC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;YACtC,CAAC,EAAE,CAAC;QACN,CAAC;QACD,IAAI,CAAC,QAAQ,GAAG,WAAW,CAAC;QAC5B,GAAG,CAAC,QAAQ,CAAC,MAAM,CACjB,iBAAiB,IAAI,CAAC,QAAQ,QAAQ,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAClF,CAAC;IACJ,CAAC;CACF"}
@@ -0,0 +1,9 @@
1
+ import { Union } from "@typespec/compiler";
2
+ import { Resolvable } from "../Resolvable.js";
3
+ import { Resolver, ResolverOptions, ResolverResult } from "../Resolvable_helpers.js";
4
+ export declare class ResolvableUnion extends Resolvable<Union> {
5
+ protected expectedTypeKind: string;
6
+ hasVisibility(opts: ResolverOptions<Resolver>, out: ResolverResult<Resolver>): Promise<boolean>;
7
+ protected type(opts: ResolverOptions<Resolver.Type>, out: ResolverResult<Resolver.Type>): Promise<void>;
8
+ protected typeguard(opts: ResolverOptions<Resolver.Typeguard>, out: ResolverResult<Resolver.Typeguard>): Promise<void>;
9
+ }
@@ -0,0 +1,36 @@
1
+ import { getDoc } from "@typespec/compiler";
2
+ import { Resolvable } from "../Resolvable.js";
3
+ export class ResolvableUnion extends Resolvable {
4
+ expectedTypeKind = "Union";
5
+ async hasVisibility(opts, out) {
6
+ if (await super.hasVisibility(opts, out))
7
+ return true;
8
+ for (const v of Array.from(this._t.variants)) {
9
+ if (await Resolvable.hasVisibility(v[1].type, opts, out, this._t))
10
+ return true;
11
+ }
12
+ return false;
13
+ }
14
+ async type(opts, out) {
15
+ if (opts.emitDocs) {
16
+ out.doc = getDoc(opts.program, this._t);
17
+ }
18
+ const results = [];
19
+ for (const v of Array.from(this._t.variants)) {
20
+ const resolved = await this.resolveNested(v[1].type, opts, out, false);
21
+ out.imports.push(...resolved.imports);
22
+ results.push(resolved.resolved.value);
23
+ }
24
+ out.resolved.append(results.join(" | "));
25
+ }
26
+ async typeguard(opts, out) {
27
+ const results = [];
28
+ for (const v of Array.from(this._t.variants)) {
29
+ const resolved = await this.resolveNested(v[1].type, opts, out);
30
+ out.imports.push(...resolved.imports);
31
+ results.push(`(${resolved.resolved.value})`);
32
+ }
33
+ out.resolved.append(results.join(" || "));
34
+ }
35
+ }
36
+ //# sourceMappingURL=Union.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Union.js","sourceRoot":"","sources":["../../../../src/resolve/types/Union.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAS,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAO9C,MAAM,OAAO,eAAgB,SAAQ,UAAiB;IAC1C,gBAAgB,GAAG,OAAO,CAAC;IAErB,KAAK,CAAC,aAAa,CACjC,IAA+B,EAC/B,GAA6B;QAE7B,IAAI,MAAM,KAAK,CAAC,aAAa,CAAC,IAAI,EAAE,GAAG,CAAC;YAAE,OAAO,IAAI,CAAC;QACtD,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC7C,IAAI,MAAM,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE,CAAC;gBAC/D,OAAO,IAAI,CAAC;QAChB,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAES,KAAK,CAAC,IAAI,CAClB,IAAoC,EACpC,GAAkC;QAElC,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,GAAG,CAAC,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;QAC1C,CAAC;QACD,MAAM,OAAO,GAAa,EAAE,CAAC;QAC7B,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC7C,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;YACvE,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC;YACtC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QACxC,CAAC;QACD,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IAC3C,CAAC;IAES,KAAK,CAAC,SAAS,CACvB,IAAyC,EACzC,GAAuC;QAEvC,MAAM,OAAO,GAAa,EAAE,CAAC;QAC7B,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC7C,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;YAChE,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC;YACtC,OAAO,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAC;QAC/C,CAAC;QACD,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;IAC5C,CAAC;CACF"}
package/eslint.config.js CHANGED
@@ -3,16 +3,24 @@ import eslint from "@eslint/js";
3
3
  import tsEslint from "typescript-eslint";
4
4
 
5
5
  export default tsEslint.config(
6
+ eslint.configs.recommended,
7
+ ...tsEslint.configs.recommended,
6
8
  {
7
9
  ignores: [
8
10
  "**/dist/**/*",
9
11
  "**/.temp/**/*",
10
12
  "**/*.md",
11
13
  "**/node_modules/**/*",
12
- "**/test/out/**/*",
13
- "**/test/targets/**/*",
14
+ "**/*.target.*",
14
15
  ],
16
+ rules: {
17
+ "@typescript-eslint/no-explicit-any": "off",
18
+ },
19
+ },
20
+ {
21
+ files: ["**/*.target.*"],
22
+ rules: {
23
+ "@typescript-eslint/no-unused-vars": "off",
24
+ },
15
25
  },
16
- eslint.configs.recommended,
17
- ...tsEslint.configs.recommended,
18
26
  );
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "typespec-typescript-emitter",
3
- "version": "1.2.0",
3
+ "version": "2.0.1",
4
4
  "description": "A TypeSpec library providing an emitter that generates TypeScript types and a structured routes object for robust importing",
5
5
  "homepage": "https://github.com/crowbait/typespec-typescript-emitter#readme",
6
6
  "bugs": "https://github.com/crowbait/typespec-typescript-emitter/issues",
@@ -47,6 +47,6 @@
47
47
  "format:check": "prettier --check .",
48
48
  "prepare": "husky",
49
49
  "prepublishOnly": "npm run build",
50
- "test": "vitest run"
50
+ "test": "npm run build && vitest run"
51
51
  }
52
52
  }