typespec-typescript-emitter 0.3.2 → 0.3.3

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,12 @@
1
+ ## [0.3.3](https://github.com/crowbait/typespec-typescript-emitter/compare/v0.3.2...v0.3.3) (2025-01-02)
2
+
3
+
4
+ ### Bug Fixes
5
+
6
+ * 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)
7
+
8
+
9
+
1
10
  ## [0.3.2](https://github.com/crowbait/typespec-typescript-emitter/compare/v0.3.1...v0.3.2) (2025-01-02)
2
11
 
3
12
 
@@ -1,6 +1,7 @@
1
- import { ArrayModelType, EmitContext, Enum, Model, Scalar, Tuple, Type, Union } from "@typespec/compiler";
1
+ import { ArrayModelType, EmitContext, Enum, Model, RecordModelType, Scalar, Tuple, Type, Union } from "@typespec/compiler";
2
2
  export declare const resolveType: (context: EmitContext, t: Type, nestlevel: number) => string;
3
3
  export declare const resolveArray: (context: EmitContext, a: ArrayModelType, nestlevel: number) => string;
4
+ export declare const resolveRecord: (context: EmitContext, a: RecordModelType, nestlevel: number) => string;
4
5
  export declare const resolveEnum: (e: Enum, nestlevel: number, isNamespaceRoot?: boolean) => string;
5
6
  export declare const resolveTuple: (context: EmitContext, t: Tuple, nestlevel: number) => string;
6
7
  export declare const resolveUnion: (context: EmitContext, u: Union, nestlevel: number, isNamespaceRoot?: boolean) => string;
@@ -6,6 +6,9 @@ export const resolveType = (context, t, nestlevel) => {
6
6
  if (t.name === "Array") {
7
7
  typeStr = resolveArray(context, t, nestlevel);
8
8
  }
9
+ else if (t.name === "Record") {
10
+ typeStr = resolveRecord(context, t, nestlevel);
11
+ }
9
12
  else
10
13
  typeStr = resolveModel(context, t, nestlevel + 1);
11
14
  break;
@@ -41,8 +44,12 @@ export const resolveType = (context, t, nestlevel) => {
41
44
  export const resolveArray = (context, a, nestlevel) => {
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)}[]`;
48
+ };
49
+ export const resolveRecord = (context, a, nestlevel) => {
50
+ if (a.name !== "Record")
51
+ throw new Error(`Trying to parse model ${a.name} as Record`);
52
+ return `Record<string, ${resolveType(context, a.indexer.value, nestlevel)}>`;
46
53
  };
47
54
  export const resolveEnum = (e, nestlevel, isNamespaceRoot) => {
48
55
  if (e.name && !isNamespaceRoot && e.namespace?.enums.has(e.name))
@@ -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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"}
@@ -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, 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})`,
@@ -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.3",
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",
@@ -4,6 +4,7 @@ import {
4
4
  Enum,
5
5
  getDoc,
6
6
  Model,
7
+ RecordModelType,
7
8
  Scalar,
8
9
  Tuple,
9
10
  Type,
@@ -20,6 +21,8 @@ export const resolveType = (
20
21
  case "Model":
21
22
  if (t.name === "Array") {
22
23
  typeStr = resolveArray(context, t as ArrayModelType, nestlevel);
24
+ } else if (t.name === "Record") {
25
+ typeStr = resolveRecord(context, t as RecordModelType, nestlevel);
23
26
  } else typeStr = resolveModel(context, t, nestlevel + 1);
24
27
  break;
25
28
  case "Boolean":
@@ -59,8 +62,17 @@ export const resolveArray = (
59
62
  ): string => {
60
63
  if (a.name !== "Array")
61
64
  throw new Error(`Trying to parse model ${a.name} as Array`);
62
- const ret = `${resolveType(context, a.indexer.value, nestlevel)}[]`;
63
- return ret;
65
+ return `${resolveType(context, a.indexer.value, nestlevel)}[]`;
66
+ };
67
+
68
+ export const resolveRecord = (
69
+ context: EmitContext,
70
+ a: RecordModelType,
71
+ nestlevel: number,
72
+ ): string => {
73
+ if (a.name !== "Record")
74
+ throw new Error(`Trying to parse model ${a.name} as Record`);
75
+ return `Record<string, ${resolveType(context, a.indexer.value, nestlevel)}>`;
64
76
  };
65
77
 
66
78
  export const resolveEnum = (
@@ -60,6 +60,19 @@ export const getTypeguard = (
60
60
  `Array.isArray(${accessor}) && ${accessor}.every((v) => ${guard[0]})`,
61
61
  guard[1],
62
62
  ];
63
+ } else if (t.name === "Record") {
64
+ const guard = getTypeguard(
65
+ t.indexer!.value,
66
+ "v",
67
+ nestingLevel,
68
+ knownGuards,
69
+ );
70
+ if (guard[0].endsWith("\n"))
71
+ guard[0] = guard[0].substring(0, guard[0].length - 1);
72
+ return [
73
+ `typeof ${accessor} === 'object' && (Object.entries(${accessor}).length > 0 ? Object.values(${accessor} as Record<string, any>).every((v) => ${guard[0]}) : true)`,
74
+ guard[1],
75
+ ];
63
76
  } else if (knownGuards && knownGuards.some((x) => x.name === t.name)) {
64
77
  return [
65
78
  `is${t.name}(${accessor})`,