ajsc 3.0.2 → 5.0.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 (40) hide show
  1. package/dist/JSONSchemaConverter.js +18 -4
  2. package/dist/JSONSchemaConverter.js.map +1 -1
  3. package/dist/JSONSchemaConverter.test.js +32 -4
  4. package/dist/JSONSchemaConverter.test.js.map +1 -1
  5. package/dist/TypescriptBaseConverter.d.ts +14 -1
  6. package/dist/TypescriptBaseConverter.js +32 -3
  7. package/dist/TypescriptBaseConverter.js.map +1 -1
  8. package/dist/TypescriptConverter.additionalProperties.test.js +110 -0
  9. package/dist/TypescriptConverter.additionalProperties.test.js.map +1 -0
  10. package/dist/TypescriptConverter.arrays.test.js +130 -0
  11. package/dist/TypescriptConverter.arrays.test.js.map +1 -0
  12. package/dist/TypescriptConverter.composites.test.d.ts +1 -0
  13. package/dist/TypescriptConverter.composites.test.js +13 -0
  14. package/dist/TypescriptConverter.composites.test.js.map +1 -0
  15. package/dist/TypescriptConverter.d.ts +56 -9
  16. package/dist/TypescriptConverter.js +105 -7
  17. package/dist/TypescriptConverter.js.map +1 -1
  18. package/dist/TypescriptConverter.objects.test.d.ts +1 -0
  19. package/dist/TypescriptConverter.objects.test.js +258 -0
  20. package/dist/TypescriptConverter.objects.test.js.map +1 -0
  21. package/dist/TypescriptConverter.options.test.d.ts +1 -0
  22. package/dist/TypescriptConverter.options.test.js +430 -0
  23. package/dist/TypescriptConverter.options.test.js.map +1 -0
  24. package/dist/TypescriptConverter.primitives.test.d.ts +1 -0
  25. package/dist/TypescriptConverter.primitives.test.js +26 -0
  26. package/dist/TypescriptConverter.primitives.test.js.map +1 -0
  27. package/dist/index.d.ts +0 -1
  28. package/dist/index.js +0 -1
  29. package/dist/index.js.map +1 -1
  30. package/dist/types.d.ts +2 -1
  31. package/package.json +5 -3
  32. package/dist/TypescriptConverter.test.js +0 -325
  33. package/dist/TypescriptConverter.test.js.map +0 -1
  34. package/dist/TypescriptProcedureConverter.d.ts +0 -19
  35. package/dist/TypescriptProcedureConverter.js +0 -54
  36. package/dist/TypescriptProcedureConverter.js.map +0 -1
  37. package/dist/TypescriptProcedureConverter.test.js +0 -997
  38. package/dist/TypescriptProcedureConverter.test.js.map +0 -1
  39. /package/dist/{TypescriptConverter.test.d.ts → TypescriptConverter.additionalProperties.test.d.ts} +0 -0
  40. /package/dist/{TypescriptProcedureConverter.test.d.ts → TypescriptConverter.arrays.test.d.ts} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TypescriptConverter.arrays.test.js","sourceRoot":"","sources":["../src/TypescriptConverter.arrays.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,13 @@
1
+ import { describe, it, expect } from "vitest";
2
+ import { TypescriptConverter } from "./TypescriptConverter.js";
3
+ describe("TypescriptConverter - unions and intersections", () => {
4
+ it("should convert unions", () => {
5
+ expect(new TypescriptConverter({ type: ["string", "number"] }).code).toMatch(`string | number`);
6
+ });
7
+ it("should convert intersections", () => {
8
+ expect(new TypescriptConverter({
9
+ allOf: [{ type: "string" }, { type: "number" }],
10
+ }).code).toMatch(`string & number`);
11
+ });
12
+ });
13
+ //# sourceMappingURL=TypescriptConverter.composites.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TypescriptConverter.composites.test.js","sourceRoot":"","sources":["../src/TypescriptConverter.composites.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAE/D,QAAQ,CAAC,gDAAgD,EAAE,GAAG,EAAE;IAC9D,EAAE,CAAC,uBAAuB,EAAE,GAAG,EAAE;QAC/B,MAAM,CACJ,IAAI,mBAAmB,CAAC,EAAE,IAAI,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC,IAAI,CAC7D,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAC/B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8BAA8B,EAAE,GAAG,EAAE;QACtC,MAAM,CACJ,IAAI,mBAAmB,CAAC;YACtB,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;SAChD,CAAC,CAAC,IAAI,CACR,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAC/B,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1,18 +1,65 @@
1
- import { ILanguageConverter } from "./types.js";
2
- import { TypescriptBaseConverter } from "./TypescriptBaseConverter.js";
1
+ import { ILanguageConverter, IRNode } from "./types.js";
2
+ import { RefTypeNamingConfig, TypescriptBaseConverter } from "./TypescriptBaseConverter.js";
3
3
  import { JSONSchema7Definition } from "json-schema";
