@formspec/build 0.1.0-alpha.20 → 0.1.0-alpha.21

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 (55) hide show
  1. package/dist/__tests__/fixtures/class-schema-regressions.d.ts +7 -8
  2. package/dist/__tests__/fixtures/class-schema-regressions.d.ts.map +1 -1
  3. package/dist/__tests__/fixtures/example-a-builtins.d.ts +5 -4
  4. package/dist/__tests__/fixtures/example-a-builtins.d.ts.map +1 -1
  5. package/dist/__tests__/fixtures/example-interface-types.d.ts +7 -2
  6. package/dist/__tests__/fixtures/example-interface-types.d.ts.map +1 -1
  7. package/dist/__tests__/fixtures/sample-forms.d.ts +1 -1
  8. package/dist/__tests__/parity/utils.d.ts +3 -2
  9. package/dist/__tests__/parity/utils.d.ts.map +1 -1
  10. package/dist/analyzer/class-analyzer.d.ts +1 -1
  11. package/dist/analyzer/class-analyzer.d.ts.map +1 -1
  12. package/dist/analyzer/tsdoc-parser.d.ts +8 -7
  13. package/dist/analyzer/tsdoc-parser.d.ts.map +1 -1
  14. package/dist/browser.cjs +6 -3
  15. package/dist/browser.cjs.map +1 -1
  16. package/dist/browser.js +4 -1
  17. package/dist/browser.js.map +1 -1
  18. package/dist/build.d.ts +150 -2
  19. package/dist/cli.cjs +44 -47
  20. package/dist/cli.cjs.map +1 -1
  21. package/dist/cli.js +25 -28
  22. package/dist/cli.js.map +1 -1
  23. package/dist/extensions/registry.d.ts +4 -0
  24. package/dist/extensions/registry.d.ts.map +1 -1
  25. package/dist/generators/class-schema.d.ts +12 -0
  26. package/dist/generators/class-schema.d.ts.map +1 -1
  27. package/dist/generators/mixed-authoring.d.ts +6 -0
  28. package/dist/generators/mixed-authoring.d.ts.map +1 -1
  29. package/dist/index.cjs +42 -45
  30. package/dist/index.cjs.map +1 -1
  31. package/dist/index.d.ts +12 -0
  32. package/dist/index.d.ts.map +1 -1
  33. package/dist/index.js +25 -28
  34. package/dist/index.js.map +1 -1
  35. package/dist/internals.cjs +42 -45
  36. package/dist/internals.cjs.map +1 -1
  37. package/dist/internals.js +25 -28
  38. package/dist/internals.js.map +1 -1
  39. package/dist/json-schema/generator.d.ts +4 -0
  40. package/dist/json-schema/generator.d.ts.map +1 -1
  41. package/dist/json-schema/ir-generator.d.ts +6 -0
  42. package/dist/json-schema/ir-generator.d.ts.map +1 -1
  43. package/dist/json-schema/schema.d.ts +7 -0
  44. package/dist/json-schema/schema.d.ts.map +1 -1
  45. package/dist/json-schema/types.d.ts +18 -2
  46. package/dist/json-schema/types.d.ts.map +1 -1
  47. package/dist/ui-schema/generator.d.ts +2 -0
  48. package/dist/ui-schema/generator.d.ts.map +1 -1
  49. package/dist/ui-schema/schema.d.ts +77 -0
  50. package/dist/ui-schema/schema.d.ts.map +1 -1
  51. package/dist/ui-schema/types.d.ts +2 -0
  52. package/dist/ui-schema/types.d.ts.map +1 -1
  53. package/dist/validate/constraint-validator.d.ts +1 -1
  54. package/dist/validate/constraint-validator.d.ts.map +1 -1
  55. package/package.json +4 -4
@@ -449,7 +449,7 @@ var ts2 = __toESM(require("typescript"), 1);
449
449
 
450
450
  // src/analyzer/tsdoc-parser.ts
451
451
  var ts = __toESM(require("typescript"), 1);
452
- var import_analysis = require("@formspec/analysis");
452
+ var import_internal = require("@formspec/analysis/internal");
453
453
  var import_tsdoc = require("@microsoft/tsdoc");
454
454
  var import_core3 = require("@formspec/core");
455
455
  var TAGS_REQUIRING_RAW_TEXT = /* @__PURE__ */ new Set(["pattern", "enumOptions", "defaultValue"]);
@@ -464,7 +464,7 @@ function createFormSpecTSDocConfig(extensionTagNames = []) {
464
464
  })
