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

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) {
@@ -6697,6 +6760,8 @@ function annotationKey(annotation) {
6697
6760
 
6698
6761
  // src/index.ts
6699
6762
  function buildFormSchemas(form, options) {
6763
+ const logger = options?.logger ?? noopLogger3;
6764
+ logger.debug("buildFormSchemas: starting schema generation");
6700
6765
  return {
6701
6766
  jsonSchema: generateJsonSchema(form, options),
6702
6767
  uiSchema: generateUiSchema(form, options)
@@ -6709,12 +6774,15 @@ function writeSchemas(form, options) {
6709
6774
  indent = 2,
6710
6775
  vendorPrefix,
6711
6776
  enumSerialization,
6712
- metadata
6777
+ metadata,
6778
+ logger: rawLogger
6713
6779
  } = options;
6714
- const buildOptions = vendorPrefix === void 0 && enumSerialization === void 0 && metadata === void 0 ? void 0 : {
6780
+ const logger = (rawLogger ?? noopLogger3).child({ stage: "write" });
6781
+ const buildOptions = vendorPrefix === void 0 && enumSerialization === void 0 && metadata === void 0 ? { logger: rawLogger } : {
6715
6782
  ...vendorPrefix !== void 0 && { vendorPrefix },
6716
6783
  ...enumSerialization !== void 0 && { enumSerialization },
6717
- ...metadata !== void 0 && { metadata }
6784
+ ...metadata !== void 0 && { metadata },
6785
+ logger: rawLogger
6718
6786
  };
6719
6787
  const { jsonSchema, uiSchema: uiSchema2 } = buildFormSchemas(form, buildOptions);
6720
6788
  if (!fs.existsSync(outDir)) {
@@ -6722,7 +6790,9 @@ function writeSchemas(form, options) {
6722
6790
  }
6723
6791
  const jsonSchemaPath = path3.join(outDir, `${name}-schema.json`);
6724
6792
  const uiSchemaPath = path3.join(outDir, `${name}-uischema.json`);
6793
+ logger.debug("writing JSON Schema", { path: jsonSchemaPath });
6725
6794
  fs.writeFileSync(jsonSchemaPath, JSON.stringify(jsonSchema, null, indent));
6795
+ logger.debug("writing UI Schema", { path: uiSchemaPath });
6726
6796
  fs.writeFileSync(uiSchemaPath, JSON.stringify(uiSchema2, null, indent));
6727
6797
  return { jsonSchemaPath, uiSchemaPath };
6728
6798
  }