4
+ export interface TypescriptConverterOpts {
5
+ /**
6
+ * If true, referenced types will not be created for objects and instead
7
+ * the object type will be inlined.
8
+ */
9
+ inlineTypes?: boolean;
10
+ /**
11
+ * Controls the postfix added to array item type names.
12
+ * - `false` (default) → no postfix, uses property name directly
13
+ * - `string` → custom postfix (e.g. "Item" → ContactsItem, "Element" → ContactsElement)
14
+ */
15
+ arrayItemNaming?: string | false;
16
+ /**
17
+ * If true (default), singularize array item path segments when generating type names.
18
+ * Handles irregular plurals (e.g. "entries" → "Entry", "people" → "Person").
19
+ */
20
+ depluralize?: boolean;
21
+ /**
22
+ * Controls how enum values are emitted.
23
+ * - `"union"` (default) → `"a" | "b" | "c"`
24
+ * - `"enum"` → `export enum Status { A = "a", B = "b", C = "c" }`
25
+ * Only applies when `inlineTypes` is false and all values are strings.
26
+ */
27
+ enumStyle?: "union" | "enum";
28
+ /**
29
+ * Additional words that should not be singularized when `depluralize` is true.
30
+ * Built-in uncountables: "data", "metadata".
31
+ * @example ["criteria", "alumni", "corpus"]
32
+ */
33
+ uncountableWords?: string[];
34
+ }
4
35
  /**
5
36
  * A TypeScript language converter plugin.
6
37
  */
7
38
  export declare class TypescriptConverter extends TypescriptBaseConverter implements ILanguageConverter {
8
39
  readonly language = "typescript";
9
40
  private schemaConverter;
41
+ private opts;
42
+ private inlineTypes;
43
+ private enumStyle;
44
+ /**
45
+ * Stores enum declarations keyed by canonical signature (sorted JSON values)
46
+ * for deduplication across the schema.
47
+ */
48
+ private enumDeclarations;
49
+ /** Tracks all enum declaration names for collision resolution */
50
+ private usedEnumNames;
10
51
  readonly code: string;
11
- constructor(schema: JSONSchema7Definition, opts?: {
12
- /**
13
- * If true, referenced types will not be created for objects and instead
14
- * the object type will be inlined.
15
- */
16
- inlineTypes?: boolean;
17
- });
52
+ constructor(schema: JSONSchema7Definition, opts?: TypescriptConverterOpts);
53
+ protected getRefTypeNamingConfig(): RefTypeNamingConfig;
54
+ protected generateEnumType(ir: IRNode): string;
55
+ protected generateLiteralType(ir: IRNode): string;
56
+ /**
57
+ * Returns (or creates) a deduplicated enum declaration for the given string values.
58
+ * Same set of values at different paths reuses the same enum.
59
+ */
60
+ private getOrCreateEnumDeclaration;
61
+ /**
62
+ * Converts a string value to a valid PascalCase enum member name.
63
+ */
64
+ private toEnumMemberName;
18
65
  }
@@ -1,5 +1,6 @@
1
1
  import { TypescriptBaseConverter, } from "./TypescriptBaseConverter.js";
2
2
  import { JSONSchemaConverter } from "./JSONSchemaConverter.js";
