@typespec-dev/emitter-typebox 0.2.0 → 0.4.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.
Files changed (107) hide show
  1. package/README.md +70 -0
  2. package/dist/src/components/TypeBoxSchema.d.ts.map +1 -1
  3. package/dist/src/components/TypeBoxSchema.js +10 -5
  4. package/dist/src/components/TypeBoxSchema.js.map +1 -1
  5. package/dist/src/components/TypeBoxSchema.jsx +10 -5
  6. package/dist/src/components/TypeBoxSchema.jsx.map +1 -1
  7. package/dist/src/typeboxBaseSchema.d.ts +3 -2
  8. package/dist/src/typeboxBaseSchema.d.ts.map +1 -1
  9. package/dist/src/typeboxBaseSchema.js +207 -74
  10. package/dist/src/typeboxBaseSchema.js.map +1 -1
  11. package/dist/src/typeboxBaseSchema.jsx +148 -52
  12. package/dist/src/typeboxBaseSchema.jsx.map +1 -1
  13. package/dist/src/typeboxConstraints.d.ts +10 -0
  14. package/dist/src/typeboxConstraints.d.ts.map +1 -0
  15. package/dist/src/typeboxConstraints.js +308 -0
  16. package/dist/src/typeboxConstraints.js.map +1 -0
  17. package/dist/src/typeboxConstraints.jsx +246 -0
  18. package/dist/src/typeboxConstraints.jsx.map +1 -0
  19. package/dist/test/arrays.test.js +1 -1
  20. package/dist/test/arrays.test.js.map +1 -1
  21. package/dist/test/arrays.test.jsx +1 -1
  22. package/dist/test/arrays.test.jsx.map +1 -1
  23. package/dist/test/constraints.test.d.ts +2 -0
  24. package/dist/test/constraints.test.d.ts.map +1 -0
  25. package/dist/test/constraints.test.js +414 -0
  26. package/dist/test/constraints.test.js.map +1 -0
  27. package/dist/test/constraints.test.jsx +279 -0
  28. package/dist/test/constraints.test.jsx.map +1 -0
  29. package/dist/test/dictionaries.test.js +15 -1
  30. package/dist/test/dictionaries.test.js.map +1 -1
  31. package/dist/test/dictionaries.test.jsx +11 -1
  32. package/dist/test/dictionaries.test.jsx.map +1 -1
  33. package/dist/test/discriminated-unions.test.d.ts +2 -0
  34. package/dist/test/discriminated-unions.test.d.ts.map +1 -0
  35. package/dist/test/discriminated-unions.test.js +156 -0
  36. package/dist/test/discriminated-unions.test.js.map +1 -0
  37. package/dist/test/discriminated-unions.test.jsx +105 -0
  38. package/dist/test/discriminated-unions.test.jsx.map +1 -0
  39. package/dist/test/emitter/custom-scalars.test.d.ts +2 -0
  40. package/dist/test/emitter/custom-scalars.test.d.ts.map +1 -0
  41. package/dist/test/emitter/custom-scalars.test.js +42 -0
  42. package/dist/test/emitter/custom-scalars.test.js.map +1 -0
  43. package/dist/test/emitter/custom-scalars.test.jsx +38 -0
  44. package/dist/test/emitter/custom-scalars.test.jsx.map +1 -0
  45. package/dist/test/emitter/discriminated-unions.test.d.ts +2 -0
  46. package/dist/test/emitter/discriminated-unions.test.d.ts.map +1 -0
  47. package/dist/test/emitter/discriminated-unions.test.js +52 -0
  48. package/dist/test/emitter/discriminated-unions.test.js.map +1 -0
  49. package/dist/test/emitter/discriminated-unions.test.jsx +48 -0
  50. package/dist/test/emitter/discriminated-unions.test.jsx.map +1 -0
  51. package/dist/test/emitter/inheritance.test.d.ts +2 -0
  52. package/dist/test/emitter/inheritance.test.d.ts.map +1 -0
  53. package/dist/test/emitter/inheritance.test.js +56 -0
  54. package/dist/test/emitter/inheritance.test.js.map +1 -0
  55. package/dist/test/emitter/inheritance.test.jsx +50 -0
  56. package/dist/test/emitter/inheritance.test.jsx.map +1 -0
  57. package/dist/test/emitter/recursive.test.d.ts +2 -0
  58. package/dist/test/emitter/recursive.test.d.ts.map +1 -0
  59. package/dist/test/emitter/recursive.test.js +36 -0
  60. package/dist/test/emitter/recursive.test.js.map +1 -0
  61. package/dist/test/emitter/recursive.test.jsx +32 -0
  62. package/dist/test/emitter/recursive.test.jsx.map +1 -0
  63. package/dist/test/emitter/tuples.test.d.ts +2 -0
  64. package/dist/test/emitter/tuples.test.d.ts.map +1 -0
  65. package/dist/test/emitter/tuples.test.js +22 -0
  66. package/dist/test/emitter/tuples.test.js.map +1 -0
  67. package/dist/test/emitter/tuples.test.jsx +20 -0
  68. package/dist/test/emitter/tuples.test.jsx.map +1 -0
  69. package/dist/test/inheritance.test.d.ts +2 -0
  70. package/dist/test/inheritance.test.d.ts.map +1 -0
  71. package/dist/test/inheritance.test.js +162 -0
  72. package/dist/test/inheritance.test.js.map +1 -0
  73. package/dist/test/inheritance.test.jsx +92 -0
  74. package/dist/test/inheritance.test.jsx.map +1 -0
  75. package/dist/test/models.test.js +37 -2
  76. package/dist/test/models.test.js.map +1 -1
  77. package/dist/test/models.test.jsx +29 -2
  78. package/dist/test/models.test.jsx.map +1 -1
  79. package/dist/test/nullable.test.js +1 -1
  80. package/dist/test/nullable.test.js.map +1 -1
  81. package/dist/test/nullable.test.jsx +1 -1
  82. package/dist/test/nullable.test.jsx.map +1 -1
  83. package/dist/test/optionality.test.js +2 -2
  84. package/dist/test/optionality.test.js.map +1 -1
  85. package/dist/test/optionality.test.jsx +2 -2
  86. package/dist/test/optionality.test.jsx.map +1 -1
  87. package/dist/test/recursive.test.d.ts +2 -0
  88. package/dist/test/recursive.test.d.ts.map +1 -0
  89. package/dist/test/recursive.test.js +137 -0
  90. package/dist/test/recursive.test.js.map +1 -0
  91. package/dist/test/recursive.test.jsx +75 -0
  92. package/dist/test/recursive.test.jsx.map +1 -0
  93. package/dist/test/scalars.test.js +13 -13
  94. package/dist/test/scalars.test.js.map +1 -1
  95. package/dist/test/scalars.test.jsx +13 -13
  96. package/dist/test/scalars.test.jsx.map +1 -1
  97. package/dist/test/tuples.test.d.ts +2 -0
  98. package/dist/test/tuples.test.d.ts.map +1 -0
  99. package/dist/test/tuples.test.js +67 -0
  100. package/dist/test/tuples.test.js.map +1 -0
  101. package/dist/test/tuples.test.jsx +42 -0
  102. package/dist/test/tuples.test.jsx.map +1 -0
  103. package/dist/test/unions.test.js +1 -1
  104. package/dist/test/unions.test.js.map +1 -1
  105. package/dist/test/unions.test.jsx +1 -1
  106. package/dist/test/unions.test.jsx.map +1 -1
  107. package/package.json +7 -7
