@formspec/build 0.1.0-alpha.57 → 0.1.0-alpha.58

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.
@@ -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,EAeL,KAAK,4BAA4B,EAIlC,MAAM,6BAA6B,CAAC;AAMrC,OAAO,EACL,KAAK,cAAc,EACnB,KAAK,cAAc,EAEnB,KAAK,UAAU,EACf,KAAK,QAAQ,EACd,MAAM,0BAA0B,CAAC;AAElC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AA45BhE;;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"}
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,EAeL,KAAK,4BAA4B,EAIlC,MAAM,6BAA6B,CAAC;AAMrC,OAAO,EACL,KAAK,cAAc,EACnB,KAAK,cAAc,EAEnB,KAAK,UAAU,EACf,KAAK,QAAQ,EACd,MAAM,0BAA0B,CAAC;AAElC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAs/BhE;;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
@@ -2630,6 +2630,7 @@ function processConstraintTag(tagName, text, parsedTag, provenance, node, source
2630
2630
  sourceFile,
2631
2631
  tagName,
2632
2632
  parsedTag,
2633
+ text,
2633
2634
  provenance,
2634
2635
  supportingDeclarations,
2635
2636
  options
@@ -2657,6 +2658,9 @@ function renderSyntheticArgumentExpression(valueKind, argumentText) {
2657
2658
  case "number":
2658
2659
  case "integer":
2659
2660
  case "signedInteger":
2661
+ if (trimmed === "Infinity" || trimmed === "-Infinity" || trimmed === "NaN") {
2662
+ return trimmed;
2663
+ }
2660
2664
  return Number.isFinite(Number(trimmed)) ? trimmed : JSON.stringify(trimmed);
2661
2665
  case "string":
2662
2666
  return JSON.stringify(argumentText);
@@ -2866,7 +2870,7 @@ function hasBuiltinConstraintBroadening(tagName, options) {
2866
2870
  const broadenedTypeId = getBroadenedCustomTypeId(options?.fieldType);
2867
2871
  return broadenedTypeId !== void 0 && options?.extensionRegistry?.findBuiltinConstraintBroadening(broadenedTypeId, tagName) !== void 0;
2868
2872
  }
2869
- function buildCompilerBackedConstraintDiagnostics(node, sourceFile, tagName, parsedTag, provenance, supportingDeclarations, options) {
2873
+ function buildCompilerBackedConstraintDiagnostics(node, sourceFile, tagName, parsedTag, rawText, provenance, supportingDeclarations, options) {
2870
2874
  if (!(0, import_internals4.isBuiltinConstraintName)(tagName)) {
2871
2875
  return [];
2872
2876
  }
@@ -2887,8 +2891,10 @@ function buildCompilerBackedConstraintDiagnostics(node, sourceFile, tagName, par
2887
2891
  const log2 = (0, import_internal4.getBuildLogger)();
2888
2892
  const broadeningLog = (0, import_internal4.getBroadeningLogger)();
2889
2893
  const syntheticLog = (0, import_internal4.getSyntheticLogger)();
2894
+ const typedParserLog = (0, import_internal4.getTypedParserLogger)();
2890
2895
  const logsEnabled = log2 !== import_core4.noopLogger || broadeningLog !== import_core4.noopLogger;
2891
2896
  const syntheticTraceEnabled = syntheticLog !== import_core4.noopLogger;
2897
+ const typedParserTraceEnabled = typedParserLog !== import_core4.noopLogger;
2892
2898
  const logStart = logsEnabled ? (0, import_internal4.nowMicros)() : 0;
2893
2899
  const subjectTypeKind = logsEnabled ? (0, import_internal4.describeTypeKind)(subjectType, checker) : "";
2894
2900
  function emit(outcome, result2) {
@@ -2996,16 +3002,57 @@ function buildCompilerBackedConstraintDiagnostics(node, sourceFile, tagName, par
2996
3002
  ]);
2997
3003
  }
2998
3004
  }
2999
- const argumentExpression = renderSyntheticArgumentExpression(
3000
- definition.valueKind,
3001
- parsedTag?.argumentText ?? ""
3002
- );
3003
- if (definition.requiresArgument && argumentExpression === null) {
3004
- return emit("A-pass", []);
3005
- }
3005
+ const effectiveArgumentText = parsedTag !== null ? (0, import_internal3.parseTagSyntax)(tagName, rawText).argumentText : rawText;
3006
3006
  if (hasBroadening) {
3007
3007
  return emit("bypass", []);
3008
3008
  }
3009
+ const typedParseResult = (0, import_internal4.parseTagArgument)(tagName, effectiveArgumentText, "build");
3010
+ if (!typedParseResult.ok) {
3011
+ if (typedParserTraceEnabled) {
3012
+ typedParserLog.trace("typed-parser C-reject", {
3013
+ consumer: "build",
3014
+ tag: tagName,
3015
+ placement: nonNullPlacement,
3016
+ subjectTypeKind: subjectTypeKind !== "" ? subjectTypeKind : "-",
3017
+ roleOutcome: "C-reject",
3018
+ diagnosticCode: typedParseResult.diagnostic.code
3019
+ });
3020
+ }
3021
+ let mappedCode;
3022
+ switch (typedParseResult.diagnostic.code) {
3023
+ case "MISSING_TAG_ARGUMENT":
3024
+ mappedCode = "MISSING_TAG_ARGUMENT";
3025
+ break;
3026
+ case "INVALID_TAG_ARGUMENT":
3027
+ mappedCode = "INVALID_TAG_ARGUMENT";
3028
+ break;
3029
+ case "UNKNOWN_TAG":
3030
+ throw new Error(
3031
+ `Unexpected UNKNOWN_TAG from parseTagArgument("${tagName}") \u2014 tag was resolved via getTagDefinition.`
3032
+ );
3033
+ default: {
3034
+ const _exhaustive = typedParseResult.diagnostic.code;
3035
+ throw new Error(`Unknown diagnostic code: ${String(_exhaustive)}`);
3036
+ }
3037
+ }
3038
+ return emit("C-reject", [
3039
+ makeDiagnostic(mappedCode, typedParseResult.diagnostic.message, provenance)
3040
+ ]);
3041
+ }
3042
+ if (typedParserTraceEnabled) {
3043
+ typedParserLog.trace("typed-parser C-pass", {
3044
+ consumer: "build",
3045
+ tag: tagName,
3046
+ placement: nonNullPlacement,
3047
+ subjectTypeKind: subjectTypeKind !== "" ? subjectTypeKind : "-",
3048
+ roleOutcome: "C-pass",
3049
+ valueKind: typedParseResult.value.kind
3050
+ });
3051
+ }
3052
+ const argumentExpression = renderSyntheticArgumentExpression(
3053
+ definition.valueKind,
3054
+ effectiveArgumentText
3055
+ );
3009
3056
  const subjectTypeText = checker.typeToString(subjectType, node, SYNTHETIC_TYPE_FORMAT_FLAGS);
3010
3057
  const hostType = options?.hostType ?? subjectType;
3011
3058
  const hostTypeText = checker.typeToString(hostType, node, SYNTHETIC_TYPE_FORMAT_FLAGS);