3
+ import { toPascalCase } from "./utils/to-pascal-case.js";
3
4
  /**
4
5
  * A TypeScript language converter plugin.
5
6
  */
@@ -7,27 +8,124 @@ export class TypescriptConverter extends TypescriptBaseConverter {
7
8
  constructor(schema, opts) {
8
9
  super();
9
10
  this.language = "typescript";
11
+ /**
12
+ * Stores enum declarations keyed by canonical signature (sorted JSON values)
13
+ * for deduplication across the schema.
14
+ */
15
+ this.enumDeclarations = new Map();
16
+ /** Tracks all enum declaration names for collision resolution */
17
+ this.usedEnumNames = new Set();
18
+ this.opts = opts;
19
+ this.inlineTypes = opts?.inlineTypes ?? false;
20
+ this.enumStyle = opts?.enumStyle ?? "union";
10
21
  this.schemaConverter = new JSONSchemaConverter(schema);
11
22
  if (!this.schemaConverter.irNode.name) {
12
23
  this.schemaConverter.irNode.name = "Root";
13
24
  }
14
25
  const code = this.generateType(this.schemaConverter.irNode, {
15
- getReferencedType: opts?.inlineTypes
26
+ getReferencedType: this.inlineTypes
16
27
  ? () => undefined
17
28
  : this.getReferencedType.bind(this),
18
29
  });
19
30
  const rootName = this.schemaConverter.irNode.name;
20
- if (!opts?.inlineTypes) {
21
- this.code = `${this.refTypes
31
+ if (!this.inlineTypes) {
32
+ const enumCode = [...this.enumDeclarations.values()]
33
+ .map(({ name, members }) => {
34
+ const body = members
35
+ .map(({ key, value }) => `${key} = ${JSON.stringify(value)}`)
36
+ .join(", ");
37
+ return `export enum ${name} { ${body} }`;
38
+ })
39
+ .join("\n");
40
+ const typeCode = this.refTypes
22
41
  .map(([_sig, name, { code }]) => `export type ${name} = ${code};`)
23
- .join("\n")}
24
-
25
- export type ${rootName} = ${code};
26
- `;
42
+ .join("\n");
43
+ const allDecls = [enumCode, typeCode].filter(Boolean).join("\n");
44
+ this.code = `${allDecls}\n\nexport type ${rootName} = ${code};\n`;
27
45
  }
28
46
  else {
29
47
  this.code = `${code}`;
30
48
  }
31
49
  }
50
+ getRefTypeNamingConfig() {
51
+ const base = super.getRefTypeNamingConfig();
52
+ return {
53
+ ...base,
54
+ ...(this.opts?.arrayItemNaming !== undefined && {
55
+ arrayItemNaming: this.opts.arrayItemNaming,
56
+ }),
57
+ ...(this.opts?.depluralize !== undefined && {
58
+ depluralize: this.opts.depluralize,
59
+ }),
60
+ ...(this.opts?.uncountableWords !== undefined && {
61
+ uncountableWords: this.opts.uncountableWords,
62
+ }),
63
+ };
64
+ }
65
+ generateEnumType(ir) {
66
+ if (this.enumStyle === "enum" &&
67
+ !this.inlineTypes &&
68
+ ir.values?.every((v) => typeof v === "string")) {
69
+ return this.getOrCreateEnumDeclaration(ir.values, ir.path);
70
+ }
71
+ return super.generateEnumType(ir);
72
+ }
73
+ generateLiteralType(ir) {
74
+ if (this.enumStyle === "enum" &&
75
+ !this.inlineTypes &&
76
+ typeof ir.constraints?.value === "string") {
77
+ return this.getOrCreateEnumDeclaration([ir.constraints.value], ir.path);
78
+ }
79
+ return super.generateLiteralType(ir);
80
+ }
81
+ /**
82
+ * Returns (or creates) a deduplicated enum declaration for the given string values.
83
+ * Same set of values at different paths reuses the same enum.
84
+ */
85
+ getOrCreateEnumDeclaration(values, path) {
86
+ const canonicalKey = JSON.stringify([...values].sort());
87
+ const existing = this.enumDeclarations.get(canonicalKey);
88
+ if (existing) {
89
+ return existing.name;
90
+ }
91
+ // Derive name from last path segment
92
+ const lastSegment = path.split(".").filter(Boolean).slice(-1)[0] || "Value";
93
+ let baseName = toPascalCase(lastSegment);
94
+ // Resolve naming collisions with counter suffix
95
+ let enumName = baseName;
96
+ let counter = 2;
97
+ while (this.usedEnumNames.has(enumName)) {
98
+ enumName = baseName + counter;
99
+ counter++;
100
+ }
101
+ this.usedEnumNames.add(enumName);
102
+ // Build members with collision resolution
103
+ const usedMemberNames = new Set();
104
+ const members = values.map((value) => {
105
+ let memberName = this.toEnumMemberName(value);
106
+ let memberBase = memberName;
107
+ let memberCounter = 2;
108
+ while (usedMemberNames.has(memberName)) {
109
+ memberName = memberBase + memberCounter;
110
+ memberCounter++;
111
+ }
112
+ usedMemberNames.add(memberName);
113
+ return { key: memberName, value };
114
+ });
115
+ this.enumDeclarations.set(canonicalKey, { name: enumName, members });
116
+ return enumName;
117
+ }
118
+ /**
119
+ * Converts a string value to a valid PascalCase enum member name.
120
+ */
121
+ toEnumMemberName(value) {
122
+ let name = toPascalCase(value);
123
+ name = name.replace(/[^a-zA-Z0-9_]/g, "");
124
+ if (/^\d/.test(name))
125
+ name = "_" + name;
126
+ if (!name)
127
+ name = "Value";
128
+ return name;
129
+ }
32
130
  }
