putitoutthere 0.2.38 → 0.2.39

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 (57) hide show
  1. package/CHANGELOG.md +4 -0
  2. package/MIGRATIONS.md +32 -0
  3. package/dist/cli.d.ts +3 -0
  4. package/dist/cli.d.ts.map +1 -1
  5. package/dist/cli.js +36 -2
  6. package/dist/cli.js.map +1 -1
  7. package/dist/utils/list-files-recursive.d.ts +11 -0
  8. package/dist/utils/list-files-recursive.d.ts.map +1 -0
  9. package/dist/utils/list-files-recursive.js +28 -0
  10. package/dist/utils/list-files-recursive.js.map +1 -0
  11. package/dist/verify/npm-tarball/download.d.ts +20 -0
  12. package/dist/verify/npm-tarball/download.d.ts.map +1 -0
  13. package/dist/verify/npm-tarball/download.js +28 -0
  14. package/dist/verify/npm-tarball/download.js.map +1 -0
  15. package/dist/verify/npm-tarball/index.d.ts +18 -0
  16. package/dist/verify/npm-tarball/index.d.ts.map +1 -0
  17. package/dist/verify/npm-tarball/index.js +22 -0
  18. package/dist/verify/npm-tarball/index.js.map +1 -0
  19. package/dist/verify/npm-tarball/local-dir-state.d.ts +12 -0
  20. package/dist/verify/npm-tarball/local-dir-state.d.ts.map +1 -0
  21. package/dist/verify/npm-tarball/local-dir-state.js +20 -0
  22. package/dist/verify/npm-tarball/local-dir-state.js.map +1 -0
  23. package/dist/verify/npm-tarball/main.d.ts +19 -0
  24. package/dist/verify/npm-tarball/main.d.ts.map +1 -0
  25. package/dist/verify/npm-tarball/main.js +71 -0
  26. package/dist/verify/npm-tarball/main.js.map +1 -0
  27. package/dist/verify/npm-tarball/resolve-url.d.ts +21 -0
  28. package/dist/verify/npm-tarball/resolve-url.d.ts.map +1 -0
  29. package/dist/verify/npm-tarball/resolve-url.js +45 -0
  30. package/dist/verify/npm-tarball/resolve-url.js.map +1 -0
  31. package/dist/verify/npm-tarball/triple.d.ts +20 -0
  32. package/dist/verify/npm-tarball/triple.d.ts.map +1 -0
  33. package/dist/verify/npm-tarball/triple.js +57 -0
  34. package/dist/verify/npm-tarball/triple.js.map +1 -0
  35. package/dist/verify/npm-tarball/types.d.ts +33 -0
  36. package/dist/verify/npm-tarball/types.d.ts.map +1 -0
  37. package/dist/verify/npm-tarball/types.js +9 -0
  38. package/dist/verify/npm-tarball/types.js.map +1 -0
  39. package/dist/{verify-format.d.ts → verify/posture-format.d.ts} +2 -2
  40. package/dist/verify/posture-format.d.ts.map +1 -0
  41. package/dist/{verify-format.js → verify/posture-format.js} +1 -1
  42. package/dist/verify/posture-format.js.map +1 -0
  43. package/dist/{verify-types.d.ts → verify/posture-types.d.ts} +2 -2
  44. package/dist/verify/posture-types.d.ts.map +1 -0
  45. package/dist/{verify-types.js → verify/posture-types.js} +1 -1
  46. package/dist/verify/posture-types.js.map +1 -0
  47. package/dist/{verify.d.ts → verify/posture.d.ts} +2 -2
  48. package/dist/verify/posture.d.ts.map +1 -0
  49. package/dist/{verify.js → verify/posture.js} +4 -4
  50. package/dist/verify/posture.js.map +1 -0
  51. package/package.json +1 -1
  52. package/dist/verify-format.d.ts.map +0 -1
  53. package/dist/verify-format.js.map +0 -1
  54. package/dist/verify-types.d.ts.map +0 -1
  55. package/dist/verify-types.js.map +0 -1
  56. package/dist/verify.d.ts.map +0 -1
  57. package/dist/verify.js.map +0 -1
package/CHANGELOG.md CHANGED
@@ -10,6 +10,10 @@ are prefixed `**BREAKING**` and link to the matching section in
10
10
 
11
11
  ## Unreleased
12
12
 
