typespec-typescript-emitter 1.1.1 → 1.2.0
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.
- package/CHANGELOG.md +14 -18
- package/README.md +22 -3
- package/dist/src/emit_types.js +1 -1
- package/dist/src/emit_types.js.map +1 -1
- package/dist/src/emit_types_resolve.d.ts +4 -1
- package/dist/src/emit_types_resolve.js +104 -34
- package/dist/src/emit_types_resolve.js.map +1 -1
- package/dist/src/emit_types_typeguards.d.ts +2 -2
- package/dist/src/emit_types_typeguards.js +14 -11
- package/dist/src/emit_types_typeguards.js.map +1 -1
- package/dist/src/emitter.js +3 -0
- package/dist/src/emitter.js.map +1 -1
- package/dist/src/index.d.ts +1 -1
- package/dist/src/index.js.map +1 -1
- package/dist/src/lib.d.ts +2 -0
- package/dist/src/lib.js +2 -0
- package/dist/src/lib.js.map +1 -1
- package/eslint.config.js +2 -0
- package/package.json +8 -4
- package/src/emit_types.ts +7 -1
- package/src/emit_types_resolve.ts +123 -34
- package/src/emit_types_typeguards.ts +14 -3
- package/src/emitter.ts +5 -0
- package/src/index.ts +1 -1
- package/src/lib.ts +4 -0
- package/test/main.test.ts +83 -0
- package/test/out/.gitkeep +0 -0
- package/test/runner.ts +5 -0
- package/test/targets/enum.routed-types.ts +59 -0
- package/test/targets/enum.routes.ts +29 -0
- package/test/targets/enum.target.ts +39 -0
- package/test/targets/enum.tsp +36 -0
- package/test/targets/pr8.routed-types.ts +131 -0
- package/test/targets/pr8.routes.ts +30 -0
- package/test/targets/pr8.target.ts +97 -0
- package/test/targets/pr8.tsp +62 -0
- package/test/targets/simple-routes.routed-types.ts +64 -0
- package/test/targets/simple-routes.routes.ts +29 -0
- package/test/targets/simple-routes.target.ts +21 -0
- package/test/targets/simple-routes.tsp +23 -0
- package/test/targets/union.routed-types.ts +59 -0
- package/test/targets/union.routes.ts +23 -0
- package/test/targets/union.target.ts +59 -0
- package/test/targets/union.tsp +38 -0
- package/test/targets/visibility.routed-types.ts +81 -0
- package/test/targets/visibility.routes.ts +38 -0
- package/test/targets/visibility.target.ts +36 -0
- package/test/targets/visibility.tsp +49 -0
- package/tsconfig.json +1 -1
- package/vitest.config.ts +10 -0
- package/dist/src/testing/index.d.ts +0 -2
- package/dist/src/testing/index.js +0 -8
- package/dist/src/testing/index.js.map +0 -1
- package/dist/test/hello.test.d.ts +0 -1
- package/dist/test/hello.test.js +0 -10
- package/dist/test/hello.test.js.map +0 -1
- package/dist/test/test-host.d.ts +0 -5
- package/dist/test/test-host.js +0 -36
- package/dist/test/test-host.js.map +0 -1
- package/src/testing/index.ts +0 -12
- package/test/hello.test.ts +0 -10
- package/test/test-host.ts +0 -49
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,17 @@
|
|
|
1
|
+
# [1.2.0](https://github.com/crowbait/typespec-typescript-emitter/compare/v1.1.2...v1.2.0) (2025-11-18)
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
### Features
|
|
5
|
+
|
|
6
|
+
* serializable-date-types ([ba4775d](https://github.com/crowbait/typespec-typescript-emitter/commit/ba4775d2292dcec4436470b19e9c1aea3b9b3e70))
|
|
7
|
+
* string-nominal-enums ([a0b572c](https://github.com/crowbait/typespec-typescript-emitter/commit/a0b572c2f19baa5d100663458f2ea1ad182b4323))
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
## [1.1.2](https://github.com/crowbait/typespec-typescript-emitter/compare/v1.1.1...v1.1.2) (2025-11-17)
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
|
|
1
15
|
## [1.1.1](https://github.com/crowbait/typespec-typescript-emitter/compare/v1.1.0...v1.1.1) (2025-09-26)
|
|
2
16
|
|
|
3
17
|
|
|
@@ -31,21 +45,3 @@
|
|
|
31
45
|
|
|
32
46
|
|
|
33
47
|
|
|
34
|
-
## [0.4.1](https://github.com/crowbait/typespec-typescript-emitter/compare/v0.4.0...v0.4.1) (2025-02-25)
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
### Bug Fixes
|
|
38
|
-
|
|
39
|
-
* fixed eslint ignore directives ([9c0477a](https://github.com/crowbait/typespec-typescript-emitter/commit/9c0477a6925715b99c38d4133d04ee774a0a65f7))
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
# [0.4.0](https://github.com/crowbait/typespec-typescript-emitter/compare/v0.3.5...v0.4.0) (2025-02-25)
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
### Features
|
|
47
|
-
|
|
48
|
-
* option to emit relative URLs in routes object ([be50613](https://github.com/crowbait/typespec-typescript-emitter/commit/be50613ac94550899805faf2555b3f407d88be33))
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
package/README.md
CHANGED
|
@@ -46,6 +46,8 @@ options:
|
|
|
46
46
|
enable-typeguards: false
|
|
47
47
|
enable-routes: false
|
|
48
48
|
enable-routed-typemap: false
|
|
49
|
+
string-nominal-enums: false
|
|
50
|
+
serializable-date-types: false
|
|
49
51
|
```
|
|
50
52
|
|
|
51
53
|
The following options are available:
|
|
@@ -56,6 +58,8 @@ The following options are available:
|
|
|
56
58
|
- `enable-typeguards` (default: false): enables output of typeguards, *IF* type-output is enabled.
|
|
57
59
|
- `enable-routes` (default: false): enables output of the HTTP-routes object.
|
|
58
60
|
- `enable-routed-typemap` (default: false): enables output of an indexable type mapping paths and HTTP verbs to request and response bodies.
|
|
61
|
+
- `string-nominal-enums` (default: false): outputs member names as strings instead of index values for enum members declared without explicit values (routed typemap only, see [example](#routed-typemap)).
|
|
62
|
+
- `serializable-date-types` (default: false): outputs serializable types for typespec's dates types that match OpenApi spec. Types like `offsetDateTime`, `plainDate` and `utcDateTime` will be emitted as `string` and `unixTimestamp32` as `number`.
|
|
59
63
|
|
|
60
64
|
## Types Emitter
|
|
61
65
|
|
|
@@ -237,9 +241,20 @@ Example:
|
|
|
237
241
|
```ts
|
|
238
242
|
@route("/typemap")
|
|
239
243
|
namespace namespaceA.typemap {
|
|
244
|
+
enum State {
|
|
245
|
+
ACTIVE,
|
|
246
|
+
INACTIVE
|
|
247
|
+
}
|
|
248
|
+
enum Condition {
|
|
249
|
+
NEW = 'new',
|
|
250
|
+
USED = 'used'
|
|
251
|
+
}
|
|
252
|
+
|
|
240
253
|
model ModelA {
|
|
241
254
|
id: int32,
|
|
242
|
-
name: string
|
|
255
|
+
name: string,
|
|
256
|
+
state: State,
|
|
257
|
+
cond: Condition
|
|
243
258
|
}
|
|
244
259
|
|
|
245
260
|
@get
|
|
@@ -266,13 +281,17 @@ export type types_namespaceA = {
|
|
|
266
281
|
request: null
|
|
267
282
|
response: {status: 200, body: {
|
|
268
283
|
id: number,
|
|
269
|
-
name: string
|
|
284
|
+
name: string,
|
|
285
|
+
state: 0 | 1, // this would be `'ACTIVE' | 'INACTIVE'` with `string-nominal-enums: true`
|
|
286
|
+
cond: 'new' | 'used'
|
|
270
287
|
}[]} | {status: 418, body: 'Me teapot'}
|
|
271
288
|
},
|
|
272
289
|
['POST']: {
|
|
273
290
|
request: {
|
|
274
291
|
id: number,
|
|
275
|
-
name: string
|
|
292
|
+
name: string,
|
|
293
|
+
state: 0 | 1, // this would be `'ACTIVE' | 'INACTIVE'` with `string-nominal-enums: true`
|
|
294
|
+
cond: 'new' | 'used'
|
|
276
295
|
}
|
|
277
296
|
response: {status: 200, body: {
|
|
278
297
|
/** The status code. */
|
package/dist/src/emit_types.js
CHANGED
|
@@ -55,7 +55,7 @@ const emitTypes = (context, namespace, options) => {
|
|
|
55
55
|
if (options["enable-typeguards"]) {
|
|
56
56
|
file = file.addLine(`export function is${m.name}(arg: any): arg is ${m.name} {`);
|
|
57
57
|
file = file.addLine("return (", 1);
|
|
58
|
-
getTypeguardModel(m, "arg", undefined, n)[0]
|
|
58
|
+
getTypeguardModel(m, "arg", undefined, n, !!options["serializable-date-types"])[0]
|
|
59
59
|
.split("\n")
|
|
60
60
|
.forEach((line) => {
|
|
61
61
|
file = file.addLine(line, 1);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"emit_types.js","sourceRoot":"","sources":["../../src/emit_types.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"emit_types.js","sourceRoot":"","sources":["../../src/emit_types.ts"],"names":[],"mappings":"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"}
|
|
@@ -14,6 +14,9 @@ export declare const resolveRecord: (a: RecordModelType, opts: CommonOptions) =>
|
|
|
14
14
|
export declare const resolveEnum: (e: Enum, opts: CommonOptions) => string;
|
|
15
15
|
export declare const resolveTuple: (t: Tuple, opts: CommonOptions) => string;
|
|
16
16
|
export declare const resolveUnion: (u: Union, opts: CommonOptions) => string;
|
|
17
|
-
export declare const resolveScalar: (s: Scalar) => string;
|
|
17
|
+
export declare const resolveScalar: (s: Scalar, serializableDates: boolean) => string;
|
|
18
18
|
export declare const resolveModel: (m: Model, opts: CommonOptions) => string;
|
|
19
|
+
export declare const resolveEnumMemberValue: (e: Enum, name: string) => string | number | undefined;
|
|
20
|
+
export declare const resolveEnumAsUnion: (e: Enum, opts: CommonOptions) => string;
|
|
21
|
+
export declare const resolveEnumMemberIndex: (e: Enum, name: string) => number | undefined;
|
|
19
22
|
export {};
|
|
@@ -26,7 +26,7 @@ export const resolveType = (t, opts) => {
|
|
|
26
26
|
typeStr = t.valueAsString;
|
|
27
27
|
break;
|
|
28
28
|
case "Scalar":
|
|
29
|
-
typeStr = resolveScalar(t);
|
|
29
|
+
typeStr = resolveScalar(t, !!opts.context.options["serializable-date-types"]);
|
|
30
30
|
break;
|
|
31
31
|
case "String":
|
|
32
32
|
typeStr = `'${t.value}'`;
|
|
@@ -37,6 +37,26 @@ export const resolveType = (t, opts) => {
|
|
|
37
37
|
case "Union":
|
|
38
38
|
typeStr = resolveUnion(t, opts);
|
|
39
39
|
break;
|
|
40
|
+
case "EnumMember":
|
|
41
|
+
if (opts.resolveEvenWithName) {
|
|
42
|
+
// If we're at routed typemap we will emit enum either value or index / name (as string if configured)
|
|
43
|
+
const value = resolveEnumMemberValue(t.enum, t.name);
|
|
44
|
+
if (value) {
|
|
45
|
+
typeStr = typeof value === "string" ? `'${value}'` : value.toString();
|
|
46
|
+
}
|
|
47
|
+
else if (opts.context.options["string-nominal-enums"]) {
|
|
48
|
+
typeStr = `'${t.name}'`;
|
|
49
|
+
}
|
|
50
|
+
else {
|
|
51
|
+
const index = resolveEnumMemberIndex(t.enum, t.name);
|
|
52
|
+
if (index !== undefined) {
|
|
53
|
+
typeStr = index.toString();
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
break;
|
|
57
|
+
}
|
|
58
|
+
typeStr = `${t.enum.name}.${t.name}`;
|
|
59
|
+
break;
|
|
40
60
|
default:
|
|
41
61
|
console.warn("Could not resolve type:", t.kind);
|
|
42
62
|
}
|
|
@@ -45,7 +65,7 @@ export const resolveType = (t, opts) => {
|
|
|
45
65
|
export const resolveArray = (a, opts) => {
|
|
46
66
|
if (a.name !== "Array")
|
|
47
67
|
throw new Error(`Trying to parse model ${a.name} as Array`);
|
|
48
|
-
return `(${resolveType(a.indexer.value, opts)})[]`;
|
|
68
|
+
return `(${resolveType(a.indexer.value, { ...opts, isNamespaceRoot: false })})[]`;
|
|
49
69
|
};
|
|
50
70
|
export const resolveRecord = (a, opts) => {
|
|
51
71
|
if (a.name !== "Record")
|
|
@@ -55,9 +75,13 @@ export const resolveRecord = (a, opts) => {
|
|
|
55
75
|
export const resolveEnum = (e, opts) => {
|
|
56
76
|
if (e.name &&
|
|
57
77
|
!opts.isNamespaceRoot &&
|
|
58
|
-
|
|
59
|
-
!opts.resolveEvenWithName)
|
|
78
|
+
opts.currentNamespace.enums.has(e.name) &&
|
|
79
|
+
!opts.resolveEvenWithName) {
|
|
60
80
|
return e.name;
|
|
81
|
+
}
|
|
82
|
+
if (opts.resolveEvenWithName) {
|
|
83
|
+
return resolveEnumAsUnion(e, opts);
|
|
84
|
+
}
|
|
61
85
|
let ret = "{\n";
|
|
62
86
|
let i = 1;
|
|
63
87
|
e.members.forEach((p) => {
|
|
@@ -81,44 +105,61 @@ export const resolveUnion = (u, opts) => {
|
|
|
81
105
|
!opts.resolveEvenWithName)
|
|
82
106
|
return u.name;
|
|
83
107
|
return Array.from(u.variants)
|
|
84
|
-
.map((v) =>
|
|
108
|
+
.map((v) => {
|
|
109
|
+
const variantType = v[1].type;
|
|
110
|
+
// If variant is a named model in the current namespace
|
|
111
|
+
// and it's not in routed typemap, reference it by name:
|
|
112
|
+
if (!opts.resolveEvenWithName &&
|
|
113
|
+
variantType.kind === "Model" &&
|
|
114
|
+
variantType.name &&
|
|
115
|
+
opts.currentNamespace.models.has(variantType.name)) {
|
|
116
|
+
return variantType.name;
|
|
117
|
+
}
|
|
118
|
+
// Otherwise resolve type inline
|
|
119
|
+
return resolveType(variantType, { ...opts, isNamespaceRoot: false });
|
|
120
|
+
})
|
|
85
121
|
.join(" | ");
|
|
86
122
|
};
|
|
87
|
-
export const resolveScalar = (s) => {
|
|
123
|
+
export const resolveScalar = (s, serializableDates) => {
|
|
88
124
|
let ret = "unknown";
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
125
|
+
switch (s.name) {
|
|
126
|
+
case "boolean":
|
|
127
|
+
ret = "boolean";
|
|
128
|
+
break;
|
|
129
|
+
case "bytes":
|
|
130
|
+
ret = "Uint8Array";
|
|
131
|
+
break;
|
|
132
|
+
case "duration":
|
|
133
|
+
case "numeric":
|
|
134
|
+
ret = "number";
|
|
135
|
+
break;
|
|
136
|
+
case "plainTime":
|
|
137
|
+
case "string":
|
|
138
|
+
case "url":
|
|
139
|
+
ret = "string";
|
|
140
|
+
break;
|
|
141
|
+
case "offsetDateTime":
|
|
142
|
+
case "plainDate":
|
|
143
|
+
case "utcDateTime":
|
|
144
|
+
ret = serializableDates ? "string" : "Date";
|
|
145
|
+
break;
|
|
146
|
+
case "unixTimestamp32":
|
|
147
|
+
ret = serializableDates ? "number" : "Date";
|
|
148
|
+
break;
|
|
149
|
+
default:
|
|
150
|
+
console.warn("Could not resolve scalar:", s.name);
|
|
151
|
+
}
|
|
152
|
+
if (serializableDates && s.name === "unixTimestamp32") {
|
|
153
|
+
// If we want to use serializable date types baseScalar should be skipped
|
|
154
|
+
// for unixTimestamp32 (since it is utcDateTime and would emit a string)
|
|
155
|
+
return ret;
|
|
115
156
|
}
|
|
116
|
-
return s.baseScalar ? resolveScalar(s.baseScalar) : ret;
|
|
157
|
+
return s.baseScalar ? resolveScalar(s.baseScalar, serializableDates) : ret;
|
|
117
158
|
};
|
|
118
159
|
export const resolveModel = (m, opts) => {
|
|
119
160
|
if (m.name &&
|
|
120
161
|
!opts.isNamespaceRoot &&
|
|
121
|
-
opts.currentNamespace.
|
|
162
|
+
opts.currentNamespace.models.has(m.name) &&
|
|
122
163
|
!opts.resolveEvenWithName)
|
|
123
164
|
return m.name;
|
|
124
165
|
let ret = "{\n";
|
|
@@ -134,6 +175,7 @@ export const resolveModel = (m, opts) => {
|
|
|
134
175
|
const typeStr = resolveType(p.type, {
|
|
135
176
|
...opts,
|
|
136
177
|
nestlevel: opts.nestlevel + 1,
|
|
178
|
+
isNamespaceRoot: false,
|
|
137
179
|
});
|
|
138
180
|
if (typeStr.includes("unknown"))
|
|
139
181
|
console.warn(`Could not resolve property ${p.name} on ${m.name}`);
|
|
@@ -144,4 +186,32 @@ export const resolveModel = (m, opts) => {
|
|
|
144
186
|
ret = ret.addLine("}", opts.nestlevel, true);
|
|
145
187
|
return ret;
|
|
146
188
|
};
|
|
189
|
+
export const resolveEnumMemberValue = (e, name) => {
|
|
190
|
+
const member = e.members.get(name);
|
|
191
|
+
if (!member) {
|
|
192
|
+
console.warn("Missing enum member under name:", name);
|
|
193
|
+
return;
|
|
194
|
+
}
|
|
195
|
+
return member?.value;
|
|
196
|
+
};
|
|
197
|
+
export const resolveEnumAsUnion = (e, opts) => {
|
|
198
|
+
return Array.from(e.members.values())
|
|
199
|
+
.map((member, index) => {
|
|
200
|
+
const fallback = opts.context.options["string-nominal-enums"]
|
|
201
|
+
? member.name
|
|
202
|
+
: index;
|
|
203
|
+
const value = resolveEnumMemberValue(e, member.name) ?? fallback;
|
|
204
|
+
return typeof value === "string" ? `'${value}'` : value.toString();
|
|
205
|
+
})
|
|
206
|
+
.join(" | ");
|
|
207
|
+
};
|
|
208
|
+
export const resolveEnumMemberIndex = (e, name) => {
|
|
209
|
+
const index = Array.from(e.members.values()).findIndex((member) => {
|
|
210
|
+
return member.name === name;
|
|
211
|
+
});
|
|
212
|
+
if (index === -1) {
|
|
213
|
+
return;
|
|
214
|
+
}
|
|
215
|
+
return index;
|
|
216
|
+
};
|
|
147
217
|
//# sourceMappingURL=emit_types_resolve.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"emit_types_resolve.js","sourceRoot":"","sources":["../../src/emit_types_resolve.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,MAAM,GAQP,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,SAAS,EAAc,MAAM,gBAAgB,CAAC;AAWvD,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,CAAO,EAAE,IAAmB,EAAU,EAAE;IAClE,IAAI,OAAO,GAAG,SAAS,CAAC;IACxB,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;QACf,KAAK,OAAO;YACV,IAAI,CAAC,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;gBACvB,OAAO,GAAG,YAAY,CAAC,CAAmB,EAAE,IAAI,CAAC,CAAC;YACpD,CAAC;iBAAM,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAC/B,OAAO,GAAG,aAAa,CAAC,CAAoB,EAAE,IAAI,CAAC,CAAC;YACtD,CAAC;;gBAAM,OAAO,GAAG,YAAY,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;YACvC,MAAM;QACR,KAAK,SAAS;YACZ,OAAO,GAAG,SAAS,CAAC;YACpB,MAAM;QACR,KAAK,MAAM;YACT,OAAO,GAAG,WAAW,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;YAC/B,MAAM;QACR,KAAK,WAAW;YACd,OAAO,GAAG,CAAC,CAAC,IAAI,CAAC;YACjB,MAAM;QACR,KAAK,QAAQ;YACX,OAAO,GAAG,CAAC,CAAC,aAAa,CAAC;YAC1B,MAAM;QACR,KAAK,QAAQ;YACX,OAAO,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"emit_types_resolve.js","sourceRoot":"","sources":["../../src/emit_types_resolve.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Model, Namespace, Type } from "@typespec/compiler";
|
|
2
|
-
export declare const getTypeguardModel: (m: Model, accessor: string, nestingLevel: number | undefined, currentNamespace: Namespace, knownGuards?: Array<{
|
|
2
|
+
export declare const getTypeguardModel: (m: Model, accessor: string, nestingLevel: number | undefined, currentNamespace: Namespace, serializableDates: boolean, knownGuards?: Array<{
|
|
3
3
|
filename: string;
|
|
4
4
|
name: string;
|
|
5
5
|
}>) => [string, string[]];
|
|
@@ -11,7 +11,7 @@ export declare const getTypeguardModel: (m: Model, accessor: string, nestingLeve
|
|
|
11
11
|
* @param knownGuards Array of names of known typeguards; if type is found in those, no new typeguard will be created and instead a reference to the existing one is produced
|
|
12
12
|
* @returns Tuple: [function body of the typeguard, array of import filenames (not unique!)]
|
|
13
13
|
*/
|
|
14
|
-
export declare const getTypeguard: (t: Type, accessor: string, nestingLevel: number | undefined, currentNamespace: Namespace, knownGuards?: Array<{
|
|
14
|
+
export declare const getTypeguard: (t: Type, accessor: string, nestingLevel: number | undefined, currentNamespace: Namespace, serializableDates: boolean, knownGuards?: Array<{
|
|
15
15
|
filename: string;
|
|
16
16
|
name: string;
|
|
17
17
|
}>) => [string, string[]];
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { resolveScalar } from "./emit_types_resolve.js";
|
|
2
|
-
export const getTypeguardModel = (m, accessor, nestingLevel = 1, currentNamespace, knownGuards) => {
|
|
2
|
+
export const getTypeguardModel = (m, accessor, nestingLevel = 1, currentNamespace, serializableDates, knownGuards) => {
|
|
3
3
|
const imports = [];
|
|
4
4
|
return [
|
|
5
5
|
Array.from(m.properties)
|
|
6
6
|
.map((property) => {
|
|
7
|
-
const guard = getTypeguard(property[1].type, `${accessor}['${property[1].name}']`, nestingLevel + 1, currentNamespace, knownGuards);
|
|
7
|
+
const guard = getTypeguard(property[1].type, `${accessor}['${property[1].name}']`, nestingLevel + 1, currentNamespace, serializableDates, knownGuards);
|
|
8
8
|
imports.push(...guard[1]);
|
|
9
9
|
let ret = " ".repeat(nestingLevel);
|
|
10
10
|
ret += property[1].optional
|
|
@@ -26,11 +26,11 @@ export const getTypeguardModel = (m, accessor, nestingLevel = 1, currentNamespac
|
|
|
26
26
|
* @param knownGuards Array of names of known typeguards; if type is found in those, no new typeguard will be created and instead a reference to the existing one is produced
|
|
27
27
|
* @returns Tuple: [function body of the typeguard, array of import filenames (not unique!)]
|
|
28
28
|
*/
|
|
29
|
-
export const getTypeguard = (t, accessor, nestingLevel = 1, currentNamespace, knownGuards) => {
|
|
29
|
+
export const getTypeguard = (t, accessor, nestingLevel = 1, currentNamespace, serializableDates, knownGuards) => {
|
|
30
30
|
switch (t.kind) {
|
|
31
31
|
case "Model":
|
|
32
32
|
if (t.name === "Array") {
|
|
33
|
-
const guard = getTypeguard(t.indexer.value, "v", nestingLevel, currentNamespace, knownGuards);
|
|
33
|
+
const guard = getTypeguard(t.indexer.value, "v", nestingLevel, currentNamespace, serializableDates, knownGuards);
|
|
34
34
|
if (guard[0].endsWith("\n"))
|
|
35
35
|
guard[0] = guard[0].substring(0, guard[0].length - 1);
|
|
36
36
|
return [
|
|
@@ -39,7 +39,7 @@ export const getTypeguard = (t, accessor, nestingLevel = 1, currentNamespace, kn
|
|
|
39
39
|
];
|
|
40
40
|
}
|
|
41
41
|
else if (t.name === "Record") {
|
|
42
|
-
const guard = getTypeguard(t.indexer.value, "v", nestingLevel, currentNamespace, knownGuards);
|
|
42
|
+
const guard = getTypeguard(t.indexer.value, "v", nestingLevel, currentNamespace, serializableDates, knownGuards);
|
|
43
43
|
if (guard[0].endsWith("\n"))
|
|
44
44
|
guard[0] = guard[0].substring(0, guard[0].length - 1);
|
|
45
45
|
return [
|
|
@@ -61,7 +61,7 @@ export const getTypeguard = (t, accessor, nestingLevel = 1, currentNamespace, kn
|
|
|
61
61
|
return [`is${t.name}(${accessor})`, []];
|
|
62
62
|
}
|
|
63
63
|
else {
|
|
64
|
-
const guard = getTypeguardModel(t, accessor, nestingLevel, currentNamespace, knownGuards);
|
|
64
|
+
const guard = getTypeguardModel(t, accessor, nestingLevel, currentNamespace, serializableDates, knownGuards);
|
|
65
65
|
return [
|
|
66
66
|
`(\n${guard[0]}\n${" ".repeat(Math.max(nestingLevel - 1, 0))})`,
|
|
67
67
|
guard[1],
|
|
@@ -77,9 +77,12 @@ export const getTypeguard = (t, accessor, nestingLevel = 1, currentNamespace, kn
|
|
|
77
77
|
if (
|
|
78
78
|
// TODO: figure out how to support all the varieties of dates
|
|
79
79
|
// TODO: support byte arrays
|
|
80
|
-
resolveScalar(t) !== "Date" &&
|
|
81
|
-
resolveScalar(t) !== "Uint8Array")
|
|
82
|
-
return [
|
|
80
|
+
resolveScalar(t, serializableDates) !== "Date" &&
|
|
81
|
+
resolveScalar(t, serializableDates) !== "Uint8Array")
|
|
82
|
+
return [
|
|
83
|
+
`typeof ${accessor} === '${resolveScalar(t, serializableDates)}'`,
|
|
84
|
+
[],
|
|
85
|
+
];
|
|
83
86
|
break;
|
|
84
87
|
case "String":
|
|
85
88
|
return [`typeof ${accessor} === 'string'`, []];
|
|
@@ -89,7 +92,7 @@ export const getTypeguard = (t, accessor, nestingLevel = 1, currentNamespace, kn
|
|
|
89
92
|
return [
|
|
90
93
|
t.values
|
|
91
94
|
.map((v, i) => {
|
|
92
|
-
const guard = getTypeguard(v, `${accessor}[${i}]`, nestingLevel, currentNamespace, knownGuards);
|
|
95
|
+
const guard = getTypeguard(v, `${accessor}[${i}]`, nestingLevel, currentNamespace, serializableDates, knownGuards);
|
|
93
96
|
imports.push(...guard[1]);
|
|
94
97
|
return `(${guard[0]})`;
|
|
95
98
|
})
|
|
@@ -102,7 +105,7 @@ export const getTypeguard = (t, accessor, nestingLevel = 1, currentNamespace, kn
|
|
|
102
105
|
return [
|
|
103
106
|
Array.from(t.variants)
|
|
104
107
|
.map((v) => {
|
|
105
|
-
const guard = getTypeguard(v[1].type, `${accessor}`, nestingLevel, currentNamespace, knownGuards);
|
|
108
|
+
const guard = getTypeguard(v[1].type, `${accessor}`, nestingLevel, currentNamespace, serializableDates, knownGuards);
|
|
106
109
|
imports.push(...guard[1]);
|
|
107
110
|
return `(${guard[0]})`;
|
|
108
111
|
})
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"emit_types_typeguards.js","sourceRoot":"","sources":["../../src/emit_types_typeguards.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"emit_types_typeguards.js","sourceRoot":"","sources":["../../src/emit_types_typeguards.ts"],"names":[],"mappings":"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"}
|
package/dist/src/emitter.js
CHANGED
|
@@ -16,6 +16,9 @@ export async function $onEmit(context) {
|
|
|
16
16
|
(context.options["enable-typeguards"] ?? false),
|
|
17
17
|
"enable-routes": context.options["enable-routes"] ?? false,
|
|
18
18
|
"enable-routed-typemap": context.options["enable-routed-typemap"] ?? false,
|
|
19
|
+
"string-nominal-enums": (context.options["enable-routed-typemap"] ?? false) &&
|
|
20
|
+
(context.options["string-nominal-enums"] ?? false),
|
|
21
|
+
"serializable-date-types": context.options["serializable-date-types"] ?? false,
|
|
19
22
|
};
|
|
20
23
|
console.log(`Writing routes to ${options["out-dir"]}`);
|
|
21
24
|
let targetNamespaceFound = false;
|
package/dist/src/emitter.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"emitter.js","sourceRoot":"","sources":["../../src/emitter.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,QAAQ,EACR,eAAe,EACf,WAAW,GACZ,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,SAAS,MAAM,iBAAiB,CAAC;AACxC,OAAO,mBAAmB,MAAM,iCAAiC,CAAC;AASlE,MAAM,CAAC,SAAS,CAAC,OAAO,GAAG,UAEzB,GAAW,EACX,IAAa,EACb,SAAmB;IAEnB,OAAO,GAAG,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,GAAG,GAAG,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;AAC1E,CAAC,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,OAAoB;IAChD,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC;QAC5C,MAAM,OAAO,GAAmB;YAC9B,gBAAgB,EAAE,OAAO,CAAC,OAAO,CAAC,gBAAgB,CAAC;YACnD,SAAS,EAAE,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,OAAO,CAAC,gBAAgB;YACjE,cAAc,EAAE,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,IAAI;YACvD,mBAAmB,EACjB,CAAC,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,IAAI,CAAC;gBACzC,CAAC,OAAO,CAAC,OAAO,CAAC,mBAAmB,CAAC,IAAI,KAAK,CAAC;YACjD,eAAe,EAAE,OAAO,CAAC,OAAO,CAAC,eAAe,CAAC,IAAI,KAAK;YAC1D,uBAAuB,EACrB,OAAO,CAAC,OAAO,CAAC,uBAAuB,CAAC,IAAI,KAAK;
|
|
1
|
+
{"version":3,"file":"emitter.js","sourceRoot":"","sources":["../../src/emitter.ts"],"names":[],"mappings":"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"}
|
package/dist/src/index.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export { $onEmit } from "./emitter.js";
|
|
2
|
-
export { $lib } from "./lib.js";
|
|
2
|
+
export { $lib, EmitterOptions } from "./lib.js";
|
package/dist/src/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,IAAI,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,IAAI,EAAkB,MAAM,UAAU,CAAC"}
|
package/dist/src/lib.d.ts
CHANGED
|
@@ -5,6 +5,8 @@ export interface EmitterOptions {
|
|
|
5
5
|
"enable-typeguards": boolean;
|
|
6
6
|
"enable-routes": boolean;
|
|
7
7
|
"enable-routed-typemap": boolean;
|
|
8
|
+
"string-nominal-enums": boolean;
|
|
9
|
+
"serializable-date-types": boolean;
|
|
8
10
|
}
|
|
9
11
|
export declare const $lib: import("@typespec/compiler").TypeSpecLibrary<{
|
|
10
12
|
[code: string]: import("@typespec/compiler").DiagnosticMessages;
|
package/dist/src/lib.js
CHANGED
|
@@ -9,6 +9,8 @@ const EmitterOptionsSchema = {
|
|
|
9
9
|
"enable-typeguards": { type: "boolean" },
|
|
10
10
|
"enable-routes": { type: "boolean" },
|
|
11
11
|
"enable-routed-typemap": { type: "boolean" },
|
|
12
|
+
"string-nominal-enums": { type: "boolean" },
|
|
13
|
+
"serializable-date-types": { type: "boolean" },
|
|
12
14
|
},
|
|
13
15
|
required: ["root-namespace"],
|
|
14
16
|
};
|
package/dist/src/lib.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lib.js","sourceRoot":"","sources":["../../src/lib.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAkB,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"lib.js","sourceRoot":"","sources":["../../src/lib.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAkB,MAAM,oBAAoB,CAAC;AAa3E,MAAM,oBAAoB,GAAmC;IAC3D,IAAI,EAAE,QAAQ;IACd,oBAAoB,EAAE,KAAK;IAC3B,UAAU,EAAE;QACV,gBAAgB,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;QACpC,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,eAAe,EAAE;QACtD,cAAc,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;QACnC,mBAAmB,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;QACxC,eAAe,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;QACpC,uBAAuB,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;QAC5C,sBAAsB,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;QAC3C,yBAAyB,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;KAC/C;IACD,QAAQ,EAAE,CAAC,gBAAgB,CAAC;CAC7B,CAAC;AAEF,MAAM,CAAC,MAAM,IAAI,GAAG,qBAAqB,CAAC;IACxC,IAAI,EAAE,6BAA6B;IACnC,WAAW,EAAE,EAAE;IACf,OAAO,EAAE;QACP,OAAO,EAAE,oBAAoB;KAC9B;CACF,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,GAAG,IAAI,CAAC"}
|
package/eslint.config.js
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "typespec-typescript-emitter",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.2.0",
|
|
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",
|
|
@@ -23,12 +23,16 @@
|
|
|
23
23
|
},
|
|
24
24
|
"devDependencies": {
|
|
25
25
|
"@types/node": "latest",
|
|
26
|
+
"@typespec/compiler": "^1.6.0",
|
|
27
|
+
"@typespec/http": "^1.6.0",
|
|
28
|
+
"@typespec/openapi3": "^1.6.0",
|
|
26
29
|
"eslint": "^9.15.0",
|
|
27
30
|
"husky": "^9.1.6",
|
|
28
31
|
"prettier": "^3.0.3",
|
|
29
32
|
"rimraf": "^6.0.1",
|
|
30
33
|
"typescript": "^5.3.3",
|
|
31
|
-
"typescript-eslint": "^8.15.0"
|
|
34
|
+
"typescript-eslint": "^8.15.0",
|
|
35
|
+
"vitest": "^4.0.10"
|
|
32
36
|
},
|
|
33
37
|
"peerDependencies": {
|
|
34
38
|
"@typespec/compiler": "^1.0.0",
|
|
@@ -37,12 +41,12 @@
|
|
|
37
41
|
"scripts": {
|
|
38
42
|
"build": "rimraf dist && tsc",
|
|
39
43
|
"watch": "tsc --watch",
|
|
40
|
-
"test": "npm run build && node --test",
|
|
41
44
|
"lint": "eslint src/ test/ --report-unused-disable-directives --max-warnings=0",
|
|
42
45
|
"lint:fix": "eslint . --report-unused-disable-directives --fix",
|
|
43
46
|
"format": "prettier . --write",
|
|
44
47
|
"format:check": "prettier --check .",
|
|
45
48
|
"prepare": "husky",
|
|
46
|
-
"prepublishOnly": "npm run build"
|
|
49
|
+
"prepublishOnly": "npm run build",
|
|
50
|
+
"test": "vitest run"
|
|
47
51
|
}
|
|
48
52
|
}
|
package/src/emit_types.ts
CHANGED
|
@@ -70,7 +70,13 @@ const emitTypes = (
|
|
|
70
70
|
`export function is${m.name}(arg: any): arg is ${m.name} {`,
|
|
71
71
|
);
|
|
72
72
|
file = file.addLine("return (", 1);
|
|
73
|
-
getTypeguardModel(
|
|
73
|
+
getTypeguardModel(
|
|
74
|
+
m,
|
|
75
|
+
"arg",
|
|
76
|
+
undefined,
|
|
77
|
+
n,
|
|
78
|
+
!!options["serializable-date-types"],
|
|
79
|
+
)[0]
|
|
74
80
|
.split("\n")
|
|
75
81
|
.forEach((line) => {
|
|
76
82
|
file = file.addLine(line, 1);
|