@sun-asterisk/sungen 3.3.0-alpha.2 → 3.3.0-alpha.3

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 (85) hide show
  1. package/dist/cli/commands/contract.d.ts +3 -0
  2. package/dist/cli/commands/contract.d.ts.map +1 -1
  3. package/dist/cli/commands/contract.js +34 -4
  4. package/dist/cli/commands/contract.js.map +1 -1
  5. package/dist/contract/accept-opaque-steps.d.ts +3 -0
  6. package/dist/contract/accept-opaque-steps.d.ts.map +1 -0
  7. package/dist/contract/accept-opaque-steps.js +114 -0
  8. package/dist/contract/accept-opaque-steps.js.map +1 -0
  9. package/dist/contract/approve-contract.d.ts +8 -1
  10. package/dist/contract/approve-contract.d.ts.map +1 -1
  11. package/dist/contract/approve-contract.js +6 -0
  12. package/dist/contract/approve-contract.js.map +1 -1
  13. package/dist/contract/build-contract-verdict.js +2 -2
  14. package/dist/contract/build-contract-verdict.js.map +1 -1
  15. package/dist/contract/build-trace-conformance.d.ts +5 -1
  16. package/dist/contract/build-trace-conformance.d.ts.map +1 -1
  17. package/dist/contract/build-trace-conformance.js +9 -4
  18. package/dist/contract/build-trace-conformance.js.map +1 -1
  19. package/dist/contract/classify-contract-change.d.ts +3 -2
  20. package/dist/contract/classify-contract-change.d.ts.map +1 -1
  21. package/dist/contract/classify-contract-change.js.map +1 -1
  22. package/dist/contract/classify-trace-conformance.d.ts +18 -3
  23. package/dist/contract/classify-trace-conformance.d.ts.map +1 -1
  24. package/dist/contract/classify-trace-conformance.js +64 -17
  25. package/dist/contract/classify-trace-conformance.js.map +1 -1
  26. package/dist/contract/contract-schema.d.ts +21 -0
  27. package/dist/contract/contract-schema.d.ts.map +1 -1
  28. package/dist/contract/contract-schema.js +25 -3
  29. package/dist/contract/contract-schema.js.map +1 -1
  30. package/dist/contract/contracts-lock-file.d.ts.map +1 -1
  31. package/dist/contract/contracts-lock-file.js +1 -0
  32. package/dist/contract/contracts-lock-file.js.map +1 -1
  33. package/dist/contract/project-contract-blockers.d.ts.map +1 -1
  34. package/dist/contract/project-contract-blockers.js +4 -2
  35. package/dist/contract/project-contract-blockers.js.map +1 -1
  36. package/dist/contract/record-contract-approval.d.ts +16 -1
  37. package/dist/contract/record-contract-approval.d.ts.map +1 -1
  38. package/dist/contract/record-contract-approval.js +29 -1
  39. package/dist/contract/record-contract-approval.js.map +1 -1
  40. package/dist/contract/render-free-gherkin.d.ts +2 -0
  41. package/dist/contract/render-free-gherkin.d.ts.map +1 -1
  42. package/dist/contract/render-free-gherkin.js +6 -0
  43. package/dist/contract/render-free-gherkin.js.map +1 -1
  44. package/dist/contract/trace/collect-trace-evidence.d.ts +8 -3
  45. package/dist/contract/trace/collect-trace-evidence.d.ts.map +1 -1
  46. package/dist/contract/trace/collect-trace-evidence.js +65 -34
  47. package/dist/contract/trace/collect-trace-evidence.js.map +1 -1
  48. package/dist/contract/trace/read-file-once.d.ts +20 -0
  49. package/dist/contract/trace/read-file-once.d.ts.map +1 -0
  50. package/dist/contract/trace/read-file-once.js +135 -0
  51. package/dist/contract/trace/read-file-once.js.map +1 -0
  52. package/dist/contract/trace/select-final-attempt.d.ts +2 -2
  53. package/dist/contract/trace/select-final-attempt.d.ts.map +1 -1
  54. package/dist/contract/trace/select-final-attempt.js +3 -3
  55. package/dist/contract/trace/select-final-attempt.js.map +1 -1
  56. package/dist/contract/trace/trace-file-reader.d.ts +7 -1
  57. package/dist/contract/trace/trace-file-reader.d.ts.map +1 -1
  58. package/dist/contract/trace/trace-file-reader.js +17 -41
  59. package/dist/contract/trace/trace-file-reader.js.map +1 -1
  60. package/dist/contract/trace/trace-run-record.d.ts +2 -2
  61. package/dist/contract/trace/trace-run-record.d.ts.map +1 -1
  62. package/dist/contract/trace/trace-run-record.js +3 -3
  63. package/dist/contract/trace/trace-run-record.js.map +1 -1
  64. package/dist/contract/verify-approval-decisions.d.ts.map +1 -1
  65. package/dist/contract/verify-approval-decisions.js +9 -4
  66. package/dist/contract/verify-approval-decisions.js.map +1 -1
  67. package/package.json +3 -3
  68. package/src/cli/commands/contract.ts +35 -4
  69. package/src/contract/accept-opaque-steps.ts +114 -0
  70. package/src/contract/approve-contract.ts +10 -3
  71. package/src/contract/build-contract-verdict.ts +2 -2
  72. package/src/contract/build-trace-conformance.ts +8 -3
  73. package/src/contract/classify-contract-change.ts +3 -3
  74. package/src/contract/classify-trace-conformance.ts +76 -22
  75. package/src/contract/contract-schema.ts +31 -2
  76. package/src/contract/contracts-lock-file.ts +1 -0
  77. package/src/contract/project-contract-blockers.ts +4 -2
  78. package/src/contract/record-contract-approval.ts +41 -1
  79. package/src/contract/render-free-gherkin.ts +5 -0
  80. package/src/contract/trace/collect-trace-evidence.ts +66 -29
  81. package/src/contract/trace/read-file-once.ts +95 -0
  82. package/src/contract/trace/select-final-attempt.ts +3 -3
  83. package/src/contract/trace/trace-file-reader.ts +17 -6
  84. package/src/contract/trace/trace-run-record.ts +3 -3
  85. package/src/contract/verify-approval-decisions.ts +9 -5
