@formspec/build 0.1.0-alpha.52 → 0.1.0-alpha.54

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/index.d.ts CHANGED
@@ -22,7 +22,7 @@
22
22
  *
23
23
  * @packageDocumentation
24
24
  */
25
- import type { FormElement, FormSpec } from "@formspec/core";
25
+ import type { FormElement, FormSpec, LoggerLike } from "@formspec/core";
26
26
  import { type GenerateJsonSchemaOptions } from "./json-schema/generator.js";
27
27
  import { type GenerateUiSchemaOptions } from "./ui-schema/generator.js";
28
28
  import { type JsonSchema2020 } from "./json-schema/ir-generator.js";
@@ -72,6 +72,11 @@ export interface BuildResult {
72
72
  * @public
73
73
  */
74
74
  export interface BuildFormSchemasOptions extends GenerateJsonSchemaOptions, GenerateUiSchemaOptions {
75
+ /**
76
+ * Optional logger for diagnostic output. Defaults to a no-op logger so
77
+ * existing callers produce no output.
78
+ */
79
+ readonly logger?: LoggerLike | undefined;
75
80
  }
76
81
  /**
77
82
  * Builds both JSON Schema and UI Schema from a FormSpec.
@@ -115,6 +120,11 @@ export interface WriteSchemasOptions extends GenerateJsonSchemaOptions {
115
120
  readonly name?: string;
116
121
  /** Number of spaces for JSON indentation. Defaults to 2 */
117
122
  readonly indent?: number;
123
+ /**
124
+ * Optional logger for diagnostic output. Defaults to a no-op logger so
125
+ * existing callers produce no output.
126
+ */
127
+ readonly logger?: LoggerLike | undefined;
118
128
  }
