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.
- package/.husky/pre-commit +2 -1
- package/.prettierignore +2 -1
- package/CHANGELOG.md +19 -24
- package/CODE_OF_CONDUCT.md +128 -0
- package/README.md +362 -219
- package/dist/src/emit_routedTypemap.d.ts +4 -0
- package/dist/src/emit_routedTypemap.js +83 -0
- package/dist/src/emit_routedTypemap.js.map +1 -0
- package/dist/src/emit_routes.d.ts +3 -2
- package/dist/src/emit_routes.js +73 -47
- package/dist/src/emit_routes.js.map +1 -1
- package/dist/src/emit_types.d.ts +3 -9
- package/dist/src/emit_types.js +109 -74
- package/dist/src/emit_types.js.map +1 -1
- package/dist/src/emitter.d.ts +2 -6
- package/dist/src/emitter.js +18 -76
- package/dist/src/emitter.js.map +1 -1
- package/dist/src/helpers/appendableString.d.ts +15 -0
- package/dist/src/helpers/appendableString.js +41 -0
- package/dist/src/helpers/appendableString.js.map +1 -0
- package/dist/src/helpers/arrays.d.ts +3 -0
- package/dist/src/helpers/arrays.js +23 -0
- package/dist/src/helpers/arrays.js.map +1 -0
- package/dist/src/{helper_autogenerateWarning.d.ts → helpers/autogenerateWarning.d.ts} +1 -1
- package/dist/src/{helper_autogenerateWarning.js → helpers/autogenerateWarning.js} +1 -2
- package/dist/src/helpers/autogenerateWarning.js.map +1 -0
- package/dist/src/helpers/buildTypeMap.d.ts +12 -0
- package/dist/src/helpers/buildTypeMap.js +44 -0
- package/dist/src/helpers/buildTypeMap.js.map +1 -0
- package/dist/src/helpers/diagnostics.d.ts +4 -0
- package/dist/src/helpers/diagnostics.js +15 -0
- package/dist/src/helpers/diagnostics.js.map +1 -0
- package/dist/src/helpers/getImports.d.ts +2 -0
- package/dist/src/helpers/getImports.js +3 -0
- package/dist/src/helpers/getImports.js.map +1 -0
- package/dist/src/helpers/namespaces.d.ts +4 -0
- package/dist/src/helpers/namespaces.js +14 -0
- package/dist/src/helpers/namespaces.js.map +1 -0
- package/dist/src/helpers/visibilityHelperFile.d.ts +4 -0
- package/dist/src/helpers/visibilityHelperFile.js +57 -0
- package/dist/src/helpers/visibilityHelperFile.js.map +1 -0
- package/dist/src/lib.d.ts +4 -1
- package/dist/src/lib.js +14 -3
- package/dist/src/lib.js.map +1 -1
- package/dist/src/parseOptions.d.ts +8 -0
- package/dist/src/parseOptions.js +26 -0
- package/dist/src/parseOptions.js.map +1 -0
- package/dist/src/resolve/Resolvable.d.ts +32 -0
- package/dist/src/resolve/Resolvable.js +180 -0
- package/dist/src/resolve/Resolvable.js.map +1 -0
- package/dist/src/resolve/Resolvable_helpers.d.ts +42 -0
- package/dist/src/resolve/Resolvable_helpers.js +19 -0
- package/dist/src/resolve/Resolvable_helpers.js.map +1 -0
- package/dist/src/resolve/operationTypemap.d.ts +21 -0
- package/dist/src/resolve/operationTypemap.js +138 -0
- package/dist/src/resolve/operationTypemap.js.map +1 -0
- package/dist/src/resolve/types/Enum.d.ts +21 -0
- package/dist/src/resolve/types/Enum.js +61 -0
- package/dist/src/resolve/types/Enum.js.map +1 -0
- package/dist/src/resolve/types/Model.Indexed.d.ts +12 -0
- package/dist/src/resolve/types/Model.Indexed.js +69 -0
- package/dist/src/resolve/types/Model.Indexed.js.map +1 -0
- package/dist/src/resolve/types/Model.Shaped.d.ts +17 -0
- package/dist/src/resolve/types/Model.Shaped.js +210 -0
- package/dist/src/resolve/types/Model.Shaped.js.map +1 -0
- package/dist/src/resolve/types/Scalar.d.ts +9 -0
- package/dist/src/resolve/types/Scalar.js +109 -0
- package/dist/src/resolve/types/Scalar.js.map +1 -0
- package/dist/src/resolve/types/Simple.d.ts +11 -0
- package/dist/src/resolve/types/Simple.js +49 -0
- package/dist/src/resolve/types/Simple.js.map +1 -0
- package/dist/src/resolve/types/Tuple.d.ts +9 -0
- package/dist/src/resolve/types/Tuple.js +38 -0
- package/dist/src/resolve/types/Tuple.js.map +1 -0
- package/dist/src/resolve/types/Union.d.ts +9 -0
- package/dist/src/resolve/types/Union.js +36 -0
- package/dist/src/resolve/types/Union.js.map +1 -0
- package/eslint.config.js +12 -4
- package/package.json +2 -2
- package/src/emit_routedTypemap.ts +128 -0
- package/src/emit_routes.ts +108 -61
- package/src/emit_types.ts +137 -92
- package/src/emitter.ts +19 -107
- package/src/helpers/appendableString.ts +52 -0
- package/src/helpers/arrays.ts +21 -0
- package/src/{helper_autogenerateWarning.ts → helpers/autogenerateWarning.ts} +0 -1
- package/src/helpers/buildTypeMap.ts +72 -0
- package/src/helpers/diagnostics.ts +19 -0
- package/src/helpers/getImports.ts +9 -0
- package/src/helpers/namespaces.ts +18 -0
- package/src/helpers/visibilityHelperFile.ts +63 -0
- package/src/lib.ts +25 -4
- package/src/parseOptions.ts +26 -0
- package/src/resolve/Resolvable.ts +267 -0
- package/src/resolve/Resolvable_helpers.ts +65 -0
- package/src/resolve/operationTypemap.ts +212 -0
- package/src/resolve/types/Enum.ts +92 -0
- package/src/resolve/types/Model.Indexed.ts +113 -0
- package/src/resolve/types/Model.Shaped.ts +291 -0
- package/src/resolve/types/Scalar.ts +140 -0
- package/src/resolve/types/Simple.ts +88 -0
- package/src/resolve/types/Tuple.ts +56 -0
- package/src/resolve/types/Union.ts +52 -0
- package/test/helpers/integrationTest-novis.tsp +51 -0
- package/test/helpers/integrationTest.tsp +53 -0
- package/test/helpers/largeModel.tsp +40 -0
- package/test/{runner.ts → helpers/runner.ts} +1 -1
- package/test/helpers/ts.ts +11 -0
- package/test/helpers/wrapper.ts +144 -0
- package/test/routes/routes.target.ts +35 -0
- package/test/routes/routes.test.ts +22 -0
- package/test/typeguards/combined.test.ts +78 -0
- package/test/typeguards/enum.test.ts +10 -0
- package/test/typeguards/model.indexed.test.ts +68 -0
- package/test/typeguards/model.shaped.test.ts +38 -0
- package/test/typeguards/scalar.test.ts +62 -0
- package/test/typeguards/simple.test.ts +35 -0
- package/test/typeguards/tuple.test.ts +34 -0
- package/test/typeguards/union.test.ts +29 -0
- package/test/typemap/typemap-novis.target.ts +38 -0
- package/test/typemap/typemap.target.ts +39 -0
- package/test/typemap/typemap.test.ts +48 -0
- package/test/types/combined.test.ts +71 -0
- package/test/types/enum.test.ts +57 -0
- package/test/types/model.indexed.test.ts +46 -0
- package/test/types/model.shaped.test.ts +23 -0
- package/test/types/scalar.test.ts +53 -0
- package/test/types/simple.test.ts +20 -0
- package/test/types/tuple.test.ts +29 -0
- package/test/types/union.test.ts +20 -0
- package/tsconfig.json +1 -0
- package/dist/src/emit_mapped_types.d.ts +0 -2
- package/dist/src/emit_mapped_types.js +0 -124
- package/dist/src/emit_mapped_types.js.map +0 -1
- package/dist/src/emit_types_resolve.d.ts +0 -22
- package/dist/src/emit_types_resolve.js +0 -217
- package/dist/src/emit_types_resolve.js.map +0 -1
- package/dist/src/emit_types_typeguards.d.ts +0 -17
- package/dist/src/emit_types_typeguards.js +0 -121
- package/dist/src/emit_types_typeguards.js.map +0 -1
- package/dist/src/helper_autogenerateWarning.js.map +0 -1
- package/src/emit_mapped_types.ts +0 -155
- package/src/emit_types_resolve.ts +0 -280
- package/src/emit_types_typeguards.ts +0 -178
- package/test/main.test.ts +0 -83
- package/test/out/.gitkeep +0 -0
- package/test/targets/enum.routed-types.ts +0 -59
- package/test/targets/enum.routes.ts +0 -29
- package/test/targets/enum.target.ts +0 -39
- package/test/targets/enum.tsp +0 -36
- package/test/targets/pr8.routed-types.ts +0 -131
- package/test/targets/pr8.routes.ts +0 -30
- package/test/targets/pr8.target.ts +0 -97
- package/test/targets/pr8.tsp +0 -62
- package/test/targets/simple-routes.routed-types.ts +0 -64
- package/test/targets/simple-routes.routes.ts +0 -29
- package/test/targets/simple-routes.target.ts +0 -21
- package/test/targets/simple-routes.tsp +0 -23
- package/test/targets/union.routed-types.ts +0 -59
- package/test/targets/union.routes.ts +0 -23
- package/test/targets/union.target.ts +0 -59
- package/test/targets/union.tsp +0 -38
- package/test/targets/visibility.routed-types.ts +0 -81
- package/test/targets/visibility.routes.ts +0 -38
- package/test/targets/visibility.target.ts +0 -36
- package/test/targets/visibility.tsp +0 -49
|
@@ -1,124 +0,0 @@
|
|
|
1
|
-
import { isTemplateDeclaration, } from "@typespec/compiler";
|
|
2
|
-
import { getHttpOperation, resolveRequestVisibility, Visibility, } from "@typespec/http";
|
|
3
|
-
import { resolveType } from "./emit_types_resolve.js";
|
|
4
|
-
export const emitRoutedTypemap = (context, namespace) => {
|
|
5
|
-
const ops = {};
|
|
6
|
-
const traverseNamespace = (n) => {
|
|
7
|
-
// operations
|
|
8
|
-
const processOp = (op) => {
|
|
9
|
-
const httpOp = getHttpOperation(context.program, op);
|
|
10
|
-
const path = httpOp[0].path;
|
|
11
|
-
const verb = httpOp[0].verb.toUpperCase();
|
|
12
|
-
if (!ops[path])
|
|
13
|
-
ops[path] = {};
|
|
14
|
-
ops[path][verb] = {
|
|
15
|
-
request: "null",
|
|
16
|
-
response: [{ status: 200, body: "{}" }],
|
|
17
|
-
};
|
|
18
|
-
// request
|
|
19
|
-
let request = "null";
|
|
20
|
-
if (httpOp[0].parameters.body) {
|
|
21
|
-
request = resolveType(httpOp[0].parameters.body.type, {
|
|
22
|
-
nestlevel: 2,
|
|
23
|
-
currentNamespace: namespace,
|
|
24
|
-
context,
|
|
25
|
-
visibility: resolveRequestVisibility(context.program, op, httpOp[0].verb),
|
|
26
|
-
resolveEvenWithName: true,
|
|
27
|
-
}).replaceAll("\n", "\n ");
|
|
28
|
-
}
|
|
29
|
-
ops[path][verb].request = request;
|
|
30
|
-
// response
|
|
31
|
-
if (op.returnType && op.returnType.kind) {
|
|
32
|
-
const getReturnType = (t) => {
|
|
33
|
-
const ret = [];
|
|
34
|
-
if (t.kind === "Model") {
|
|
35
|
-
// if the return type is a model, it may have a fully qualified body
|
|
36
|
-
const modelret = {
|
|
37
|
-
status: 200,
|
|
38
|
-
body: "{}",
|
|
39
|
-
};
|
|
40
|
-
let wasQualifiedBody = false;
|
|
41
|
-
t.properties.forEach((prop) => {
|
|
42
|
-
prop.decorators.forEach((dec) => {
|
|
43
|
-
// one of the properties may be the status code
|
|
44
|
-
if (dec.definition?.name === "@statusCode" &&
|
|
45
|
-
prop.type.kind === "Number")
|
|
46
|
-
modelret.status = prop.type.value;
|
|
47
|
-
// one of the properties may be the body definition
|
|
48
|
-
if (dec.definition?.name === "@body") {
|
|
49
|
-
modelret.body = resolveType(prop.type, {
|
|
50
|
-
nestlevel: 2,
|
|
51
|
-
currentNamespace: namespace,
|
|
52
|
-
context,
|
|
53
|
-
visibility: Visibility.Read,
|
|
54
|
-
resolveEvenWithName: true,
|
|
55
|
-
}).replaceAll("\n", "\n ");
|
|
56
|
-
wasQualifiedBody = true;
|
|
57
|
-
}
|
|
58
|
-
});
|
|
59
|
-
});
|
|
60
|
-
// ... if not, we assume status 200 and treat the model as the body
|
|
61
|
-
if (!wasQualifiedBody) {
|
|
62
|
-
modelret.body = resolveType(t, {
|
|
63
|
-
nestlevel: 2,
|
|
64
|
-
currentNamespace: namespace,
|
|
65
|
-
context,
|
|
66
|
-
visibility: Visibility.Read,
|
|
67
|
-
resolveEvenWithName: true,
|
|
68
|
-
}).replaceAll("\n", "\n ");
|
|
69
|
-
}
|
|
70
|
-
ret.push(modelret);
|
|
71
|
-
}
|
|
72
|
-
else if (t.kind === "Union") {
|
|
73
|
-
// if the return type is a union, we have to check and resolve all variants
|
|
74
|
-
// the union could either be a body-only definition or fully qualified (see above)
|
|
75
|
-
t.variants.forEach((variant) => {
|
|
76
|
-
ret.push(...getReturnType(variant.type));
|
|
77
|
-
});
|
|
78
|
-
}
|
|
79
|
-
else
|
|
80
|
-
ret.push({
|
|
81
|
-
status: 200,
|
|
82
|
-
body: resolveType(t, {
|
|
83
|
-
nestlevel: 1,
|
|
84
|
-
currentNamespace: namespace,
|
|
85
|
-
context,
|
|
86
|
-
visibility: Visibility.Read,
|
|
87
|
-
resolveEvenWithName: true,
|
|
88
|
-
}),
|
|
89
|
-
});
|
|
90
|
-
return ret;
|
|
91
|
-
};
|
|
92
|
-
ops[path][verb].response = getReturnType(op.returnType);
|
|
93
|
-
}
|
|
94
|
-
}; // end operations
|
|
95
|
-
n.operations.forEach(processOp);
|
|
96
|
-
n.interfaces.forEach((itf) => {
|
|
97
|
-
if (!isTemplateDeclaration(itf))
|
|
98
|
-
itf.operations.forEach(processOp);
|
|
99
|
-
});
|
|
100
|
-
// get and traverse all namespaces
|
|
101
|
-
n.namespaces.forEach((ns) => traverseNamespace(ns));
|
|
102
|
-
};
|
|
103
|
-
traverseNamespace(namespace);
|
|
104
|
-
let out = `export type types_${context.options["root-namespace"]} = {\n`;
|
|
105
|
-
out += Object.entries(ops)
|
|
106
|
-
.map((path) => {
|
|
107
|
-
let pathret = ` ['${path[0]}']: {\n`;
|
|
108
|
-
pathret += Object.entries(path[1])
|
|
109
|
-
.map((verb) => {
|
|
110
|
-
let verbret = ` ['${verb[0]}']: {\n`;
|
|
111
|
-
verbret += ` request: ${verb[1].request}\n`;
|
|
112
|
-
verbret += ` response: ${verb[1].response.map((res) => `{status: ${res.status}, body: ${res.body}}`).join(" | ")}\n`;
|
|
113
|
-
verbret += " }";
|
|
114
|
-
return verbret;
|
|
115
|
-
})
|
|
116
|
-
.join(",\n");
|
|
117
|
-
pathret += "\n }";
|
|
118
|
-
return pathret;
|
|
119
|
-
})
|
|
120
|
-
.join(",\n");
|
|
121
|
-
out += "\n};\n";
|
|
122
|
-
return out;
|
|
123
|
-
};
|
|
124
|
-
//# sourceMappingURL=emit_mapped_types.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"emit_mapped_types.js","sourceRoot":"","sources":["../../src/emit_mapped_types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import { ArrayModelType, EmitContext, Enum, Model, Namespace, RecordModelType, Scalar, Tuple, Type, Union } from "@typespec/compiler";
|
|
2
|
-
import { Visibility } from "@typespec/http";
|
|
3
|
-
type CommonOptions = {
|
|
4
|
-
nestlevel: number;
|
|
5
|
-
currentNamespace: Namespace;
|
|
6
|
-
context: EmitContext;
|
|
7
|
-
visibility?: Visibility;
|
|
8
|
-
resolveEvenWithName?: boolean;
|
|
9
|
-
isNamespaceRoot?: boolean;
|
|
10
|
-
};
|
|
11
|
-
export declare const resolveType: (t: Type, opts: CommonOptions) => string;
|
|
12
|
-
export declare const resolveArray: (a: ArrayModelType, opts: CommonOptions) => string;
|
|
13
|
-
export declare const resolveRecord: (a: RecordModelType, opts: CommonOptions) => string;
|
|
14
|
-
export declare const resolveEnum: (e: Enum, opts: CommonOptions) => string;
|
|
15
|
-
export declare const resolveTuple: (t: Tuple, opts: CommonOptions) => string;
|
|
16
|
-
export declare const resolveUnion: (u: Union, opts: CommonOptions) => string;
|
|
17
|
-
export declare const resolveScalar: (s: Scalar, serializableDates: boolean) => string;
|
|
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;
|
|
22
|
-
export {};
|
|
@@ -1,217 +0,0 @@
|
|
|
1
|
-
import { getDoc, } from "@typespec/compiler";
|
|
2
|
-
import { isVisible } from "@typespec/http";
|
|
3
|
-
export const resolveType = (t, opts) => {
|
|
4
|
-
let typeStr = "unknown";
|
|
5
|
-
switch (t.kind) {
|
|
6
|
-
case "Model":
|
|
7
|
-
if (t.name === "Array") {
|
|
8
|
-
typeStr = resolveArray(t, opts);
|
|
9
|
-
}
|
|
10
|
-
else if (t.name === "Record") {
|
|
11
|
-
typeStr = resolveRecord(t, opts);
|
|
12
|
-
}
|
|
13
|
-
else
|
|
14
|
-
typeStr = resolveModel(t, opts);
|
|
15
|
-
break;
|
|
16
|
-
case "Boolean":
|
|
17
|
-
typeStr = "boolean";
|
|
18
|
-
break;
|
|
19
|
-
case "Enum":
|
|
20
|
-
typeStr = resolveEnum(t, opts);
|
|
21
|
-
break;
|
|
22
|
-
case "Intrinsic":
|
|
23
|
-
typeStr = t.name;
|
|
24
|
-
break;
|
|
25
|
-
case "Number":
|
|
26
|
-
typeStr = t.valueAsString;
|
|
27
|
-
break;
|
|
28
|
-
case "Scalar":
|
|
29
|
-
typeStr = resolveScalar(t, !!opts.context.options["serializable-date-types"]);
|
|
30
|
-
break;
|
|
31
|
-
case "String":
|
|
32
|
-
typeStr = `'${t.value}'`;
|
|
33
|
-
break;
|
|
34
|
-
case "Tuple":
|
|
35
|
-
typeStr = resolveTuple(t, opts);
|
|
36
|
-
break;
|
|
37
|
-
case "Union":
|
|
38
|
-
typeStr = resolveUnion(t, opts);
|
|
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;
|
|
60
|
-
default:
|
|
61
|
-
console.warn("Could not resolve type:", t.kind);
|
|
62
|
-
}
|
|
63
|
-
return typeStr;
|
|
64
|
-
};
|
|
65
|
-
export const resolveArray = (a, opts) => {
|
|
66
|
-
if (a.name !== "Array")
|
|
67
|
-
throw new Error(`Trying to parse model ${a.name} as Array`);
|
|
68
|
-
return `(${resolveType(a.indexer.value, { ...opts, isNamespaceRoot: false })})[]`;
|
|
69
|
-
};
|
|
70
|
-
export const resolveRecord = (a, opts) => {
|
|
71
|
-
if (a.name !== "Record")
|
|
72
|
-
throw new Error(`Trying to parse model ${a.name} as Record`);
|
|
73
|
-
return `{[k: string]: ${resolveType(a.indexer.value, opts)}}`;
|
|
74
|
-
};
|
|
75
|
-
export const resolveEnum = (e, opts) => {
|
|
76
|
-
if (e.name &&
|
|
77
|
-
!opts.isNamespaceRoot &&
|
|
78
|
-
opts.currentNamespace.enums.has(e.name) &&
|
|
79
|
-
!opts.resolveEvenWithName) {
|
|
80
|
-
return e.name;
|
|
81
|
-
}
|
|
82
|
-
if (opts.resolveEvenWithName) {
|
|
83
|
-
return resolveEnumAsUnion(e, opts);
|
|
84
|
-
}
|
|
85
|
-
let ret = "{\n";
|
|
86
|
-
let i = 1;
|
|
87
|
-
e.members.forEach((p) => {
|
|
88
|
-
const val = p.value === undefined
|
|
89
|
-
? ""
|
|
90
|
-
: " = " +
|
|
91
|
-
(typeof p.value === "string" ? `'${p.value}'` : p.value.toString());
|
|
92
|
-
ret = ret.addLine(`${p.name.includes("-") ? `'${p.name}'` : p.name}${val}${i < e.members.size ? "," : ""}`, opts.nestlevel + 1);
|
|
93
|
-
i++;
|
|
94
|
-
});
|
|
95
|
-
ret = ret.addLine("}", opts.nestlevel, true);
|
|
96
|
-
return ret;
|
|
97
|
-
};
|
|
98
|
-
export const resolveTuple = (t, opts) => {
|
|
99
|
-
return `[${t.values.map((v) => resolveType(v, opts)).join(", ")}]`;
|
|
100
|
-
};
|
|
101
|
-
export const resolveUnion = (u, opts) => {
|
|
102
|
-
if (u.name &&
|
|
103
|
-
!opts.isNamespaceRoot &&
|
|
104
|
-
u.namespace?.unions.has(u.name) &&
|
|
105
|
-
!opts.resolveEvenWithName)
|
|
106
|
-
return u.name;
|
|
107
|
-
return Array.from(u.variants)
|
|
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
|
-
})
|
|
121
|
-
.join(" | ");
|
|
122
|
-
};
|
|
123
|
-
export const resolveScalar = (s, serializableDates) => {
|
|
124
|
-
let ret = "unknown";
|
|
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;
|
|
156
|
-
}
|
|
157
|
-
return s.baseScalar ? resolveScalar(s.baseScalar, serializableDates) : ret;
|
|
158
|
-
};
|
|
159
|
-
export const resolveModel = (m, opts) => {
|
|
160
|
-
if (m.name &&
|
|
161
|
-
!opts.isNamespaceRoot &&
|
|
162
|
-
opts.currentNamespace.models.has(m.name) &&
|
|
163
|
-
!opts.resolveEvenWithName)
|
|
164
|
-
return m.name;
|
|
165
|
-
let ret = "{\n";
|
|
166
|
-
let i = 1;
|
|
167
|
-
m.properties.forEach((p) => {
|
|
168
|
-
if (opts.visibility === undefined ||
|
|
169
|
-
isVisible(opts.context.program, p, opts.visibility)) {
|
|
170
|
-
if (opts.context) {
|
|
171
|
-
const doc = getDoc(opts.context.program, p);
|
|
172
|
-
if (doc)
|
|
173
|
-
ret = ret.addLine(`/** ${doc} */`, opts.nestlevel + 1);
|
|
174
|
-
}
|
|
175
|
-
const typeStr = resolveType(p.type, {
|
|
176
|
-
...opts,
|
|
177
|
-
nestlevel: opts.nestlevel + 1,
|
|
178
|
-
isNamespaceRoot: false,
|
|
179
|
-
});
|
|
180
|
-
if (typeStr.includes("unknown"))
|
|
181
|
-
console.warn(`Could not resolve property ${p.name} on ${m.name}`);
|
|
182
|
-
ret = ret.addLine(`${p.name}${p.optional ? "?" : ""}: ${typeStr}${i < m.properties.size ? "," : ""}`, opts.nestlevel + 1);
|
|
183
|
-
}
|
|
184
|
-
i++;
|
|
185
|
-
});
|
|
186
|
-
ret = ret.addLine("}", opts.nestlevel, true);
|
|
187
|
-
return ret;
|
|
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
|
-
};
|
|
217
|
-
//# sourceMappingURL=emit_types_resolve.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"emit_types_resolve.js","sourceRoot":"","sources":["../../src/emit_types_resolve.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import { Model, Namespace, Type } from "@typespec/compiler";
|
|
2
|
-
export declare const getTypeguardModel: (m: Model, accessor: string, nestingLevel: number | undefined, currentNamespace: Namespace, serializableDates: boolean, knownGuards?: Array<{
|
|
3
|
-
filename: string;
|
|
4
|
-
name: string;
|
|
5
|
-
}>) => [string, string[]];
|
|
6
|
-
/**
|
|
7
|
-
* Creates the function body for a typeguard
|
|
8
|
-
* @param t Type to create guards for
|
|
9
|
-
* @param accessor String by which the type-to-test can be accessed by the code
|
|
10
|
-
* @param nestingLevel
|
|
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
|
-
* @returns Tuple: [function body of the typeguard, array of import filenames (not unique!)]
|
|
13
|
-
*/
|
|
14
|
-
export declare const getTypeguard: (t: Type, accessor: string, nestingLevel: number | undefined, currentNamespace: Namespace, serializableDates: boolean, knownGuards?: Array<{
|
|
15
|
-
filename: string;
|
|
16
|
-
name: string;
|
|
17
|
-
}>) => [string, string[]];
|
|
@@ -1,121 +0,0 @@
|
|
|
1
|
-
import { resolveScalar } from "./emit_types_resolve.js";
|
|
2
|
-
export const getTypeguardModel = (m, accessor, nestingLevel = 1, currentNamespace, serializableDates, knownGuards) => {
|
|
3
|
-
const imports = [];
|
|
4
|
-
return [
|
|
5
|
-
Array.from(m.properties)
|
|
6
|
-
.map((property) => {
|
|
7
|
-
const guard = getTypeguard(property[1].type, `${accessor}['${property[1].name}']`, nestingLevel + 1, currentNamespace, serializableDates, knownGuards);
|
|
8
|
-
imports.push(...guard[1]);
|
|
9
|
-
let ret = " ".repeat(nestingLevel);
|
|
10
|
-
ret += property[1].optional
|
|
11
|
-
? `${accessor}['${property[1].name}'] === undefined || `
|
|
12
|
-
: `${accessor}['${property[1].name}'] !== undefined && `;
|
|
13
|
-
ret += `(${guard[0]})`;
|
|
14
|
-
return ret;
|
|
15
|
-
})
|
|
16
|
-
.filter((x) => !!x)
|
|
17
|
-
.join(" &&\n"),
|
|
18
|
-
imports,
|
|
19
|
-
];
|
|
20
|
-
};
|
|
21
|
-
/**
|
|
22
|
-
* Creates the function body for a typeguard
|
|
23
|
-
* @param t Type to create guards for
|
|
24
|
-
* @param accessor String by which the type-to-test can be accessed by the code
|
|
25
|
-
* @param nestingLevel
|
|
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
|
-
* @returns Tuple: [function body of the typeguard, array of import filenames (not unique!)]
|
|
28
|
-
*/
|
|
29
|
-
export const getTypeguard = (t, accessor, nestingLevel = 1, currentNamespace, serializableDates, knownGuards) => {
|
|
30
|
-
switch (t.kind) {
|
|
31
|
-
case "Model":
|
|
32
|
-
if (t.name === "Array") {
|
|
33
|
-
const guard = getTypeguard(t.indexer.value, "v", nestingLevel, currentNamespace, serializableDates, knownGuards);
|
|
34
|
-
if (guard[0].endsWith("\n"))
|
|
35
|
-
guard[0] = guard[0].substring(0, guard[0].length - 1);
|
|
36
|
-
return [
|
|
37
|
-
`Array.isArray(${accessor}) && ${accessor}.every((v) => ${guard[0]})`,
|
|
38
|
-
guard[1],
|
|
39
|
-
];
|
|
40
|
-
}
|
|
41
|
-
else if (t.name === "Record") {
|
|
42
|
-
const guard = getTypeguard(t.indexer.value, "v", nestingLevel, currentNamespace, serializableDates, knownGuards);
|
|
43
|
-
if (guard[0].endsWith("\n"))
|
|
44
|
-
guard[0] = guard[0].substring(0, guard[0].length - 1);
|
|
45
|
-
return [
|
|
46
|
-
`typeof ${accessor} === 'object' && (Object.entries(${accessor}).length > 0 ? Object.values(${accessor} as Record<string, any>).every((v) => ${guard[0]}) : true)`,
|
|
47
|
-
guard[1],
|
|
48
|
-
];
|
|
49
|
-
}
|
|
50
|
-
else if (knownGuards && knownGuards.some((x) => x.name === t.name)) {
|
|
51
|
-
return [
|
|
52
|
-
`is${t.name}(${accessor})`,
|
|
53
|
-
[
|
|
54
|
-
`import {is${t.name}} from './${knownGuards.find((x) => x.name === t.name).filename}';`,
|
|
55
|
-
],
|
|
56
|
-
];
|
|
57
|
-
}
|
|
58
|
-
else if (t.name &&
|
|
59
|
-
!knownGuards &&
|
|
60
|
-
currentNamespace.name === t.namespace.name) {
|
|
61
|
-
return [`is${t.name}(${accessor})`, []];
|
|
62
|
-
}
|
|
63
|
-
else {
|
|
64
|
-
const guard = getTypeguardModel(t, accessor, nestingLevel, currentNamespace, serializableDates, knownGuards);
|
|
65
|
-
return [
|
|
66
|
-
`(\n${guard[0]}\n${" ".repeat(Math.max(nestingLevel - 1, 0))})`,
|
|
67
|
-
guard[1],
|
|
68
|
-
];
|
|
69
|
-
}
|
|
70
|
-
case "Boolean":
|
|
71
|
-
return [`typeof ${accessor} === 'boolean'`, []];
|
|
72
|
-
case "Intrinsic":
|
|
73
|
-
return [`${accessor} === ${t.name}`, []];
|
|
74
|
-
case "Number":
|
|
75
|
-
return [`typeof ${accessor} === 'number'`, []];
|
|
76
|
-
case "Scalar":
|
|
77
|
-
if (
|
|
78
|
-
// TODO: figure out how to support all the varieties of dates
|
|
79
|
-
// TODO: support byte arrays
|
|
80
|
-
resolveScalar(t, serializableDates) !== "Date" &&
|
|
81
|
-
resolveScalar(t, serializableDates) !== "Uint8Array")
|
|
82
|
-
return [
|
|
83
|
-
`typeof ${accessor} === '${resolveScalar(t, serializableDates)}'`,
|
|
84
|
-
[],
|
|
85
|
-
];
|
|
86
|
-
break;
|
|
87
|
-
case "String":
|
|
88
|
-
return [`typeof ${accessor} === 'string'`, []];
|
|
89
|
-
case "Tuple": {
|
|
90
|
-
// TODO: ['string1', 'string2'] gets resolved as [string, string] instead of literals. Why?
|
|
91
|
-
const imports = [];
|
|
92
|
-
return [
|
|
93
|
-
t.values
|
|
94
|
-
.map((v, i) => {
|
|
95
|
-
const guard = getTypeguard(v, `${accessor}[${i}]`, nestingLevel, currentNamespace, serializableDates, knownGuards);
|
|
96
|
-
imports.push(...guard[1]);
|
|
97
|
-
return `(${guard[0]})`;
|
|
98
|
-
})
|
|
99
|
-
.join(" && "),
|
|
100
|
-
imports,
|
|
101
|
-
];
|
|
102
|
-
}
|
|
103
|
-
case "Union": {
|
|
104
|
-
const imports = [];
|
|
105
|
-
return [
|
|
106
|
-
Array.from(t.variants)
|
|
107
|
-
.map((v) => {
|
|
108
|
-
const guard = getTypeguard(v[1].type, `${accessor}`, nestingLevel, currentNamespace, serializableDates, knownGuards);
|
|
109
|
-
imports.push(...guard[1]);
|
|
110
|
-
return `(${guard[0]})`;
|
|
111
|
-
})
|
|
112
|
-
.join(" || "),
|
|
113
|
-
imports,
|
|
114
|
-
];
|
|
115
|
-
}
|
|
116
|
-
default:
|
|
117
|
-
console.warn("Could not resolve type:", t.kind);
|
|
118
|
-
}
|
|
119
|
-
return ["true", []]; // fallback to not break everything in case of errors
|
|
120
|
-
};
|
|
121
|
-
//# sourceMappingURL=emit_types_typeguards.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"emit_types_typeguards.js","sourceRoot":"","sources":["../../src/emit_types_typeguards.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"helper_autogenerateWarning.js","sourceRoot":"","sources":["../../src/helper_autogenerateWarning.ts"],"names":[],"mappings":"AAAA,MAAM,mBAAmB,GAAG;;;;;;;;;CAS3B,CAAC;AAEF,eAAe,mBAAmB,CAAC"}
|