@dragonshorn-studios/elyseum-cli 1.1.0 → 1.1.1

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":"emit-envelope-command.d.ts","sourceRoot":"","sources":["../../src/commands/emit-envelope-command.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAChD,OAAe,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AA8BjD;;;;;;GAMG;AACH,qBAAa,mBAAoB,YAAW,OAAO;IACjD,IAAI,EAAE,MAAM,CAAmB;IAC/B,MAAM,CAAC,EAAE,YAAY,CAqFnB;gBAEU,QAAQ,EAAE,UAAU;IAInB,GAAG,CAAC,IAAI,EAAE,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC;IAwL5C;;;;OAIG;IACH,OAAO,CAAC,MAAM;IAQd,OAAO,CAAC,SAAS;IAgBjB;;;;OAIG;IACH;;;OAGG;IACH,OAAO,CAAC,cAAc;YAkCR,iBAAiB;IA0B/B;;;;OAIG;YACW,oBAAoB;YAiDpB,SAAS;IAevB,OAAO,CAAC,UAAU;IAIlB,OAAO,CAAC,EAAE;CAGX"}
1
+ {"version":3,"file":"emit-envelope-command.d.ts","sourceRoot":"","sources":["../../src/commands/emit-envelope-command.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAChD,OAAe,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AA8BjD;;;;;;GAMG;AACH,qBAAa,mBAAoB,YAAW,OAAO;IACjD,IAAI,EAAE,MAAM,CAAmB;IAC/B,MAAM,CAAC,EAAE,YAAY,CAqFnB;gBAEU,QAAQ,EAAE,UAAU;IAInB,GAAG,CAAC,IAAI,EAAE,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC;IA0M5C;;;;OAIG;IACH,OAAO,CAAC,MAAM;IAQd,OAAO,CAAC,SAAS;IAgBjB;;;;OAIG;IACH;;;OAGG;IACH,OAAO,CAAC,cAAc;YAkCR,iBAAiB;IA0B/B;;;;OAIG;YACW,oBAAoB;YAiDpB,SAAS;IAevB,OAAO,CAAC,UAAU;IAIlB,OAAO,CAAC,EAAE;CAGX"}
@@ -1 +1 @@
1
- {"version":3,"file":"envelope.d.ts","sourceRoot":"","sources":["../../src/core/envelope.ts"],"names":[],"mappings":"AAGA;;;;;;;;;GASG;AAEH,eAAO,MAAM,wBAAwB,MAAM,CAAC;AAU5C,MAAM,WAAW,UAAU;IACzB,cAAc,EAAE,GAAG,CAAC;IACpB,QAAQ,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IAC5C,GAAG,EAAE;QACH,QAAQ,EAAE,MAAM,CAAC;QACjB,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QACvB,OAAO,EAAE,MAAM,CAAC;QAChB,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QACpB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAC3B,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;KAC7B,CAAC;IACF,MAAM,EAAE;QACN,GAAG,EAAE,MAAM,CAAC;QACZ,MAAM,EAAE,MAAM,CAAC;QACf,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QACzB,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;KAC9B,CAAC;IACF,KAAK,CAAC,EAAE;QACN,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QACtB,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QACvB,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QACvB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QACxB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAC5B,YAAY,CAAC,EAAE;YACb,IAAI,EAAE,MAAM,CAAC;YACb,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;YACxB,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;YACrB,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;SACtB,EAAE,CAAC;KACL,CAAC;IACF,QAAQ,CAAC,EAAE;QACT,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAC7B,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QACjC,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAC/B,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAC7B,KAAK,CAAC,EAAE;YACN,IAAI,EAAE,MAAM,CAAC;YACb,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;YAC7B,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;YACjC,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;SAChC,EAAE,CAAC;KACL,CAAC;IACF,YAAY,CAAC,EAAE;QAAE,UAAU,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAA;KAAE,CAAC;IAC/D,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,gEAAgE;AAChE,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,UAAU,GAAG,aAAa,EAAE,CAUtE"}
1
+ {"version":3,"file":"envelope.d.ts","sourceRoot":"","sources":["../../src/core/envelope.ts"],"names":[],"mappings":"AAGA;;;;;;;;;GASG;AAEH,eAAO,MAAM,wBAAwB,MAAM,CAAC;AAU5C,MAAM,WAAW,UAAU;IACzB,cAAc,EAAE,GAAG,CAAC;IACpB,QAAQ,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IAC5C,GAAG,EAAE;QACH,QAAQ,EAAE,MAAM,CAAC;QACjB,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QACvB,OAAO,EAAE,MAAM,CAAC;QAChB,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QACpB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAC3B,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;KAC7B,CAAC;IACF,MAAM,EAAE;QACN,GAAG,EAAE,MAAM,CAAC;QACZ,MAAM,EAAE,MAAM,CAAC;QACf,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QACzB,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;KAC9B,CAAC;IACF,KAAK,CAAC,EAAE;QACN,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QACtB,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QACvB,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QACvB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QACxB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAC5B,YAAY,CAAC,EAAE;YACb,IAAI,EAAE,MAAM,CAAC;YACb,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;YACxB,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;YACrB,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;SACtB,EAAE,CAAC;KACL,CAAC;IACF,QAAQ,CAAC,EAAE;QACT,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAC7B,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QACjC,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAC/B,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAC7B,KAAK,CAAC,EAAE;YACN,IAAI,EAAE,MAAM,CAAC;YACb,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;YAC7B,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;YACjC,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;SAChC,EAAE,CAAC;KACL,CAAC;IACF,YAAY,CAAC,EAAE;QAAE,UAAU,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAA;KAAE,CAAC;IAC/D,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,gEAAgE;AAChE,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,UAAU,GAAG,aAAa,EAAE,CAgBtE"}
package/dist/index.js CHANGED
@@ -54812,7 +54812,7 @@ class DiffCoverageCommand {
54812
54812
  }
54813
54813
 
54814
54814
  var name = "@dragonshorn-studios/elyseum-cli";
54815
- var version = "1.1.0";
54815
+ var version = "1.1.1";
54816
54816
  var description$1 = "A CLI tool for coverage reporting";
54817
54817
  var main = "dist/index.js";
54818
54818
  var type$9 = "module";
@@ -62397,13 +62397,43 @@ const validate = ajv.compile(schemaJson);
62397
62397
  /** Validates an envelope against the pinned v1 schema. Pure. */
62398
62398
  function validateEnvelope(envelope) {
62399
62399
  const valid = validate(envelope);
62400
- if (valid) {
62401
- return [];
62400
+ const issues = valid
62401
+ ? []
62402
+ : (validate.errors ?? []).map((error) => ({
62403
+ pointer: `${error.instancePath}/${error.params?.missingProperty ?? ""}`.replace(/\/+/g, "/"),
62404
+ message: error.message ?? "schema violation",
62405
+ }));
62406
+ // The contract caps percentages at 4 decimal places, but JSON Schema
62407
+ // cannot express that constraint, so the host enforces it beyond the
62408
+ // schema and rejects with envelope.schema-violation. Check it here too:
62409
+ // an emit that would be rejected downstream is a CLI bug (exit 5), not
62410
+ // a silent upload failure.
62411
+ issues.push(...percentPrecisionIssues(envelope));
62412
+ return issues;
62413
+ }
62414
+ function percentPrecisionIssues(node, pointer = "") {
62415
+ if (Array.isArray(node)) {
62416
+ return node.flatMap((item, i) => percentPrecisionIssues(item, `${pointer}/${i}`));
62417
+ }
62418
+ if (node && typeof node === "object") {
62419
+ return Object.entries(node).flatMap(([key, value]) => {
62420
+ const childPointer = `${pointer}/${key}`;
62421
+ if (/_percent$/.test(key) &&
62422
+ typeof value === "number" &&
62423
+ decimalPlaces(value) > 4) {
62424
+ return [
62425
+ { pointer: childPointer, message: "Percentages carry at most 4 decimal places." },
62426
+ ];
62427
+ }
62428
+ return percentPrecisionIssues(value, childPointer);
62429
+ });
62402
62430
  }
62403
- return (validate.errors ?? []).map((error) => ({
62404
- pointer: `${error.instancePath}/${error.params?.missingProperty ?? ""}`.replace(/\/+/g, "/"),
62405
- message: error.message ?? "schema violation",
62406
- }));
62431
+ return [];
62432
+ }
62433
+ function decimalPlaces(value) {
62434
+ const text = String(value);
62435
+ const dot = text.indexOf(".");
62436
+ return dot === -1 ? 0 : text.length - dot - 1;
62407
62437
  }
62408
62438
 
62409
62439
  /**
@@ -62622,7 +62652,22 @@ class EmitEnvelopeCommand {
62622
62652
  coverageFacts.diff_percent !== undefined
62623
62653
  ? { diff_percent: this.r4(coverageFacts.diff_percent) }
62624
62654
  : {}),
62625
- ...(coverageFacts.files.length > 0 ? { files: coverageFacts.files } : {}),
62655
+ ...(coverageFacts.files.length > 0
62656
+ ? {
62657
+ files: coverageFacts.files.map((file) => ({
62658
+ path: file.path,
62659
+ line_percent: file.line_percent === null || file.line_percent === undefined
62660
+ ? null
62661
+ : this.r4(file.line_percent),
62662
+ function_percent: file.function_percent === null || file.function_percent === undefined
62663
+ ? null
62664
+ : this.r4(file.function_percent),
62665
+ branch_percent: file.branch_percent === null || file.branch_percent === undefined
62666
+ ? null
62667
+ : this.r4(file.branch_percent),
62668
+ })),
62669
+ }
62670
+ : {}),
62626
62671
  },
62627
62672
  }
62628
62673
  : {}),