13
+ ### Added
14
+
15
+ - Added: `putitoutthere verify npm-tarball` — a new `verify` subcommand that downloads a published npm tarball back from the registry and asserts it honors the shape it declared: main/noarch rows must contain every directory entry their `package.json` `files[]` declares (present and non-empty), and `--per-triple` asserts each synthesized platform package ships a non-`package.json` file (its `.node` / executable). Absorbs the two inline verification blocks the reusable e2e workflow (`e2e-fixture-job.yml`) previously carried as untested bash — same row selection, same `npm view` packument-lag retry, same `::error::` messages — into one colocated-tested engine command invoked from both former sites (part of epic #442). `verify` is now a command family: bare `verify` (and the new explicit spelling `verify posture`) is the unchanged #414 OIDC-vs-token publish/trust posture check; `verify npm-tarball` is this new artifact-content check. #443. (verified by: integration, e2e/CLI)
16
+
13
17
  ### Changed
14
18
 
15
19
  - Changed: `_matrix.yml`'s build job now primes a cargo cache via `Swatinem/rust-cache@v2` on every row that invokes cargo (pypi/maturin non-sdist, npm/napi, npm/bundled-cli non-main), partitioned by `matrix.target` via `shared-key`. Previously every per-target matrix cell cold-compiled its full Cargo dep graph on every PR — observed at 4-6 min per cell and ~8 min wall-clock on a downstream consumer's `release-precheck` run (thekevinscott/dirsql run #125, a typical no-Rust-change PR), leaving the gate one bad runner-queue minute away from tripping a 10-min CI budget with no headroom. The cache step is gated to skip rows that produce no cargo work (pypi sdist, pure-Python hatch wheels, npm vanilla, bundled-cli `main`), and the per-target `shared-key` prevents one target's writer from blowing away the next cell's cache slot. `workspaces` enumerates both `matrix.path` (the consumer's package crate) and `matrix.bundle_cli.crate_path` (the bundle_cli crate when it lives in a separate dir), so the dirsql shape and single-crate layouts both cache their target dirs. #391. (verified by: unit/ubuntu-latest)
package/MIGRATIONS.md CHANGED
@@ -21,6 +21,38 @@ Each section covers five things, in order:
21
21
 
22
22
  ## Unreleased
23
23
 
24
+ ### New `verify npm-tarball` subcommand; `verify` becomes a command family
25
+
26
+ **Summary.** `putitoutthere verify` is now a command family. Bare `verify`
27
+ — the #414 OIDC-vs-token publish/trust posture check — is unchanged and
28
+ additionally spellable `verify posture`. A new subcommand,
29
+ `verify npm-tarball`, downloads a published npm tarball back from the
30
+ registry and asserts its contents honor what was declared: main/noarch
31
+ rows must contain every directory entry their `package.json` `files[]`
32
+ declares, and `--per-triple` asserts each synthesized platform package
33
+ ships a non-`package.json` binary. This extracts the two inline bash
34
+ blocks the reusable e2e workflow carried (`e2e-fixture-job.yml`) into one
35
+ colocated-tested engine command (epic #442, sub-issue #443); the behavior
36
+ is unchanged — same row selection, same registry read + retry, same error
37
+ messages.
38
+
39
+ **Required changes.** None. Additive. Consumers compose with the reusable
40
+ workflow, not the CLI directly (design-commitment #10); this subcommand is
41
+ an internal seam the workflow invokes. Anyone scripting `verify` directly
42
+ keeps the same behavior — bare `verify` still means the posture check.
43
+
44
+ **Deprecations removed.** None.
45
+
46
+ **Behavior changes without code changes.** None. The reusable workflow's
47
+ externally observable behavior (what publishes, tag format, release body)
48
+ is identical; only the internal implementation of the post-publish
49
+ tarball-verification step moved from inline YAML into the engine.
50
+
51
+ **Verification.** Run `putitoutthere verify npm-tarball --matrix <plan
52
+ matrix> --cwd <repo>` after a publish: it prints `ok: package/<dir>/` per
53
+ honored `files[]` directory and exits non-zero (with a `::error::` naming
54
+ the missing directory) if the published tarball dropped one.
55
+
24
56
  ### GitHub Release creation touches only the release's own tags
25
57
 
26
58
  **Summary.** The reusable workflow's `Create GitHub Release(s) for new
package/dist/cli.d.ts CHANGED
@@ -48,6 +48,9 @@ interface ParsedFlags {
48
48
  path?: string | undefined;
49
49
  version?: string | undefined;
50
50
  releasePackages?: string | undefined;
51
+ matrix?: string | undefined;
52
+ registry?: string | undefined;
53
+ perTriple: boolean;
51
54
  }
52
55
  export declare function parseFlags(argv: readonly string[]): ParsedFlags;
53
56
  export declare function run(argv: readonly string[]): Promise<number>;
package/dist/cli.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AAoEH,UAAU,WAAW;IACnB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,IAAI,EAAE,OAAO,CAAC;IAGd,KAAK,EAAE,OAAO,CAAC;IAIf,MAAM,EAAE,OAAO,CAAC;IAIhB,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAG7B,eAAe,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACtC;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,WAAW,CA2B/D;AAED,wBAAsB,GAAG,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAoQlE"}
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AAyEH,UAAU,WAAW;IACnB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,IAAI,EAAE,OAAO,CAAC;IAGd,KAAK,EAAE,OAAO,CAAC;IAIf,MAAM,EAAE,OAAO,CAAC;IAIhB,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAG7B,eAAe,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAIrC,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,SAAS,EAAE,OAAO,CAAC;CACpB;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,WAAW,CA+B/D;AAED,wBAAsB,GAAG,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAuRlE"}
package/dist/cli.js CHANGED
@@ -46,8 +46,9 @@ import { publish } from './publish.js';
46
46
  import { reconcile } from './reconcile.js';
47
47
  import { formatStatusRow } from './status-format.js';
48
48
  import { computeStatus } from './status.js';
49
- import { formatVerifyRow } from './verify-format.js';
50
- import { computeVerify } from './verify.js';
49
+ import { formatVerifyRow } from './verify/posture-format.js';
50
+ import { verifyNpmTarball } from './verify/npm-tarball/index.js';
51
+ import { computeVerify } from './verify/posture.js';
51
52
  import { writeCrateVersionForBuild } from './write-crate-version.js';
52
53
  import { writeLauncherFromConfig } from './write-launcher.js';
53
54
  import { writeVersionForBuild } from './write-version.js';
@@ -78,6 +79,7 @@ function printUsage() {
78
79
  ' status Report registry-vs-tag drift (read-only; #403)',
79
80
  ' reconcile Backfill missing tags for published-but-untagged packages (#403)',
80
81
  ' verify Report publish/trust posture — OIDC vs token, per registry (#403)',
82
+ ' verify npm-tarball Assert a published npm tarball honors package.json files[] (#443)',
81
83
  ' write-version Bump a package manifest to the planned version (pre-build; #276)',
82
84
  ' write-crate-version Bump a crate Cargo.toml to the planned version (pre-build; #366)',
83
85
  ' write-launcher Generate the bundled-cli npm launcher script (pre-build; #299)',
@@ -89,6 +91,9 @@ function printUsage() {
89
91
  ' --path <dir> package or crate directory (write-version / write-crate-version)',
90
92
  ' --version <v> planned version (write-version / write-crate-version)',
91
93
  ' --release-packages <spec> manual-release spec (plan / publish)',
94
+ ' --matrix <json> plan matrix (verify npm-tarball)',
95
+ ' --registry <url> registry to read from (verify npm-tarball); default real npm',
96
+ ' --per-triple verify synthesized per-triple tarballs (verify npm-tarball)',
92
97
  ' --check exit non-zero when status finds drift',
93
98
  ' --dry-run report what reconcile would do without writing tags',
94
99
  ' --json emit machine-readable output',
@@ -103,6 +108,7 @@ export function parseFlags(argv) {
103
108
  json: false,
104
109
  check: false,
105
110
  dryRun: false,
111
+ perTriple: false,
106
112
  };
107
113
  for (let i = 0; i < argv.length; i++) {
108
114
  const a = argv[i];
@@ -128,6 +134,15 @@ export function parseFlags(argv) {
128
134
  else if (a === '--release-packages') {
129
135
  out.releasePackages = argv[++i];
130
136
  }
137
+ else if (a === '--matrix') {
138
+ out.matrix = argv[++i];
139
+ }
140
+ else if (a === '--registry') {
141
+ out.registry = argv[++i];
142
+ }
143
+ else if (a === '--per-triple') {
144
+ out.perTriple = true;
145
+ }
131
146
  else if (a === '--dry-run') {
132
147
  out.dryRun = true;
133
148
  }
@@ -288,6 +303,25 @@ export async function run(argv) {
288
303
  return 0;
289
304
  }
290
305
  case 'verify': {
306
+ // #442/#443: `verify` is a command family. Bare `verify` (and
307
+ // `verify posture`) is the #414 publish/trust-posture check;
308
+ // `verify npm-tarball` is the extracted published-artifact
309
+ // verification. The subcommand is the first non-flag positional.
310
+ const sub = rest[0] !== undefined && !rest[0].startsWith('-') ? rest[0] : 'posture';
311
+ if (sub === 'npm-tarball') {
312
+ if (flags.matrix === undefined) {
313
+ throw new Error('verify npm-tarball requires --matrix <plan-matrix-json>');
314
+ }
315
+ return verifyNpmTarball({
316
+ cwd: flags.cwd,
317
+ matrix: flags.matrix,
318
+ registry: flags.registry,
319
+ perTriple: flags.perTriple,
320
+ });
321
+ }
322
+ if (sub !== 'posture') {
323
+ throw new Error(`unknown verify subcommand: ${sub}`);
324
+ }
291
325
  // #414: per-package publish/trust posture. Reads each package's
292
326
  // latest release and its trust attribution — OIDC trusted
293
327
  // publisher / provenance vs token — from public registry data,
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AAEH,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEhD,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AACrE,OAAO,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEvC,MAAM,QAAQ,GAAG;IACf,MAAM;IACN,SAAS;IACT,OAAO;IACP,QAAQ;IACR,WAAW;IACX,QAAQ;IACR,eAAe;IACf,qBAAqB;IACrB,gBAAgB;IAChB,SAAS;CACD,CAAC;AAGX,SAAS,SAAS,CAAC,KAAa;IAC9B,OAAQ,QAA8B,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AACzD,CAAC;AAED,SAAS,UAAU;IACjB,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB;QACE,0CAA0C;QAC1C,EAAE;QACF,WAAW;QACX,oDAAoD;QACpD,mCAAmC;QACnC,4DAA4D;QAC5D,iEAAiE;QACjE,mFAAmF;QACnF,oFAAoF;QACpF,mFAAmF;QACnF,yFAAyF;QACzF,iFAAiF;QACjF,oCAAoC;QACpC,EAAE;QACF,UAAU;QACV,uCAAuC;QACvC,gDAAgD;QAChD,sFAAsF;QACtF,2EAA2E;QAC3E,mEAAmE;QACnE,2DAA2D;QAC3D,yEAAyE;QACzE,kDAAkD;QAClD,EAAE;QACF,8DAA8D;QAC9D,EAAE;KACH,CAAC,IAAI,CAAC,IAAI,CAAC,CACb,CAAC;AACJ,CAAC;AAuBD,MAAM,UAAU,UAAU,CAAC,IAAuB;IAChD,MAAM,GAAG,GAAgB;QACvB,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE;QAClB,IAAI,EAAE,KAAK;QACX,KAAK,EAAE,KAAK;QACZ,MAAM,EAAE,KAAK;KACd,CAAC;IACF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,CAAE,CAAC;QACnB,sFAAsF;QACtF,IAAI,CAAC,KAAK,OAAO,EAAE,CAAC;YAAA,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC;QAAA,CAAC;aAC/C,IAAI,CAAC,KAAK,UAAU,EAAE,CAAC;YAAA,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QAAA,CAAC;aAC/C,IAAI,CAAC,KAAK,QAAQ,EAAE,CAAC;YAAA,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC;QAAA,CAAC;aACtC,IAAI,CAAC,KAAK,SAAS,EAAE,CAAC;YAAA,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC;QAAA,CAAC;aACxC,IAAI,CAAC,KAAK,QAAQ,EAAE,CAAC;YAAA,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QAAA,CAAC;aAC3C,IAAI,CAAC,KAAK,WAAW,EAAE,CAAC;YAAA,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QAAA,CAAC;aACjD,IAAI,CAAC,KAAK,oBAAoB,EAAE,CAAC;YAAA,GAAG,CAAC,eAAe,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QAAA,CAAC;aAClE,IAAI,CAAC,KAAK,WAAW,EAAE,CAAC;YAAA,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC;QAAA,CAAC;IAClD,CAAC;IACD,oEAAoE;IACpE,wEAAwE;IACxE,oEAAoE;IACpE,kEAAkE;IAClE,mEAAmE;IACnE,8CAA8C;IAC9C,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;QAAA,GAAG,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAAA,CAAC;IACvD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,GAAG,CAAC,IAAuB;IAC/C,MAAM,CAAC,EAAE,AAAD,EAAG,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;IAChC,qEAAqE;IACrE,kEAAkE;IAClE,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;QACtB,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,yEAAyE,CAC1E,CAAC;QACF,OAAO,CAAC,CAAC;IACX,CAAC;IACD,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,QAAQ,EAAE,CAAC;QACrC,UAAU,EAAE,CAAC;QACb,OAAO,CAAC,CAAC;IACX,CAAC;IACD,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,WAAW,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;QAC7D,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,iBAAiB,OAAO,IAAI,CAAC,CAAC;QACnD,OAAO,CAAC,CAAC;IACX,CAAC;IACD,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC;QACpB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,mCAAmC,GAAG,IAAI,CAAC,CAAC;QACjE,UAAU,EAAE,CAAC;QACb,OAAO,CAAC,CAAC;IACX,CAAC;IAED,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;QAC/B,kEAAkE;QAClE,oEAAoE;QACpE,0DAA0D;QAC1D,IAAI,KAAK,CAAC,MAAM,IAAI,GAAG,KAAK,WAAW,EAAE,CAAC;YACxC,MAAM,IAAI,KAAK,CACb,sHAAsH,CACvH,CAAC;QACJ,CAAC;QACD,QAAQ,GAAG,EAAE,CAAC;YACZ,KAAK,MAAM,CAAC,CAAC,CAAC;gBACZ,kEAAkE;gBAClE,6DAA6D;gBAC7D,iEAAiE;gBACjE,yDAAyD;gBACzD,kEAAkE;gBAClE,0DAA0D;gBAC1D,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,MAAM,iBAAiB,CAAC;oBACzD,GAAG,EAAE,KAAK,CAAC,GAAG;oBACd,GAAG,CAAC,KAAK,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBACnE,eAAe,EAAE,KAAK,CAAC,eAAe;iBACvC,CAAC,CAAC;gBACH,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;oBACf,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;gBAC1E,CAAC;qBAAM,CAAC;oBACN,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;wBACxB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC;oBACnD,CAAC;yBAAM,CAAC;wBACN,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,MAAM,mBAAmB,CAAC,CAAC;wBAC1D,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;4BACzB,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,KAAK,GAAG,CAAC,IAAI,aAAa,GAAG,CAAC,OAAO,YAAY,GAAG,CAAC,MAAM,cAAc,GAAG,CAAC,aAAa,IAAI,CAC/F,CAAC;wBACJ,CAAC;wBACD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;wBACxC,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;4BACzB,MAAM,IAAI,GAAG,CAAC,CAAC,OAAO,KAAK,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;4BAC9E,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,OAAO,KAAK,CAAC,CAAC,OAAO,KAAK,CAAC,CAAC,OAAO,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;wBAC7F,CAAC;wBACD,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;4BACrB,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,qBAAqB,CAAC,CAAC,SAAS,uCAAuC,CAAC,CAAC,UAAU,UAAU,CAC9F,CAAC;wBACJ,CAAC;oBACH,CAAC;gBACH,CAAC;gBACD,gEAAgE;gBAChE,+DAA+D;gBAC/D,iEAAiE;gBACjE,kEAAkE;gBAClE,kEAAkE;gBAClE,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC;gBAC/C,IAAI,YAAY,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACtC,MAAM,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAClC,EAAE,CAAC,cAAc,CACf,YAAY,EACZ,UAAU,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,EACpC,MAAM,CACP,CACF,CAAC;gBACJ,CAAC;gBACD,OAAO,CAAC,CAAC;YACX,CAAC;YACD,KAAK,OAAO,CAAC,CAAC,CAAC;gBACb,8DAA8D;gBAC9D,0DAA0D;gBAC1D,8DAA8D;gBAC9D,8DAA8D;gBAC9D,wCAAwC;gBACxC,MAAM,QAAQ,GAAG,SAAS,CAAC;oBACzB,GAAG,EAAE,KAAK,CAAC,GAAG;oBACd,GAAG,CAAC,KAAK,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBACpE,CAAC,CAAC;gBACH,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;oBACf,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;gBAC5D,CAAC;qBAAM,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACjC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC;gBAC/C,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,wBAAwB,QAAQ,CAAC,MAAM,WAAW,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,OAAO,CAC1F,CAAC;oBACF,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;wBACzB,MAAM,MAAM,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC;wBACzD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC;oBAClD,CAAC;gBACH,CAAC;gBACD,OAAO,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACvC,CAAC;YACD,KAAK,QAAQ,CAAC,CAAC,CAAC;gBACd,gEAAgE;gBAChE,8DAA8D;gBAC9D,gEAAgE;gBAChE,gEAAgE;gBAChE,+CAA+C;gBAC/C,MAAM,IAAI,GAAG,MAAM,aAAa,CAAC;oBAC/B,GAAG,EAAE,KAAK,CAAC,GAAG;oBACd,GAAG,CAAC,KAAK,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBACpE,CAAC,CAAC;gBACH,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;oBACf,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;gBACpD,CAAC;qBAAM,CAAC;oBACN,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;wBACvB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC;oBACpD,CAAC;gBACH,CAAC;gBACD,OAAO,KAAK,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC1D,CAAC;YACD,KAAK,WAAW,CAAC,CAAC,CAAC;gBACjB,mDAAmD;gBACnD,kEAAkE;gBAClE,4DAA4D;gBAC5D,gEAAgE;gBAChE,2DAA2D;gBAC3D,4BAA4B;gBAC5B,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC;oBAC7B,GAAG,EAAE,KAAK,CAAC,GAAG;oBACd,GAAG,CAAC,KAAK,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBACnE,MAAM,EAAE,KAAK,CAAC,MAAM;iBACrB,CAAC,CAAC;gBACH,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;oBACf,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC;gBACtD,CAAC;qBAAM,CAAC;oBACN,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS,CAAC;oBACxD,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;wBAC/B,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,GAAG,CAAC,CAAC,OAAO,KAAK,CAAC,CAAC,OAAO,mBAAmB,IAAI,IAAI,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,CACxG,CAAC;oBACJ,CAAC;oBACD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,cAAc,IAAI,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,WAAW,CAAC,CAAC;gBAC/E,CAAC;gBACD,OAAO,CAAC,CAAC;YACX,CAAC;YACD,KAAK,QAAQ,CAAC,CAAC,CAAC;gBACd,gEAAgE;gBAChE,0DAA0D;gBAC1D,+DAA+D;gBAC/D,8DAA8D;gBAC9D,2BAA2B;gBAC3B,MAAM,IAAI,GAAG,MAAM,aAAa,CAAC;oBAC/B,GAAG,EAAE,KAAK,CAAC,GAAG;oBACd,GAAG,CAAC,KAAK,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBACpE,CAAC,CAAC;gBACH,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;oBACf,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;gBACpD,CAAC;qBAAM,CAAC;oBACN,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;wBACvB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC;oBACpD,CAAC;gBACH,CAAC;gBACD,OAAO,KAAK,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACxE,CAAC;YACD,KAAK,gBAAgB,CAAC,CAAC,CAAC;gBACtB,+DAA+D;gBAC/D,2DAA2D;gBAC3D,6DAA6D;gBAC7D,4DAA4D;gBAC5D,6DAA6D;gBAC7D,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;oBAAA,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;gBAAA,CAAC;gBACnF,MAAM,OAAO,GAAG,uBAAuB,CAAC;oBACtC,GAAG,EAAE,KAAK,CAAC,GAAG;oBACd,WAAW,EAAE,KAAK,CAAC,IAAI;oBACvB,GAAG,CAAC,KAAK,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBACpE,CAAC,CAAC;gBACH,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACzB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,mBAAmB,KAAK,CAAC,IAAI,2DAA2D,CAAC,CAAC;gBACjH,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,mBAAmB,KAAK,CAAC,IAAI,WAAW,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAC/D,CAAC;gBACJ,CAAC;gBACD,OAAO,CAAC,CAAC;YACX,CAAC;YACD,KAAK,eAAe,CAAC,CAAC,CAAC;gBACrB,8DAA8D;gBAC9D,4DAA4D;gBAC5D,uDAAuD;gBACvD,6DAA6D;gBAC7D,iEAAiE;gBACjE,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;oBAAA,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;gBAAA,CAAC;gBAClF,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;oBAAA,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;gBAAA,CAAC;gBAClF,MAAM,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;gBACpF,MAAM,OAAO,GAAG,oBAAoB,CAAC,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;gBAC5D,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,kBAAkB,MAAM,MAAM,KAAK,CAAC,OAAO,WAAW,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAC7E,CAAC;gBACF,OAAO,CAAC,CAAC;YACX,CAAC;YACD,KAAK,qBAAqB,CAAC,CAAC,CAAC;gBAC3B,+DAA+D;gBAC/D,gEAAgE;gBAChE,0DAA0D;gBAC1D,qDAAqD;gBACrD,gEAAgE;gBAChE,0CAA0C;gBAC1C,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;oBAAA,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;gBAAA,CAAC;gBAC1F,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;oBAAA,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;gBAAA,CAAC;gBACxF,MAAM,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;gBACpF,MAAM,OAAO,GAAG,yBAAyB,CAAC,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;gBACjE,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,wBAAwB,MAAM,MAAM,KAAK,CAAC,OAAO,WAAW,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CACnF,CAAC;gBACF,OAAO,CAAC,CAAC;YACX,CAAC;YACD,KAAK,SAAS,CAAC,CAAC,CAAC;gBACf,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC;oBAC3B,GAAG,EAAE,KAAK,CAAC,GAAG;oBACd,2FAA2F;oBAC3F,GAAG,CAAC,KAAK,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBACnE,eAAe,EAAE,KAAK,CAAC,eAAe;iBACvC,CAAC,CAAC;gBACH,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;oBACf,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC;gBACtD,CAAC;qBAAM,IAAI,MAAM,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACzC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC;oBAC/C,6FAA6F;gBAC/F,CAAC;qBAAM,CAAC;oBACN,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;wBACjC,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,cAAc,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,CAAC,MAAM,IAAI,CACpE,CAAC;oBACJ,CAAC;gBACH,CAAC;gBACD,oBAAoB;gBACpB,OAAO,CAAC,CAAC;YACX,CAAC;YACD,6DAA6D;YAC7D,KAAK,SAAS;gBACZ,OAAO,CAAC,CAAC;QACb,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,kBAAkB,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CACvE,CAAC;QACF,OAAO,CAAC,CAAC;IACX,CAAC;AACH,CAAC;AAED,mEAAmE;AACnE,yBAAyB"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Absolute paths of every regular file under `dir`, recursively. The
3
+ * synchronous analogue of the `find "$dir" -type f` the extracted bash
4
+ * used for both the tarball-content file counts and the local-state
5
+ * diagnostics (#443).
6
+ *
7
+ * Returns `[]` for a missing path, mirroring `find`'s tolerance
8
+ * (`2>/dev/null`).
9
+ */
10
+ export declare function listFilesRecursive(dir: string): string[];
11
+ //# sourceMappingURL=list-files-recursive.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-files-recursive.d.ts","sourceRoot":"","sources":["../../src/utils/list-files-recursive.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAKH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,CAYxD"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Absolute paths of every regular file under `dir`, recursively. The
3
+ * synchronous analogue of the `find "$dir" -type f` the extracted bash
4
+ * used for both the tarball-content file counts and the local-state
5
+ * diagnostics (#443).
6
+ *
7
+ * Returns `[]` for a missing path, mirroring `find`'s tolerance
8
+ * (`2>/dev/null`).
9
+ */
10
+ import { existsSync, readdirSync } from 'node:fs';
11
+ import { join } from 'node:path';
12
+ export function listFilesRecursive(dir) {
13
+ if (!existsSync(dir)) {
14
+ return [];
15
+ }
16
+ const out = [];
17
+ for (const entry of readdirSync(dir, { withFileTypes: true })) {
18
+ const abs = join(dir, entry.name);
19
+ if (entry.isDirectory()) {
20
+ out.push(...listFilesRecursive(abs));
21
+ }
22
+ else if (entry.isFile()) {
23
+ out.push(abs);
24
+ }
25
+ }
26
+ return out;
27
+ }
28
+ //# sourceMappingURL=list-files-recursive.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-files-recursive.js","sourceRoot":"","sources":["../../src/utils/list-files-recursive.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAClD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,MAAM,UAAU,kBAAkB,CAAC,GAAW;IAC5C,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QAAA,OAAO,EAAE,CAAC;IAAA,CAAC;IAClC,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,KAAK,MAAM,KAAK,IAAI,WAAW,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;QAC9D,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QAClC,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;YACxB,GAAG,CAAC,IAAI,CAAC,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC;QACvC,CAAC;aAAM,IAAI,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC;YAC1B,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAChB,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Download a published npm tarball and extract it, returning the path to
3
+ * the unpacked `package/` directory (#443).
4
+ *
5
+ * `curl --retry 5 --retry-all-errors` absorbs the tarball-blob CDN race
6
+ * that is independent of the packument race `resolveNpmTarballUrl` handles:
7
+ * a cold-edge tarball miss surfaces as HTTP 404, which curl's default
8
+ * `--retry` ignores, so `--retry-all-errors` is load-bearing (PR #323).
9
+ * `retryDelay` seconds matches the call site's original schedule.
10
+ *
11
+ * Caller owns cleanup of the returned `root`.
12
+ */
13
+ export interface ExtractedTarball {
14
+ /** Temp dir to `rmSync` when done. */
15
+ root: string;
16
+ /** The unpacked `package/` directory inside the tarball. */
17
+ packageDir: string;
18
+ }
19
+ export declare function downloadNpmTarball(url: string, retryDelay: number): ExtractedTarball;
20
+ //# sourceMappingURL=download.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"download.d.ts","sourceRoot":"","sources":["../../../src/verify/npm-tarball/download.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAOH,MAAM,WAAW,gBAAgB;IAC/B,sCAAsC;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,4DAA4D;IAC5D,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,gBAAgB,CAUpF"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Download a published npm tarball and extract it, returning the path to
3
+ * the unpacked `package/` directory (#443).
4
+ *
5
+ * `curl --retry 5 --retry-all-errors` absorbs the tarball-blob CDN race
6
+ * that is independent of the packument race `resolveNpmTarballUrl` handles:
7
+ * a cold-edge tarball miss surfaces as HTTP 404, which curl's default
8
+ * `--retry` ignores, so `--retry-all-errors` is load-bearing (PR #323).
9
+ * `retryDelay` seconds matches the call site's original schedule.
10
+ *
11
+ * Caller owns cleanup of the returned `root`.
12
+ */
13
+ import { execFileSync } from 'node:child_process';
14
+ import { mkdirSync, mkdtempSync } from 'node:fs';
15
+ import { tmpdir } from 'node:os';
16
+ import { join } from 'node:path';
17
+ export function downloadNpmTarball(url, retryDelay) {
18
+ const root = mkdtempSync(join(tmpdir(), 'piot-tarball-'));
19
+ const tgz = join(root, 'pkg.tgz');
20
+ const extracted = join(root, 'extracted');
21
+ execFileSync('curl', [
22
+ '-fsSL', '--retry', '5', '--retry-all-errors', '--retry-delay', String(retryDelay), '-o', tgz, url,
23
+ ]);
24
+ mkdirSync(extracted);
25
+ execFileSync('tar', ['-xzf', tgz, '-C', extracted]);
26
+ return { root, packageDir: join(extracted, 'package') };
27
+ }
28
+ //# sourceMappingURL=download.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"download.js","sourceRoot":"","sources":["../../../src/verify/npm-tarball/download.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AACjD,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AASjC,MAAM,UAAU,kBAAkB,CAAC,GAAW,EAAE,UAAkB;IAChE,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,eAAe,CAAC,CAAC,CAAC;IAC1D,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAClC,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;IAC1C,YAAY,CAAC,MAAM,EAAE;QACnB,OAAO,EAAE,SAAS,EAAE,GAAG,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,CAAC,UAAU,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG;KACnG,CAAC,CAAC;IACH,SAAS,CAAC,SAAS,CAAC,CAAC;IACrB,YAAY,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC;IACpD,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,EAAE,CAAC;AAC1D,CAAC"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * `putitoutthere verify npm-tarball` — assert a published npm tarball
3
+ * honors the shape it declared (#443, epic #442).
4
+ *
5
+ * Extraction of the two inline bash blocks in
6
+ * `.github/workflows/e2e-fixture-job.yml` into one tested engine command,
7
+ * invoked from both former sites. Default mode verifies main/noarch
8
+ * `package.json` `files[]` directories are present in the tarball;
9
+ * `--per-triple` verifies synthesized platform packages ship a
10
+ * non-`package.json` file.
11
+ *
12
+ * Reads the same plan matrix the workflow already carries; downloads each
13
+ * tarball back from the registry (`npm view` → `curl` → `tar`) and inspects
14
+ * it. Returns the process exit code (0 ok, 1 on any mismatch).
15
+ */
16
+ import type { VerifyNpmTarballOptions } from './types.js';
17
+ export declare function verifyNpmTarball(opts: VerifyNpmTarballOptions): Promise<number>;
18
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/verify/npm-tarball/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAIH,OAAO,KAAK,EAAc,uBAAuB,EAAE,MAAM,YAAY,CAAC;AAEtE,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,uBAAuB,GAAG,OAAO,CAAC,MAAM,CAAC,CAGrF"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * `putitoutthere verify npm-tarball` — assert a published npm tarball
3
+ * honors the shape it declared (#443, epic #442).
4
+ *
5
+ * Extraction of the two inline bash blocks in
6
+ * `.github/workflows/e2e-fixture-job.yml` into one tested engine command,
7
+ * invoked from both former sites. Default mode verifies main/noarch
8
+ * `package.json` `files[]` directories are present in the tarball;
9
+ * `--per-triple` verifies synthesized platform packages ship a
10
+ * non-`package.json` file.
11
+ *
12
+ * Reads the same plan matrix the workflow already carries; downloads each
13
+ * tarball back from the registry (`npm view` → `curl` → `tar`) and inspects
14
+ * it. Returns the process exit code (0 ok, 1 on any mismatch).
15
+ */
16
+ import { verifyNpmTarballMain } from './main.js';
17
+ import { verifyNpmTarballTriple } from './triple.js';
18
+ export async function verifyNpmTarball(opts) {
19
+ const rows = JSON.parse(opts.matrix);
20
+ return opts.perTriple ? verifyNpmTarballTriple(rows, opts) : verifyNpmTarballMain(rows, opts);
21
+ }
22
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/verify/npm-tarball/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AACjD,OAAO,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAGrD,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,IAA6B;IAClE,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAiB,CAAC;IACrD,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,sBAAsB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,oBAAoB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AAChG,CAAC"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Diagnostic string for a declared `files[]` directory that is missing
3
+ * from a published tarball: is it present in the local source tree, and
4
+ * with how many files? (#443)
5
+ *
6
+ * A present-locally-but-absent-in-tarball state is the fingerprint of the
7
+ * cachetta 0.3.x bug — the build produced the dir, the publish shipped
8
+ * without it. Absent locally points at a different misconfiguration. The
9
+ * string is appended to the tarball-missing `::error::`.
10
+ */
11
+ export declare function localDirState(localPath: string): string;
12
+ //# sourceMappingURL=local-dir-state.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"local-dir-state.d.ts","sourceRoot":"","sources":["../../../src/verify/npm-tarball/local-dir-state.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAMH,wBAAgB,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAMvD"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Diagnostic string for a declared `files[]` directory that is missing
3
+ * from a published tarball: is it present in the local source tree, and
4
+ * with how many files? (#443)
5
+ *
6
+ * A present-locally-but-absent-in-tarball state is the fingerprint of the
7
+ * cachetta 0.3.x bug — the build produced the dir, the publish shipped
8
+ * without it. Absent locally points at a different misconfiguration. The
9
+ * string is appended to the tarball-missing `::error::`.
10
+ */
11
+ import { existsSync, statSync } from 'node:fs';
12
+ import { listFilesRecursive } from '../../utils/list-files-recursive.js';
13
+ export function localDirState(localPath) {
14
+ if (existsSync(localPath) && statSync(localPath).isDirectory()) {
15
+ const files = listFilesRecursive(localPath);
16
+ return `local ${localPath}: present, ${files.length} file(s) — ${files.join(' ')} `;
17
+ }
18
+ return `local ${localPath}: missing`;
19
+ }
20
+ //# sourceMappingURL=local-dir-state.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"local-dir-state.js","sourceRoot":"","sources":["../../../src/verify/npm-tarball/local-dir-state.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAE/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AAEzE,MAAM,UAAU,aAAa,CAAC,SAAiB;IAC7C,IAAI,UAAU,CAAC,SAAS,CAAC,IAAI,QAAQ,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;QAC/D,MAAM,KAAK,GAAG,kBAAkB,CAAC,SAAS,CAAC,CAAC;QAC5C,OAAO,SAAS,SAAS,cAAc,KAAK,CAAC,MAAM,cAAc,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;IACtF,CAAC;IACD,OAAO,SAAS,SAAS,WAAW,CAAC;AACvC,CAAC"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Verify each published main/noarch npm tarball contains the directory
3
+ * entries its `package.json` `files[]` declares (#443).
4
+ *
5
+ * The load-bearing check: the build job produces `dist/`, the publish job
6
+ * ships from a fresh source tree, and `npm publish` returns 0 even when
7
+ * that tree is missing the compiled output — so the registry receives a
8
+ * tarball without `dist/` and nothing upstream complains. This step
9
+ * downloads the published tarball back and asserts the declared dirs are
10
+ * present and non-empty. Extracted verbatim from the "Verify published npm
11
+ * tarballs honor package.json files" bash block.
12
+ *
13
+ * `files[]` entries without a dot are treated as directories (`dist`,
14
+ * `lib`); dotted entries (`README.md`) are individual files and need no
15
+ * per-tree assertion. Returns the process exit code (0 ok, 1 on any miss).
16
+ */
17
+ import type { TarballRow, VerifyNpmTarballOptions } from './types.js';
18
+ export declare function verifyNpmTarballMain(rows: TarballRow[], opts: VerifyNpmTarballOptions): Promise<number>;
19
+ //# sourceMappingURL=main.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../../../src/verify/npm-tarball/main.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AASH,OAAO,KAAK,EAAE,UAAU,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AAEtE,wBAAsB,oBAAoB,CACxC,IAAI,EAAE,UAAU,EAAE,EAClB,IAAI,EAAE,uBAAuB,GAC5B,OAAO,CAAC,MAAM,CAAC,CA2DjB"}
@@ -0,0 +1,71 @@
1
+ /**
2
+ * Verify each published main/noarch npm tarball contains the directory
3
+ * entries its `package.json` `files[]` declares (#443).
4
+ *
5
+ * The load-bearing check: the build job produces `dist/`, the publish job
6
+ * ships from a fresh source tree, and `npm publish` returns 0 even when
7
+ * that tree is missing the compiled output — so the registry receives a
8
+ * tarball without `dist/` and nothing upstream complains. This step
9
+ * downloads the published tarball back and asserts the declared dirs are
10
+ * present and non-empty. Extracted verbatim from the "Verify published npm
11
+ * tarballs honor package.json files" bash block.
12
+ *
13
+ * `files[]` entries without a dot are treated as directories (`dist`,
14
+ * `lib`); dotted entries (`README.md`) are individual files and need no
15
+ * per-tree assertion. Returns the process exit code (0 ok, 1 on any miss).
16
+ */
17
+ import { existsSync, readFileSync, rmSync, statSync } from 'node:fs';
18
+ import { join } from 'node:path';
19
+ import { downloadNpmTarball } from './download.js';
20
+ import { listFilesRecursive } from '../../utils/list-files-recursive.js';
21
+ import { localDirState } from './local-dir-state.js';
22
+ import { resolveNpmTarballUrl } from './resolve-url.js';
23
+ export async function verifyNpmTarballMain(rows, opts) {
24
+ const npmRows = rows.filter((r) => r.kind === 'npm' && (r.target === 'main' || r.target === 'noarch'));
25
+ if (npmRows.length === 0) {
26
+ process.stdout.write('No npm main/noarch rows; nothing to verify.\n');
27
+ return 0;
28
+ }
29
+ // Verdaccio (a same-host service container) is immediately consistent
30
+ // once `npm publish` returns; real npm's CDN needs generous backoff.
31
+ const registry = opts.registry;
32
+ const sleeps = registry ? [1, 2, 5, 10] : [5, 15, 30, 90, 180];
33
+ const registryLabel = registry ? registry : 'registry.npmjs.org';
34
+ let fail = 0;
35
+ for (const row of npmRows) {
36
+ const pkgDirLocal = join(opts.cwd, row.path);
37
+ const pkgJson = JSON.parse(readFileSync(join(pkgDirLocal, 'package.json'), 'utf8'));
38
+ const pkgName = pkgJson.name;
39
+ const version = row.version;
40
+ const dirs = (pkgJson.files ?? []).filter((f) => !f.includes('.'));
41
+ if (dirs.length === 0) {
42
+ process.stdout.write(`[${pkgName}@${version}] no directory entries in files[]; skipping.\n`);
43
+ continue;
44
+ }
45
+ process.stdout.write(`[${pkgName}@${version}] verifying tarball at ${registryLabel} contains: ${dirs.join(' ')}\n`);
46
+ const url = await resolveNpmTarballUrl(pkgName, version, { registry, sleeps });
47
+ if (url === null) {
48
+ process.stdout.write(`::error::[${pkgName}@${version}] npm view at ${registryLabel} never returned a tarball URL after ${sleeps.length + 1} attempts. Either the publish didn't actually publish, or packument propagation is much slower than expected.\n`);
49
+ fail = 1;
50
+ continue;
51
+ }
52
+ const { root, packageDir } = downloadNpmTarball(url, 5);
53
+ for (const d of dirs) {
54
+ const target = join(packageDir, d);
55
+ // `-d` before counting: `listFilesRecursive` reads the dir, so it
56
+ // must not run on a non-directory. The `&&` short-circuit mirrors
57
+ // the bash `[ -d dir ] && [ "$(find … | wc -l)" -gt 0 ]`.
58
+ if (existsSync(target) && statSync(target).isDirectory() && listFilesRecursive(target).length > 0) {
59
+ const count = listFilesRecursive(target).length;
60
+ process.stdout.write(` ok: package/${d}/ (${count} file(s))\n`);
61
+ }
62
+ else {
63
+ process.stdout.write(`::error::[${pkgName}@${version}] tarball missing '${d}'. ${localDirState(join(pkgDirLocal, d))}\n`);
64
+ fail = 1;
65
+ }
66
+ }
67
+ rmSync(root, { recursive: true, force: true });
68
+ }
69
+ return fail;
70
+ }
71
+ //# sourceMappingURL=main.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"main.js","sourceRoot":"","sources":["../../../src/verify/npm-tarball/main.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Resolve a published package's tarball URL via `npm view … dist.tarball`,
3
+ * absorbing packument lag with a bounded retry schedule (#443).
4
+ *
5
+ * `npm view`'s packument index propagates across the registry CDN
6
+ * asynchronously, so an immediate read after publish can return empty
7
+ * before the metadata lands. `sleeps` (seconds) drives the backoff: N
8
+ * sleeps means N+1 attempts, no sleep after the last. Returns the tarball
9
+ * URL, or `null` when every attempt came back empty — the caller emits the
10
+ * mode-specific `::error::`.
11
+ *
12
+ * `npm view` is the sole subprocess; `--registry` (when set) is appended
13
+ * after the positional args so it stays out of the `name@version` slot.
14
+ */
15
+ interface ResolveOptions {
16
+ registry?: string | undefined;
17
+ sleeps: number[];
18
+ }
19
+ export declare function resolveNpmTarballUrl(name: string, version: string, opts: ResolveOptions): Promise<string | null>;
20
+ export {};
21
+ //# sourceMappingURL=resolve-url.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolve-url.d.ts","sourceRoot":"","sources":["../../../src/verify/npm-tarball/resolve-url.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAIH,UAAU,cAAc;IACtB,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAgBD,wBAAsB,oBAAoB,CACxC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,cAAc,GACnB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAexB"}
@@ -0,0 +1,45 @@
1
+ /**
2
+ * Resolve a published package's tarball URL via `npm view … dist.tarball`,
3
+ * absorbing packument lag with a bounded retry schedule (#443).
4
+ *
5
+ * `npm view`'s packument index propagates across the registry CDN
6
+ * asynchronously, so an immediate read after publish can return empty
7
+ * before the metadata lands. `sleeps` (seconds) drives the backoff: N
8
+ * sleeps means N+1 attempts, no sleep after the last. Returns the tarball
9
+ * URL, or `null` when every attempt came back empty — the caller emits the
10
+ * mode-specific `::error::`.
11
+ *
12
+ * `npm view` is the sole subprocess; `--registry` (when set) is appended
13
+ * after the positional args so it stays out of the `name@version` slot.
14
+ */
15
+ import { execFileSync } from 'node:child_process';
16
+ function viewTarballUrl(spec, registry) {
17
+ try {
18
+ const args = ['view', spec, 'dist.tarball', ...(registry ? ['--registry', registry] : [])];
19
+ return execFileSync('npm', args, { encoding: 'utf8', stdio: ['ignore', 'pipe', 'ignore'] }).trim();
20
+ }
21
+ catch {
22
+ // `npm view` exits non-zero when the packument isn't there yet.
23
+ return '';
24
+ }
25
+ }
26
+ function sleep(ms) {
27
+ return new Promise((resolve) => setTimeout(resolve, ms));
28
+ }
29
+ export async function resolveNpmTarballUrl(name, version, opts) {
30
+ const spec = `${name}@${version}`;
31
+ const attempts = opts.sleeps.length + 1;
32
+ for (let attempt = 1; attempt <= attempts; attempt++) {
33
+ const url = viewTarballUrl(spec, opts.registry);
34
+ if (url) {
35
+ return url;
36
+ }
37
+ if (attempt < attempts) {
38
+ const secs = opts.sleeps[attempt - 1];
39
+ process.stdout.write(` packument lag: npm view returned empty (attempt ${attempt}/${attempts}); retrying in ${secs}s\n`);
40
+ await sleep(secs * 1000);
41
+ }
42
+ }
43
+ return null;
44
+ }
45
+ //# sourceMappingURL=resolve-url.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolve-url.js","sourceRoot":"","sources":["../../../src/verify/npm-tarball/resolve-url.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAOlD,SAAS,cAAc,CAAC,IAAY,EAAE,QAAiB;IACrD,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,cAAc,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC3F,OAAO,YAAY,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IACrG,CAAC;IAAC,MAAM,CAAC;QACP,gEAAgE;QAChE,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,SAAS,KAAK,CAAC,EAAU;IACvB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AAC3D,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,IAAY,EACZ,OAAe,EACf,IAAoB;IAEpB,MAAM,IAAI,GAAG,GAAG,IAAI,IAAI,OAAO,EAAE,CAAC;IAClC,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;IACxC,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,QAAQ,EAAE,OAAO,EAAE,EAAE,CAAC;QACrD,MAAM,GAAG,GAAG,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QAChD,IAAI,GAAG,EAAE,CAAC;YAAA,OAAO,GAAG,CAAC;QAAA,CAAC;QACtB,IAAI,OAAO,GAAG,QAAQ,EAAE,CAAC;YACvB,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,GAAG,CAAC,CAAE,CAAC;YACvC,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,qDAAqD,OAAO,IAAI,QAAQ,kBAAkB,IAAI,KAAK,CACpG,CAAC;YACF,MAAM,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC;QAC3B,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Verify each published per-triple npm tarball ships a synthesized binary,
3
+ * not just metadata (#443).
4
+ *
5
+ * `npm-platform`'s `synthesizePlatformPackage` emits `files: <readdir of
6
+ * the artifact dir>`, so an empty artifact dir yields a tarball with only
7
+ * `package.json` and `npm publish` still returns 0. This step downloads the
8
+ * published platform tarball back and asserts at least one non-`package.json`
9
+ * file is present — shipping that binary is the whole point of the
10
+ * synthesis. Extracted verbatim from the "Verify published per-triple npm
11
+ * tarballs honor expected files" bash block.
12
+ *
13
+ * The platform package name is reconstructed as `{name}-{triple}` — the
14
+ * default template every fixture uses — because the matrix row carries the
15
+ * main package name (synthesis is a publish-time concern). Returns the
16
+ * process exit code (0 ok, 1 on any metadata-only tarball).
17
+ */
18
+ import type { TarballRow, VerifyNpmTarballOptions } from './types.js';
19
+ export declare function verifyNpmTarballTriple(rows: TarballRow[], opts: VerifyNpmTarballOptions): Promise<number>;
20
+ //# sourceMappingURL=triple.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"triple.d.ts","sourceRoot":"","sources":["../../../src/verify/npm-tarball/triple.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAQH,OAAO,KAAK,EAAE,UAAU,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AAEtE,wBAAsB,sBAAsB,CAC1C,IAAI,EAAE,UAAU,EAAE,EAClB,IAAI,EAAE,uBAAuB,GAC5B,OAAO,CAAC,MAAM,CAAC,CAuCjB"}
@@ -0,0 +1,57 @@
1
+ /**
2
+ * Verify each published per-triple npm tarball ships a synthesized binary,
3
+ * not just metadata (#443).
4
+ *
5
+ * `npm-platform`'s `synthesizePlatformPackage` emits `files: <readdir of
6
+ * the artifact dir>`, so an empty artifact dir yields a tarball with only
7
+ * `package.json` and `npm publish` still returns 0. This step downloads the
8
+ * published platform tarball back and asserts at least one non-`package.json`
9
+ * file is present — shipping that binary is the whole point of the
10
+ * synthesis. Extracted verbatim from the "Verify published per-triple npm
11
+ * tarballs honor expected files" bash block.
12
+ *
13
+ * The platform package name is reconstructed as `{name}-{triple}` — the
14
+ * default template every fixture uses — because the matrix row carries the
15
+ * main package name (synthesis is a publish-time concern). Returns the
16
+ * process exit code (0 ok, 1 on any metadata-only tarball).
17
+ */
18
+ import { readdirSync, rmSync } from 'node:fs';
19
+ import { basename } from 'node:path';
20
+ import { downloadNpmTarball } from './download.js';
21
+ import { listFilesRecursive } from '../../utils/list-files-recursive.js';
22
+ import { resolveNpmTarballUrl } from './resolve-url.js';
23
+ export async function verifyNpmTarballTriple(rows, opts) {
24
+ const npmRows = rows.filter((r) => r.kind === 'npm' && r.target !== 'main' && r.target !== 'noarch');
25
+ if (npmRows.length === 0) {
26
+ process.stdout.write('No npm per-triple rows; nothing to verify.\n');
27
+ return 0;
28
+ }
29
+ const registry = opts.registry;
30
+ let fail = 0;
31
+ for (const row of npmRows) {
32
+ const platformName = `${row.name}-${row.target}`;
33
+ const version = row.version;
34
+ process.stdout.write(`[${platformName}@${version}] verifying tarball at ${registry}\n`);
35
+ const url = await resolveNpmTarballUrl(platformName, version, { registry, sleeps: [2, 2, 2, 2] });
36
+ if (url === null) {
37
+ process.stdout.write(`::error::[${platformName}@${version}] npm view at ${registry} never returned a tarball URL. Either the platform publish didn't actually publish, or the synthesized name diverged from the default {name}-{triple} template.\n`);
38
+ fail = 1;
39
+ continue;
40
+ }
41
+ const { root, packageDir } = downloadNpmTarball(url, 2);
42
+ const topLevel = readdirSync(packageDir, { withFileTypes: true })
43
+ .filter((e) => e.isFile() && e.name !== 'package.json')
44
+ .map((e) => e.name);
45
+ if (topLevel.length > 0) {
46
+ process.stdout.write(` ok: ${topLevel.length} non-metadata file(s): ${topLevel.join(' ')} \n`);
47
+ }
48
+ else {
49
+ const listing = listFilesRecursive(packageDir).map((p) => basename(p)).join(' ');
50
+ process.stdout.write(`::error::[${platformName}@${version}] tarball contains only package.json (no synthesized binary/.node staged). Tarball contents: ${listing} \n`);
51
+ fail = 1;
52
+ }
53
+ rmSync(root, { recursive: true, force: true });
54
+ }
55
+ return fail;
56
+ }
57
+ //# sourceMappingURL=triple.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"triple.js","sourceRoot":"","sources":["../../../src/verify/npm-tarball/triple.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * Shared types for `verify npm-tarball` (#443).
3
+ *
4
+ * The subcommand downloads each published npm tarball and asserts its
5
+ * contents honor the declared shape — extracted from the two inline bash
6
+ * blocks in `.github/workflows/e2e-fixture-job.yml`.
7
+ */
8
+ export interface VerifyNpmTarballOptions {
9
+ /** Source root; `<cwd>/<row.path>/package.json` supplies each row's `files[]`. */
10
+ cwd: string;
11
+ /** The plan matrix, as the JSON string the workflow already carries. */
12
+ matrix: string;
13
+ /**
14
+ * Registry to read from. Present → tight packument-lag backoff and an
15
+ * explicit `--registry` on `npm view` (the Verdaccio / first-publish
16
+ * path). Absent → real npm with the generous CDN-propagation backoff.
17
+ */
18
+ registry?: string | undefined;
19
+ /**
20
+ * Per-triple mode: verify synthesized platform packages ship a
21
+ * non-`package.json` file, instead of main/noarch `files[]` dirs.
22
+ */
23
+ perTriple?: boolean | undefined;
24
+ }
25
+ /** The matrix fields this command reads. Superset-compatible with `MatrixRow`. */
26
+ export interface TarballRow {
27
+ name: string;
28
+ kind: string;
29
+ version: string;
30
+ target: string;
31
+ path: string;
32
+ }
33
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/verify/npm-tarball/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,MAAM,WAAW,uBAAuB;IACtC,kFAAkF;IAClF,GAAG,EAAE,MAAM,CAAC;IACZ,wEAAwE;IACxE,MAAM,EAAE,MAAM,CAAC;IACf;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CACjC;AAED,kFAAkF;AAClF,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;CACd"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Shared types for `verify npm-tarball` (#443).
3
+ *
4
+ * The subcommand downloads each published npm tarball and asserts its
5
+ * contents honor the declared shape — extracted from the two inline bash
6
+ * blocks in `.github/workflows/e2e-fixture-job.yml`.
7
+ */
8
+ export {};
9
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/verify/npm-tarball/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG"}
@@ -4,6 +4,6 @@
4
4
  *
5
5
  * Issue #414.
6
6
  */
7
- import type { VerifyRow } from './verify-types.js';
7
+ import type { VerifyRow } from './posture-types.js';
8
8
  export declare function formatVerifyRow(row: VerifyRow): string;
9
- //# sourceMappingURL=verify-format.d.ts.map
9
+ //# sourceMappingURL=posture-format.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"posture-format.d.ts","sourceRoot":"","sources":["../../src/verify/posture-format.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAEpD,wBAAgB,eAAe,CAAC,GAAG,EAAE,SAAS,GAAG,MAAM,CAWtD"}
@@ -15,4 +15,4 @@ export function formatVerifyRow(row) {
15
15
  : 'registry unreachable';
16
16
  return `${row.package} ${row.version ?? '—'} ${mark} ${row.posture} ${note}`;
17
17
  }
18
- //# sourceMappingURL=verify-format.js.map
18
+ //# sourceMappingURL=posture-format.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"posture-format.js","sourceRoot":"","sources":["../../src/verify/posture-format.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,MAAM,UAAU,eAAe,CAAC,GAAc;IAC5C,MAAM,IAAI,GAAG,GAAG,CAAC,OAAO,KAAK,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;IAChF,MAAM,IAAI,GACR,GAAG,CAAC,OAAO,KAAK,MAAM;QACpB,CAAC,CAAC,4CAA4C;QAC9C,CAAC,CAAC,GAAG,CAAC,OAAO,KAAK,OAAO;YACvB,CAAC,CAAC,wCAAwC;YAC1C,CAAC,CAAC,GAAG,CAAC,OAAO,KAAK,aAAa;gBAC7B,CAAC,CAAC,iBAAiB;gBACnB,CAAC,CAAC,sBAAsB,CAAC;IACjC,OAAO,GAAG,GAAG,CAAC,OAAO,KAAK,GAAG,CAAC,OAAO,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,CAAC,OAAO,KAAK,IAAI,EAAE,CAAC;AAClF,CAAC"}
@@ -4,7 +4,7 @@
4
4
  *
5
5
  * Issue #414, #403 slice 5.
6
6
  */
7
- import type { Kind, TrustPosture } from './types.js';
7
+ import type { Kind, TrustPosture } from '../types.js';
8
8
  /**
9
9
  * `oidc` / `token` come from the handler's trust read; `unpublished` when
10
10
  * there is no release to attribute; `unreachable` when the registry read
@@ -23,4 +23,4 @@ export interface VerifyOptions {
23
23
  /** Defaults to `${cwd}/putitoutthere.toml`. */
24
24
  configPath?: string;
25
25
  }
26
- //# sourceMappingURL=verify-types.d.ts.map
26
+ //# sourceMappingURL=posture-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"posture-types.d.ts","sourceRoot":"","sources":["../../src/verify/posture-types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEtD;;;;GAIG;AACH,MAAM,MAAM,OAAO,GAAG,YAAY,GAAG,aAAa,GAAG,aAAa,CAAC;AAEnE,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,IAAI,CAAC;IACX,4EAA4E;IAC5E,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,aAAa;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,+CAA+C;IAC/C,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB"}
@@ -5,4 +5,4 @@
5
5
  * Issue #414, #403 slice 5.
6
6
  */
7
7
  export {};
8
- //# sourceMappingURL=verify-types.js.map
8
+ //# sourceMappingURL=posture-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"posture-types.js","sourceRoot":"","sources":["../../src/verify/posture-types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}
@@ -13,6 +13,6 @@
13
13
  * the publish path runs. The read degrades — an unreachable registry
14
14
  * yields `unreachable`, never an abort — matching `status`.
15
15
  */
16
- import type { VerifyOptions, VerifyRow } from './verify-types.js';
16
+ import type { VerifyOptions, VerifyRow } from './posture-types.js';
17
17
  export declare function computeVerify(opts: VerifyOptions): Promise<VerifyRow[]>;
18
- //# sourceMappingURL=verify.d.ts.map
18
+ //# sourceMappingURL=posture.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"posture.d.ts","sourceRoot":"","sources":["../../src/verify/posture.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAQH,OAAO,KAAK,EAAW,aAAa,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAE5E,wBAAsB,aAAa,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC,CA6B7E"}
@@ -14,9 +14,9 @@
14
14
  * yields `unreachable`, never an abort — matching `status`.
15
15
  */
16
16
  import { join } from 'node:path';
17
- import { loadConfig } from './config.js';
18
- import { handlerFor } from './handlers/index.js';
19
- import { createLogger } from './log.js';
17
+ import { loadConfig } from '../config.js';
18
+ import { handlerFor } from '../handlers/index.js';
19
+ import { createLogger } from '../log.js';
20
20
  export async function computeVerify(opts) {
21
21
  const cwd = opts.cwd;
22
22
  const cfgPath = opts.configPath ?? join(cwd, 'putitoutthere.toml');
@@ -47,4 +47,4 @@ export async function computeVerify(opts) {
47
47
  }
48
48
  return rows;
49
49
  }
50
- //# sourceMappingURL=verify.js.map
50
+ //# sourceMappingURL=posture.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"posture.js","sourceRoot":"","sources":["../../src/verify/posture.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAIzC,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,IAAmB;IACrD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;IACrB,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,GAAG,EAAE,oBAAoB,CAAC,CAAC;IACnE,MAAM,MAAM,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC;IACnC,MAAM,GAAG,GAAQ;QACf,GAAG;QACH,GAAG,EAAE,YAAY,EAAE;QACnB,GAAG,EAAE,OAAO,CAAC,GAA6B;QAC1C,SAAS,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,KAAK,EAAE;KAC/C,CAAC;IAEF,MAAM,IAAI,GAAgB,EAAE,CAAC;IAC7B,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;QAClC,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACrC,IAAI,OAAO,GAAkB,IAAI,CAAC;QAClC,IAAI,OAAgB,CAAC;QACrB,IAAI,CAAC;YACH,OAAO,GAAG,MAAM,OAAO,CAAC,aAAa,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YAChD,mEAAmE;YACnE,4BAA4B;YAC5B,OAAO,GAAG,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,OAAO,CAAC,YAAY,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC;QAC7F,CAAC;QAAC,MAAM,CAAC;YACP,oEAAoE;YACpE,wBAAwB;YACxB,OAAO,GAAG,aAAa,CAAC;QAC1B,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;IACrE,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "putitoutthere",
3
- "version": "0.2.38",
3
+ "version": "0.2.39",
4
4
  "description": "Polyglot release orchestrator for crates.io, PyPI, and npm",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -1 +0,0 @@
1
- {"version":3,"file":"verify-format.d.ts","sourceRoot":"","sources":["../src/verify-format.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAEnD,wBAAgB,eAAe,CAAC,GAAG,EAAE,SAAS,GAAG,MAAM,CAWtD"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"verify-format.js","sourceRoot":"","sources":["../src/verify-format.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,MAAM,UAAU,eAAe,CAAC,GAAc;IAC5C,MAAM,IAAI,GAAG,GAAG,CAAC,OAAO,KAAK,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;IAChF,MAAM,IAAI,GACR,GAAG,CAAC,OAAO,KAAK,MAAM;QACpB,CAAC,CAAC,4CAA4C;QAC9C,CAAC,CAAC,GAAG,CAAC,OAAO,KAAK,OAAO;YACvB,CAAC,CAAC,wCAAwC;YAC1C,CAAC,CAAC,GAAG,CAAC,OAAO,KAAK,aAAa;gBAC7B,CAAC,CAAC,iBAAiB;gBACnB,CAAC,CAAC,sBAAsB,CAAC;IACjC,OAAO,GAAG,GAAG,CAAC,OAAO,KAAK,GAAG,CAAC,OAAO,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,CAAC,OAAO,KAAK,IAAI,EAAE,CAAC;AAClF,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"verify-types.d.ts","sourceRoot":"","sources":["../src/verify-types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAErD;;;;GAIG;AACH,MAAM,MAAM,OAAO,GAAG,YAAY,GAAG,aAAa,GAAG,aAAa,CAAC;AAEnE,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,IAAI,CAAC;IACX,4EAA4E;IAC5E,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,aAAa;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,+CAA+C;IAC/C,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"verify-types.js","sourceRoot":"","sources":["../src/verify-types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"verify.d.ts","sourceRoot":"","sources":["../src/verify.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAQH,OAAO,KAAK,EAAW,aAAa,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAE3E,wBAAsB,aAAa,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC,CA6B7E"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"verify.js","sourceRoot":"","sources":["../src/verify.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAIxC,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,IAAmB;IACrD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;IACrB,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,GAAG,EAAE,oBAAoB,CAAC,CAAC;IACnE,MAAM,MAAM,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC;IACnC,MAAM,GAAG,GAAQ;QACf,GAAG;QACH,GAAG,EAAE,YAAY,EAAE;QACnB,GAAG,EAAE,OAAO,CAAC,GAA6B;QAC1C,SAAS,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,KAAK,EAAE;KAC/C,CAAC;IAEF,MAAM,IAAI,GAAgB,EAAE,CAAC;IAC7B,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;QAClC,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACrC,IAAI,OAAO,GAAkB,IAAI,CAAC;QAClC,IAAI,OAAgB,CAAC;QACrB,IAAI,CAAC;YACH,OAAO,GAAG,MAAM,OAAO,CAAC,aAAa,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YAChD,mEAAmE;YACnE,4BAA4B;YAC5B,OAAO,GAAG,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,OAAO,CAAC,YAAY,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC;QAC7F,CAAC;QAAC,MAAM,CAAC;YACP,oEAAoE;YACpE,wBAAwB;YACxB,OAAO,GAAG,aAAa,CAAC;QAC1B,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;IACrE,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}