typespec-typescript-emitter 0.3.2 → 0.3.4

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 CHANGED
@@ -1,3 +1,23 @@
1
+ ## [0.3.4](https://github.com/crowbait/typespec-typescript-emitter/compare/v0.3.3...v0.3.4) (2025-01-03)
2
+
3
+
4
+ ### Bug Fixes
5
+
6
+ * model resolution if spread over multiple files ([bd34d4e](https://github.com/crowbait/typespec-typescript-emitter/commit/bd34d4ee7a7cc83c3c233ffd3ae9086db318be51))
7
+ * model typeguard resolution if spread over mutliple files ([eab6064](https://github.com/crowbait/typespec-typescript-emitter/commit/eab606421c930d5c9a747ffbd0d1a0707608374b))
8
+ * support recursive records ([c0bad3f](https://github.com/crowbait/typespec-typescript-emitter/commit/c0bad3f15f2f0913ef99129ce17c53a17fd0d125)), closes [#3](https://github.com/crowbait/typespec-typescript-emitter/issues/3)
9
+
10
+
11
+
12
+ ## [0.3.3](https://github.com/crowbait/typespec-typescript-emitter/compare/v0.3.2...v0.3.3) (2025-01-02)
13
+
14
+
15
+ ### Bug Fixes
16
+
17
+ * parsing of Record-type models ([b6e1dd9](https://github.com/crowbait/typespec-typescript-emitter/commit/b6e1dd91b94e39ad657d584f49051bc8e9e83608)), closes [#2](https://github.com/crowbait/typespec-typescript-emitter/issues/2)
18
+
19
+
20
+
1
21
  ## [0.3.2](https://github.com/crowbait/typespec-typescript-emitter/compare/v0.3.1...v0.3.2) (2025-01-02)
2
22
 
3
23
 
@@ -34,19 +54,3 @@
34
54
 
35
55
 
36
56
 
37
- # [0.2.0](https://github.com/crowbait/typespec-typescript-emitter/compare/fdafc1c081058e9d683946b010d10ff3bd962cdc...v0.2.0) (2024-11-12)
38
-
39
-
40
- ### Bug Fixes
41
-
42
- * warning log level ([8b74b01](https://github.com/crowbait/typespec-typescript-emitter/commit/8b74b0197ed4b8fa3aad57d0f50cb884af879243))
43
-
44
-
45
- ### Features
46
-
47
- * routes emitter ([fdafc1c](https://github.com/crowbait/typespec-typescript-emitter/commit/fdafc1c081058e9d683946b010d10ff3bd962cdc))
48
- * support optional model properties ([729d9f1](https://github.com/crowbait/typespec-typescript-emitter/commit/729d9f125434ead7a33326014082cd172c79f2ff))
49
- * types emitter ([e31d459](https://github.com/crowbait/typespec-typescript-emitter/commit/e31d459edce08d010e590681e3a2e17d636de64e))
50
-
51
-
52
-
@@ -56,7 +56,7 @@ const emitRoutes = (context, namespace, rootServer, options, knownTypeguards) =>
56
56
  out = out.addLine(`auth: ${typeof auth === "string" ? `'${auth}'` : auth.toString()}${options["typeguards-in-routes"] ? "," : ""}`, nestLevel + 2);
57
57
  // typeguards
58
58
  const typeguardLines = (t) => {
59
- const guard = getTypeguard(t, "arg", 0, knownTypeguards);
59
+ const guard = getTypeguard(t, "arg", 0, n, knownTypeguards);
60
60
  imports.push(...guard[1]);
61
61
  return guard[0].split("\n");
62
62
  };
@@ -1 +1 @@
1
- {"version":3,"file":"emit_routes.js","sourceRoot":"","sources":["../../src/emit_routes.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"emit_routes.js","sourceRoot":"","sources":["../../src/emit_routes.ts"],"names":[],"mappings":"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"}
@@ -19,7 +19,7 @@ const emitTypes = (context, namespace, options) => {
19
19
  });
20
20
  n.unions.forEach((u) => {
21
21
  if (options["enable-types"]) {
22
- const resolved = resolveUnion(context, u, 0, true);
22
+ const resolved = resolveUnion(context, u, 0, n, true);
23
23
  if (resolved) {
24
24
  const doc = getDoc(context.program, u);
25
25
  if (doc)
@@ -30,7 +30,7 @@ const emitTypes = (context, namespace, options) => {
30
30
  });
31
31
  n.models.forEach((m) => {
32
32
  if (options["enable-types"]) {
33
- const resolved = resolveModel(context, m, 0, true);
33
+ const resolved = resolveModel(context, m, 0, n, true);
34
34
  if (resolved) {
35
35
  const doc = getDoc(context.program, m);
36
36
  if (doc)
@@ -41,7 +41,7 @@ const emitTypes = (context, namespace, options) => {
41
41
  if (options["enable-typeguards"]) {
42
42
  file = file.addLine(`export function is${m.name}(arg: any): arg is ${m.name} {`);
43
43
  file = file.addLine("return (", 1);
44
- getTypeguardModel(m, "arg")[0]
44
+ getTypeguardModel(m, "arg", undefined, n)[0]
45
45
  .split("\n")
46
46
  .forEach((line) => {
47
47
  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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"}
@@ -1,8 +1,9 @@
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;
1
+ import { ArrayModelType, EmitContext, Enum, Model, Namespace, RecordModelType, Scalar, Tuple, Type, Union } from "@typespec/compiler";
2
+ export declare const resolveType: (context: EmitContext, t: Type, nestlevel: number, currentNamespace: Namespace) => string;
3
+ export declare const resolveArray: (context: EmitContext, a: ArrayModelType, nestlevel: number, currentNamespace: Namespace) => string;
4
+ export declare const resolveRecord: (context: EmitContext, a: RecordModelType, nestlevel: number, currentNamespace: Namespace) => string;
4
5
  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;
6
+ export declare const resolveTuple: (context: EmitContext, t: Tuple, nestlevel: number, currentNamespace: Namespace) => string;
7
+ export declare const resolveUnion: (context: EmitContext, u: Union, nestlevel: number, currentNamespace: Namespace, isNamespaceRoot?: boolean) => string;
7
8
  export declare const resolveScalar: (s: Scalar) => string;
8
- export declare const resolveModel: (context: EmitContext, m: Model, nestlevel?: number, isNamespaceRoot?: boolean) => string;
9
+ export declare const resolveModel: (context: EmitContext, m: Model, nestlevel: number | undefined, currentNamespace: Namespace, isNamespaceRoot?: boolean) => string;
@@ -1,13 +1,16 @@
1
1
  import { getDoc, } from "@typespec/compiler";
2
- export const resolveType = (context, t, nestlevel) => {
2
+ export const resolveType = (context, t, nestlevel, currentNamespace) => {
3
3
  let typeStr = "unknown";
4
4
  switch (t.kind) {
5
5
  case "Model":
6
6
  if (t.name === "Array") {
7
- typeStr = resolveArray(context, t, nestlevel);
7
+ typeStr = resolveArray(context, t, nestlevel, currentNamespace);
8
+ }
9
+ else if (t.name === "Record") {
10
+ typeStr = resolveRecord(context, t, nestlevel, currentNamespace);
8
11
  }
9
12
  else
10
- typeStr = resolveModel(context, t, nestlevel + 1);
13
+ typeStr = resolveModel(context, t, nestlevel + 1, currentNamespace);
11
14
  break;
12
15
  case "Boolean":
13
16
  typeStr = "boolean";
@@ -28,21 +31,25 @@ export const resolveType = (context, t, nestlevel) => {
28
31
  typeStr = `'${t.value}'`;
29
32
  break;
30
33
  case "Tuple":
31
- typeStr = resolveTuple(context, t, nestlevel);
34
+ typeStr = resolveTuple(context, t, nestlevel, currentNamespace);
32
35
  break;
33
36
  case "Union":
34
- typeStr = resolveUnion(context, t, nestlevel);
37
+ typeStr = resolveUnion(context, t, nestlevel, currentNamespace);
35
38
  break;
36
39
  default:
37
40
  console.warn("Could not resolve type:", t.kind);
38
41
  }
39
42
  return typeStr;
40
43
  };
41
- export const resolveArray = (context, a, nestlevel) => {
44
+ export const resolveArray = (context, a, nestlevel, currentNamespace) => {
42
45
  if (a.name !== "Array")
43
46
  throw new Error(`Trying to parse model ${a.name} as Array`);
44
- const ret = `${resolveType(context, a.indexer.value, nestlevel)}[]`;
45
- return ret;
47
+ return `${resolveType(context, a.indexer.value, nestlevel, currentNamespace)}[]`;
48
+ };
49
+ export const resolveRecord = (context, a, nestlevel, currentNamespace) => {
50
+ if (a.name !== "Record")
51
+ throw new Error(`Trying to parse model ${a.name} as Record`);
52
+ return `{[k: string]: ${resolveType(context, a.indexer.value, nestlevel, currentNamespace)}}`;
46
53
  };
47
54
  export const resolveEnum = (e, nestlevel, isNamespaceRoot) => {
48
55
  if (e.name && !isNamespaceRoot && e.namespace?.enums.has(e.name))
@@ -60,14 +67,14 @@ export const resolveEnum = (e, nestlevel, isNamespaceRoot) => {
60
67
  ret = ret.addLine("}", nestlevel, true);
61
68
  return ret;
62
69
  };
63
- export const resolveTuple = (context, t, nestlevel) => {
64
- return `[${t.values.map((v) => resolveType(context, v, nestlevel)).join(", ")}]`;
70
+ export const resolveTuple = (context, t, nestlevel, currentNamespace) => {
71
+ return `[${t.values.map((v) => resolveType(context, v, nestlevel, currentNamespace)).join(", ")}]`;
65
72
  };
66
- export const resolveUnion = (context, u, nestlevel, isNamespaceRoot) => {
73
+ export const resolveUnion = (context, u, nestlevel, currentNamespace, isNamespaceRoot) => {
67
74
  if (u.name && !isNamespaceRoot && u.namespace?.unions.has(u.name))
68
75
  return u.name;
69
76
  return Array.from(u.variants)
70
- .map((v) => resolveType(context, v[1].type, nestlevel))
77
+ .map((v) => resolveType(context, v[1].type, nestlevel, currentNamespace))
71
78
  .join(" | ");
72
79
  };
73
80
  export const resolveScalar = (s) => {
@@ -101,8 +108,8 @@ export const resolveScalar = (s) => {
101
108
  }
102
109
  return s.baseScalar ? resolveScalar(s.baseScalar) : ret;
103
110
  };
104
- export const resolveModel = (context, m, nestlevel = 0, isNamespaceRoot) => {
105
- if (m.name && !isNamespaceRoot && m.namespace?.models.has(m.name))
111
+ export const resolveModel = (context, m, nestlevel = 0, currentNamespace, isNamespaceRoot) => {
112
+ if (m.name && !isNamespaceRoot && currentNamespace.namespace === m.namespace)
106
113
  return m.name;
107
114
  let ret = "{\n";
108
115
  let i = 1;
@@ -110,7 +117,7 @@ export const resolveModel = (context, m, nestlevel = 0, isNamespaceRoot) => {
110
117
  const doc = getDoc(context.program, p);
111
118
  if (doc)
112
119
  ret = ret.addLine(`/** ${doc} */`, nestlevel + 1);
113
- const typeStr = resolveType(context, p.type, nestlevel);
120
+ const typeStr = resolveType(context, p.type, nestlevel, currentNamespace);
114
121
  if (typeStr.includes("unknown"))
115
122
  console.warn(`Could not resolve property ${p.name} on ${m.name}`);
116
123
  ret = ret.addLine(`${p.name}${p.optional ? "?" : ""}: ${typeStr}${i < m.properties.size ? "," : ""}`, nestlevel + 1);
@@ -1 +1 @@
1
- {"version":3,"file":"emit_types_resolve.js","sourceRoot":"","sources":["../../src/emit_types_resolve.ts"],"names":[],"mappings":"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"}
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
- import { Model, Type } from "@typespec/compiler";
2
- export declare const getTypeguardModel: (m: Model, accessor: string, nestingLevel?: number, knownGuards?: Array<{
1
+ import { Model, Namespace, Type } from "@typespec/compiler";
2
+ export declare const getTypeguardModel: (m: Model, accessor: string, nestingLevel: number | undefined, currentNamespace: Namespace, 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, knownGuards?: Array<{
14
+ export declare const getTypeguard: (t: Type, accessor: string, nestingLevel: number | undefined, currentNamespace: Namespace, 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, knownGuards) => {
2
+ export const getTypeguardModel = (m, accessor, nestingLevel = 1, currentNamespace, 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, knownGuards);
7
+ const guard = getTypeguard(property[1].type, `${accessor}['${property[1].name}']`, nestingLevel + 1, currentNamespace, 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, knownGuards) =>
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, knownGuards) => {
29
+ export const getTypeguard = (t, accessor, nestingLevel = 1, currentNamespace, 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, knownGuards);
33
+ const guard = getTypeguard(t.indexer.value, "v", nestingLevel, currentNamespace, knownGuards);
34
34
  if (guard[0].endsWith("\n"))
35
35
  guard[0] = guard[0].substring(0, guard[0].length - 1);
36
36
  return [
@@ -38,6 +38,15 @@ export const getTypeguard = (t, accessor, nestingLevel = 1, knownGuards) => {
38
38
  guard[1],
39
39
  ];
40
40
  }
41
+ else if (t.name === "Record") {
42
+ const guard = getTypeguard(t.indexer.value, "v", nestingLevel, currentNamespace, 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
+ }
41
50
  else if (knownGuards && knownGuards.some((x) => x.name === t.name)) {
42
51
  return [
43
52
  `is${t.name}(${accessor})`,
@@ -46,11 +55,13 @@ export const getTypeguard = (t, accessor, nestingLevel = 1, knownGuards) => {
46
55
  ],
47
56
  ];
48
57
  }
49
- else if (t.name && !knownGuards && t.namespace?.models.has(t.name)) {
58
+ else if (t.name &&
59
+ !knownGuards &&
60
+ currentNamespace.name === t.namespace.name) {
50
61
  return [`is${t.name}(${accessor})`, []];
51
62
  }
52
63
  else {
53
- const guard = getTypeguardModel(t, accessor, nestingLevel, knownGuards);
64
+ const guard = getTypeguardModel(t, accessor, nestingLevel, currentNamespace, knownGuards);
54
65
  return [
55
66
  `(\n${guard[0]}\n${" ".repeat(Math.max(nestingLevel - 1, 0))})`,
56
67
  guard[1],
@@ -78,7 +89,7 @@ export const getTypeguard = (t, accessor, nestingLevel = 1, knownGuards) => {
78
89
  return [
79
90
  t.values
80
91
  .map((v, i) => {
81
- const guard = getTypeguard(v, `${accessor}[${i}]`, nestingLevel, knownGuards);
92
+ const guard = getTypeguard(v, `${accessor}[${i}]`, nestingLevel, currentNamespace, knownGuards);
82
93
  imports.push(...guard[1]);
83
94
  return `(${guard[0]})`;
84
95
  })
@@ -91,7 +102,7 @@ export const getTypeguard = (t, accessor, nestingLevel = 1, knownGuards) => {
91
102
  return [
92
103
  Array.from(t.variants)
93
104
  .map((v) => {
94
- const guard = getTypeguard(v[1].type, `${accessor}`, nestingLevel, knownGuards);
105
+ const guard = getTypeguard(v[1].type, `${accessor}`, nestingLevel, currentNamespace, knownGuards);
95
106
  imports.push(...guard[1]);
96
107
  return `(${guard[0]})`;
97
108
  })
@@ -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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "typespec-typescript-emitter",
3
- "version": "0.3.2",
3
+ "version": "0.3.4",
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",
@@ -93,7 +93,7 @@ const emitRoutes = (
93
93
 
94
94
  // typeguards
95
95
  const typeguardLines = (t: Type): string[] => {
96
- const guard = getTypeguard(t, "arg", 0, knownTypeguards);
96
+ const guard = getTypeguard(t, "arg", 0, n, knownTypeguards);
97
97
  imports.push(...guard[1]);
98
98
  return guard[0].split("\n");
99
99
  };
package/src/emit_types.ts CHANGED
@@ -33,7 +33,7 @@ const emitTypes = (
33
33
  });
34
34
  n.unions.forEach((u) => {
35
35
  if (options["enable-types"]) {
36
- const resolved = resolveUnion(context, u, 0, true);
36
+ const resolved = resolveUnion(context, u, 0, n, true);
37
37
  if (resolved) {
38
38
  const doc = getDoc(context.program, u);
39
39
  if (doc) file = file.addLine(`/** ${doc} */`);
@@ -43,7 +43,7 @@ const emitTypes = (
43
43
  });
44
44
  n.models.forEach((m) => {
45
45
  if (options["enable-types"]) {
46
- const resolved = resolveModel(context, m, 0, true);
46
+ const resolved = resolveModel(context, m, 0, n, true);
47
47
  if (resolved) {
48
48
  const doc = getDoc(context.program, m);
49
49
  if (doc) file = file.addLine(`/** ${doc} */`);
@@ -55,7 +55,7 @@ const emitTypes = (
55
55
  `export function is${m.name}(arg: any): arg is ${m.name} {`,
56
56
  );
57
57
  file = file.addLine("return (", 1);
58
- getTypeguardModel(m, "arg")[0]
58
+ getTypeguardModel(m, "arg", undefined, n)[0]
59
59
  .split("\n")
60
60
  .forEach((line) => {
61
61
  file = file.addLine(line, 1);
@@ -4,6 +4,8 @@ import {
4
4
  Enum,
5
5
  getDoc,
6
6
  Model,
7
+ Namespace,
8
+ RecordModelType,
7
9
  Scalar,
8
10
  Tuple,
9
11
  Type,
@@ -14,13 +16,27 @@ export const resolveType = (
14
16
  context: EmitContext,
15
17
  t: Type,
16
18
  nestlevel: number,
19
+ currentNamespace: Namespace,
17
20
  ): string => {
18
21
  let typeStr = "unknown";
19
22
  switch (t.kind) {
20
23
  case "Model":
21
24
  if (t.name === "Array") {
22
- typeStr = resolveArray(context, t as ArrayModelType, nestlevel);
23
- } else typeStr = resolveModel(context, t, nestlevel + 1);
25
+ typeStr = resolveArray(
26
+ context,
27
+ t as ArrayModelType,
28
+ nestlevel,
29
+ currentNamespace,
30
+ );
31
+ } else if (t.name === "Record") {
32
+ typeStr = resolveRecord(
33
+ context,
34
+ t as RecordModelType,
35
+ nestlevel,
36
+ currentNamespace,
37
+ );
38
+ } else
39
+ typeStr = resolveModel(context, t, nestlevel + 1, currentNamespace);
24
40
  break;
25
41
  case "Boolean":
26
42
  typeStr = "boolean";
@@ -41,10 +57,10 @@ export const resolveType = (
41
57
  typeStr = `'${t.value}'`;
42
58
  break;
43
59
  case "Tuple":
44
- typeStr = resolveTuple(context, t, nestlevel);
60
+ typeStr = resolveTuple(context, t, nestlevel, currentNamespace);
45
61
  break;
46
62
  case "Union":
47
- typeStr = resolveUnion(context, t, nestlevel);
63
+ typeStr = resolveUnion(context, t, nestlevel, currentNamespace);
48
64
  break;
49
65
  default:
50
66
  console.warn("Could not resolve type:", t.kind);
@@ -56,11 +72,22 @@ export const resolveArray = (
56
72
  context: EmitContext,
57
73
  a: ArrayModelType,
58
74
  nestlevel: number,
75
+ currentNamespace: Namespace,
59
76
  ): string => {
60
77
  if (a.name !== "Array")
61
78
  throw new Error(`Trying to parse model ${a.name} as Array`);
62
- const ret = `${resolveType(context, a.indexer.value, nestlevel)}[]`;
63
- return ret;
79
+ return `${resolveType(context, a.indexer.value, nestlevel, currentNamespace)}[]`;
80
+ };
81
+
82
+ export const resolveRecord = (
83
+ context: EmitContext,
84
+ a: RecordModelType,
85
+ nestlevel: number,
86
+ currentNamespace: Namespace,
87
+ ): string => {
88
+ if (a.name !== "Record")
89
+ throw new Error(`Trying to parse model ${a.name} as Record`);
90
+ return `{[k: string]: ${resolveType(context, a.indexer.value, nestlevel, currentNamespace)}}`;
64
91
  };
65
92
 
66
93
  export const resolveEnum = (
@@ -92,20 +119,22 @@ export const resolveTuple = (
92
119
  context: EmitContext,
93
120
  t: Tuple,
94
121
  nestlevel: number,
122
+ currentNamespace: Namespace,
95
123
  ): string => {
96
- return `[${t.values.map((v) => resolveType(context, v, nestlevel)).join(", ")}]`;
124
+ return `[${t.values.map((v) => resolveType(context, v, nestlevel, currentNamespace)).join(", ")}]`;
97
125
  };
98
126
 
99
127
  export const resolveUnion = (
100
128
  context: EmitContext,
101
129
  u: Union,
102
130
  nestlevel: number,
131
+ currentNamespace: Namespace,
103
132
  isNamespaceRoot?: boolean,
104
133
  ): string => {
105
134
  if (u.name && !isNamespaceRoot && u.namespace?.unions.has(u.name))
106
135
  return u.name;
107
136
  return Array.from(u.variants)
108
- .map((v) => resolveType(context, v[1].type, nestlevel))
137
+ .map((v) => resolveType(context, v[1].type, nestlevel, currentNamespace))
109
138
  .join(" | ");
110
139
  };
111
140
  export const resolveScalar = (s: Scalar): string => {
@@ -144,16 +173,17 @@ export const resolveModel = (
144
173
  context: EmitContext,
145
174
  m: Model,
146
175
  nestlevel: number = 0,
176
+ currentNamespace: Namespace,
147
177
  isNamespaceRoot?: boolean,
148
178
  ): string => {
149
- if (m.name && !isNamespaceRoot && m.namespace?.models.has(m.name))
179
+ if (m.name && !isNamespaceRoot && currentNamespace.namespace === m.namespace)
150
180
  return m.name;
151
181
  let ret = "{\n";
152
182
  let i = 1;
153
183
  m.properties.forEach((p) => {
154
184
  const doc = getDoc(context.program, p);
155
185
  if (doc) ret = ret.addLine(`/** ${doc} */`, nestlevel + 1);
156
- const typeStr = resolveType(context, p.type, nestlevel);
186
+ const typeStr = resolveType(context, p.type, nestlevel, currentNamespace);
157
187
  if (typeStr.includes("unknown"))
158
188
  console.warn(`Could not resolve property ${p.name} on ${m.name}`);
159
189
  ret = ret.addLine(
@@ -1,10 +1,11 @@
1
- import { Model, Type } from "@typespec/compiler";
1
+ import { Model, Namespace, Type } from "@typespec/compiler";
2
2
  import { resolveScalar } from "./emit_types_resolve.js";
3
3
 
4
4
  export const getTypeguardModel = (
5
5
  m: Model,
6
6
  accessor: string,
7
7
  nestingLevel = 1,
8
+ currentNamespace: Namespace,
8
9
  knownGuards?: Array<{ filename: string; name: string }>,
9
10
  ): [string, string[]] => {
10
11
  const imports: string[] = [];
@@ -15,6 +16,7 @@ export const getTypeguardModel = (
15
16
  property[1].type,
16
17
  `${accessor}['${property[1].name}']`,
17
18
  nestingLevel + 1,
19
+ currentNamespace,
18
20
  knownGuards,
19
21
  );
20
22
  imports.push(...guard[1]);
@@ -43,6 +45,7 @@ export const getTypeguard = (
43
45
  t: Type,
44
46
  accessor: string,
45
47
  nestingLevel = 1,
48
+ currentNamespace: Namespace,
46
49
  knownGuards?: Array<{ filename: string; name: string }>,
47
50
  ): [string, string[]] => {
48
51
  switch (t.kind) {
@@ -52,6 +55,7 @@ export const getTypeguard = (
52
55
  t.indexer!.value,
53
56
  "v",
54
57
  nestingLevel,
58
+ currentNamespace,
55
59
  knownGuards,
56
60
  );
57
61
  if (guard[0].endsWith("\n"))
@@ -60,6 +64,20 @@ export const getTypeguard = (
60
64
  `Array.isArray(${accessor}) && ${accessor}.every((v) => ${guard[0]})`,
61
65
  guard[1],
62
66
  ];
67
+ } else if (t.name === "Record") {
68
+ const guard = getTypeguard(
69
+ t.indexer!.value,
70
+ "v",
71
+ nestingLevel,
72
+ currentNamespace,
73
+ knownGuards,
74
+ );
75
+ if (guard[0].endsWith("\n"))
76
+ guard[0] = guard[0].substring(0, guard[0].length - 1);
77
+ return [
78
+ `typeof ${accessor} === 'object' && (Object.entries(${accessor}).length > 0 ? Object.values(${accessor} as Record<string, any>).every((v) => ${guard[0]}) : true)`,
79
+ guard[1],
80
+ ];
63
81
  } else if (knownGuards && knownGuards.some((x) => x.name === t.name)) {
64
82
  return [
65
83
  `is${t.name}(${accessor})`,
@@ -67,10 +85,20 @@ export const getTypeguard = (
67
85
  `import {is${t.name}} from './${knownGuards.find((x) => x.name === t.name)!.filename}';`,
68
86
  ],
69
87
  ];
70
- } else if (t.name && !knownGuards && t.namespace?.models.has(t.name)) {
88
+ } else if (
89
+ t.name &&
90
+ !knownGuards &&
91
+ currentNamespace.name === t.namespace!.name
92
+ ) {
71
93
  return [`is${t.name}(${accessor})`, []];
72
94
  } else {
73
- const guard = getTypeguardModel(t, accessor, nestingLevel, knownGuards);
95
+ const guard = getTypeguardModel(
96
+ t,
97
+ accessor,
98
+ nestingLevel,
99
+ currentNamespace,
100
+ knownGuards,
101
+ );
74
102
  return [
75
103
  `(\n${guard[0]}\n${" ".repeat(Math.max(nestingLevel - 1, 0))})`,
76
104
  guard[1],
@@ -103,6 +131,7 @@ export const getTypeguard = (
103
131
  v,
104
132
  `${accessor}[${i}]`,
105
133
  nestingLevel,
134
+ currentNamespace,
106
135
  knownGuards,
107
136
  );
108
137
  imports.push(...guard[1]);
@@ -121,6 +150,7 @@ export const getTypeguard = (
121
150
  v[1].type,
122
151
  `${accessor}`,
123
152
  nestingLevel,
153
+ currentNamespace,
124
154
  knownGuards,
125
155
  );
126
156
  imports.push(...guard[1]);