465
465
  );
466
466
  }
467
- for (const tagName of ["displayName", "description", "format", "placeholder"]) {
467
+ for (const tagName of ["displayName", "format", "placeholder"]) {
468
468
  config.addTagDefinition(
469
469
  new import_tsdoc.TSDocTagDefinition({
470
470
  tagName: "@" + tagName,
@@ -543,12 +543,12 @@ function supportsConstraintCapability(type, checker, capability) {
543
543
  if (capability === void 0) {
544
544
  return true;
545
545
  }
546
- if ((0, import_analysis.hasTypeSemanticCapability)(type, checker, capability)) {
546
+ if ((0, import_internal.hasTypeSemanticCapability)(type, checker, capability)) {
547
547
  return true;
548
548
  }
549
549
  if (capability === "string-like") {
550
550
  const itemType = getArrayElementType(type, checker);
551
- return itemType !== null && (0, import_analysis.hasTypeSemanticCapability)(itemType, checker, capability);
551
+ return itemType !== null && (0, import_internal.hasTypeSemanticCapability)(itemType, checker, capability);
552
552
  }
553
553
  return false;
554
554
  }
@@ -646,11 +646,11 @@ function buildCompilerBackedConstraintDiagnostics(node, sourceFile, tagName, par
646
646
  if (checker === void 0 || subjectType === void 0) {
647
647
  return [];
648
648
  }
649
- const placement = (0, import_analysis.resolveDeclarationPlacement)(node);
649
+ const placement = (0, import_internal.resolveDeclarationPlacement)(node);
650
650
  if (placement === null) {
651
651
  return [];
652
652
  }
653
- const definition = (0, import_analysis.getTagDefinition)(tagName, options?.extensionRegistry?.extensions);
653
+ const definition = (0, import_internal.getTagDefinition)(tagName, options?.extensionRegistry?.extensions);
654
654
  if (definition === null) {
655
655
  return [];
656
656
  }
@@ -684,7 +684,7 @@ function buildCompilerBackedConstraintDiagnostics(node, sourceFile, tagName, par
684
684
  )
685
685
  ];
686
686
  }
687
- const resolution = (0, import_analysis.resolvePathTargetType)(subjectType, checker, target.path.segments);
687
+ const resolution = (0, import_internal.resolvePathTargetType)(subjectType, checker, target.path.segments);
688
688
  if (resolution.kind === "missing-property") {
689
689
  return [
690
690
  makeDiagnostic(
@@ -741,7 +741,7 @@ function buildCompilerBackedConstraintDiagnostics(node, sourceFile, tagName, par
741
741
  const subjectTypeText = checker.typeToString(subjectType, node, SYNTHETIC_TYPE_FORMAT_FLAGS);
742
742
  const hostType = options?.hostType ?? subjectType;
743
743
  const hostTypeText = checker.typeToString(hostType, node, SYNTHETIC_TYPE_FORMAT_FLAGS);
744
- const result = (0, import_analysis.checkSyntheticTagApplication)({
744
+ const result = (0, import_internal.checkSyntheticTagApplication)({
745
745
  tagName,
746
746
  placement,
747
747
  hostType: hostTypeText,
@@ -824,10 +824,8 @@ function parseTSDocTags(node, file = "", options) {
824
824
  const annotations = [];
825
825
  const diagnostics = [];
826
826
  let displayName;
827
- let description;
828
827
  let placeholder;
829
828
  let displayNameProvenance;
830
- let descriptionProvenance;
831
829
  let placeholderProvenance;
832
830
  const rawTextTags = [];
833
831
  const sourceFile = node.getSourceFile();
@@ -849,7 +847,7 @@ function parseTSDocTags(node, file = "", options) {
849
847
  import_tsdoc.TextRange.fromStringRange(sourceText, range.pos, range.end)
850
848
  );
851
849
  const docComment = parserContext.docComment;
852
- const parsedComment = (0, import_analysis.parseCommentBlock)(
850
+ const parsedComment = (0, import_internal.parseCommentBlock)(
853
851
  commentText,
854
852
  sharedCommentSyntaxOptions(options, range.pos)
855
853
  );
@@ -872,7 +870,7 @@ function parseTSDocTags(node, file = "", options) {
872
870
  for (const block of docComment.customBlocks) {
873
871
  const tagName = (0, import_core3.normalizeConstraintTagName)(block.blockTag.tagName.substring(1));
874
872
  const parsedTag = nextParsedTag(tagName);
875
- if (tagName === "displayName" || tagName === "description" || tagName === "format" || tagName === "placeholder") {
873
+ if (tagName === "displayName" || tagName === "format" || tagName === "placeholder") {
876
874
  const text2 = getBestBlockPayloadText(parsedTag, commentText, range.pos, block);
877
875
  if (text2 === "") continue;
878
876
  const provenance2 = parsedTag !== null ? provenanceForParsedTag(parsedTag, sourceFile, file) : provenanceForComment(range, sourceFile, file, tagName);
@@ -891,10 +889,6 @@ function parseTSDocTags(node, file = "", options) {
891
889
  provenance: provenance2
892
890
  });
893
891
  break;
894
- case "description":
895
- description = text2;
896
- descriptionProvenance = provenance2;
897
- break;
898
892
  case "placeholder":
899
893
  if (placeholder === void 0) {
900
894
  placeholder = text2;
@@ -922,7 +916,7 @@ function parseTSDocTags(node, file = "", options) {
922
916
  diagnostics.push(...compilerDiagnostics);
923
917
  continue;
924
918
  }
925
- const constraintNode = (0, import_analysis.parseConstraintTagValue)(
919
+ const constraintNode = (0, import_internal.parseConstraintTagValue)(
926
920
  tagName,
927
921
  text,
928
922
  provenance,
@@ -941,18 +935,26 @@ function parseTSDocTags(node, file = "", options) {
941
935
  provenance: provenanceForComment(range, sourceFile, file, "deprecated")
942
936
  });
943
937
  }
944
- if (description === void 0 && docComment.remarksBlock !== void 0) {
945
- const remarks = extractBlockText(docComment.remarksBlock).trim();
946
- if (remarks !== "") {
947
- description = remarks;
948
- descriptionProvenance = provenanceForComment(range, sourceFile, file, "remarks");
949
- }
950
- }
951
- if (description === void 0) {
938
+ {
952
939
  const summary = extractPlainText(docComment.summarySection).trim();
953
940
  if (summary !== "") {
954
- description = summary;
955
- descriptionProvenance = provenanceForComment(range, sourceFile, file, "summary");
941
+ annotations.push({
942
+ kind: "annotation",
943
+ annotationKind: "description",
944
+ value: summary,
945
+ provenance: provenanceForComment(range, sourceFile, file, "summary")
946
+ });
947
+ }
948
+ }
949
+ if (docComment.remarksBlock !== void 0) {
950
+ const remarksText = extractBlockText(docComment.remarksBlock).trim();
951
+ if (remarksText !== "") {
952
+ annotations.push({
953
+ kind: "annotation",
954
+ annotationKind: "remarks",
955
+ value: remarksText,
956
+ provenance: provenanceForComment(range, sourceFile, file, "remarks")
957
+ });
956
958
  }
957
959
  }
958
960
  }
@@ -965,14 +967,6 @@ function parseTSDocTags(node, file = "", options) {
965
967
  provenance: displayNameProvenance
966
968
  });
967
969
  }
968
- if (description !== void 0 && descriptionProvenance !== void 0) {
969
- annotations.push({
970
- kind: "annotation",
971
- annotationKind: "description",
972
- value: description,
973
- provenance: descriptionProvenance
974
- });
975
- }
976
970
  if (placeholder !== void 0 && placeholderProvenance !== void 0) {
977
971
  annotations.push({
978
972
  kind: "annotation",
@@ -992,7 +986,7 @@ function parseTSDocTags(node, file = "", options) {
992
986
  if (text === "") continue;
993
987
  const provenance = provenanceForParsedTag(rawTextTag.tag, sourceFile, file);
994
988
  if (rawTextTag.tag.normalizedTagName === "defaultValue") {
995
- const defaultValueNode = (0, import_analysis.parseDefaultValueTagValue)(text, provenance);
989
+ const defaultValueNode = (0, import_internal.parseDefaultValueTagValue)(text, provenance);
996
990
  annotations.push(defaultValueNode);
997
991
  continue;
998
992
  }
@@ -1009,7 +1003,7 @@ function parseTSDocTags(node, file = "", options) {
1009
1003
  diagnostics.push(...compilerDiagnostics);
1010
1004
  continue;
1011
1005
  }
1012
- const constraintNode = (0, import_analysis.parseConstraintTagValue)(
1006
+ const constraintNode = (0, import_internal.parseConstraintTagValue)(
1013
1007
  rawTextTag.tag.normalizedTagName,
1014
1008
  text,
1015
1009
  provenance,
@@ -1026,7 +1020,7 @@ function parseTSDocTags(node, file = "", options) {
1026
1020
  if (text === "") continue;
1027
1021
  const provenance = fallback.provenance;
1028
1022
  if (tagName === "defaultValue") {
1029
- const defaultValueNode = (0, import_analysis.parseDefaultValueTagValue)(text, provenance);
1023
+ const defaultValueNode = (0, import_internal.parseDefaultValueTagValue)(text, provenance);
1030
1024
  annotations.push(defaultValueNode);
1031
1025
  continue;
1032
1026
  }
@@ -1043,7 +1037,7 @@ function parseTSDocTags(node, file = "", options) {
1043
1037
  diagnostics.push(...compilerDiagnostics);
1044
1038
  continue;
1045
1039
  }
1046
- const constraintNode = (0, import_analysis.parseConstraintTagValue)(
1040
+ const constraintNode = (0, import_internal.parseConstraintTagValue)(
1047
1041
  tagName,
1048
1042
  text,
1049
1043
  provenance,
@@ -1069,7 +1063,7 @@ function extractDisplayNameMetadata(node) {
1069
1063
  if (range.kind !== ts.SyntaxKind.MultiLineCommentTrivia) continue;
1070
1064
  const commentText = sourceText.substring(range.pos, range.end);
1071
1065
  if (!commentText.startsWith("/**")) continue;
1072
- const parsed = (0, import_analysis.parseCommentBlock)(commentText);
1066
+ const parsed = (0, import_internal.parseCommentBlock)(commentText);
1073
1067
  for (const tag of parsed.tags) {
1074
1068
  if (tag.normalizedTagName !== "displayName") {
1075
1069
  continue;
@@ -1122,7 +1116,7 @@ function getSharedPayloadText(tag, commentText, commentOffset) {
1122
1116
  if (tag.payloadSpan === null) {
1123
1117
  return "";
1124
1118
  }
1125
- return (0, import_analysis.sliceCommentSpan)(commentText, tag.payloadSpan, {
1119
+ return (0, import_internal.sliceCommentSpan)(commentText, tag.payloadSpan, {
1126
1120
  offset: commentOffset
1127
1121
  }).trim();
1128
1122
  }
@@ -1148,7 +1142,7 @@ function collectRawTextFallbacks(node, file) {
1148
1142
  return fallbacks;
1149
1143
  }
1150
1144
  function isMemberTargetDisplayName(text) {
1151
- return (0, import_analysis.parseTagSyntax)("displayName", text).target !== null;
1145
+ return (0, import_internal.parseTagSyntax)("displayName", text).target !== null;
1152
1146
  }
1153
1147
  function provenanceForComment(range, sourceFile, file, tagName) {
1154
1148
  const { line, character } = sourceFile.getLineAndCharacterOfPosition(range.pos);
@@ -2758,6 +2752,9 @@ function applyAnnotations(schema, annotations, ctx) {
2758
2752
  case "description":
2759
2753
  schema.description = annotation.value;
2760
2754
  break;
2755
+ case "remarks":
2756
+ schema[`${ctx.vendorPrefix}-remarks`] = annotation.value;
2757
+ break;
2761
2758
  case "defaultValue":
2762
2759
  schema.default = annotation.value;
2763
2760
  break;
@@ -3059,9 +3056,9 @@ function generateUiSchemaFromIR(ir) {
3059
3056
  }
3060
3057
 
3061
3058
  // src/validate/constraint-validator.ts
3062
- var import_analysis2 = require("@formspec/analysis");
3059
+ var import_internal2 = require("@formspec/analysis/internal");
3063
3060
  function validateFieldNode(ctx, field) {
3064
- const analysis = (0, import_analysis2.analyzeConstraintTargets)(
3061
+ const analysis = (0, import_internal2.analyzeConstraintTargets)(
3065
3062
  field.name,
3066
3063
  field.type,
3067
3064
  field.constraints,
@@ -3079,7 +3076,7 @@ function validateFieldNode(ctx, field) {
3079
3076
  }
3080
3077
  function validateObjectProperty(ctx, parentName, property) {
3081
3078
  const qualifiedName = `${parentName}.${property.name}`;
3082
- const analysis = (0, import_analysis2.analyzeConstraintTargets)(
3079
+ const analysis = (0, import_internal2.analyzeConstraintTargets)(
3083
3080
  qualifiedName,
3084
3081
  property.type,
3085
3082
  property.constraints,