33
131
  //# sourceMappingURL=TypescriptConverter.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"TypescriptConverter.js","sourceRoot":"","sources":["../src/TypescriptConverter.ts"],"names":[],"mappings":"AACA,OAAO,EACL,uBAAuB,GACxB,MAAM,8BAA8B,CAAC;AAEtC,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAE/D;;GAEG;AACH,MAAM,OAAO,mBACX,SAAQ,uBAAuB;IAS/B,YACE,MAA6B,EAC7B,IAMC;QAED,KAAK,EAAE,CAAC;QAhBM,aAAQ,GAAG,YAAY,CAAC;QAkBtC,IAAI,CAAC,eAAe,GAAG,IAAI,mBAAmB,CAAC,MAAM,CAAC,CAAC;QAEvD,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;YACtC,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC;QAC5C,CAAC;QAED,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE;YAC1D,iBAAiB,EAAE,IAAI,EAAE,WAAW;gBAClC,CAAC,CAAC,GAAG,EAAE,CAAC,SAAS;gBACjB,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC;SACtC,CAAC,CAAC;QAEH,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC;QAElD,IAAI,CAAC,IAAI,EAAE,WAAW,EAAE,CAAC;YACvB,IAAI,CAAC,IAAI,GAAG,GAAG,IAAI,CAAC,QAAQ;iBACzB,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,eAAe,IAAI,MAAM,IAAI,GAAG,CAAC;iBACjE,IAAI,CAAC,IAAI,CAAC;;oBAEC,QAAQ,MAAM,IAAI;OAC/B,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,IAAI,GAAG,GAAG,IAAI,EAAE,CAAC;QACxB,CAAC;IACH,CAAC;CAEF"}
