@formspec/build 0.1.0-alpha.40 → 0.1.0-alpha.41
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/dist/browser.cjs +226 -17
- package/dist/browser.cjs.map +1 -1
- package/dist/browser.js +226 -17
- package/dist/browser.js.map +1 -1
- package/dist/build-alpha.d.ts +10 -0
- package/dist/build-beta.d.ts +10 -0
- package/dist/build-internal.d.ts +10 -0
- package/dist/build.d.ts +10 -0
- package/dist/canonicalize/chain-dsl-canonicalizer.d.ts.map +1 -1
- package/dist/cli.cjs +163 -27
- package/dist/cli.cjs.map +1 -1
- package/dist/cli.js +163 -27
- package/dist/cli.js.map +1 -1
- package/dist/generators/class-schema.d.ts +5 -0
- package/dist/generators/class-schema.d.ts.map +1 -1
- package/dist/generators/discovered-schema.d.ts.map +1 -1
- package/dist/generators/method-schema.d.ts +9 -2
- package/dist/generators/method-schema.d.ts.map +1 -1
- package/dist/index.cjs +143 -24
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +143 -24
- package/dist/index.js.map +1 -1
- package/dist/internals.cjs +120 -27
- package/dist/internals.cjs.map +1 -1
- package/dist/internals.js +120 -27
- package/dist/internals.js.map +1 -1
- package/dist/json-schema/generator.d.ts +5 -0
- package/dist/json-schema/generator.d.ts.map +1 -1
- package/dist/json-schema/ir-generator.d.ts +5 -0
- package/dist/json-schema/ir-generator.d.ts.map +1 -1
- package/dist/metadata/policy.d.ts +3 -2
- package/dist/metadata/policy.d.ts.map +1 -1
- package/dist/metadata/resolve.d.ts +1 -0
- package/dist/metadata/resolve.d.ts.map +1 -1
- package/package.json +4 -4
|
@@ -119,6 +119,11 @@ export interface StaticSchemaGenerationOptions {
|
|
|
119
119
|
* @defaultValue "x-formspec"
|
|
120
120
|
*/
|
|
121
121
|
readonly vendorPrefix?: string | undefined;
|
|
122
|
+
/**
|
|
123
|
+
* JSON Schema representation to use for static enums.
|
|
124
|
+
* @defaultValue "enum"
|
|
125
|
+
*/
|
|
126
|
+
readonly enumSerialization?: "enum" | "oneOf";
|
|
122
127
|
/** Metadata resolution policy for static schema generation. */
|
|
123
128
|
readonly metadata?: MetadataPolicyInput | undefined;
|
|
124
129
|
/** Discriminator-specific schema generation behavior. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"class-schema.d.ts","sourceRoot":"","sources":["../../src/generators/class-schema.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"class-schema.d.ts","sourceRoot":"","sources":["../../src/generators/class-schema.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"discovered-schema.d.ts","sourceRoot":"","sources":["../../src/generators/discovered-schema.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AAQjC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AACvD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAU7D,OAAO,EAGL,KAAK,6BAA6B,EACnC,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAA4B,KAAK,cAAc,EAAE,MAAM,gCAAgC,CAAC;
|
|
1
|
+
{"version":3,"file":"discovered-schema.d.ts","sourceRoot":"","sources":["../../src/generators/discovered-schema.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
*/
|
|
7
7
|
import type * as ts from "typescript";
|
|
8
8
|
import type { MethodInfo } from "../analyzer/class-analyzer.js";
|
|
9
|
-
import { type JsonSchema2020 } from "../json-schema/ir-generator.js";
|
|
9
|
+
import { type GenerateJsonSchemaFromIROptions, type JsonSchema2020 } from "../json-schema/ir-generator.js";
|
|
10
10
|
/**
|
|
11
11
|
* Runtime-loaded FormSpec schemas, compatible with the CLI's FormSpecSchemas type.
|
|
12
12
|
*/
|
|
@@ -40,6 +40,13 @@ export interface MethodParamsSchemas {
|
|
|
40
40
|
/** Name of the FormSpec export used (if any) */
|
|
41
41
|
formSpecExport: string | null;
|
|
42
42
|
}
|
|
43
|
+
/**
|
|
44
|
+
* Options for generating method schemas.
|
|
45
|
+
*/
|
|
46
|
+
export interface GenerateMethodSchemasOptions {
|
|
47
|
+
/** JSON Schema representation to use for static enums. */
|
|
48
|
+
readonly enumSerialization?: GenerateJsonSchemaFromIROptions["enumSerialization"] | undefined;
|
|
49
|
+
}
|
|
43
50
|
/**
|
|
44
51
|
* Generates schemas for a method's parameters and return type.
|
|
45
52
|
*
|
|
@@ -52,7 +59,7 @@ export interface MethodParamsSchemas {
|
|
|
52
59
|
* @param loadedFormSpecs - Map of FormSpec export names to their schemas
|
|
53
60
|
* @returns Generated method schemas
|
|
54
61
|
*/
|
|
55
|
-
export declare function generateMethodSchemas(method: MethodInfo, checker: ts.TypeChecker, loadedFormSpecs: Map<string, LoadedFormSpecSchemas
|
|
62
|
+
export declare function generateMethodSchemas(method: MethodInfo, checker: ts.TypeChecker, loadedFormSpecs: Map<string, LoadedFormSpecSchemas>, options?: GenerateMethodSchemasOptions): MethodSchemas;
|
|
56
63
|
/**
|
|
57
64
|
* Collects all FormSpec export names referenced by methods.
|
|
58
65
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"method-schema.d.ts","sourceRoot":"","sources":["../../src/generators/method-schema.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,KAAK,EAAE,MAAM,YAAY,CAAC;AAEtC,OAAO,KAAK,EAAE,UAAU,EAAiB,MAAM,+BAA+B,CAAC;AAG/E,OAAO,
|
|
1
|
+
{"version":3,"file":"method-schema.d.ts","sourceRoot":"","sources":["../../src/generators/method-schema.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,KAAK,EAAE,MAAM,YAAY,CAAC;AAEtC,OAAO,KAAK,EAAE,UAAU,EAAiB,MAAM,+BAA+B,CAAC;AAG/E,OAAO,EAEL,KAAK,+BAA+B,EACpC,KAAK,cAAc,EACpB,MAAM,gCAAgC,CAAC;AAGxC;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,+BAA+B;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,4BAA4B;IAC5B,UAAU,EAAE,OAAO,CAAC;IACpB,gDAAgD;IAChD,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,kBAAkB;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,2DAA2D;IAC3D,MAAM,EAAE,mBAAmB,GAAG,IAAI,CAAC;IACnC,yBAAyB;IACzB,UAAU,EAAE,cAAc,CAAC;CAC5B;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,iCAAiC;IACjC,UAAU,EAAE,cAAc,CAAC;IAC3B,yDAAyD;IACzD,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,gDAAgD;IAChD,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/B;AAED;;GAEG;AACH,MAAM,WAAW,4BAA4B;IAC3C,0DAA0D;IAC1D,QAAQ,CAAC,iBAAiB,CAAC,EAAE,+BAA+B,CAAC,mBAAmB,CAAC,GAAG,SAAS,CAAC;CAC/F;AAyED;;;;;;;;;;;GAWG;AACH,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,UAAU,EAClB,OAAO,EAAE,EAAE,CAAC,WAAW,EACvB,eAAe,EAAE,GAAG,CAAC,MAAM,EAAE,qBAAqB,CAAC,EACnD,OAAO,CAAC,EAAE,4BAA4B,GACrC,aAAa,CAYf;AAoED;;;;;;;GAOG;AACH,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,UAAU,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC,CAY5E"}
|
package/dist/index.cjs
CHANGED
|
@@ -110,11 +110,35 @@ function normalizeDeclarationPolicy(input) {
|
|
|
110
110
|
displayName: normalizeScalarPolicy(input?.displayName)
|
|
111
111
|
};
|
|
112
112
|
}
|
|
113
|
+
function normalizeEnumMemberDisplayNamePolicy(input) {
|
|
114
|
+
if (input?.mode === "infer-if-missing") {
|
|
115
|
+
return {
|
|
116
|
+
mode: "infer-if-missing",
|
|
117
|
+
infer: input.infer
|
|
118
|
+
};
|
|
119
|
+
}
|
|
120
|
+
if (input?.mode === "require-explicit") {
|
|
121
|
+
return {
|
|
122
|
+
mode: "require-explicit",
|
|
123
|
+
infer: () => ""
|
|
124
|
+
};
|
|
125
|
+
}
|
|
126
|
+
return {
|
|
127
|
+
mode: "disabled",
|
|
128
|
+
infer: () => ""
|
|
129
|
+
};
|
|
130
|
+
}
|
|
131
|
+
function normalizeEnumMemberPolicy(input) {
|
|
132
|
+
return {
|
|
133
|
+
displayName: normalizeEnumMemberDisplayNamePolicy(input?.displayName)
|
|
134
|
+
};
|
|
135
|
+
}
|
|
113
136
|
function normalizeMetadataPolicy(input) {
|
|
114
137
|
return {
|
|
115
138
|
type: normalizeDeclarationPolicy(input?.type),
|
|
116
139
|
field: normalizeDeclarationPolicy(input?.field),
|
|
117
|
-
method: normalizeDeclarationPolicy(input?.method)
|
|
140
|
+
method: normalizeDeclarationPolicy(input?.method),
|
|
141
|
+
enumMember: normalizeEnumMemberPolicy(input?.enumMember)
|
|
118
142
|
};
|
|
119
143
|
}
|
|
120
144
|
function getDeclarationMetadataPolicy(policy, declarationKind) {
|
|
@@ -220,6 +244,40 @@ function pickResolvedMetadataValue(baseValue, overlayValue) {
|
|
|
220
244
|
}
|
|
221
245
|
return baseValue ?? overlayValue;
|
|
222
246
|
}
|
|
247
|
+
function resolveEnumMemberDisplayName(current, policy, context) {
|
|
248
|
+
if (current !== void 0) {
|
|
249
|
+
return current;
|
|
250
|
+
}
|
|
251
|
+
if (policy.mode === "require-explicit") {
|
|
252
|
+
throw new Error(
|
|
253
|
+
`Metadata policy requires explicit displayName for enum member "${context.logicalName}" on the ${context.surface} surface.`
|
|
254
|
+
);
|
|
255
|
+
}
|
|
256
|
+
if (policy.mode !== "infer-if-missing") {
|
|
257
|
+
return void 0;
|
|
258
|
+
}
|
|
259
|
+
const inferredValue = policy.infer(context).trim();
|
|
260
|
+
return inferredValue !== "" ? inferredValue : void 0;
|
|
261
|
+
}
|
|
262
|
+
function resolveEnumTypeMetadata(type, options) {
|
|
263
|
+
const members = type.members.map((member) => {
|
|
264
|
+
const displayName = resolveEnumMemberDisplayName(
|
|
265
|
+
member.displayName,
|
|
266
|
+
options.policy.enumMember.displayName,
|
|
267
|
+
{
|
|
268
|
+
surface: options.surface,
|
|
269
|
+
logicalName: String(member.value),
|
|
270
|
+
memberValue: member.value,
|
|
271
|
+
...options.buildContext !== void 0 && { buildContext: options.buildContext }
|
|
272
|
+
}
|
|
273
|
+
);
|
|
274
|
+
if (displayName === member.displayName) {
|
|
275
|
+
return member;
|
|
276
|
+
}
|
|
277
|
+
return displayName === void 0 ? { value: member.value } : { value: member.value, displayName };
|
|
278
|
+
});
|
|
279
|
+
return members.some((member, index) => member !== type.members[index]) ? { ...type, members } : type;
|
|
280
|
+
}
|
|
223
281
|
function resolveTypeNodeMetadata(type, options) {
|
|
224
282
|
switch (type.kind) {
|
|
225
283
|
case "array":
|
|
@@ -242,9 +300,10 @@ function resolveTypeNodeMetadata(type, options) {
|
|
|
242
300
|
...type,
|
|
243
301
|
members: type.members.map((member) => resolveTypeNodeMetadata(member, options))
|
|
244
302
|
};
|
|
303
|
+
case "enum":
|
|
304
|
+
return resolveEnumTypeMetadata(type, options);
|
|
245
305
|
case "reference":
|
|
246
306
|
case "primitive":
|
|
247
|
-
case "enum":
|
|
248
307
|
case "dynamic":
|
|
249
308
|
case "custom":
|
|
250
309
|
return type;
|
|
@@ -347,11 +406,10 @@ function getDisplayName(metadata) {
|
|
|
347
406
|
return metadata?.displayName?.value;
|
|
348
407
|
}
|
|
349
408
|
function resolveFormIRMetadata(ir, options) {
|
|
350
|
-
const
|
|
351
|
-
const metadata = resolveResolvedMetadata(ir.metadata, options.policy.type, {
|
|
409
|
+
const metadata = options.resolveRootTypeMetadata === false ? ir.metadata : resolveResolvedMetadata(ir.metadata, options.policy.type, {
|
|
352
410
|
surface: options.surface,
|
|
353
411
|
declarationKind: "type",
|
|
354
|
-
logicalName: rootLogicalName,
|
|
412
|
+
logicalName: options.rootLogicalName ?? ir.name ?? "FormSpec",
|
|
355
413
|
...options.buildContext !== void 0 && { buildContext: options.buildContext }
|
|
356
414
|
});
|
|
357
415
|
return {
|
|
@@ -387,7 +445,7 @@ function canonicalizeChainDSL(form, options) {
|
|
|
387
445
|
const metadataPolicy = normalizeMetadataPolicy(
|
|
388
446
|
options?.metadata ?? (0, import_internals._getFormSpecMetadataPolicy)(form)
|
|
389
447
|
);
|
|
390
|
-
|
|
448
|
+
const ir = {
|
|
391
449
|
kind: "form-ir",
|
|
392
450
|
irVersion: import_internals.IR_VERSION,
|
|
393
451
|
elements: canonicalizeElements(form.elements, metadataPolicy),
|
|
@@ -395,6 +453,13 @@ function canonicalizeChainDSL(form, options) {
|
|
|
395
453
|
typeRegistry: {},
|
|
396
454
|
provenance: CHAIN_DSL_PROVENANCE
|
|
397
455
|
};
|
|
456
|
+
return resolveFormIRMetadata(ir, {
|
|
457
|
+
policy: metadataPolicy,
|
|
458
|
+
surface: "chain-dsl",
|
|
459
|
+
// Chain DSL has no root/type-metadata authoring surface, so only resolve
|
|
460
|
+
// field/type-registry metadata and enum-member labels here.
|
|
461
|
+
resolveRootTypeMetadata: false
|
|
462
|
+
});
|
|
398
463
|
}
|
|
399
464
|
function canonicalizeElements(elements, metadataPolicy) {
|
|
400
465
|
return elements.map((element) => canonicalizeElement(element, metadataPolicy));
|
|
@@ -932,17 +997,25 @@ function assertNoSerializedNameCollisions(ir) {
|
|
|
932
997
|
// src/json-schema/ir-generator.ts
|
|
933
998
|
function makeContext(options) {
|
|
934
999
|
const vendorPrefix = options?.vendorPrefix ?? "x-formspec";
|
|
1000
|
+
const rawEnumSerialization = options?.enumSerialization;
|
|
935
1001
|
if (!vendorPrefix.startsWith("x-")) {
|
|
936
1002
|
throw new Error(
|
|
937
1003
|
`Invalid vendorPrefix "${vendorPrefix}". Extension JSON Schema keywords must start with "x-".`
|
|
938
1004
|
);
|
|
939
1005
|
}
|
|
1006
|
+
if (rawEnumSerialization !== void 0 && rawEnumSerialization !== "enum" && rawEnumSerialization !== "oneOf") {
|
|
1007
|
+
throw new Error(
|
|
1008
|
+
`Invalid enumSerialization "${rawEnumSerialization}". Expected "enum" or "oneOf".`
|
|
1009
|
+
);
|
|
1010
|
+
}
|
|
1011
|
+
const enumSerialization = rawEnumSerialization ?? "enum";
|
|
940
1012
|
return {
|
|
941
1013
|
defs: {},
|
|
942
1014
|
typeNameMap: {},
|
|
943
1015
|
typeRegistry: {},
|
|
944
1016
|
extensionRegistry: options?.extensionRegistry,
|
|
945
|
-
vendorPrefix
|
|
1017
|
+
vendorPrefix,
|
|
1018
|
+
enumSerialization
|
|
946
1019
|
};
|
|
947
1020
|
}
|
|
948
1021
|
function generateJsonSchemaFromIR(ir, options) {
|
|
@@ -1116,7 +1189,7 @@ function generateTypeNode(type, ctx) {
|
|
|
1116
1189
|
case "primitive":
|
|
1117
1190
|
return generatePrimitiveType(type);
|
|
1118
1191
|
case "enum":
|
|
1119
|
-
return generateEnumType(type);
|
|
1192
|
+
return generateEnumType(type, ctx);
|
|
1120
1193
|
case "array":
|
|
1121
1194
|
return generateArrayType(type, ctx);
|
|
1122
1195
|
case "object":
|
|
@@ -1142,20 +1215,37 @@ function generatePrimitiveType(type) {
|
|
|
1142
1215
|
type: type.primitiveKind === "integer" || type.primitiveKind === "bigint" ? "integer" : type.primitiveKind
|
|
1143
1216
|
};
|
|
1144
1217
|
}
|
|
1145
|
-
function generateEnumType(type) {
|
|
1146
|
-
|
|
1147
|
-
if (hasDisplayNames) {
|
|
1218
|
+
function generateEnumType(type, ctx) {
|
|
1219
|
+
if (ctx.enumSerialization === "oneOf") {
|
|
1148
1220
|
return {
|
|
1149
|
-
oneOf: type.members.map((m) => {
|
|
1150
|
-
const
|
|
1151
|
-
|
|
1152
|
-
|
|
1153
|
-
}
|
|
1154
|
-
return entry;
|
|
1155
|
-
})
|
|
1221
|
+
oneOf: type.members.map((m) => ({
|
|
1222
|
+
const: m.value,
|
|
1223
|
+
title: m.displayName ?? String(m.value)
|
|
1224
|
+
}))
|
|
1156
1225
|
};
|
|
1157
1226
|
}
|
|
1158
|
-
|
|
1227
|
+
const schema = { enum: type.members.map((m) => m.value) };
|
|
1228
|
+
const displayNames = buildEnumDisplayNameExtension(type);
|
|
1229
|
+
if (displayNames !== void 0) {
|
|
1230
|
+
schema[`${ctx.vendorPrefix}-display-names`] = displayNames;
|
|
1231
|
+
}
|
|
1232
|
+
return schema;
|
|
1233
|
+
}
|
|
1234
|
+
function buildEnumDisplayNameExtension(type) {
|
|
1235
|
+
if (!type.members.some((member) => member.displayName !== void 0)) {
|
|
1236
|
+
return void 0;
|
|
1237
|
+
}
|
|
1238
|
+
const displayNames = /* @__PURE__ */ Object.create(null);
|
|
1239
|
+
for (const member of type.members) {
|
|
1240
|
+
const key = String(member.value);
|
|
1241
|
+
if (Object.hasOwn(displayNames, key)) {
|
|
1242
|
+
throw new Error(
|
|
1243
|
+
`Enum display-name key "${key}" is ambiguous after stringification. Use oneOf serialization for mixed string/number enum values that collide.`
|
|
1244
|
+
);
|
|
1245
|
+
}
|
|
1246
|
+
displayNames[key] = member.displayName ?? key;
|
|
1247
|
+
}
|
|
1248
|
+
return displayNames;
|
|
1159
1249
|
}
|
|
1160
1250
|
function generateArrayType(type, ctx) {
|
|
1161
1251
|
return {
|
|
@@ -1548,11 +1638,17 @@ function assignVendorPrefixedExtensionKeywords(schema, extensionSchema, vendorPr
|
|
|
1548
1638
|
|
|
1549
1639
|
// src/json-schema/generator.ts
|
|
1550
1640
|
function generateJsonSchema(form, options) {
|
|
1641
|
+
const metadata = options?.metadata;
|
|
1642
|
+
const vendorPrefix = options?.vendorPrefix;
|
|
1643
|
+
const enumSerialization = options?.enumSerialization;
|
|
1551
1644
|
const ir = canonicalizeChainDSL(
|
|
1552
1645
|
form,
|
|
1553
|
-
|
|
1646
|
+
metadata !== void 0 ? { metadata } : void 0
|
|
1554
1647
|
);
|
|
1555
|
-
const internalOptions =
|
|
1648
|
+
const internalOptions = vendorPrefix === void 0 && enumSerialization === void 0 ? void 0 : {
|
|
1649
|
+
...vendorPrefix !== void 0 && { vendorPrefix },
|
|
1650
|
+
...enumSerialization !== void 0 && { enumSerialization }
|
|
1651
|
+
};
|
|
1556
1652
|
return generateJsonSchemaFromIR(ir, internalOptions);
|
|
1557
1653
|
}
|
|
1558
1654
|
|
|
@@ -5487,6 +5583,7 @@ function generateSchemasFromClass(options) {
|
|
|
5487
5583
|
{
|
|
5488
5584
|
extensionRegistry: options.extensionRegistry,
|
|
5489
5585
|
metadata: options.metadata,
|
|
5586
|
+
enumSerialization: options.enumSerialization,
|
|
5490
5587
|
vendorPrefix: options.vendorPrefix
|
|
5491
5588
|
}
|
|
5492
5589
|
);
|
|
@@ -5616,6 +5713,7 @@ function generateSchemasFromDetailedProgramContext(ctx, filePath, typeName, opti
|
|
|
5616
5713
|
{
|
|
5617
5714
|
extensionRegistry: options.extensionRegistry,
|
|
5618
5715
|
metadata: options.metadata,
|
|
5716
|
+
enumSerialization: options.enumSerialization,
|
|
5619
5717
|
vendorPrefix: options.vendorPrefix
|
|
5620
5718
|
}
|
|
5621
5719
|
);
|
|
@@ -5815,7 +5913,7 @@ function toStandaloneJsonSchema(root, typeRegistry, options) {
|
|
|
5815
5913
|
column: 0
|
|
5816
5914
|
}
|
|
5817
5915
|
};
|
|
5818
|
-
const
|
|
5916
|
+
const ir = resolveFormIRMetadata(
|
|
5819
5917
|
{
|
|
5820
5918
|
kind: "form-ir",
|
|
5821
5919
|
name: root.name,
|
|
@@ -5826,8 +5924,17 @@ function toStandaloneJsonSchema(root, typeRegistry, options) {
|
|
|
5826
5924
|
typeRegistry,
|
|
5827
5925
|
provenance: syntheticField.provenance
|
|
5828
5926
|
},
|
|
5927
|
+
{
|
|
5928
|
+
policy: normalizeMetadataPolicy(options?.metadata),
|
|
5929
|
+
surface: "tsdoc",
|
|
5930
|
+
rootLogicalName: root.name
|
|
5931
|
+
}
|
|
5932
|
+
);
|
|
5933
|
+
const schema = generateJsonSchemaFromIR(
|
|
5934
|
+
ir,
|
|
5829
5935
|
{
|
|
5830
5936
|
extensionRegistry: options?.extensionRegistry,
|
|
5937
|
+
enumSerialization: options?.enumSerialization,
|
|
5831
5938
|
vendorPrefix: options?.vendorPrefix
|
|
5832
5939
|
}
|
|
5833
5940
|
);
|
|
@@ -5854,6 +5961,7 @@ function generateSchemasFromAnalysis(analysis, filePath, options) {
|
|
|
5854
5961
|
{ file: filePath },
|
|
5855
5962
|
{
|
|
5856
5963
|
extensionRegistry: options?.extensionRegistry,
|
|
5964
|
+
enumSerialization: options?.enumSerialization,
|
|
5857
5965
|
metadata: options?.metadata,
|
|
5858
5966
|
vendorPrefix: options?.vendorPrefix
|
|
5859
5967
|
}
|
|
@@ -6251,8 +6359,19 @@ function buildFormSchemas(form, options) {
|
|
|
6251
6359
|
};
|
|
6252
6360
|
}
|
|
6253
6361
|
function writeSchemas(form, options) {
|
|
6254
|
-
const {
|
|
6255
|
-
|
|
6362
|
+
const {
|
|
6363
|
+
outDir,
|
|
6364
|
+
name = "schema",
|
|
6365
|
+
indent = 2,
|
|
6366
|
+
vendorPrefix,
|
|
6367
|
+
enumSerialization,
|
|
6368
|
+
metadata
|
|
6369
|
+
} = options;
|
|
6370
|
+
const buildOptions = vendorPrefix === void 0 && enumSerialization === void 0 && metadata === void 0 ? void 0 : {
|
|
6371
|
+
...vendorPrefix !== void 0 && { vendorPrefix },
|
|
6372
|
+
...enumSerialization !== void 0 && { enumSerialization },
|
|
6373
|
+
...metadata !== void 0 && { metadata }
|
|
6374
|
+
};
|
|
6256
6375
|
const { jsonSchema, uiSchema: uiSchema2 } = buildFormSchemas(form, buildOptions);
|
|
6257
6376
|
if (!fs.existsSync(outDir)) {
|
|
6258
6377
|
fs.mkdirSync(outDir, { recursive: true });
|