@@ -2,6 +2,8 @@ import { TestDataIndex } from './data-normalize';
2
2
  import type { TargetFacts, TargetIdentity } from './trace/target-identity';
3
3
  import type { IntentStep } from './trace/trace-steps';
4
4
  export declare const CONTROL_CHARS: RegExp;
5
+ /** Text from a trace or report shown in one line of a finding: control characters dropped, at most `max` characters. */
6
+ export declare function clip(s: string, max?: number): string;
5
7
  export interface ResolvedTarget {
6
8
  identity: TargetIdentity;
7
9
  facts?: TargetFacts;
@@ -1 +1 @@
1
- {"version":3,"file":"render-free-gherkin.d.ts","sourceRoot":"","sources":["../../src/contract/render-free-gherkin.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAsB,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAGrE,OAAO,KAAK,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAE3E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEtD,eAAO,MAAM,aAAa,QAAuC,CAAC;AAElE,MAAM,WAAW,cAAc;IAAG,QAAQ,EAAE,cAAc,CAAC;IAAC,KAAK,CAAC,EAAE,WAAW,CAAA;CAAE;AACjF,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,CAAC;IAC3C,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,QAAQ,GAAG,QAAQ,CAAC;IAC1B,2EAA2E;IAC3E,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAC/C;AACD,MAAM,WAAW,aAAa;IAAG,KAAK,EAAE,aAAa,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;CAAE;AAwBrH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,UAAU,EAAE,EAAE,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,EAAE,GAAG,EAAE,aAAa,GAAG,YAAY,EAAE,CA0B9H;AAED,sEAAsE;AACtE,wBAAgB,SAAS,CAAC,KAAK,EAAE,YAAY,EAAE,GAAG,MAAM,EAAE,CAQzD;AAED,MAAM,WAAW,iBAAiB;IAAG,EAAE,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,EAAE,CAAC;IAAC,QAAQ,EAAE,MAAM,EAAE,CAAC;IAAC,KAAK,EAAE,YAAY,EAAE,CAAA;CAAE;AAE3H,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,iBAAiB,GAAG,MAAM,CAE9D;AAED,eAAO,MAAM,mBAAmB,UAI/B,CAAC;AAEF,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,CAEtE"}
1
+ {"version":3,"file":"render-free-gherkin.d.ts","sourceRoot":"","sources":["../../src/contract/render-free-gherkin.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAsB,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAGrE,OAAO,KAAK,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAE3E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEtD,eAAO,MAAM,aAAa,QAAuC,CAAC;AAClE,wHAAwH;AACxH,wBAAgB,IAAI,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,SAAM,GAAG,MAAM,CAGjD;AAED,MAAM,WAAW,cAAc;IAAG,QAAQ,EAAE,cAAc,CAAC;IAAC,KAAK,CAAC,EAAE,WAAW,CAAA;CAAE;AACjF,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,CAAC;IAC3C,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,QAAQ,GAAG,QAAQ,CAAC;IAC1B,2EAA2E;IAC3E,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAC/C;AACD,MAAM,WAAW,aAAa;IAAG,KAAK,EAAE,aAAa,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;CAAE;AAwBrH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,UAAU,EAAE,EAAE,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,EAAE,GAAG,EAAE,aAAa,GAAG,YAAY,EAAE,CA0B9H;AAED,sEAAsE;AACtE,wBAAgB,SAAS,CAAC,KAAK,EAAE,YAAY,EAAE,GAAG,MAAM,EAAE,CAQzD;AAED,MAAM,WAAW,iBAAiB;IAAG,EAAE,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,EAAE,CAAC;IAAC,QAAQ,EAAE,MAAM,EAAE,CAAC;IAAC,KAAK,EAAE,YAAY,EAAE,CAAA;CAAE;AAE3H,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,iBAAiB,GAAG,MAAM,CAE9D;AAED,eAAO,MAAM,mBAAmB,UAI/B,CAAC;AAEF,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,CAEtE"}
@@ -34,6 +34,7 @@ var __importStar = (this && this.__importStar) || (function () {
34
34
  })();
35
35
  Object.defineProperty(exports, "__esModule", { value: true });
36
36
  exports.FREE_FEATURE_HEADER = exports.CONTROL_CHARS = void 0;
37
+ exports.clip = clip;
37
38
  exports.renderTraceSteps = renderTraceSteps;
38
39
  exports.stepLines = stepLines;
39
40
  exports.scenarioBlockText = scenarioBlockText;
@@ -59,6 +60,11 @@ const render_trace_target_1 = require("./render-trace-target");
59
60
  const render_trace_sentence_1 = require("./render-trace-sentence");
60
61
  const trace_identity_resolution_1 = require("./trace/trace-identity-resolution");
61
62
  exports.CONTROL_CHARS = /[\u0000-\u001f\u007f\u2028\u2029]/g;
63
+ /** Text from a trace or report shown in one line of a finding: control characters dropped, at most `max` characters. */
64
+ function clip(s, max = 120) {
65
+ const t = s.replace(exports.CONTROL_CHARS, '');
66
+ return t.length > max ? `${t.slice(0, max - 1)}\u2026` : t;
67
+ }
62
68
  function whereOf(step, ctx) {
63
69
  const loc = step.location;
64
70
  if (!loc?.file)
@@ -1 +1 @@
1
- {"version":3,"file":"render-free-gherkin.js","sourceRoot":"","sources":["../../src/contract/render-free-gherkin.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"render-free-gherkin.js","sourceRoot":"","sources":["../../src/contract/render-free-gherkin.ts"],"names":[],"mappings":"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"}
@@ -18,16 +18,21 @@ export interface ScenarioEvidence {
18
18
  problems: string[];
19
19
  inputs: string[];
20
20
  }
21
+ /** A run record or JSON report larger than this is refused before a byte is read (fail closed, #926). */
22
+ export declare const MAX_EVIDENCE_JSON_BYTES: number;
21
23
  /** The reason a run is not judged once the verdict's deadline has passed (fail closed). */
22
24
  export declare const OVER_BUDGET = "verdict budget exceeded; run `sungen contract check`";
23
- /** The real path of `file` when it is a regular file INSIDE the project (symlinks resolved); else null. */
24
- export declare function insideProject(projectRoot: string, file: string): string | null;
25
25
  /** Every judged run of the tests `want` accepts (derive: a unit's tests; check: by scenario id). */
26
26
  export declare function collectRuns(projectRoot: string, want: (id: string, test: ReportTest) => boolean, notBefore: number, deadline?: number): {
27
27
  runs: TraceRun[];
28
28
  problems: string[];
29
29
  inputs: string[];
30
30
  records: number;
31
+ seen: Array<{
32
+ id: string;
33
+ title: string;
34
+ }>;
31
35
  };
32
- export declare function collectScenarioEvidence(projectRoot: string, ids: ReadonlySet<string>, notBefore: number, deadline?: number): ScenarioEvidence;
36
+ /** The runs of each scenario id; `names` (id → scenario name) lets a missing test be explained. */
37
+ export declare function collectScenarioEvidence(projectRoot: string, ids: ReadonlySet<string>, notBefore: number, deadline?: number, names?: ReadonlyMap<string, string>): ScenarioEvidence;
33
38
  //# sourceMappingURL=collect-trace-evidence.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"collect-trace-evidence.d.ts","sourceRoot":"","sources":["../../../src/contract/trace/collect-trace-evidence.ts"],"names":[],"mappings":"AAeA,OAAO,EAAiB,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAEjE,OAAO,EAAsC,YAAY,EAAE,UAAU,EAAoB,MAAM,wBAAwB,CAAC;AACxH,OAAO,EAAiC,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAE9E,MAAM,MAAM,SAAS,GAAG,YAAY,GAAG,cAAc,GAAG,UAAU,GAAG,SAAS,GAAG,aAAa,CAAC;AAC/F,MAAM,WAAW,QAAQ;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,SAAS,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,oEAAoE;IACpE,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AACD,MAAM,WAAW,gBAAgB;IAAG,IAAI,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;IAAC,QAAQ,EAAE,MAAM,EAAE,CAAC;IAAC,MAAM,EAAE,MAAM,EAAE,CAAA;CAAE;AAEzG,2FAA2F;AAC3F,eAAO,MAAM,WAAW,yDAAyD,CAAC;AAGlF,2GAA2G;AAC3G,wBAAgB,aAAa,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAM9E;AA6BD,oGAAoG;AACpG,wBAAgB,WAAW,CACzB,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,KAAK,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,SAA2B,GAC3H;IAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;IAAC,QAAQ,EAAE,MAAM,EAAE,CAAC;IAAC,MAAM,EAAE,MAAM,EAAE,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAsB7E;AAED,wBAAgB,uBAAuB,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,EAAE,WAAW,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,gBAAgB,CAO7I"}
1
+ {"version":3,"file":"collect-trace-evidence.d.ts","sourceRoot":"","sources":["../../../src/contract/trace/collect-trace-evidence.ts"],"names":[],"mappings":"AAkBA,OAAO,EAAiB,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAEjE,OAAO,EAAsC,YAAY,EAAE,UAAU,EAAoB,MAAM,wBAAwB,CAAC;AACxH,OAAO,EAAiC,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAE9E,MAAM,MAAM,SAAS,GAAG,YAAY,GAAG,cAAc,GAAG,UAAU,GAAG,SAAS,GAAG,aAAa,CAAC;AAC/F,MAAM,WAAW,QAAQ;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,SAAS,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,oEAAoE;IACpE,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AACD,MAAM,WAAW,gBAAgB;IAAG,IAAI,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;IAAC,QAAQ,EAAE,MAAM,EAAE,CAAC;IAAC,MAAM,EAAE,MAAM,EAAE,CAAA;CAAE;AAEzG,yGAAyG;AACzG,eAAO,MAAM,uBAAuB,QAAmB,CAAC;AASxD,2FAA2F;AAC3F,eAAO,MAAM,WAAW,yDAAyD,CAAC;AAoClF,oGAAoG;AACpG,wBAAgB,WAAW,CACzB,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,KAAK,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,SAA2B,GAC3H;IAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;IAAC,QAAQ,EAAE,MAAM,EAAE,CAAC;IAAC,MAAM,EAAE,MAAM,EAAE,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAAE,CAyBzH;AAuBD,mGAAmG;AACnG,wBAAgB,uBAAuB,CACrC,WAAW,EAAE,MAAM,EAAE,GAAG,EAAE,WAAW,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,GACvH,gBAAgB,CAOlB"}
@@ -33,8 +33,7 @@ var __importStar = (this && this.__importStar) || (function () {
33
33
  };
34
34
  })();
35
35
  Object.defineProperty(exports, "__esModule", { value: true });
36
- exports.OVER_BUDGET = void 0;
37
- exports.insideProject = insideProject;
36
+ exports.OVER_BUDGET = exports.MAX_EVIDENCE_JSON_BYTES = void 0;
38
37
  exports.collectRuns = collectRuns;
39
38
  exports.collectScenarioEvidence = collectScenarioEvidence;
40
39
  /**
@@ -51,33 +50,34 @@ exports.collectScenarioEvidence = collectScenarioEvidence;
51
50
  */
52
51
  const fs = __importStar(require("fs"));
53
52
  const path = __importStar(require("path"));
53
+ const parse_1 = require("../../harness/parse");
54
+ const render_free_gherkin_1 = require("../render-free-gherkin");
55
+ const read_file_once_1 = require("./read-file-once");
54
56
  const trace_binding_1 = require("./trace-binding");
55
57
  const trace_file_reader_1 = require("./trace-file-reader");
56
58
  const trace_zip_limits_1 = require("./trace-zip-limits");
57
59
  const select_final_attempt_1 = require("./select-final-attempt");
58
60
  const trace_run_record_1 = require("./trace-run-record");
61
+ /** A run record or JSON report larger than this is refused before a byte is read (fail closed, #926). */
62
+ exports.MAX_EVIDENCE_JSON_BYTES = 64 * 1024 * 1024;
63
+ /** Why an evidence file was not read — `outside the project` covers a link out, a swap and a non-file. */
64
+ function notRead(name, r) {
65
+ if (r.status === 'too-large')
66
+ return `${name} is larger than ${exports.MAX_EVIDENCE_JSON_BYTES / 1024 / 1024} MiB — not read`;
67
+ if (r.status === 'missing')
68
+ return `${name} is missing — not read`;
69
+ return `${name} is outside the project (a symlink?) or not a regular file — not read`;
70
+ }
59
71
  /** The reason a run is not judged once the verdict's deadline has passed (fail closed). */
60
72
  exports.OVER_BUDGET = 'verdict budget exceeded; run `sungen contract check`';
61
73
  const NO_RECORD = "no sungen run record under test-results-free/ (or test-results/) — run the free tests with their own config: outputDir 'test-results-free', trace: 'on' and the sungen run-record reporter";
62
- /** The real path of `file` when it is a regular file INSIDE the project (symlinks resolved); else null. */
63
- function insideProject(projectRoot, file) {
64
- try {
65
- const root = fs.realpathSync(projectRoot);
66
- const real = fs.realpathSync(file);
67
- return real.startsWith(root + path.sep) && fs.statSync(real).isFile() ? real : null;
68
- }
69
- catch {
70
- return null;
71
- }
72
- }
73
- function resolveAttachment(projectRoot, report, p) {
74
+ /** Where a report's trace attachment is: the first candidate that exists (read later, opened once). */
75
+ function attachmentPath(projectRoot, report, p) {
74
76
  for (const cand of path.isAbsolute(p) ? [p] : [path.resolve(projectRoot, p), path.resolve(path.dirname(report), p)]) {
75
- if (!fs.existsSync(cand))
76
- continue;
77
- const real = insideProject(projectRoot, cand);
78
- return real ? { file: real } : { outside: true };
77
+ if (fs.existsSync(cand))
78
+ return cand;
79
79
  }
80
- return {};
80
+ return null;
81
81
  }
82
82
  function judge(projectRoot, record, test, notBefore) {
83
83
  const scenarioId = (0, select_final_attempt_1.scenarioIdOfTest)(test.title, test.tags);
@@ -85,14 +85,21 @@ function judge(projectRoot, record, test, notBefore) {
85
85
  const fin = (0, select_final_attempt_1.finalAttempt)(test);
86
86
  if (fin.admissibility !== 'admissible')
87
87
  return { ...base, result: fin.result, status: fin.admissibility, reason: fin.reason };
88
- const { file, outside } = resolveAttachment(projectRoot, test.report, fin.result.tracePath);
89
- if (outside)
88
+ const missing = { ...base, result: fin.result, status: 'unproven', reason: `no trace at ${fin.result.tracePath} (the report points at a missing file)` };
89
+ const cand = attachmentPath(projectRoot, test.report, fin.result.tracePath);
90
+ if (!cand)
91
+ return missing;
92
+ // Opened once, inside the project, and what was opened is what is parsed and hashed (#926).
93
+ const limits = (0, trace_zip_limits_1.traceZipLimits)();
94
+ const read = (0, read_file_once_1.readInsideProject)(projectRoot, cand, limits.maxZipBytes);
95
+ if (read.status === 'missing')
96
+ return missing;
97
+ if (read.status === 'outside' || read.status === 'not-a-file') {
90
98
  return { ...base, result: fin.result, status: 'unproven', reason: `the trace ${path.basename(fin.result.tracePath)} is outside the project (or not a file) — not read` };
91
- if (!file)
92
- return { ...base, result: fin.result, status: 'unproven', reason: `no trace at ${fin.result.tracePath} (the report points at a missing file)` };
99
+ }
93
100
  let trace;
94
101
  try {
95
- trace = (0, trace_file_reader_1.readTraceFile)(file);
102
+ trace = (0, trace_file_reader_1.traceFromRead)(read, cand, limits);
96
103
  }
97
104
  catch (e) {
98
105
  const unsupported = e instanceof trace_zip_limits_1.TraceRejected && e.code === 'trace.version-unsupported';
@@ -108,15 +115,17 @@ function collectRuns(projectRoot, want, notBefore, deadline = Number.POSITIVE_IN
108
115
  const runs = [];
109
116
  const problems = [];
110
117
  const inputs = [];
118
+ const seen = [];
111
119
  const records = (0, trace_run_record_1.findRunRecords)(projectRoot);
112
120
  for (const file of records) {
113
121
  let record;
114
- if (!insideProject(projectRoot, file)) {
115
- problems.push(`${path.basename(file)} is outside the project (a symlink?) — not read`);
122
+ const recordRead = (0, read_file_once_1.readInsideProject)(projectRoot, file, exports.MAX_EVIDENCE_JSON_BYTES);
123
+ if (recordRead.status !== 'read') {
124
+ problems.push(notRead(path.basename(file), recordRead));
116
125
  continue;
117
126
  }
118
127
  try {
119
- record = (0, trace_run_record_1.readRunRecord)(file);
128
+ record = (0, trace_run_record_1.readRunRecord)(file, recordRead.bytes.toString('utf8'));
120
129
  }
121
130
  catch (e) {
122
131
  problems.push(`${path.basename(file)} is not trusted: ${e.message}`);
@@ -126,14 +135,14 @@ function collectRuns(projectRoot, want, notBefore, deadline = Number.POSITIVE_IN
126
135
  problems.push(`${path.basename(file)} names no JSON report — add the json reporter to the free-test config`);
127
136
  continue;
128
137
  }
129
- const reportFile = insideProject(projectRoot, path.resolve(projectRoot, record.report));
130
- if (!reportFile) {
131
- problems.push(`${path.basename(file)}: the report ${path.basename(record.report)} is missing or outside the project — not read`);
138
+ const reportRead = (0, read_file_once_1.readInsideProject)(projectRoot, path.resolve(projectRoot, record.report), exports.MAX_EVIDENCE_JSON_BYTES);
139
+ if (reportRead.status !== 'read') {
140
+ problems.push(`${path.basename(file)}: ${notRead(`the report ${path.basename(record.report)}`, reportRead)}`);
132
141
  continue;
133
142
  }
134
143
  let tests;
135
144
  try {
136
- tests = (0, select_final_attempt_1.readPlaywrightReport)(reportFile);
145
+ tests = (0, select_final_attempt_1.readPlaywrightReport)(reportRead.real, reportRead.bytes.toString('utf8'));
137
146
  }
138
147
  catch (e) {
139
148
  problems.push(e.message);
@@ -142,19 +151,41 @@ function collectRuns(projectRoot, want, notBefore, deadline = Number.POSITIVE_IN
142
151
  inputs.push(`${record.runId}:${record.report}`);
143
152
  for (const test of tests) {
144
153
  const id = (0, select_final_attempt_1.scenarioIdOfTest)(test.title, test.tags);
154
+ seen.push({ id, title: test.title });
145
155
  if (!want(id, test))
146
156
  continue;
147
157
  runs.push(Date.now() > deadline ? { scenarioId: id, test, record, status: 'unproven', reason: exports.OVER_BUDGET } : judge(projectRoot, record, test, notBefore));
148
158
  }
149
159
  }
150
- return { runs, problems, inputs, records: records.length };
160
+ return { runs, problems, inputs, records: records.length, seen };
161
+ }
162
+ /** A title without its leading id, for comparing words only: `VP-X-001 Login works` → `login works`. */
163
+ const wordsOf = (title) => {
164
+ const lead = title.match(/^\s*([A-Za-z][A-Za-z0-9.-]*)/)?.[1];
165
+ return (lead && (0, parse_1.isIdLike)(lead) ? title.trim().slice(lead.length) : title).replace(render_free_gherkin_1.CONTROL_CHARS, '').replace(/\s+/g, ' ').trim().toLowerCase();
166
+ };
167
+ /**
168
+ * Why no recorded test speaks for `id` (#943): a recorded test with this scenario's title under
169
+ * ANOTHER id is the usual cause — the id was renamed in the .free.feature (or in the test) and the
170
+ * other side was not — so that mismatch is named, with the fix.
171
+ */
172
+ function noTestFor(id, name, seen) {
173
+ const words = name ? wordsOf(name) : '';
174
+ const twin = words ? seen.find((t) => t.id !== id && wordsOf(t.title) === words) : undefined;
175
+ if (!twin)
176
+ return `no test for ${id} in the recorded run(s)`;
177
+ // The title and its id come from the report — untrusted: clipped, control characters dropped.
178
+ const [title, other] = [(0, render_free_gherkin_1.clip)(twin.title), (0, render_free_gherkin_1.clip)(twin.id, 60)];
179
+ return `no test for ${id} in the recorded run(s) — the recorded test "${title}" (id ${other}) has this scenario's title, so the scenario id and the test no longer match: `
180
+ + `give the test the id ${id} (in its title and its @tag), or the scenario the id ${other}, then run it again with trace on`;
151
181
  }
152
- function collectScenarioEvidence(projectRoot, ids, notBefore, deadline) {
182
+ /** The runs of each scenario id; `names` (id → scenario name) lets a missing test be explained. */
183
+ function collectScenarioEvidence(projectRoot, ids, notBefore, deadline, names) {
153
184
  const found = collectRuns(projectRoot, (id) => ids.has(id), notBefore, deadline);
154
185
  const runs = new Map([...ids].map((id) => [id, found.runs.filter((r) => r.scenarioId === id)]));
155
186
  for (const [id, list] of runs) {
156
187
  if (!list.length)
157
- list.push({ scenarioId: id, status: 'unproven', reason: found.records ? `no test for ${id} in the recorded run(s)` : NO_RECORD });
188
+ list.push({ scenarioId: id, status: 'unproven', reason: found.records ? noTestFor(id, names?.get(id), found.seen) : NO_RECORD });
158
189
  }
159
190
  return { runs, problems: found.problems, inputs: found.inputs };
160
191
  }
@@ -1 +1 @@
1
- {"version":3,"file":"collect-trace-evidence.js","sourceRoot":"","sources":["../../../src/contract/trace/collect-trace-evidence.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"collect-trace-evidence.js","sourceRoot":"","sources":["../../../src/contract/trace/collect-trace-evidence.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ export type FileRead = {
2
+ status: 'read';
3
+ real: string;
4
+ bytes: Buffer;
5
+ } | {
6
+ status: 'missing';
7
+ } | {
8
+ status: 'outside';
9
+ why: string;
10
+ } | {
11
+ status: 'not-a-file';
12
+ } | {
13
+ status: 'too-large';
14
+ size: number;
15
+ };
16
+ /** A regular file, opened once and read from that descriptor. */
17
+ export declare const readFileOnce: (file: string, maxBytes?: number) => FileRead;
18
+ /** A regular file INSIDE the project (symlinks resolved), opened once; see the header for the checks. */
19
+ export declare function readInsideProject(projectRoot: string, file: string, maxBytes?: number): FileRead;
20
+ //# sourceMappingURL=read-file-once.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"read-file-once.d.ts","sourceRoot":"","sources":["../../../src/contract/trace/read-file-once.ts"],"names":[],"mappings":"AAyBA,MAAM,MAAM,QAAQ,GAChB;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAC/C;IAAE,MAAM,EAAE,SAAS,CAAA;CAAE,GACrB;IAAE,MAAM,EAAE,SAAS,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,GAClC;IAAE,MAAM,EAAE,YAAY,CAAA;CAAE,GACxB;IAAE,MAAM,EAAE,WAAW,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAsC1C,iEAAiE;AACjE,eAAO,MAAM,YAAY,GAAI,MAAM,MAAM,EAAE,iBAAmC,KAAG,QAC7B,CAAC;AAErD,yGAAyG;AACzG,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,SAA2B,GAAG,QAAQ,CAqBlH"}
@@ -0,0 +1,135 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.readFileOnce = void 0;
37
+ exports.readInsideProject = readInsideProject;
38
+ /**
39
+ * Read trace evidence (a run record, a JSON report, a trace.zip) by opening it ONCE and checking what
40
+ * was opened (#926) — never "check the path, then read the path", which leaves a window in which the
41
+ * file can be swapped for a link to anything outside the project.
42
+ *
43
+ * readFileOnce(file) a regular file, read from its descriptor; O_NONBLOCK so a
44
+ * FIFO swapped in cannot hang the guard; size checked on the
45
+ * descriptor before a byte is read
46
+ * readInsideProject(root, file) the same for a path from untrusted input:
47
+ * 1. its real path must sit inside the project's real root
48
+ * 2. that real path is opened with O_NOFOLLOW (a link put
49
+ * there in the meantime fails the open)
50
+ * 3. AFTER the open the path is resolved again: still inside,
51
+ * and the same file (device + inode) as the descriptor —
52
+ * a swap made before the open and undone after it is caught
53
+ *
54
+ * A file truncated or grown while it is read gives the bytes the descriptor had; the caller hashes
55
+ * those bytes, so nothing unread is ever vouched for.
56
+ *
57
+ * Windows has no O_NOFOLLOW (the constant is 0 there): the open follows a link swapped in, and the
58
+ * device + inode re-check after the open is what refuses it.
59
+ */
60
+ const fs = __importStar(require("fs"));
61
+ const path = __importStar(require("path"));
62
+ const { O_RDONLY } = fs.constants;
63
+ const O_NOFOLLOW = fs.constants.O_NOFOLLOW ?? 0;
64
+ const O_NONBLOCK = fs.constants.O_NONBLOCK ?? 0;
65
+ function readFd(fd, size) {
66
+ const buf = Buffer.alloc(size);
67
+ let off = 0;
68
+ while (off < size) {
69
+ const n = fs.readSync(fd, buf, off, size - off, off);
70
+ if (n === 0)
71
+ break;
72
+ off += n;
73
+ }
74
+ return off === size ? buf : buf.subarray(0, off);
75
+ }
76
+ function openAndRead(file, flags, maxBytes, recheck) {
77
+ let fd;
78
+ try {
79
+ fd = fs.openSync(file, flags);
80
+ }
81
+ catch (e) {
82
+ const code = e.code;
83
+ if (code === 'ENOENT')
84
+ return { status: 'missing' };
85
+ // O_NOFOLLOW on a link: ELOOP (Linux, macOS) or EMLINK (FreeBSD).
86
+ if (code === 'ELOOP' || code === 'EMLINK')
87
+ return { status: 'outside', why: 'it became a link while it was opened' };
88
+ throw e;
89
+ }
90
+ try {
91
+ const st = fs.fstatSync(fd);
92
+ if (!st.isFile())
93
+ return { status: 'not-a-file' };
94
+ if (st.size > maxBytes)
95
+ return { status: 'too-large', size: st.size };
96
+ const moved = recheck?.(st);
97
+ if (moved)
98
+ return { status: 'outside', why: moved };
99
+ return { status: 'read', real: file, bytes: readFd(fd, st.size) };
100
+ }
101
+ finally {
102
+ fs.closeSync(fd);
103
+ }
104
+ }
105
+ /** A regular file, opened once and read from that descriptor. */
106
+ const readFileOnce = (file, maxBytes = Number.POSITIVE_INFINITY) => openAndRead(file, O_RDONLY | O_NONBLOCK, maxBytes);
107
+ exports.readFileOnce = readFileOnce;
108
+ /** A regular file INSIDE the project (symlinks resolved), opened once; see the header for the checks. */
109
+ function readInsideProject(projectRoot, file, maxBytes = Number.POSITIVE_INFINITY) {
110
+ let root;
111
+ let real;
112
+ try {
113
+ root = fs.realpathSync(projectRoot);
114
+ real = fs.realpathSync(file);
115
+ }
116
+ catch (e) {
117
+ return e.code === 'ENOENT' ? { status: 'missing' } : { status: 'outside', why: 'its real path cannot be resolved' };
118
+ }
119
+ const within = (p) => p.startsWith(root + path.sep);
120
+ if (!within(real))
121
+ return { status: 'outside', why: 'its real path is outside the project' };
122
+ return openAndRead(real, O_RDONLY | O_NOFOLLOW | O_NONBLOCK, maxBytes, (opened) => {
123
+ try {
124
+ const again = fs.realpathSync(file);
125
+ if (!within(again))
126
+ return 'it was swapped for a link outside the project while it was opened';
127
+ const now = fs.statSync(again);
128
+ return now.dev === opened.dev && now.ino === opened.ino ? null : 'it was swapped for another file while it was opened';
129
+ }
130
+ catch {
131
+ return 'it moved while it was opened';
132
+ }
133
+ });
134
+ }
135
+ //# sourceMappingURL=read-file-once.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"read-file-once.js","sourceRoot":"","sources":["../../../src/contract/trace/read-file-once.ts"],"names":[],"mappings":"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"}
@@ -16,8 +16,8 @@ export interface ReportTest {
16
16
  report: string;
17
17
  }
18
18
  export type Admissibility = 'admissible' | 'inconclusive' | 'unproven';
19
- /** Every test of a report; throws when the file is not a Playwright JSON report at all. */
20
- export declare function readPlaywrightReport(file: string): ReportTest[];
19
+ /** Every test of a report (`text`: its bytes, already read once by the caller); throws when it is not a Playwright JSON report at all. */
20
+ export declare function readPlaywrightReport(file: string, text?: string): ReportTest[];
21
21
  export declare function scenarioIdOfTest(title: string, tags: string[]): string;
22
22
  export declare function finalAttempt(t: ReportTest): {
23
23
  result?: ReportResult;
@@ -1 +1 @@
1
- {"version":3,"file":"select-final-attempt.d.ts","sourceRoot":"","sources":["../../../src/contract/trace/select-final-attempt.ts"],"names":[],"mappings":"AAeA,MAAM,WAAW,YAAY;IAAG,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE;AAC9H,MAAM,WAAW,UAAU;IAAG,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,EAAE,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,YAAY,EAAE,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE;AACnK,MAAM,MAAM,aAAa,GAAG,YAAY,GAAG,cAAc,GAAG,UAAU,CAAC;AAiBvE,2FAA2F;AAC3F,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,EAAE,CAmB/D;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,CAKtE;AAED,wBAAgB,YAAY,CAAC,CAAC,EAAE,UAAU,GAAG;IAAE,MAAM,CAAC,EAAE,YAAY,CAAC;IAAC,aAAa,EAAE,aAAa,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAMpH"}
1
+ {"version":3,"file":"select-final-attempt.d.ts","sourceRoot":"","sources":["../../../src/contract/trace/select-final-attempt.ts"],"names":[],"mappings":"AAeA,MAAM,WAAW,YAAY;IAAG,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE;AAC9H,MAAM,WAAW,UAAU;IAAG,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,EAAE,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,YAAY,EAAE,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE;AACnK,MAAM,MAAM,aAAa,GAAG,YAAY,GAAG,cAAc,GAAG,UAAU,CAAC;AAiBvE,0IAA0I;AAC1I,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,UAAU,EAAE,CAmB9E;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,CAKtE;AAED,wBAAgB,YAAY,CAAC,CAAC,EAAE,UAAU,GAAG;IAAE,MAAM,CAAC,EAAE,YAAY,CAAC;IAAC,aAAa,EAAE,aAAa,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAMpH"}
@@ -67,11 +67,11 @@ function resultOf(r) {
67
67
  const trace = arr(r.attachments).find((a) => isObj(a) && a.name === 'trace' && typeof a.path === 'string');
68
68
  return { retry: r.retry, status: r.status, startTime: String(r.startTime ?? ''), duration: Number(r.duration) || 0, tracePath: trace?.path ?? null };
69
69
  }
70
- /** Every test of a report; throws when the file is not a Playwright JSON report at all. */
71
- function readPlaywrightReport(file) {
70
+ /** Every test of a report (`text`: its bytes, already read once by the caller); throws when it is not a Playwright JSON report at all. */
71
+ function readPlaywrightReport(file, text) {
72
72
  let doc;
73
73
  try {
74
- doc = JSON.parse(fs.readFileSync(file, 'utf8'));
74
+ doc = JSON.parse(text ?? fs.readFileSync(file, 'utf8'));
75
75
  }
76
76
  catch (e) {
77
77
  throw new Error(`the JSON report ${file} is not readable (${e.message.split('\n')[0]})`);
@@ -1 +1 @@
1
- {"version":3,"file":"select-final-attempt.js","sourceRoot":"","sources":["../../../src/contract/trace/select-final-attempt.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"select-final-attempt.js","sourceRoot":"","sources":["../../../src/contract/trace/select-final-attempt.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmCA,oDAmBC;AAED,4CAKC;AAED,oCAMC;AArED;;;;;;;;;;;GAWG;AACH,uCAAyB;AACzB,+CAA+C;AAM/C,MAAM,KAAK,GAAG,CAAC,CAAU,EAAgC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AAC9G,MAAM,GAAG,GAAG,CAAC,CAAU,EAAa,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AAEnE,QAAQ,CAAC,CAAC,OAAO,CAAC,KAAc;IAC9B,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;QAAE,OAAO;IAC1B,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC;QAAE,IAAI,KAAK,CAAC,CAAC,CAAC;YAAE,MAAM,CAAC,CAAC;IACxD,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC;QAAE,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AACvD,CAAC;AAED,SAAS,QAAQ,CAAC,CAAU;IAC1B,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,OAAO,CAAC,CAAC,MAAM,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IACzF,MAAM,KAAK,GAAG,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,OAAO,IAAI,OAAO,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAiC,CAAC;IAC3I,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,KAAe,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,SAAS,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,IAAI,IAAI,EAAE,CAAC;AACjK,CAAC;AAED,0IAA0I;AAC1I,SAAgB,oBAAoB,CAAC,IAAY,EAAE,IAAa;IAC9D,IAAI,GAAY,CAAC;IACjB,IAAI,CAAC;QAAC,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;IAAC,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QAAC,MAAM,IAAI,KAAK,CAAC,mBAAmB,IAAI,qBAAsB,CAAW,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IAAC,CAAC;IACnL,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,8CAA8C,CAAC,CAAC;IACtH,MAAM,GAAG,GAAiB,EAAE,CAAC;IAC7B,KAAK,MAAM,GAAG,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;QAC7B,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;YAChC,IAAI,OAAO,IAAI,CAAC,EAAE,KAAK,QAAQ,IAAI,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ;gBAAE,SAAS;YAC7G,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;gBAChC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;oBAAE,SAAS;gBACxB,MAAM,OAAO,GAAG,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAqB,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;gBACrH,GAAG,CAAC,IAAI,CAAC;oBACP,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;oBACjF,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,WAAW,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI;iBAC9F,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAgB,gBAAgB,CAAC,KAAa,EAAE,IAAc;IAC5D,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,gBAAQ,CAAC,CAAC;IAChE,IAAI,GAAG;QAAE,OAAO,GAAG,CAAC,WAAW,EAAE,CAAC;IAClC,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,8BAA8B,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC9D,OAAO,IAAI,IAAI,IAAA,gBAAQ,EAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;AACzF,CAAC;AAED,SAAgB,YAAY,CAAC,CAAa;IACxC,MAAM,MAAM,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAC/C,IAAI,CAAC,MAAM;QAAE,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,EAAE,yCAAyC,EAAE,CAAC;IACrG,IAAI,MAAM,CAAC,MAAM,KAAK,QAAQ;QAAE,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,EAAE,4BAA4B,MAAM,CAAC,KAAK,mBAAmB,MAAM,CAAC,MAAM,GAAG,EAAE,CAAC;IACtK,IAAI,CAAC,MAAM,CAAC,SAAS;QAAE,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,EAAE,yCAAyC,MAAM,CAAC,KAAK,6CAA6C,EAAE,CAAC;IAChL,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,YAAY,EAAE,CAAC;AACjD,CAAC"}
@@ -1,3 +1,4 @@
1
+ import { FileRead } from './read-file-once';
1
2
  import { TraceZipLimits } from './trace-zip-limits';
2
3
  export type TraceEvent = {
3
4
  type: string;
@@ -36,6 +37,11 @@ export interface ParsedTrace {
36
37
  readResource(ref: string): string | null;
37
38
  }
38
39
  export declare function readTraceBuffer(buf: Buffer, label: string, limits?: TraceZipLimits): ParsedTrace;
39
- /** Read a trace from disk: a regular file, size-checked BEFORE it is read into memory. */
40
+ /**
41
+ * A trace opened once (read-file-once.ts) → parsed: the size was checked on the descriptor BEFORE it
42
+ * was read into memory. `missing` / `outside` are the caller's to report; here they throw.
43
+ */
44
+ export declare function traceFromRead(read: FileRead, label: string, limits?: TraceZipLimits): ParsedTrace;
45
+ /** Read a trace from a trusted path (a fixture, a test): a regular file, opened once. */
40
46
  export declare function readTraceFile(file: string, limits?: TraceZipLimits): ParsedTrace;
41
47
  //# sourceMappingURL=trace-file-reader.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"trace-file-reader.d.ts","sourceRoot":"","sources":["../../../src/contract/trace/trace-file-reader.ts"],"names":[],"mappings":"AAgBA,OAAO,EAA2D,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAE7G,MAAM,MAAM,UAAU,GAAG;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AACpE,MAAM,WAAW,UAAU;IAAG,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE;AAC1E;;;;GAIG;AACH,MAAM,WAAW,WAAW;IAAG,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,UAAU,EAAE,CAAC;IAAC,OAAO,EAAE,UAAU,EAAE,CAAC;IAAC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,EAAE,CAAC,CAAA;CAAE;AAE9I,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IACpD,MAAM,EAAE,UAAU,EAAE,CAAC;IACrB,OAAO,EAAE,WAAW,EAAE,CAAC;IACvB,8EAA8E;IAC9E,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,4FAA4F;IAC5F,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,kGAAkG;IAClG,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;CAC1C;AA6CD,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,GAAE,cAAiC,GAAG,WAAW,CAwClH;AAED,0FAA0F;AAC1F,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,GAAE,cAAiC,GAAG,WAAW,CAKlG"}
1
+ {"version":3,"file":"trace-file-reader.d.ts","sourceRoot":"","sources":["../../../src/contract/trace/trace-file-reader.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,QAAQ,EAAgB,MAAM,kBAAkB,CAAC;AAE1D,OAAO,EAA2D,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAE7G,MAAM,MAAM,UAAU,GAAG;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AACpE,MAAM,WAAW,UAAU;IAAG,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE;AAC1E;;;;GAIG;AACH,MAAM,WAAW,WAAW;IAAG,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,UAAU,EAAE,CAAC;IAAC,OAAO,EAAE,UAAU,EAAE,CAAC;IAAC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,EAAE,CAAC,CAAA;CAAE;AAE9I,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IACpD,MAAM,EAAE,UAAU,EAAE,CAAC;IACrB,OAAO,EAAE,WAAW,EAAE,CAAC;IACvB,8EAA8E;IAC9E,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,4FAA4F;IAC5F,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,kGAAkG;IAClG,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;CAC1C;AA6CD,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,GAAE,cAAiC,GAAG,WAAW,CAwClH;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,GAAE,cAAiC,GAAG,WAAW,CAQnH;AAED,yFAAyF;AACzF,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,GAAE,cAAiC,GAAG,WAAW,CAElG"}