1
+ {"version":3,"file":"TypescriptConverter.js","sourceRoot":"","sources":["../src/TypescriptConverter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,258 @@
1
+ import { describe, it, expect } from "vitest";
2
+ import { TypescriptConverter } from "./TypescriptConverter.js";
3
+ describe("TypescriptConverter - objects (inlineTypes)", () => {
4
+ it("should convert objects", () => {
5
+ expect(new TypescriptConverter({
6
+ type: "object",
7
+ properties: {
8
+ title: { type: "string" },
9
+ year: { type: "number" },
10
+ },
11
+ required: ["title"],
12
+ }).code).toMatch(`{ title: string; year?: number; }`);
13
+ });
14
+ it("should convert a simple JSON schema to Typescript", () => {
15
+ expect(new TypescriptConverter({
16
+ type: "object",
17
+ properties: {
18
+ name: { type: "string" },
19
+ age: { type: "number" },
20
+ contacts: {
21
+ type: "array",
22
+ items: {
23
+ type: "object",
24
+ properties: {
25
+ email: { type: "string" },
26
+ },
27
+ required: ["email"],
28
+ },
29
+ },
30
+ profile: {
31
+ type: "object",
32
+ properties: {
33
+ email: { type: "string" },
34
+ },
35
+ required: ["email"],
36
+ },
37
+ },
38
+ required: ["name", "age"],
39
+ }, {
40
+ inlineTypes: true,
41
+ }).code.replace(/\s/g, "")).toMatch(`{
42
+ name: string;
43
+ age: number;
44
+ contacts?: Array<{ email: string; }>;
45
+ profile?: { email: string; };
46
+ }`.replace(/\s/g, ""));
47
+ });
48
+ it("should convert a named JSON schema top-level object to Typescript", () => {
49
+ expect(new TypescriptConverter({
50
+ $schema: "http://json-schema.org/draft-07/schema#",
51
+ title: "Person",
52
+ type: "object",
53
+ properties: {
54
+ name: { type: "string" },
55
+ age: { type: "number" },
56
+ contacts: {
57
+ type: "array",
58
+ items: {
59
+ type: "object",
60
+ properties: {
61
+ email: { type: "string" },
62
+ },
63
+ required: ["email"],
64
+ },
65
+ },
66
+ profile: {
67
+ type: "object",
68
+ properties: {
69
+ email: { type: "string" },
70
+ },
71
+ required: ["email"],
72
+ },
73
+ },
74
+ required: ["name", "age"],
75
+ }, {
76
+ inlineTypes: true,
77
+ }).code.replace(/\s/g, "")).toEqual(`{ name: string; age: number; contacts?: Array<{ email: string; }>; profile?: { email: string; }; }`.replace(/\s/g, ""));
78
+ });
79
+ it("should convert JSON schema with top-level re-used objects in Typescript", async () => {
80
+ expect(new TypescriptConverter({
81
+ $schema: "http://json-schema.org/draft-07/schema#",
82
+ title: "Person",
83
+ type: "object",
84
+ properties: {
85
+ contacts: {
86
+ type: "array",
87
+ items: {
88
+ type: "object",
89
+ properties: {
90
+ email: { type: "string" },
91
+ },
92
+ required: ["email"],
93
+ },
94
+ },
95
+ profile: {
96
+ type: "object",
97
+ properties: {
98
+ email: { type: "string" },
99
+ },
100
+ required: ["email"],
101
+ },
102
+ contact: {
103
+ type: "object",
104
+ properties: {
105
+ email: { type: "string" },
106
+ },
107
+ required: ["email"],
108
+ },
109
+ email: {
110
+ type: "object",
111
+ properties: {
112
+ email: { type: "string" },
113
+ },
114
+ required: ["email"],
115
+ },
116
+ },
117
+ required: ["name", "age"],
118
+ }, {
119
+ inlineTypes: true,
120
+ }).code.replace(/\s/g, "")).toEqual(`{contacts?:Array<{email:string;}>;profile?:{email:string;};contact?:{email:string;};email?:{email:string;};}`.replace(/\s/g, ""));
121
+ });
122
+ it("should render never type for boolean schema false", () => {
123
+ expect(new TypescriptConverter({
124
+ type: "object",
125
+ properties: {
126
+ forbidden: false,
127
+ },
128
+ }, { inlineTypes: true }).code.replace(/\s/g, "")).toEqual("{ forbidden?: never; }".replace(/\s/g, ""));
129
+ });
130
+ });
131
+ describe("TypescriptConverter - objects (full type defs)", () => {
132
+ it("should convert a simple JSON schema to Typescript", () => {
133
+ expect(new TypescriptConverter({
134
+ type: "object",
135
+ properties: {
136
+ name: { type: "string" },
137
+ age: { type: "number" },
138
+ contacts: {
139
+ type: "array",
140
+ items: {
141
+ type: "object",
142
+ properties: {
143
+ email: { type: "string" },
144
+ },
145
+ required: ["email"],
146
+ },
147
+ },
148
+ profile: {
149
+ type: "object",
150
+ properties: {
151
+ email: { type: "string" },
152
+ },
153
+ required: ["email"],
154
+ },
155
+ },
156
+ required: ["name", "age"],
157
+ }, {}).code.replace(/\s/g, "")).toMatch(`
158
+ export type Contact = { email: string; };
159
+
160
+ export type Profile = { email: string; };
161
+
162
+ export type Root = { name: string; age: number; contacts?: Array<Contact>; profile?: Profile; };
163
+ `.replace(/\s/g, ""));
164
+ });
165
+ it("should convert a named JSON schema top-level object to Typescript", () => {
166
+ expect(new TypescriptConverter({
167
+ $schema: "http://json-schema.org/draft-07/schema#",
168
+ title: "Person",
169
+ type: "object",
170
+ properties: {
171
+ name: { type: "string" },
172
+ age: { type: "number" },
173
+ contacts: {
174
+ type: "array",
175
+ items: {
176
+ type: "object",
177
+ properties: {
178
+ email: { type: "string" },
179
+ },
180
+ required: ["email"],
181
+ },
182
+ },
183
+ profile: {
184
+ type: "object",
185
+ properties: {
186
+ email: { type: "string" },
187
+ },
188
+ required: ["email"],
189
+ },
190
+ },
191
+ required: ["name", "age"],
192
+ }, {}).code.replace(/\s/g, "")).toEqual(`
193
+ export type Contact = { email: string; };
194
+
195
+ export type Profile = { email: string; };
196
+
197
+ export type Person = { name: string; age: number; contacts?: Array<Contact>; profile?: Profile; };
198
+ `.replace(/\s/g, ""));
199
+ });
200
+ it("should convert JSON schema with top-level re-used objects in Typescript", async () => {
201
+ expect(new TypescriptConverter({
202
+ $schema: "http://json-schema.org/draft-07/schema#",
203
+ title: "Person",
204
+ type: "object",
205
+ properties: {
206
+ contacts: {
207
+ type: "array",
208
+ items: {
209
+ type: "object",
210
+ properties: {
211
+ email: { type: "string" },
212
+ },
213
+ required: ["email"],
214
+ },
215
+ },
216
+ profile: {
217
+ type: "object",
218
+ properties: {
219
+ email: { type: "string" },
220
+ },
221
+ required: ["email"],
222
+ },
223
+ contact: {
224
+ type: "object",
225
+ properties: {
226
+ email: { type: "string" },
227
+ },
228
+ required: ["email"],
229
+ },
230
+ email: {
231
+ type: "object",
232
+ properties: {
233
+ email: { type: "string" },
234
+ },
235
+ required: ["email"],
236
+ },
237
+ },
238
+ required: ["name", "age"],
239
+ }, {}).code.replace(/\s/g, "")).toEqual(`
240
+ export type Contact = { email: string; };
241
+
242
+ export type Profile = { email: string; };
243
+
244
+ export type Email = { email: string; };
245
+
246
+ export type Person = { contacts?: Array<Contact>; profile?: Profile; contact?: Contact; email?: Email; };
247
+ `.replace(/\s/g, ""));
248
+ });
249
+ it("should render never type for boolean schema false", () => {
250
+ expect(new TypescriptConverter({
251
+ type: "object",
252
+ properties: {
253
+ forbidden: false,
254
+ },
255
+ }, {}).code.replace(/\s/g, "")).toEqual("export type Root = { forbidden?: never; };".replace(/\s/g, ""));
256
+ });
257
+ });
258
+ //# sourceMappingURL=TypescriptConverter.objects.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TypescriptConverter.objects.test.js","sourceRoot":"","sources":["../src/TypescriptConverter.objects.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};