typespec-typescript-emitter 0.2.0 → 0.3.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.
@@ -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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"}
@@ -0,0 +1,8 @@
1
+ import { ArrayModelType, EmitContext, Enum, Model, Scalar, Tuple, Type, Union } from "@typespec/compiler";
2
+ export declare const resolveType: (context: EmitContext, t: Type, nestlevel: number) => string;
3
+ export declare const resolveArray: (context: EmitContext, a: ArrayModelType, nestlevel: number) => string;
4
+ export declare const resolveEnum: (e: Enum, nestlevel: number, isNamespaceRoot?: boolean) => string;
5
+ export declare const resolveTuple: (context: EmitContext, t: Tuple, nestlevel: number) => string;
6
+ export declare const resolveUnion: (context: EmitContext, u: Union, nestlevel: number, isNamespaceRoot?: boolean) => string;
7
+ export declare const resolveScalar: (s: Scalar) => string;
8
+ export declare const resolveModel: (context: EmitContext, m: Model, nestlevel?: number, isNamespaceRoot?: boolean) => string;
@@ -0,0 +1,122 @@
1
+ import { getDoc, } from "@typespec/compiler";
2
+ export const resolveType = (context, t, nestlevel) => {
3
+ let typeStr = "unknown";
4
+ switch (t.kind) {
5
+ case "Model":
6
+ if (t.name === "Array") {
7
+ typeStr = resolveArray(context, t, nestlevel);
8
+ }
9
+ else
10
+ typeStr = resolveModel(context, t, nestlevel + 1);
11
+ break;
12
+ case "Boolean":
13
+ typeStr = "boolean";
14
+ break;
15
+ case "Enum":
16
+ typeStr = resolveEnum(t, nestlevel);
17
+ break;
18
+ case "Intrinsic":
19
+ typeStr = t.name;
20
+ break;
21
+ case "Number":
22
+ typeStr = t.valueAsString;
23
+ break;
24
+ case "Scalar":
25
+ typeStr = resolveScalar(t);
26
+ break;
27
+ case "String":
28
+ typeStr = `'${t.value}'`;
29
+ break;
30
+ case "Tuple":
31
+ typeStr = resolveTuple(context, t, nestlevel);
32
+ break;
33
+ case "Union":
34
+ typeStr = resolveUnion(context, t, nestlevel);
35
+ break;
36
+ default:
37
+ console.warn("Could not resolve type:", t.kind);
38
+ }
39
+ return typeStr;
40
+ };
41
+ export const resolveArray = (context, a, nestlevel) => {
42
+ if (a.name !== "Array")
43
+ throw new Error(`Trying to parse model ${a.name} as Array`);
44
+ const ret = `${resolveType(context, a.indexer.value, nestlevel)}[]`;
45
+ return ret;
46
+ };
47
+ export const resolveEnum = (e, nestlevel, isNamespaceRoot) => {
48
+ if (e.name && !isNamespaceRoot && e.namespace?.enums.has(e.name))
49
+ return e.name;
50
+ let ret = "{\n";
51
+ let i = 1;
52
+ e.members.forEach((p) => {
53
+ const val = p.value === undefined
54
+ ? ""
55
+ : " = " +
56
+ (typeof p.value === "string" ? `'${p.value}'` : p.value.toString());
57
+ ret = ret.addLine(`${p.name}${val}${i < e.members.size ? "," : ""}`, nestlevel + 1);
58
+ i++;
59
+ });
60
+ ret = ret.addLine("}", nestlevel, true);
61
+ return ret;
62
+ };
63
+ export const resolveTuple = (context, t, nestlevel) => {
64
+ return `[${t.values.map((v) => resolveType(context, v, nestlevel)).join(", ")}]`;
65
+ };
66
+ export const resolveUnion = (context, u, nestlevel, isNamespaceRoot) => {
67
+ if (u.name && !isNamespaceRoot && u.namespace?.unions.has(u.name))
68
+ return u.name;
69
+ return Array.from(u.variants)
70
+ .map((v) => resolveType(context, v[1].type, nestlevel))
71
+ .join(" | ");
72
+ };
73
+ export const resolveScalar = (s) => {
74
+ let ret = "unknown";
75
+ if (!s.baseScalar) {
76
+ switch (s.name) {
77
+ case "boolean":
78
+ ret = "boolean";
79
+ break;
80
+ case "bytes":
81
+ ret = "Uint8Array";
82
+ break;
83
+ case "duration":
84
+ case "numeric":
85
+ ret = "number";
86
+ break;
87
+ case "plainTime":
88
+ case "string":
89
+ case "url":
90
+ ret = "string";
91
+ break;
92
+ case "offsetDateTime":
93
+ case "plainDate":
94
+ case "unixTimestamp32":
95
+ case "utcDateTime":
96
+ ret = "Date";
97
+ break;
98
+ default:
99
+ console.warn("Could not resolve scalar:", s.name);
100
+ }
101
+ }
102
+ return s.baseScalar ? resolveScalar(s.baseScalar) : ret;
103
+ };
104
+ export const resolveModel = (context, m, nestlevel = 0, isNamespaceRoot) => {
105
+ if (m.name && !isNamespaceRoot && m.namespace?.models.has(m.name))
106
+ return m.name;
107
+ let ret = "{\n";
108
+ let i = 1;
109
+ m.properties.forEach((p) => {
110
+ const doc = getDoc(context.program, p);
111
+ if (doc)
112
+ ret = ret.addLine(`/** ${doc} */`, nestlevel + 1);
113
+ const typeStr = resolveType(context, p.type, nestlevel);
114
+ if (typeStr.includes("unknown"))
115
+ console.warn(`Could not resolve property ${p.name} on ${m.name}`);
116
+ ret = ret.addLine(`${p.name}${p.optional ? "?" : ""}: ${typeStr}${i < m.properties.size ? "," : ""}`, nestlevel + 1);
117
+ i++;
118
+ });
119
+ ret = ret.addLine("}", nestlevel, true);
120
+ return ret;
121
+ };
122
+ //# sourceMappingURL=emit_types_resolve.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"emit_types_resolve.js","sourceRoot":"","sources":["../../src/emit_types_resolve.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import { Model, Type } from "@typespec/compiler";
2
+ export declare const getTypeguardModel: (m: Model, accessor: string, nestingLevel?: number, 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, knownGuards?: Array<{
15
+ filename: string;
16
+ name: string;
17
+ }>) => [string, string[]];
@@ -0,0 +1,107 @@
1
+ import { resolveScalar } from "./emit_types_resolve.js";
2
+ export const getTypeguardModel = (m, accessor, nestingLevel = 1, 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, 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, knownGuards) => {
30
+ switch (t.kind) {
31
+ case "Model":
32
+ if (t.name === "Array") {
33
+ const guard = getTypeguard(t.indexer.value, "v", nestingLevel, 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 (knownGuards && knownGuards.some((x) => x.name === t.name)) {
42
+ return [
43
+ `is${t.name}(${accessor})`,
44
+ [
45
+ `import {is${t.name}} from './${knownGuards.find((x) => x.name === t.name).filename}';`,
46
+ ],
47
+ ];
48
+ }
49
+ else if (t.name && !knownGuards && t.namespace?.models.has(t.name)) {
50
+ return [`is${t.name}(${accessor})`, []];
51
+ }
52
+ else {
53
+ const guard = getTypeguardModel(t, accessor, nestingLevel, knownGuards);
54
+ return [
55
+ `(\n${guard[0]}\n${" ".repeat(Math.max(nestingLevel - 1, 0))})`,
56
+ guard[1],
57
+ ];
58
+ }
59
+ case "Boolean":
60
+ return [`typeof ${accessor} === 'boolean'`, []];
61
+ case "Intrinsic":
62
+ return [`${accessor} === ${t.name}`, []];
63
+ case "Number":
64
+ return [`typeof ${accessor} === 'number'`, []];
65
+ case "Scalar":
66
+ if (
67
+ // TODO: figure out how to support all the varieties of dates
68
+ // TODO: support byte arrays
69
+ resolveScalar(t) !== "Date" &&
70
+ resolveScalar(t) !== "Uint8Array")
71
+ return [`typeof ${accessor} === '${resolveScalar(t)}'`, []];
72
+ break;
73
+ case "String":
74
+ return [`typeof ${accessor} === 'string'`, []];
75
+ case "Tuple": {
76
+ // TODO: ['string1', 'string2'] gets resolved as [string, string] instead of literals. Why?
77
+ const imports = [];
78
+ return [
79
+ t.values
80
+ .map((v, i) => {
81
+ const guard = getTypeguard(v, `${accessor}[${i}]`, nestingLevel, knownGuards);
82
+ imports.push(...guard[1]);
83
+ return `(${guard[0]})`;
84
+ })
85
+ .join(" && "),
86
+ imports,
87
+ ];
88
+ }
89
+ case "Union": {
90
+ const imports = [];
91
+ return [
92
+ Array.from(t.variants)
93
+ .map((v) => {
94
+ const guard = getTypeguard(v[1].type, `${accessor}`, nestingLevel, knownGuards);
95
+ imports.push(...guard[1]);
96
+ return `(${guard[0]})`;
97
+ })
98
+ .join(" || "),
99
+ imports,
100
+ ];
101
+ }
102
+ default:
103
+ console.warn("Could not resolve type:", t.kind);
104
+ }
105
+ return ["true", []]; // fallback to not break everything in case of errors
106
+ };
107
+ //# sourceMappingURL=emit_types_typeguards.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"emit_types_typeguards.js","sourceRoot":"","sources":["../../src/emit_types_typeguards.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,7 @@
1
1
  import { EmitContext } from "@typespec/compiler";
2
+ declare global {
3
+ interface String {
4
+ addLine(str: string, tabs?: number, continued?: boolean): string;
5
+ }
6
+ }
2
7
  export declare function $onEmit(context: EmitContext): Promise<void>;
@@ -2,29 +2,41 @@ import { emitFile, navigateProgram, resolvePath, } from "@typespec/compiler";
2
2
  import { getServers } from "@typespec/http";
3
3
  import emitRoutes from "./emit_routes.js";
4
4
  import emitTypes from "./emit_types.js";
5
+ String.prototype.addLine = function (str, tabs, continued) {
6
+ return `${this}${" ".repeat(tabs ?? 0)}${str}${continued ? "" : "\n"}`;
7
+ };
5
8
  export async function $onEmit(context) {
6
9
  if (!context.program.compilerOptions.noEmit) {
7
10
  const options = {
8
11
  "root-namespace": context.options["root-namespace"],
9
12
  "out-dir": context.options["out-dir"] ?? context.emitterOutputDir,
10
13
  "enable-types": context.options["enable-types"] ?? true,
14
+ "enable-typeguards": (context.options["enable-types"] ?? true) &&
15
+ (context.options["enable-typeguards"] ?? false),
11
16
  "enable-routes": context.options["enable-routes"] ?? false,
17
+ "typeguards-in-routes": (context.options["enable-types"] ?? true) &&
18
+ (context.options["enable-typeguards"] ?? false) &&
19
+ (context.options["enable-routes"] ?? false) &&
20
+ (context.options["typeguards-in-routes"] ?? false),
12
21
  };
13
22
  console.log(`Writing routes to ${options["out-dir"]}`);
14
23
  let targetNamespaceFound = false;
15
24
  let routesObject = "";
16
- let typeFiles = {};
25
+ let typeFiles = {
26
+ files: {},
27
+ typeguardedNames: [],
28
+ };
17
29
  navigateProgram(context.program, {
18
30
  namespace(n) {
19
31
  if (!targetNamespaceFound &&
20
32
  n.name === context.options["root-namespace"]) {
21
33
  targetNamespaceFound = true;
34
+ if (options["enable-types"] || options["enable-typeguards"])
35
+ typeFiles = emitTypes(context, n, options);
22
36
  if (options["enable-routes"]) {
23
37
  const servers = getServers(context.program, n);
24
- routesObject = emitRoutes(context, n, servers && servers[0] ? servers[0].url : "");
38
+ routesObject = emitRoutes(context, n, servers && servers[0] ? servers[0].url : "", options, typeFiles.typeguardedNames);
25
39
  }
26
- if (options["enable-types"])
27
- typeFiles = emitTypes(context, n);
28
40
  }
29
41
  },
30
42
  });
@@ -40,13 +52,14 @@ export async function $onEmit(context) {
40
52
  });
41
53
  }
42
54
  // type files
43
- if (options["enable-types"]) {
44
- const typeFileArr = Object.entries(typeFiles);
55
+ if (options["enable-types"] || options["enable-typeguards"]) {
56
+ const typeFileArr = Object.entries(typeFiles.files);
45
57
  for (let i = 0; i < typeFileArr.length; i++) {
46
- await emitFile(context.program, {
47
- path: resolvePath(options["out-dir"], `${typeFileArr[i][0]}.ts`),
48
- content: typeFileArr[i][1],
49
- });
58
+ if (typeFileArr[i][1])
59
+ await emitFile(context.program, {
60
+ path: resolvePath(options["out-dir"], `${typeFileArr[i][0]}.ts`),
61
+ content: typeFileArr[i][1],
62
+ });
50
63
  }
51
64
  }
52
65
  }
@@ -1 +1 @@
1
- {"version":3,"file":"emitter.js","sourceRoot":"","sources":["../../src/emitter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"emitter.js","sourceRoot":"","sources":["../../src/emitter.ts"],"names":[],"mappings":"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"}
package/dist/src/lib.d.ts CHANGED
@@ -2,7 +2,9 @@ export interface EmitterOptions {
2
2
  "root-namespace": string;
3
3
  "out-dir": string;
4
4
  "enable-types": boolean;
5
+ "enable-typeguards": boolean;
5
6
  "enable-routes": boolean;
7
+ "typeguards-in-routes": boolean;
6
8
  }
7
9
  export declare const $lib: import("@typespec/compiler").TypeSpecLibrary<{
8
10
  [code: string]: import("@typespec/compiler").DiagnosticMessages;
package/dist/src/lib.js CHANGED
@@ -6,7 +6,9 @@ const EmitterOptionsSchema = {
6
6
  "root-namespace": { type: "string" },
7
7
  "out-dir": { type: "string", format: "absolute-path" },
8
8
  "enable-types": { type: "boolean" },
9
+ "enable-typeguards": { type: "boolean" },
9
10
  "enable-routes": { type: "boolean" },
11
+ "typeguards-in-routes": { type: "boolean" },
10
12
  },
11
13
  required: ["root-namespace"],
12
14
  };
@@ -1 +1 @@
1
- {"version":3,"file":"lib.js","sourceRoot":"","sources":["../../src/lib.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAkB,MAAM,oBAAoB,CAAC;AAS3E,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,eAAe,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;KACrC;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"}
1
+ {"version":3,"file":"lib.js","sourceRoot":"","sources":["../../src/lib.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAkB,MAAM,oBAAoB,CAAC;AAW3E,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,sBAAsB,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;KAC5C;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
@@ -4,7 +4,12 @@ import tsEslint from "typescript-eslint";
4
4
 
5
5
  export default tsEslint.config(
6
6
  {
7
- ignores: ["**/dist/**/*", "**/.temp/**/*"],
7
+ ignores: [
8
+ "**/dist/**/*",
9
+ "**/.temp/**/*",
10
+ "**/*.md",
11
+ "**/node_modules/**/*",
12
+ ],
8
13
  },
9
14
  eslint.configs.recommended,
10
15
  ...tsEslint.configs.recommended,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "typespec-typescript-emitter",
3
- "version": "0.2.0",
3
+ "version": "0.3.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",
@@ -23,25 +23,24 @@
23
23
  },
24
24
  "devDependencies": {
25
25
  "@types/node": "latest",
26
- "@typescript-eslint/eslint-plugin": "^6.0.0",
27
- "@typescript-eslint/parser": "^6.0.0",
28
- "eslint": "^8.45.0",
26
+ "eslint": "^9.15.0",
29
27
  "husky": "^9.1.6",
30
28
  "prettier": "^3.0.3",
31
29
  "rimraf": "^6.0.1",
32
- "typescript": "^5.3.3"
30
+ "typescript": "^5.3.3",
31
+ "typescript-eslint": "^8.15.0"
33
32
  },
34
33
  "peerDependencies": {
35
34
  "@typespec/compiler": "^0.62.0",
36
35
  "@typespec/http": "^0.62.0"
37
36
  },
38
37
  "scripts": {
39
- "build": "npm run format && rimraf dist && tsc",
38
+ "build": "rimraf dist && tsc",
40
39
  "watch": "tsc --watch",
41
40
  "test": "npm run build && node --test",
42
41
  "lint": "eslint src/ test/ --report-unused-disable-directives --max-warnings=0",
43
42
  "lint:fix": "eslint . --report-unused-disable-directives --fix",
44
- "format": "prettier . --write",
43
+ "format": "prettier . --write",
45
44
  "format:check": "prettier --check .",
46
45
  "prepare": "husky",
47
46
  "prepublishOnly": "npm run build"