119
129
  /**
120
130
  * Result of writing schemas to disk.
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -1,3 +1,9 @@
1
+ // src/index.ts
2
+ import { noopLogger as noopLogger3 } from "@formspec/core";
3
+
4
+ // src/json-schema/generator.ts
5
+ import { noopLogger } from "@formspec/core";
6
+
1
7
  // src/canonicalize/chain-dsl-canonicalizer.ts
2
8
  import { IR_VERSION, _getFormSpecMetadataPolicy } from "@formspec/core/internals";
3
9
 
@@ -1654,10 +1660,14 @@ function assignVendorPrefixedExtensionKeywords(schema, extensionSchema, vendorPr
1654
1660
 
1655
1661
  // src/json-schema/generator.ts
1656
1662
  function generateJsonSchema(form, options) {
1663
+ const logger = (options?.logger ?? noopLogger).child({ stage: "ir" });
1657
1664
  const metadata = options?.metadata;
1658
1665
  const vendorPrefix = options?.vendorPrefix;
1659
1666
  const enumSerialization = options?.enumSerialization;
1667
+ logger.debug("canonicalizing chain DSL to IR");
1660
1668
  const ir = canonicalizeChainDSL(form, metadata !== void 0 ? { metadata } : void 0);
1669
+ const schemaLogger = (options?.logger ?? noopLogger).child({ stage: "schema" });
1670
+ schemaLogger.debug("generating JSON Schema from IR");
1661
1671
  const internalOptions = vendorPrefix === void 0 && enumSerialization === void 0 ? void 0 : {
1662
1672
  ...vendorPrefix !== void 0 && { vendorPrefix },
1663
1673
  ...enumSerialization !== void 0 && { enumSerialization }
@@ -1665,6 +1675,9 @@ function generateJsonSchema(form, options) {
1665
1675
  return generateJsonSchemaFromIR(ir, internalOptions);
1666
1676
  }
1667
1677
 
1678
+ // src/ui-schema/generator.ts
1679
+ import { noopLogger as noopLogger2 } from "@formspec/core";
1680
+
1668
1681
  // src/ui-schema/schema.ts
1669
1682
  import { z } from "zod";
1670
1683
  var jsonPointerSchema = z.string();
@@ -1924,10 +1937,14 @@ function collectFieldNameMap(elements) {
1924
1937
 
1925
1938
  // src/ui-schema/generator.ts
1926
1939
  function generateUiSchema(form, options) {
1940
+ const logger = (options?.logger ?? noopLogger2).child({ stage: "ir" });
1941
+ logger.debug("canonicalizing chain DSL to IR for UI Schema generation");
1927
1942
  const ir = canonicalizeChainDSL(
1928
1943
  form,
1929
1944
  options?.metadata !== void 0 ? { metadata: options.metadata } : void 0
1930
1945
  );
1946
+ const schemaLogger = (options?.logger ?? noopLogger2).child({ stage: "schema" });
1947
+ schemaLogger.debug("generating UI Schema from IR");
1931
1948
  return generateUiSchemaFromIR(ir);
1932
1949
  }
1933
1950
 
@@ -2388,39 +2405,85 @@ function isNonReferenceIdentifier(node) {
2388
2405
  }
2389
2406
  return false;
2390
2407
  }
2391
- function statementReferencesImportedName(statement, importedNames) {
2408
+ function astReferencesImportedName(root, importedNames) {
2392
2409
  if (importedNames.size === 0) {
2393
2410
  return false;
2394
2411
  }
2395
- let referencesImportedName = false;
2412
+ let found = false;
2396
2413
  const visit = (node) => {
2397
- if (referencesImportedName) {
2398
- return;
2399
- }
2414
+ if (found) return;
2400
2415
  if (ts4.isIdentifier(node) && importedNames.has(node.text) && !isNonReferenceIdentifier(node)) {
2401
- referencesImportedName = true;
2416
+ found = true;
2402
2417
  return;
2403
2418
  }
2404
2419
  ts4.forEachChild(node, visit);
2405
2420
  };
2406
- visit(statement);
2407
- return referencesImportedName;
2421
+ visit(root);
2422
+ return found;
2423
+ }
2424
+ function getObjectMembers(statement) {
2425
+ if (ts4.isInterfaceDeclaration(statement)) {
2426
+ return statement.members;
2427
+ }
2428
+ if (ts4.isTypeLiteralNode(statement.type)) {
2429
+ return statement.type.members;
2430
+ }
2431
+ return void 0;
2432
+ }
2433
+ function rewriteImportedMemberTypes(statement, sourceFile, importedNames) {
2434
+ const members = getObjectMembers(statement);
2435
+ if (members === void 0) {
2436
+ return null;
2437
+ }
2438
+ const replacements = [];
2439
+ for (const member of members) {
2440
+ if (!ts4.isPropertySignature(member)) {
2441
+ if (astReferencesImportedName(member, importedNames)) {
2442
+ return null;
2443
+ }
2444
+ continue;
2445
+ }
2446
+ const typeAnnotation = member.type;
2447
+ if (typeAnnotation === void 0) continue;
2448
+ if (astReferencesImportedName(typeAnnotation, importedNames)) {
2449
+ replacements.push({
2450
+ start: typeAnnotation.getStart(sourceFile),
2451
+ end: typeAnnotation.getEnd()
2452
+ });
2453
+ }
2454
+ }
2455
+ if (replacements.length === 0) {
2456
+ return statement.getText(sourceFile);
2457
+ }
2458
+ const stmtStart = statement.getStart(sourceFile);
2459
+ let result = statement.getText(sourceFile);
2460
+ for (const { start, end } of [...replacements].reverse()) {
2461
+ result = result.slice(0, start - stmtStart) + "unknown" + result.slice(end - stmtStart);
2462
+ }
2463
+ return result;
2408
2464
  }
2409
2465
  function buildSupportingDeclarations(sourceFile, extensionTypeNames) {
2410
2466
  const importedNames = collectImportedNames(sourceFile);
2411
2467
  const importedNamesToSkip = new Set(
2412
2468
  [...importedNames].filter((name) => !extensionTypeNames.has(name))
2413
2469
  );
2414
- return sourceFile.statements.filter((statement) => {
2415
- if (ts4.isImportDeclaration(statement)) return false;
2416
- if (ts4.isImportEqualsDeclaration(statement)) return false;
2417
- if (ts4.isExportDeclaration(statement) && statement.moduleSpecifier !== void 0)
2418
- return false;
2419
- if (statementReferencesImportedName(statement, importedNamesToSkip)) {
2420
- return false;
2470
+ const result = [];
2471
+ for (const statement of sourceFile.statements) {
2472
+ if (ts4.isImportDeclaration(statement)) continue;
2473
+ if (ts4.isImportEqualsDeclaration(statement)) continue;
2474
+ if (ts4.isExportDeclaration(statement) && statement.moduleSpecifier !== void 0) continue;
2475
+ if (!astReferencesImportedName(statement, importedNamesToSkip)) {
2476
+ result.push(statement.getText(sourceFile));
2477
+ continue;
2421
2478
  }
2422
- return true;
2423
- }).map((statement) => statement.getText(sourceFile));
2479
+ if (ts4.isInterfaceDeclaration(statement) || ts4.isTypeAliasDeclaration(statement)) {
2480
+ const rewritten = rewriteImportedMemberTypes(statement, sourceFile, importedNamesToSkip);
2481
+ if (rewritten !== null) {
2482
+ result.push(rewritten);
2483
+ }
2484
+ }
2485
+ }
2486
+ return result;
2424
2487
  }
2425
2488
  function pushUniqueCompilerDiagnostics(target, additions) {
2426
2489
  for (const diagnostic of additions) {
@@ -4264,10 +4327,22 @@ function resolveTypeNode(type, checker, file, typeRegistry, visiting, sourceNode
4264
4327
  sourceNode
4265
4328
  );
4266
4329
  if (customTypeLookup !== null) {
4330
+ const typeId = customTypeIdFromLookup(customTypeLookup);
4331
+ let payload = null;
4332
+ if (customTypeLookup.registration.extractPayload !== void 0) {
4333
+ try {
4334
+ payload = customTypeLookup.registration.extractPayload(type, checker) ?? null;
4335
+ } catch (cause) {
4336
+ throw new Error(
4337
+ `extractPayload for custom type "${customTypeLookup.registration.typeName}" in extension "${customTypeLookup.extensionId}" threw`,
4338
+ { cause }
4339
+ );
4340
+ }
4341
+ }
4267
4342
  return {
4268
4343
  kind: "custom",
4269
- typeId: customTypeIdFromLookup(customTypeLookup),
4270
- payload: null
4344
+ typeId,
4345
+ payload
4271
4346
  };
4272
4347
  }
4273
4348
  const primitiveAlias = tryResolveNamedPrimitiveAlias(
@@ -6697,6 +6772,8 @@ function annotationKey(annotation) {
6697
6772
 
6698
6773
  // src/index.ts
6699
6774
  function buildFormSchemas(form, options) {
6775
+ const logger = options?.logger ?? noopLogger3;
6776
+ logger.debug("buildFormSchemas: starting schema generation");
6700
6777
  return {
6701
6778
  jsonSchema: generateJsonSchema(form, options),
6702
6779
  uiSchema: generateUiSchema(form, options)
@@ -6709,12 +6786,15 @@ function writeSchemas(form, options) {
6709
6786
  indent = 2,
6710
6787
  vendorPrefix,
6711
6788
  enumSerialization,
6712
- metadata
6789
+ metadata,
6790
+ logger: rawLogger
6713
6791
  } = options;
6714
- const buildOptions = vendorPrefix === void 0 && enumSerialization === void 0 && metadata === void 0 ? void 0 : {
6792
+ const logger = (rawLogger ?? noopLogger3).child({ stage: "write" });
6793
+ const buildOptions = vendorPrefix === void 0 && enumSerialization === void 0 && metadata === void 0 ? { logger: rawLogger } : {
6715
6794
  ...vendorPrefix !== void 0 && { vendorPrefix },
6716
6795
  ...enumSerialization !== void 0 && { enumSerialization },
6717
- ...metadata !== void 0 && { metadata }
6796
+ ...metadata !== void 0 && { metadata },
6797
+ logger: rawLogger
6718
6798
  };
6719
6799
  const { jsonSchema, uiSchema: uiSchema2 } = buildFormSchemas(form, buildOptions);
6720
6800
  if (!fs.existsSync(outDir)) {
@@ -6722,7 +6802,9 @@ function writeSchemas(form, options) {
6722
6802
  }
6723
6803
  const jsonSchemaPath = path3.join(outDir, `${name}-schema.json`);
6724
6804
  const uiSchemaPath = path3.join(outDir, `${name}-uischema.json`);
6805
+ logger.debug("writing JSON Schema", { path: jsonSchemaPath });
6725
6806
  fs.writeFileSync(jsonSchemaPath, JSON.stringify(jsonSchema, null, indent));
6807
+ logger.debug("writing UI Schema", { path: uiSchemaPath });
6726
6808
  fs.writeFileSync(uiSchemaPath, JSON.stringify(uiSchema2, null, indent));
6727
6809
  return { jsonSchemaPath, uiSchemaPath };
6728
6810
  }