@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.
- package/dist/__tests__/fixtures/class-schema-regressions.d.ts +7 -8
- package/dist/__tests__/fixtures/class-schema-regressions.d.ts.map +1 -1
- package/dist/__tests__/fixtures/example-a-builtins.d.ts +5 -4
- package/dist/__tests__/fixtures/example-a-builtins.d.ts.map +1 -1
- package/dist/__tests__/fixtures/example-interface-types.d.ts +7 -2
- package/dist/__tests__/fixtures/example-interface-types.d.ts.map +1 -1
- package/dist/__tests__/fixtures/sample-forms.d.ts +1 -1
- package/dist/__tests__/parity/utils.d.ts +3 -2
- package/dist/__tests__/parity/utils.d.ts.map +1 -1
- package/dist/analyzer/class-analyzer.d.ts +1 -1
- package/dist/analyzer/class-analyzer.d.ts.map +1 -1
- package/dist/analyzer/tsdoc-parser.d.ts +8 -7
- package/dist/analyzer/tsdoc-parser.d.ts.map +1 -1
- package/dist/browser.cjs +6 -3
- package/dist/browser.cjs.map +1 -1
- package/dist/browser.js +4 -1
- package/dist/browser.js.map +1 -1
- package/dist/build.d.ts +150 -2
- package/dist/cli.cjs +44 -47
- package/dist/cli.cjs.map +1 -1
- package/dist/cli.js +25 -28
- package/dist/cli.js.map +1 -1
- package/dist/extensions/registry.d.ts +4 -0
- package/dist/extensions/registry.d.ts.map +1 -1
- package/dist/generators/class-schema.d.ts +12 -0
- package/dist/generators/class-schema.d.ts.map +1 -1
- package/dist/generators/mixed-authoring.d.ts +6 -0
- package/dist/generators/mixed-authoring.d.ts.map +1 -1
- package/dist/index.cjs +42 -45
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +12 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +25 -28
- package/dist/index.js.map +1 -1
- package/dist/internals.cjs +42 -45
- package/dist/internals.cjs.map +1 -1
- package/dist/internals.js +25 -28
- package/dist/internals.js.map +1 -1
- package/dist/json-schema/generator.d.ts +4 -0
- package/dist/json-schema/generator.d.ts.map +1 -1
- package/dist/json-schema/ir-generator.d.ts +6 -0
- package/dist/json-schema/ir-generator.d.ts.map +1 -1
- package/dist/json-schema/schema.d.ts +7 -0
- package/dist/json-schema/schema.d.ts.map +1 -1
- package/dist/json-schema/types.d.ts +18 -2
- package/dist/json-schema/types.d.ts.map +1 -1
- package/dist/ui-schema/generator.d.ts +2 -0
- package/dist/ui-schema/generator.d.ts.map +1 -1
- package/dist/ui-schema/schema.d.ts +77 -0
- package/dist/ui-schema/schema.d.ts.map +1 -1
- package/dist/ui-schema/types.d.ts +2 -0
- package/dist/ui-schema/types.d.ts.map +1 -1
- package/dist/validate/constraint-validator.d.ts +1 -1
- package/dist/validate/constraint-validator.d.ts.map +1 -1
- package/package.json +4 -4
package/dist/internals.cjs
CHANGED
|
@@ -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
|
|
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", "
|
|
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,
|
|
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,
|
|
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,
|
|
649
|
+
const placement = (0, import_internal.resolveDeclarationPlacement)(node);
|
|
650
650
|
if (placement === null) {
|
|
651
651
|
return [];
|
|
652
652
|
}
|
|
653
|
-
const definition = (0,
|
|
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,
|
|
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,
|
|
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,
|
|
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 === "
|
|
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,
|
|
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
|
-
|
|
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
|
-
|
|
955
|
-
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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
|
|
3059
|
+
var import_internal2 = require("@formspec/analysis/internal");
|
|
3063
3060
|
function validateFieldNode(ctx, field) {
|
|
3064
|
-
const analysis = (0,
|
|
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,
|
|
3079
|
+
const analysis = (0, import_internal2.analyzeConstraintTargets)(
|
|
3083
3080
|
qualifiedName,
|
|
3084
3081
|
property.type,
|
|
3085
3082
|
property.constraints,
|