package/README.md ADDED
@@ -0,0 +1,70 @@
1
+ # @typespec-dev/emitter-typebox
2
+
3
+ A TypeSpec emitter that generates TypeBox schemas from TypeSpec type definitions.
4
+
5
+ ## Install
6
+
7
+ ```sh
8
+ pnpm add @typespec-dev/emitter-typebox
9
+ ```
10
+
11
+ ### Peer dependencies
12
+
13
+ - `@typespec/compiler@1.8.0`
14
+ - `@typespec/emitter-framework@0.15.0`
15
+
16
+ ## Configuration
17
+
18
+ Add the emitter to your `tspconfig.yaml`:
19
+
20
+ ```yaml
21
+ emit:
22
+ - "@typespec-dev/emitter-typebox"
23
+ ```
24
+
25
+ ## Example
26
+
27
+ Given a TypeSpec definition:
28
+
29
+ ```typespec
30
+ model User {
31
+ name: string;
32
+ age?: int32;
33
+ tags: string[];
34
+ }
35
+ ```
36
+
37
+ The emitter produces:
38
+
39
+ ```typescript
40
+ import { type Static, Type } from "typebox";
41
+
42
+ export const user = Type.Object({
43
+ name: Type.String(),
44
+ age: Type.Optional(Type.Integer()),
45
+ tags: Type.Array(Type.String()),
46
+ });
47
+ export type User = Static<typeof user>;
48
+ ```
49
+
50
+ ## Supported Types
51
+
52
+ - Scalars (string, boolean, integers, floats, decimals, bigint, url, bytes, dates, durations)
53
+ - Literal types (string, number, boolean)
54
+ - Intrinsic types (null, never, unknown, void)
55
+ - Models (`Type.Object` with optional properties, nested references)
56
+ - Enums (union of literals)
57
+ - Unions, Arrays, Records, Tuples
58
+ - Nullable, Optional wrappers
59
+ - Constraints (minLength, maxLength, minimum, maximum, pattern, format, minItems, maxItems)
60
+ - Descriptions (`@doc` annotation)
61
+ - Default values (`@default` annotation)
62
+
63
+ ## Development
64
+
65
+ ```sh
66
+ pnpm build # build the emitter
67
+ pnpm test # run tests
68
+ pnpm lint # lint
69
+ pnpm type # type-check
70
+ ```
@@ -1 +1 @@
1
- {"version":3,"file":"TypeBoxSchema.d.ts","sourceRoot":"","sources":["../../../src/components/TypeBoxSchema.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAU,MAAM,gBAAgB,CAAC;AAElD,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAK1C,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;IACpB,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,kBAAkB,GAAG,QAAQ,CAkBjE"}
1
+ {"version":3,"file":"TypeBoxSchema.d.ts","sourceRoot":"","sources":["../../../src/components/TypeBoxSchema.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAsB,MAAM,gBAAgB,CAAC;AAE9D,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAK1C,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;IACpB,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,kBAAkB,GAAG,QAAQ,CAuBjE"}
@@ -1,18 +1,23 @@
1
1
  import { createComponent as _$createComponent } from "@alloy-js/core/jsx-runtime";
2
- import { refkey } from '@alloy-js/core';
2
+ import { refkey, useContext } from '@alloy-js/core';
3
3
  import { MemberExpression } from '@alloy-js/typescript';
4
4
  import { useTsp } from '@typespec/emitter-framework';
5
- import { typeboxBaseSchemaParts } from "../typeboxBaseSchema.js";
5
+ import { RecursiveModelContext, typeboxBaseSchemaParts } from "../typeboxBaseSchema.js";
6
6
  import { refkeySym, shouldReference } from "../utils.js";
7
7
  export function TypeBoxSchema(props) {
8
8
  const {
9
9
  $
10
10
  } = useTsp();
11
+ const recursiveModel = useContext(RecursiveModelContext);
12
+ const member = $.modelProperty.is(props.type) ? props.type : undefined;
13
+ const type = member ? member.type : props.type;
11
14
  if (!props.nested) {
12
- return typeboxBaseSchemaParts(props.type);
15
+ return typeboxBaseSchemaParts(type, member);
13
16
  }
14
- const type = $.modelProperty.is(props.type) ? props.type.type : props.type;
15
17
  if (shouldReference($.program, type)) {
18
+ if (recursiveModel && type === recursiveModel) {
19
+ return 'This';
20
+ }
16
21
  return _$createComponent(MemberExpression, {
17
22
  get children() {
18
23
  return _$createComponent(MemberExpression.Part, {
@@ -23,6 +28,6 @@ export function TypeBoxSchema(props) {
23
28
  }
24
29
  });
25
30
  }
26
- return typeboxBaseSchemaParts(type);
31
+ return typeboxBaseSchemaParts(type, member);
27
32
  }
28
33
  //# sourceMappingURL=TypeBoxSchema.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["refkey","MemberExpression","useTsp","typeboxBaseSchemaParts","refkeySym","shouldReference","TypeBoxSchema","props","$","nested","type","modelProperty","is","program","_$createComponent","children","Part"],"sources":["../../../src/components/TypeBoxSchema.tsx"],"sourcesContent":[null],"mappings":";AAAA,SAAmBA,MAAM,QAAQ,gBAAgB;AACjD,SAASC,gBAAgB,QAAQ,sBAAsB;AAEvD,SAASC,MAAM,QAAQ,6BAA6B;AACpD,SAASC,sBAAsB;AAC/B,SAASC,SAAS,EAAEC,eAAe;AAOnC,OAAO,SAASC,aAAaA,CAACC,KAAyB,EAAY;EACjE,MAAM;IAAEC;EAAE,CAAC,GAAGN,MAAM,CAAC,CAAC;EAEtB,IAAI,CAACK,KAAK,CAACE,MAAM,EAAE;IACjB,OAAON,sBAAsB,CAACI,KAAK,CAACG,IAAI,CAAC;EAC3C;EAEA,MAAMA,IAAI,GAAGF,CAAC,CAACG,aAAa,CAACC,EAAE,CAACL,KAAK,CAACG,IAAI,CAAC,GAAGH,KAAK,CAACG,IAAI,CAACA,IAAI,GAAGH,KAAK,CAACG,IAAI;EAE1E,IAAIL,eAAe,CAACG,CAAC,CAACK,OAAO,EAAEH,IAAI,CAAC,EAAE;IACpC,OAAAI,iBAAA,CACGb,gBAAgB;MAAA,IAAAc,SAAA;QAAA,OAAAD,iBAAA,CACdb,gBAAgB,CAACe,IAAI;UAAA,IAAChB,MAAMA,CAAA;YAAA,OAAEA,MAAM,CAACU,IAAI,EAAEN,SAAS,CAAC;UAAA;QAAA;MAAA;IAAA;EAG5D;EAEA,OAAOD,sBAAsB,CAACO,IAAI,CAAC;AACrC","ignoreList":[]}
1
+ {"version":3,"names":["refkey","useContext","MemberExpression","useTsp","RecursiveModelContext","typeboxBaseSchemaParts","refkeySym","shouldReference","TypeBoxSchema","props","$","recursiveModel","member","modelProperty","is","type","undefined","nested","program","_$createComponent","children","Part"],"sources":["../../../src/components/TypeBoxSchema.tsx"],"sourcesContent":[null],"mappings":";AAAA,SAAmBA,MAAM,EAAEC,UAAU,QAAQ,gBAAgB;AAC7D,SAASC,gBAAgB,QAAQ,sBAAsB;AAEvD,SAASC,MAAM,QAAQ,6BAA6B;AACpD,SAASC,qBAAqB,EAAEC,sBAAsB;AACtD,SAASC,SAAS,EAAEC,eAAe;AAOnC,OAAO,SAASC,aAAaA,CAACC,KAAyB,EAAY;EACjE,MAAM;IAAEC;EAAE,CAAC,GAAGP,MAAM,CAAC,CAAC;EACtB,MAAMQ,cAAc,GAAGV,UAAU,CAACG,qBAAqB,CAAC;EAExD,MAAMQ,MAAM,GAAGF,CAAC,CAACG,aAAa,CAACC,EAAE,CAACL,KAAK,CAACM,IAAI,CAAC,GAAGN,KAAK,CAACM,IAAI,GAAGC,SAAS;EACtE,MAAMD,IAAI,GAAGH,MAAM,GAAGA,MAAM,CAACG,IAAI,GAAGN,KAAK,CAACM,IAAI;EAE9C,IAAI,CAACN,KAAK,CAACQ,MAAM,EAAE;IACjB,OAAOZ,sBAAsB,CAACU,IAAI,EAAEH,MAAM,CAAC;EAC7C;EAEA,IAAIL,eAAe,CAACG,CAAC,CAACQ,OAAO,EAAEH,IAAI,CAAC,EAAE;IACpC,IAAIJ,cAAc,IAAII,IAAI,KAAKJ,cAAc,EAAE;MAC7C,OAAO,MAAM;IACf;IACA,OAAAQ,iBAAA,CACGjB,gBAAgB;MAAA,IAAAkB,SAAA;QAAA,OAAAD,iBAAA,CACdjB,gBAAgB,CAACmB,IAAI;UAAA,IAACrB,MAAMA,CAAA;YAAA,OAAEA,MAAM,CAACe,IAAI,EAAET,SAAS,CAAC;UAAA;QAAA;MAAA;IAAA;EAG5D;EAEA,OAAOD,sBAAsB,CAACU,IAAI,EAAEH,MAAM,CAAC;AAC7C","ignoreList":[]}
@@ -1,19 +1,24 @@
1
- import { refkey } from '@alloy-js/core';
1
+ import { refkey, useContext } from '@alloy-js/core';
2
2
  import { MemberExpression } from '@alloy-js/typescript';
3
3
  import { useTsp } from '@typespec/emitter-framework';
4
- import { typeboxBaseSchemaParts } from '../typeboxBaseSchema.jsx';
4
+ import { RecursiveModelContext, typeboxBaseSchemaParts } from '../typeboxBaseSchema.jsx';
5
5
  import { refkeySym, shouldReference } from '../utils.jsx';
6
6
  export function TypeBoxSchema(props) {
7
7
  const { $ } = useTsp();
8
+ const recursiveModel = useContext(RecursiveModelContext);
9
+ const member = $.modelProperty.is(props.type) ? props.type : undefined;
10
+ const type = member ? member.type : props.type;
8
11
  if (!props.nested) {
9
- return typeboxBaseSchemaParts(props.type);
12
+ return typeboxBaseSchemaParts(type, member);
10
13
  }
11
- const type = $.modelProperty.is(props.type) ? props.type.type : props.type;
12
14
  if (shouldReference($.program, type)) {
15
+ if (recursiveModel && type === recursiveModel) {
16
+ return 'This';
17
+ }
13
18
  return (<MemberExpression>
14
19
  <MemberExpression.Part refkey={refkey(type, refkeySym)}/>
15
20
  </MemberExpression>);
16
21
  }
17
- return typeboxBaseSchemaParts(type);
22
+ return typeboxBaseSchemaParts(type, member);
18
23
  }
19
24
  //# sourceMappingURL=TypeBoxSchema.jsx.map
@@ -1 +1 @@
1
- {"version":3,"file":"TypeBoxSchema.jsx","sourceRoot":"","sources":["../../../src/components/TypeBoxSchema.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAY,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAExD,OAAO,EAAE,MAAM,EAAE,MAAM,6BAA6B,CAAC;AACrD,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAO1D,MAAM,UAAU,aAAa,CAAC,KAAyB;IACrD,MAAM,EAAE,CAAC,EAAE,GAAG,MAAM,EAAE,CAAC;IAEvB,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;QAClB,OAAO,sBAAsB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC5C,CAAC;IAED,MAAM,IAAI,GAAG,CAAC,CAAC,aAAa,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC;IAE3E,IAAI,eAAe,CAAC,CAAC,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC;QACrC,OAAO,CACL,CAAC,gBAAgB,CACf;QAAA,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,EACzD;MAAA,EAAE,gBAAgB,CAAC,CACpB,CAAC;IACJ,CAAC;IAED,OAAO,sBAAsB,CAAC,IAAI,CAAC,CAAC;AACtC,CAAC"}
1
+ {"version":3,"file":"TypeBoxSchema.jsx","sourceRoot":"","sources":["../../../src/components/TypeBoxSchema.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAY,MAAM,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAExD,OAAO,EAAE,MAAM,EAAE,MAAM,6BAA6B,CAAC;AACrD,OAAO,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AACzF,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAO1D,MAAM,UAAU,aAAa,CAAC,KAAyB;IACrD,MAAM,EAAE,CAAC,EAAE,GAAG,MAAM,EAAE,CAAC;IACvB,MAAM,cAAc,GAAG,UAAU,CAAC,qBAAqB,CAAC,CAAC;IAEzD,MAAM,MAAM,GAAG,CAAC,CAAC,aAAa,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;IACvE,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC;IAE/C,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;QAClB,OAAO,sBAAsB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAC9C,CAAC;IAED,IAAI,eAAe,CAAC,CAAC,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC;QACrC,IAAI,cAAc,IAAI,IAAI,KAAK,cAAc,EAAE,CAAC;YAC9C,OAAO,MAAM,CAAC;QAChB,CAAC;QACD,OAAO,CACL,CAAC,gBAAgB,CACf;QAAA,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,EACzD;MAAA,EAAE,gBAAgB,CAAC,CACpB,CAAC;IACJ,CAAC;IAED,OAAO,sBAAsB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AAC9C,CAAC"}
@@ -1,4 +1,5 @@
1
1
  import { Children } from '@alloy-js/core/jsx-runtime';
2
- import { Type } from '@typespec/compiler';
3
- export declare function typeboxBaseSchemaParts(type: Type): Children;
2
+ import { Model, ModelProperty, Type } from '@typespec/compiler';
3
+ export declare const RecursiveModelContext: import("@alloy-js/core").ComponentContext<Model>;
4
+ export declare function typeboxBaseSchemaParts(type: Type, member?: ModelProperty): Children;
4
5
  //# sourceMappingURL=typeboxBaseSchema.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"typeboxBaseSchema.d.ts","sourceRoot":"","sources":["../../src/typeboxBaseSchema.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AAOtD,OAAO,EAA2C,IAAI,EAAS,MAAM,oBAAoB,CAAC;AAM1F,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,IAAI,GAAG,QAAQ,CA6B3D"}
1
+ {"version":3,"file":"typeboxBaseSchema.d.ts","sourceRoot":"","sources":["../../src/typeboxBaseSchema.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AAOtD,OAAO,EAKL,KAAK,EACL,aAAa,EAGb,IAAI,EAEL,MAAM,oBAAoB,CAAC;AAO5B,eAAO,MAAM,qBAAqB,kDAAyB,CAAC;AAqC5D,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,EAAE,aAAa,GAAG,QAAQ,CA6BnF"}
@@ -1,10 +1,40 @@
1
1
  import { createComponent as _$createComponent, memo as _$memo } from "@alloy-js/core/jsx-runtime";
2
- import { For, refkey } from '@alloy-js/core';
2
+ import { createContext, For, refkey } from '@alloy-js/core';
3
3
  import { ArrayExpression, MemberExpression, ObjectExpression, ObjectProperty } from '@alloy-js/typescript';
4
+ import { getDiscriminator, getDiscriminatedUnionFromInheritance } from '@typespec/compiler';
4
5
  import { useTsp } from '@typespec/emitter-framework';
5
6
  import { TypeBoxSchema } from "./components/TypeBoxSchema.js";
7
+ import { buildTypeboxOpts } from "./typeboxConstraints.js";
6
8
  import { isRecord, refkeySym, shouldReference, typeboxCall } from "./utils.js";
7
- export function typeboxBaseSchemaParts(type) {
9
+ export const RecursiveModelContext = createContext();
10
+ function isSelfReferencing($, model) {
11
+ const visited = new Set();
12
+ function check(type) {
13
+ if (visited.has(type)) return false;
14
+ visited.add(type);
15
+ if (type === model) return true;
16
+ if (type.kind === 'Model') {
17
+ if ($.array.is(type)) {
18
+ return check(type.indexer.value);
19
+ }
20
+ if (isRecord($.program, type)) {
21
+ return check(type.indexer.value);
22
+ }
23
+ return false;
24
+ }
25
+ if (type.kind === 'Union') {
26
+ for (const variant of type.variants.values()) {
27
+ if (check(variant.type)) return true;
28
+ }
29
+ }
30
+ return false;
31
+ }
32
+ for (const prop of model.properties.values()) {
33
+ if (check(prop.type)) return true;
34
+ }
35
+ return false;
36
+ }
37
+ export function typeboxBaseSchemaParts(type, member) {
8
38
  const {
9
39
  $
10
40
  } = useTsp();
@@ -16,9 +46,9 @@ export function typeboxBaseSchemaParts(type) {
16
46
  case 'Boolean':
17
47
  return literalBaseType($, type);
18
48
  case 'Scalar':
19
- return scalarBaseType($, type);
49
+ return scalarBaseType($, type, member);
20
50
  case 'Model':
21
- return modelBaseType($, type);
51
+ return modelBaseType($, type, member);
22
52
  case 'Union':
23
53
  return unionBaseType(type);
24
54
  case 'Enum':
@@ -26,7 +56,7 @@ export function typeboxBaseSchemaParts(type) {
26
56
  case 'Tuple':
27
57
  return tupleBaseType(type);
28
58
  case 'ModelProperty':
29
- return typeboxBaseSchemaParts(type.type);
59
+ return typeboxBaseSchemaParts(type.type, type);
30
60
  case 'EnumMember':
31
61
  return type.value ? literalBaseType($, $.literal.create(type.value)) : literalBaseType($, $.literal.create(type.name));
32
62
  default:
@@ -42,17 +72,7 @@ function literalBaseType($, type) {
42
72
  return typeboxCall('Literal', `${type.value}`);
43
73
  }
44
74
  }
45
- function formatOpts(format) {
46
- return _$createComponent(ObjectExpression, {
47
- get children() {
48
- return _$createComponent(ObjectProperty, {
49
- name: "format",
50
- children: `"${format}"`
51
- });
52
- }
53
- });
54
- }
55
- function scalarBaseType($, type) {
75
+ function scalarBaseType($, type, member) {
56
76
  if (type.baseScalar && shouldReference($.program, type.baseScalar)) {
57
77
  return _$createComponent(MemberExpression, {
58
78
  get children() {
@@ -65,68 +85,191 @@ function scalarBaseType($, type) {
65
85
  });
66
86
  }
67
87
  if ($.scalar.extendsBoolean(type)) {
68
- return typeboxCall('Boolean');
88
+ const opts = buildTypeboxOpts($, type, {
89
+ member
90
+ });
91
+ return typeboxCall('Boolean', ...(opts ? [opts] : []));
69
92
  } else if ($.scalar.extendsNumeric(type)) {
93
+ const opts = buildTypeboxOpts($, type, {
94
+ member
95
+ });
70
96
  if ($.scalar.extendsInteger(type)) {
71
97
  if ($.scalar.extendsInt32(type) || $.scalar.extendsUint32(type) || $.scalar.extendsSafeint(type)) {
72
- return typeboxCall('Integer');
98
+ return typeboxCall('Integer', ...(opts ? [opts] : []));
73
99
  } else {
74
100
  return typeboxCall('BigInt');
75
101
  }
76
102
  } else {
77
- return typeboxCall('Number');
103
+ return typeboxCall('Number', ...(opts ? [opts] : []));
78
104
  }
79
105
  } else if ($.scalar.extendsString(type)) {
80
106
  if ($.scalar.extendsUrl(type)) {
81
- return typeboxCall('String', formatOpts('uri'));
107
+ const opts = buildTypeboxOpts($, type, {
108
+ member,
109
+ format: 'uri'
110
+ });
111
+ return typeboxCall('String', ...(opts ? [opts] : []));
82
112
  }
83
- return typeboxCall('String');
113
+ const opts = buildTypeboxOpts($, type, {
114
+ member
115
+ });
116
+ return typeboxCall('String', ...(opts ? [opts] : []));
84
117
  } else if ($.scalar.extendsBytes(type)) {
85
118
  return typeboxCall('Any');
86
119
  } else if ($.scalar.extendsPlainDate(type)) {
87
- return typeboxCall('Date');
120
+ const opts = buildTypeboxOpts($, type, {
121
+ member,
122
+ format: 'date'
123
+ });
124
+ return typeboxCall('String', ...(opts ? [opts] : []));
88
125
  } else if ($.scalar.extendsPlainTime(type)) {
89
- return typeboxCall('String', formatOpts('time'));
126
+ const opts = buildTypeboxOpts($, type, {
127
+ member,
128
+ format: 'time'
129
+ });
130
+ return typeboxCall('String', ...(opts ? [opts] : []));
90
131
  } else if ($.scalar.extendsUtcDateTime(type)) {
91
132
  const encoding = $.scalar.getEncoding(type);
92
133
  if (encoding === undefined) {
93
- return typeboxCall('Date');
134
+ const opts = buildTypeboxOpts($, type, {
135
+ member,
136
+ format: 'date-time'
137
+ });
138
+ return typeboxCall('String', ...(opts ? [opts] : []));
94
139
  } else if (encoding.encoding === 'unixTimestamp') {
95
- return scalarBaseType($, encoding.type);
140
+ return scalarBaseType($, encoding.type, member);
96
141
  } else if (encoding.encoding === 'rfc3339') {
97
- return typeboxCall('String', formatOpts('date-time'));
142
+ const opts = buildTypeboxOpts($, type, {
143
+ member,
144
+ format: 'date-time'
145
+ });
146
+ return typeboxCall('String', ...(opts ? [opts] : []));
98
147
  } else {
99
- return scalarBaseType($, encoding.type);
148
+ return scalarBaseType($, encoding.type, member);
100
149
  }
101
150
  } else if ($.scalar.extendsOffsetDateTime(type)) {
102
151
  const encoding = $.scalar.getEncoding(type);
103
152
  if (encoding === undefined) {
104
- return typeboxCall('Date');
153
+ const opts = buildTypeboxOpts($, type, {
154
+ member,
155
+ format: 'date-time'
156
+ });
157
+ return typeboxCall('String', ...(opts ? [opts] : []));
105
158
  } else if (encoding.encoding === 'rfc3339') {
106
- return typeboxCall('String', formatOpts('date-time'));
159
+ const opts = buildTypeboxOpts($, type, {
160
+ member,
161
+ format: 'date-time'
162
+ });
163
+ return typeboxCall('String', ...(opts ? [opts] : []));
107
164
  } else {
108
- return scalarBaseType($, encoding.type);
165
+ return scalarBaseType($, encoding.type, member);
109
166
  }
110
167
  } else if ($.scalar.extendsDuration(type)) {
111
168
  const encoding = $.scalar.getEncoding(type);
112
169
  if (encoding === undefined || encoding.encoding === 'ISO8601') {
113
- return typeboxCall('String', formatOpts('duration'));
170
+ const opts = buildTypeboxOpts($, type, {
171
+ member,
172
+ format: 'duration'
173
+ });
174
+ return typeboxCall('String', ...(opts ? [opts] : []));
114
175
  } else {
115
- return scalarBaseType($, encoding.type);
176
+ return scalarBaseType($, encoding.type, member);
116
177
  }
117
178
  } else {
118
179
  return typeboxCall('Any');
119
180
  }
120
181
  }
121
- function modelBaseType($, type) {
182
+ function hasDiscriminatedAncestor($, type) {
183
+ let current = type.baseModel;
184
+ while (current) {
185
+ if (getDiscriminator($.program, current)) return true;
186
+ current = current.baseModel;
187
+ }
188
+ return false;
189
+ }
190
+ function buildObjectFromProperties(properties) {
191
+ const members = _$createComponent(ObjectExpression, {
192
+ get children() {
193
+ return _$createComponent(For, {
194
+ each: properties,
195
+ comma: true,
196
+ hardline: true,
197
+ enderPunctuation: true,
198
+ children: function (prop) {
199
+ const schema = _$createComponent(TypeBoxSchema, {
200
+ type: prop,
201
+ nested: true
202
+ });
203
+ return _$createComponent(ObjectProperty, {
204
+ get name() {
205
+ return prop.name;
206
+ },
207
+ get children() {
208
+ return _$memo(() => !!prop.optional)() ? typeboxCall('Optional', schema) : schema;
209
+ }
210
+ });
211
+ }
212
+ });
213
+ }
214
+ });
215
+ return typeboxCall('Object', members);
216
+ }
217
+ function modelBaseType($, type, member) {
122
218
  if ($.array.is(type)) {
219
+ const opts = buildTypeboxOpts($, type, {
220
+ member
221
+ });
123
222
  return typeboxCall('Array', _$createComponent(TypeBoxSchema, {
124
223
  get type() {
125
224
  return type.indexer.value;
126
225
  },
127
226
  nested: true
128
- }));
227
+ }), ...(opts ? [opts] : []));
228
+ }
229
+ const discriminator = getDiscriminator($.program, type);
230
+ if (discriminator) {
231
+ const [discUnion] = getDiscriminatedUnionFromInheritance(type, discriminator);
232
+ if (discUnion && discUnion.variants.size > 0) {
233
+ const variants = [...discUnion.variants.values()];
234
+ return typeboxCall('Union', _$createComponent(ArrayExpression, {
235
+ get children() {
236
+ return _$createComponent(For, {
237
+ each: variants,
238
+ comma: true,
239
+ line: true,
240
+ children: function (variant) {
241
+ return _$createComponent(TypeBoxSchema, {
242
+ type: variant,
243
+ nested: true
244
+ });
245
+ }
246
+ });
247
+ }
248
+ }));
249
+ }
250
+ }
251
+ if (hasDiscriminatedAncestor($, type)) {
252
+ const allProperties = $.model.getProperties(type, {
253
+ includeExtended: true
254
+ });
255
+ if (allProperties.size > 0) {
256
+ return buildObjectFromProperties([...allProperties.values()]);
257
+ }
258
+ return typeboxCall('Object', _$createComponent(ObjectExpression, {}));
259
+ }
260
+ const recursive = isSelfReferencing($, type);
261
+ const schema = recursive ? _$createComponent(RecursiveModelContext.Provider, {
262
+ value: type,
263
+ get children() {
264
+ return modelSchemaBody($, type);
265
+ }
266
+ }) : modelSchemaBody($, type);
267
+ if (recursive) {
268
+ return typeboxCall('Recursive', ['This => ', schema]);
129
269
  }
270
+ return schema;
271
+ }
272
+ function modelSchemaBody($, type) {
130
273
  let recordPart;
131
274
  if (isRecord($.program, type) || !!type.baseModel && isRecord($.program, type.baseModel) && !shouldReference($.program, type.baseModel)) {
132
275
  recordPart = typeboxCall('Record', _$createComponent(TypeBoxSchema, {
@@ -143,61 +286,51 @@ function modelBaseType($, type) {
143
286
  }
144
287
  let objectPart;
145
288
  if (type.properties.size > 0) {
146
- const members = _$createComponent(ObjectExpression, {
289
+ objectPart = buildObjectFromProperties([...type.properties.values()]);
290
+ }
291
+ let ownSchema;
292
+ if (objectPart && recordPart) {
293
+ const parts = [objectPart, recordPart];
294
+ ownSchema = typeboxCall('Intersect', _$createComponent(ArrayExpression, {
147
295
  get children() {
148
296
  return _$createComponent(For, {
149
- get each() {
150
- return type.properties.values();
151
- },
297
+ each: parts,
152
298
  comma: true,
153
- hardline: true,
154
- enderPunctuation: true,
155
- children: function (prop) {
156
- const schema = _$createComponent(TypeBoxSchema, {
157
- type: prop,
158
- nested: true
159
- });
160
- return _$createComponent(ObjectProperty, {
161
- get name() {
162
- return prop.name;
163
- },
164
- get children() {
165
- return _$memo(() => !!prop.optional)() ? typeboxCall('Optional', schema) : schema;
166
- }
167
- });
299
+ line: true,
300
+ children: function (part) {
301
+ return part;
168
302
  }
169
303
  });
170
304
  }
171
- });
172
- objectPart = typeboxCall('Object', members);
173
- }
174
- if (!objectPart && !recordPart) {
175
- return typeboxCall('Object', _$createComponent(ObjectExpression, {}));
176
- }
177
- if (objectPart && recordPart) {
178
- return typeboxCall('Intersect', _$createComponent(ArrayExpression, {
179
- get children() {
180
- return [objectPart, recordPart];
181
- }
182
305
  }));
306
+ } else {
307
+ ownSchema = objectPart ?? recordPart ?? typeboxCall('Object', _$createComponent(ObjectExpression, {}));
183
308
  }
184
- const parts = objectPart ?? recordPart;
185
309
  if (type.baseModel && shouldReference($.program, type.baseModel)) {
310
+ const baseRef = _$createComponent(MemberExpression, {
311
+ get children() {
312
+ return _$createComponent(MemberExpression.Part, {
313
+ get refkey() {
314
+ return refkey(type.baseModel, refkeySym);
315
+ }
316
+ });
317
+ }
318
+ });
319
+ const intersectParts = [baseRef, ownSchema];
186
320
  return typeboxCall('Intersect', _$createComponent(ArrayExpression, {
187
321
  get children() {
188
- return [_$createComponent(MemberExpression, {
189
- get children() {
190
- return _$createComponent(MemberExpression.Part, {
191
- get refkey() {
192
- return refkey(type.baseModel, refkeySym);
193
- }
194
- });
322
+ return _$createComponent(For, {
323
+ each: intersectParts,
324
+ comma: true,
325
+ line: true,
326
+ children: function (part) {
327
+ return part;
195
328
  }
196
- }), parts];
329
+ });
197
330
  }
198
331
  }));
199
332
  }
200
- return parts;
333
+ return ownSchema;
201
334
  }
202
335
  function unionBaseType(type) {
203
336
  return typeboxCall('Union', _$createComponent(ArrayExpression, {
@@ -1 +1 @@
1
- {"version":3,"names":["For","refkey","ArrayExpression","MemberExpression","ObjectExpression","ObjectProperty","useTsp","TypeBoxSchema","isRecord","refkeySym","shouldReference","typeboxCall","typeboxBaseSchemaParts","type","$","kind","intrinsicBaseType","literalBaseType","scalarBaseType","modelBaseType","unionBaseType","enumBaseType","tupleBaseType","value","literal","create","name","formatOpts","format","_$createComponent","children","baseScalar","program","Part","scalar","extendsBoolean","extendsNumeric","extendsInteger","extendsInt32","extendsUint32","extendsSafeint","extendsString","extendsUrl","extendsBytes","extendsPlainDate","extendsPlainTime","extendsUtcDateTime","encoding","getEncoding","undefined","extendsOffsetDateTime","extendsDuration","array","is","indexer","nested","recordPart","baseModel","key","objectPart","properties","size","members","each","values","comma","hardline","enderPunctuation","prop","schema","_$memo","optional","parts","variants","line","variant","item","member"],"sources":["../../src/typeboxBaseSchema.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["createContext","For","refkey","ArrayExpression","MemberExpression","ObjectExpression","ObjectProperty","getDiscriminator","getDiscriminatedUnionFromInheritance","useTsp","TypeBoxSchema","buildTypeboxOpts","isRecord","refkeySym","shouldReference","typeboxCall","RecursiveModelContext","isSelfReferencing","$","model","visited","Set","check","type","has","add","kind","array","is","indexer","value","program","variant","variants","values","prop","properties","typeboxBaseSchemaParts","member","intrinsicBaseType","literalBaseType","scalarBaseType","modelBaseType","unionBaseType","enumBaseType","tupleBaseType","literal","create","name","baseScalar","_$createComponent","children","Part","scalar","extendsBoolean","opts","extendsNumeric","extendsInteger","extendsInt32","extendsUint32","extendsSafeint","extendsString","extendsUrl","format","extendsBytes","extendsPlainDate","extendsPlainTime","extendsUtcDateTime","encoding","getEncoding","undefined","extendsOffsetDateTime","extendsDuration","hasDiscriminatedAncestor","current","baseModel","buildObjectFromProperties","members","each","comma","hardline","enderPunctuation","schema","nested","_$memo","optional","discriminator","discUnion","size","line","allProperties","getProperties","includeExtended","recursive","Provider","modelSchemaBody","recordPart","key","objectPart","ownSchema","parts","part","baseRef","intersectParts","item"],"sources":["../../src/typeboxBaseSchema.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}