@formspec/build 0.1.0-alpha.47 → 0.1.0-alpha.49
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/analyzer/class-analyzer.d.ts.map +1 -1
- package/dist/analyzer/tsdoc-parser.d.ts.map +1 -1
- package/dist/cli.cjs +120 -4
- package/dist/cli.cjs.map +1 -1
- package/dist/cli.js +120 -4
- package/dist/cli.js.map +1 -1
- package/dist/generators/discovered-schema.d.ts.map +1 -1
- package/dist/index.cjs +119 -3
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +119 -3
- package/dist/index.js.map +1 -1
- package/dist/internals.cjs +98 -1
- package/dist/internals.cjs.map +1 -1
- package/dist/internals.js +98 -1
- package/dist/internals.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"class-analyzer.d.ts","sourceRoot":"","sources":["../../src/analyzer/class-analyzer.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"class-analyzer.d.ts","sourceRoot":"","sources":["../../src/analyzer/class-analyzer.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tsdoc-parser.d.ts","sourceRoot":"","sources":["../../src/analyzer/tsdoc-parser.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AAEH,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AACjC,OAAO,EAcL,KAAK,4BAA4B,EAIlC,MAAM,6BAA6B,CAAC;AAMrC,OAAO,EACL,KAAK,cAAc,EACnB,KAAK,cAAc,EAEnB,KAAK,UAAU,EACf,KAAK,QAAQ,EACd,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"tsdoc-parser.d.ts","sourceRoot":"","sources":["../../src/analyzer/tsdoc-parser.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AAEH,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AACjC,OAAO,EAcL,KAAK,4BAA4B,EAIlC,MAAM,6BAA6B,CAAC;AAMrC,OAAO,EACL,KAAK,cAAc,EACnB,KAAK,cAAc,EAEnB,KAAK,UAAU,EACf,KAAK,QAAQ,EACd,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AA+tBhE;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,4DAA4D;IAC5D,QAAQ,CAAC,WAAW,EAAE,SAAS,cAAc,EAAE,CAAC;IAChD,qEAAqE;IACrE,QAAQ,CAAC,WAAW,EAAE,SAAS,cAAc,EAAE,CAAC;IAChD,2EAA2E;IAC3E,QAAQ,CAAC,WAAW,EAAE,SAAS,4BAA4B,EAAE,CAAC;CAC/D;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC;;;OAGG;IACH,QAAQ,CAAC,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;IAC/C;;;OAGG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,QAAQ,CAAC;IAC9B,2EAA2E;IAC3E,QAAQ,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC;IAClC,2DAA2D;IAC3D,QAAQ,CAAC,WAAW,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC;IAC/B,4EAA4E;IAC5E,QAAQ,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC;CAC7B;AAED;;;;;;GAMG;AACH,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,kBAAkB,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC1D;AA2DD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,cAAc,CAC5B,IAAI,EAAE,EAAE,CAAC,IAAI,EACb,IAAI,SAAK,EACT,OAAO,CAAC,EAAE,iBAAiB,GAC1B,gBAAgB,CAyNlB;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,GAAG,OAAO,CAkB5D;AAED;;;;;GAKG;AACH,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,GAAG,mBAAmB,CAmC7E;AAMD;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,MAAM,GACX;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,aAAa,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAEpD"}
|
package/dist/cli.cjs
CHANGED
|
@@ -2464,6 +2464,90 @@ function supportsConstraintCapability(type, checker, capability) {
|
|
|
2464
2464
|
}
|
|
2465
2465
|
return false;
|
|
2466
2466
|
}
|
|
2467
|
+
function stripHintNullishUnion(type) {
|
|
2468
|
+
if (!type.isUnion()) {
|
|
2469
|
+
return type;
|
|
2470
|
+
}
|
|
2471
|
+
const nonNullish = type.types.filter(
|
|
2472
|
+
(member) => (member.flags & (ts.TypeFlags.Null | ts.TypeFlags.Undefined)) === 0
|
|
2473
|
+
);
|
|
2474
|
+
if (nonNullish.length === 1 && nonNullish[0] !== void 0) {
|
|
2475
|
+
return nonNullish[0];
|
|
2476
|
+
}
|
|
2477
|
+
return type;
|
|
2478
|
+
}
|
|
2479
|
+
function isCallableType(type) {
|
|
2480
|
+
return type.getCallSignatures().length > 0 || type.getConstructSignatures().length > 0;
|
|
2481
|
+
}
|
|
2482
|
+
function isUserEmittableHintProperty(property, declaration) {
|
|
2483
|
+
if (property.name.startsWith("__")) {
|
|
2484
|
+
return false;
|
|
2485
|
+
}
|
|
2486
|
+
if ("name" in declaration && declaration.name !== void 0) {
|
|
2487
|
+
const name = declaration.name;
|
|
2488
|
+
if (ts.isComputedPropertyName(name) || ts.isPrivateIdentifier(name)) {
|
|
2489
|
+
return false;
|
|
2490
|
+
}
|
|
2491
|
+
if (!ts.isIdentifier(name) && !ts.isStringLiteral(name) && !ts.isNumericLiteral(name)) {
|
|
2492
|
+
return false;
|
|
2493
|
+
}
|
|
2494
|
+
}
|
|
2495
|
+
return true;
|
|
2496
|
+
}
|
|
2497
|
+
function collectObjectSubfieldCandidates(type, checker, capability) {
|
|
2498
|
+
const out = [];
|
|
2499
|
+
const visit = (current, prefix, depth) => {
|
|
2500
|
+
if (depth > MAX_HINT_DEPTH) {
|
|
2501
|
+
return;
|
|
2502
|
+
}
|
|
2503
|
+
const stripped = stripHintNullishUnion(current);
|
|
2504
|
+
if (isCallableType(stripped)) {
|
|
2505
|
+
return;
|
|
2506
|
+
}
|
|
2507
|
+
if (!(0, import_internal2.hasTypeSemanticCapability)(stripped, checker, "object-like")) {
|
|
2508
|
+
return;
|
|
2509
|
+
}
|
|
2510
|
+
for (const property of stripped.getProperties()) {
|
|
2511
|
+
const declaration = property.valueDeclaration ?? property.declarations?.[0];
|
|
2512
|
+
if (declaration === void 0) {
|
|
2513
|
+
continue;
|
|
2514
|
+
}
|
|
2515
|
+
if (!isUserEmittableHintProperty(property, declaration)) {
|
|
2516
|
+
continue;
|
|
2517
|
+
}
|
|
2518
|
+
const propertyType = checker.getTypeOfSymbolAtLocation(property, declaration);
|
|
2519
|
+
const path5 = [...prefix, property.name];
|
|
2520
|
+
if (supportsConstraintCapability(propertyType, checker, capability)) {
|
|
2521
|
+
out.push(path5.join("."));
|
|
2522
|
+
continue;
|
|
2523
|
+
}
|
|
2524
|
+
const strippedPropertyType = stripHintNullishUnion(propertyType);
|
|
2525
|
+
if (!isCallableType(strippedPropertyType) && (0, import_internal2.hasTypeSemanticCapability)(strippedPropertyType, checker, "object-like")) {
|
|
2526
|
+
visit(strippedPropertyType, path5, depth + 1);
|
|
2527
|
+
}
|
|
2528
|
+
}
|
|
2529
|
+
};
|
|
2530
|
+
visit(type, [], 0);
|
|
2531
|
+
return out;
|
|
2532
|
+
}
|
|
2533
|
+
function buildPathTargetHint(subjectType, checker, capability, tagName, argumentText) {
|
|
2534
|
+
if (!(0, import_internal2.hasTypeSemanticCapability)(subjectType, checker, "object-like")) {
|
|
2535
|
+
return null;
|
|
2536
|
+
}
|
|
2537
|
+
const candidates = collectObjectSubfieldCandidates(subjectType, checker, capability);
|
|
2538
|
+
const primary = candidates[0];
|
|
2539
|
+
if (primary === void 0) {
|
|
2540
|
+
return null;
|
|
2541
|
+
}
|
|
2542
|
+
const argText = argumentText?.trim() ?? "";
|
|
2543
|
+
const renderExample = (path5) => argText === "" ? `@${tagName} :${path5}` : `@${tagName} :${path5} ${argText}`;
|
|
2544
|
+
if (candidates.length === 1) {
|
|
2545
|
+
return `Hint: use a path target to constrain a subfield, e.g. ${renderExample(primary)}`;
|
|
2546
|
+
}
|
|
2547
|
+
const shown = candidates.slice(0, MAX_HINT_CANDIDATES);
|
|
2548
|
+
const overflow = candidates.length > MAX_HINT_CANDIDATES ? ", \u2026" : "";
|
|
2549
|
+
return `Hint: use a path target to constrain a subfield (candidates: ${shown.join(", ")}${overflow}), e.g. ${renderExample(primary)}`;
|
|
2550
|
+
}
|
|
2467
2551
|
function makeDiagnostic(code, message, provenance) {
|
|
2468
2552
|
return {
|
|
2469
2553
|
code,
|
|
@@ -2631,10 +2715,18 @@ function buildCompilerBackedConstraintDiagnostics(node, sourceFile, tagName, par
|
|
|
2631
2715
|
const requiredCapability = definition.capabilities[0];
|
|
2632
2716
|
if (requiredCapability !== void 0 && !supportsConstraintCapability(subjectType, checker, requiredCapability)) {
|
|
2633
2717
|
const actualType = checker.typeToString(subjectType, node, SYNTHETIC_TYPE_FORMAT_FLAGS);
|
|
2718
|
+
const baseMessage = `Target "${node.getText(sourceFile)}": constraint "${tagName}" is only valid on ${capabilityLabel(requiredCapability)} targets, but field type is "${actualType}"`;
|
|
2719
|
+
const hint = buildPathTargetHint(
|
|
2720
|
+
subjectType,
|
|
2721
|
+
checker,
|
|
2722
|
+
requiredCapability,
|
|
2723
|
+
tagName,
|
|
2724
|
+
parsedTag?.argumentText
|
|
2725
|
+
);
|
|
2634
2726
|
return [
|
|
2635
2727
|
makeDiagnostic(
|
|
2636
2728
|
"TYPE_MISMATCH",
|
|
2637
|
-
|
|
2729
|
+
hint === null ? baseMessage : `${baseMessage}. ${hint}`,
|
|
2638
2730
|
provenance
|
|
2639
2731
|
)
|
|
2640
2732
|
];
|
|
@@ -3010,7 +3102,7 @@ function getTagCommentText(tag) {
|
|
|
3010
3102
|
}
|
|
3011
3103
|
return ts.getTextOfJSDocComment(tag.comment);
|
|
3012
3104
|
}
|
|
3013
|
-
var ts, import_internal2, import_internals4, import_internals5, SYNTHETIC_TYPE_FORMAT_FLAGS, parseResultCache;
|
|
3105
|
+
var ts, import_internal2, import_internals4, import_internals5, SYNTHETIC_TYPE_FORMAT_FLAGS, MAX_HINT_CANDIDATES, MAX_HINT_DEPTH, parseResultCache;
|
|
3014
3106
|
var init_tsdoc_parser = __esm({
|
|
3015
3107
|
"src/analyzer/tsdoc-parser.ts"() {
|
|
3016
3108
|
"use strict";
|
|
@@ -3019,6 +3111,8 @@ var init_tsdoc_parser = __esm({
|
|
|
3019
3111
|
import_internals4 = require("@formspec/core/internals");
|
|
3020
3112
|
import_internals5 = require("@formspec/core/internals");
|
|
3021
3113
|
SYNTHETIC_TYPE_FORMAT_FLAGS = ts.TypeFormatFlags.NoTruncation | ts.TypeFormatFlags.UseAliasDefinedOutsideCurrentScope;
|
|
3114
|
+
MAX_HINT_CANDIDATES = 5;
|
|
3115
|
+
MAX_HINT_DEPTH = 3;
|
|
3022
3116
|
parseResultCache = /* @__PURE__ */ new Map();
|
|
3023
3117
|
}
|
|
3024
3118
|
});
|
|
@@ -4298,6 +4392,9 @@ function resolveTypeNode(type, checker, file, typeRegistry, visiting, sourceNode
|
|
|
4298
4392
|
if (type.flags & ts3.TypeFlags.Undefined) {
|
|
4299
4393
|
return { kind: "primitive", primitiveKind: "null" };
|
|
4300
4394
|
}
|
|
4395
|
+
if (type.flags & ts3.TypeFlags.Void) {
|
|
4396
|
+
return { kind: "primitive", primitiveKind: "null" };
|
|
4397
|
+
}
|
|
4301
4398
|
if (type.isStringLiteral()) {
|
|
4302
4399
|
return {
|
|
4303
4400
|
kind: "enum",
|
|
@@ -6295,7 +6392,13 @@ function toStandaloneJsonSchema(root, typeRegistry, resolved) {
|
|
|
6295
6392
|
const syntheticField = {
|
|
6296
6393
|
kind: "field",
|
|
6297
6394
|
name: "__result",
|
|
6298
|
-
|
|
6395
|
+
metadata: {
|
|
6396
|
+
...syntheticFieldMetadata,
|
|
6397
|
+
// Pin apiName so metadata-policy transforms (e.g. toStripeApiCase)
|
|
6398
|
+
// cannot rename this synthetic wrapper field. The lookup below
|
|
6399
|
+
// expects "__result" in the output schema properties.
|
|
6400
|
+
apiName: { value: "__result", source: "explicit" }
|
|
6401
|
+
},
|
|
6299
6402
|
type: root.type,
|
|
6300
6403
|
required: true,
|
|
6301
6404
|
constraints: [],
|
|
@@ -6538,7 +6641,20 @@ function unwrapPromiseType(checker, type) {
|
|
|
6538
6641
|
if (!("getAwaitedType" in checker) || typeof checker.getAwaitedType !== "function") {
|
|
6539
6642
|
return type;
|
|
6540
6643
|
}
|
|
6541
|
-
|
|
6644
|
+
const awaited = checker.getAwaitedType(type) ?? type;
|
|
6645
|
+
if (awaited === type && looksLikePromiseType(checker, type)) {
|
|
6646
|
+
throw new Error(
|
|
6647
|
+
`FormSpec could not unwrap the awaited type from "${checker.typeToString(type)}". This usually indicates the TypeScript compiler host cannot resolve its default lib files (for example "lib.es2015.promise.d.ts"). Ensure the program is configured with the standard library available to \`ts.createProgram\`.`
|
|
6648
|
+
);
|
|
6649
|
+
}
|
|
6650
|
+
return awaited;
|
|
6651
|
+
}
|
|
6652
|
+
function looksLikePromiseType(checker, type) {
|
|
6653
|
+
const symbolName = type.getSymbol()?.getName();
|
|
6654
|
+
if (symbolName === "Promise" || symbolName === "PromiseLike") {
|
|
6655
|
+
return true;
|
|
6656
|
+
}
|
|
6657
|
+
return /^(?:Promise|PromiseLike)\b/.test(checker.typeToString(type));
|
|
6542
6658
|
}
|
|
6543
6659
|
function unwrapPromiseTypeNode(typeNode) {
|
|
6544
6660
|
if (typeNode === void 0) {
|