putitoutthere 0.2.67 → 0.2.69
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/action.js +2 -1
- package/dist/action.js.map +1 -1
- package/dist/advance-floating-major.d.ts +1 -2
- package/dist/advance-floating-major.d.ts.map +1 -1
- package/dist/advance-floating-major.js +8 -9
- package/dist/advance-floating-major.js.map +1 -1
- package/dist/advance-v0.d.ts +3 -4
- package/dist/advance-v0.d.ts.map +1 -1
- package/dist/advance-v0.js +5 -6
- package/dist/advance-v0.js.map +1 -1
- package/dist/cascade.d.ts.map +1 -1
- package/dist/cascade.js +2 -1
- package/dist/cascade.js.map +1 -1
- package/dist/check-crate-size.d.ts +1 -1
- package/dist/check-crate-size.d.ts.map +1 -1
- package/dist/check-crate-size.js +22 -13
- package/dist/check-crate-size.js.map +1 -1
- package/dist/check.d.ts +1 -1
- package/dist/check.d.ts.map +1 -1
- package/dist/check.js +69 -61
- package/dist/check.js.map +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +15 -15
- package/dist/cli.js.map +1 -1
- package/dist/completeness.d.ts +3 -2
- package/dist/completeness.d.ts.map +1 -1
- package/dist/completeness.js +14 -13
- package/dist/completeness.js.map +1 -1
- package/dist/config.d.ts +4 -2
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +5 -5
- package/dist/config.js.map +1 -1
- package/dist/ensure-tag.d.ts +1 -1
- package/dist/ensure-tag.d.ts.map +1 -1
- package/dist/ensure-tag.js +4 -4
- package/dist/ensure-tag.js.map +1 -1
- package/dist/find-workspace-root.d.ts +1 -1
- package/dist/find-workspace-root.d.ts.map +1 -1
- package/dist/find-workspace-root.js +3 -3
- package/dist/find-workspace-root.js.map +1 -1
- package/dist/fold-action-bundle.d.ts +1 -1
- package/dist/fold-action-bundle.d.ts.map +1 -1
- package/dist/fold-action-bundle.js +5 -5
- package/dist/fold-action-bundle.js.map +1 -1
- package/dist/force-move-tag.d.ts +1 -1
- package/dist/force-move-tag.d.ts.map +1 -1
- package/dist/force-move-tag.js +3 -3
- package/dist/force-move-tag.js.map +1 -1
- package/dist/git.d.ts +19 -21
- package/dist/git.d.ts.map +1 -1
- package/dist/git.js +44 -49
- package/dist/git.js.map +1 -1
- package/dist/glob.d.ts +1 -1
- package/dist/glob.d.ts.map +1 -1
- package/dist/glob.js +17 -7
- package/dist/glob.js.map +1 -1
- package/dist/handlers/crates.d.ts +2 -1
- package/dist/handlers/crates.d.ts.map +1 -1
- package/dist/handlers/crates.js +35 -36
- package/dist/handlers/crates.js.map +1 -1
- package/dist/handlers/npm-platform.d.ts +1 -0
- package/dist/handlers/npm-platform.d.ts.map +1 -1
- package/dist/handlers/npm-platform.js +39 -41
- package/dist/handlers/npm-platform.js.map +1 -1
- package/dist/handlers/npm.d.ts.map +1 -1
- package/dist/handlers/npm.js +30 -23
- package/dist/handlers/npm.js.map +1 -1
- package/dist/handlers/pypi.js +17 -12
- package/dist/handlers/pypi.js.map +1 -1
- package/dist/normalize-artifacts.d.ts +1 -1
- package/dist/normalize-artifacts.d.ts.map +1 -1
- package/dist/normalize-artifacts.js +8 -7
- package/dist/normalize-artifacts.js.map +1 -1
- package/dist/plan-status.js +1 -1
- package/dist/plan-status.js.map +1 -1
- package/dist/plan.d.ts.map +1 -1
- package/dist/plan.js +29 -27
- package/dist/plan.js.map +1 -1
- package/dist/preflight.d.ts +14 -14
- package/dist/preflight.d.ts.map +1 -1
- package/dist/preflight.js +56 -56
- package/dist/preflight.js.map +1 -1
- package/dist/publish.d.ts.map +1 -1
- package/dist/publish.js +25 -17
- package/dist/publish.js.map +1 -1
- package/dist/python-versions.d.ts +1 -1
- package/dist/python-versions.d.ts.map +1 -1
- package/dist/python-versions.js +5 -5
- package/dist/python-versions.js.map +1 -1
- package/dist/reconcile.js +3 -3
- package/dist/reconcile.js.map +1 -1
- package/dist/release-github/gh-release-create.d.ts +1 -1
- package/dist/release-github/gh-release-create.d.ts.map +1 -1
- package/dist/release-github/gh-release-create.js +3 -4
- package/dist/release-github/gh-release-create.js.map +1 -1
- package/dist/release-github/gh-release-exists.d.ts +1 -1
- package/dist/release-github/gh-release-exists.d.ts.map +1 -1
- package/dist/release-github/gh-release-exists.js +3 -3
- package/dist/release-github/gh-release-exists.js.map +1 -1
- package/dist/release-github/index.d.ts +4 -5
- package/dist/release-github/index.d.ts.map +1 -1
- package/dist/release-github/index.js +8 -9
- package/dist/release-github/index.js.map +1 -1
- package/dist/resolve-tag-commit.d.ts +2 -2
- package/dist/resolve-tag-commit.d.ts.map +1 -1
- package/dist/resolve-tag-commit.js +4 -4
- package/dist/resolve-tag-commit.js.map +1 -1
- package/dist/status.js +2 -2
- package/dist/status.js.map +1 -1
- package/dist/trailer.d.ts +1 -0
- package/dist/trailer.d.ts.map +1 -1
- package/dist/trailer.js +1 -1
- package/dist/trailer.js.map +1 -1
- package/dist/utils/exec-capture.d.ts +20 -0
- package/dist/utils/exec-capture.d.ts.map +1 -0
- package/dist/utils/exec-capture.js +25 -0
- package/dist/utils/exec-capture.js.map +1 -0
- package/dist/utils/exec-error.d.ts +16 -0
- package/dist/utils/exec-error.d.ts.map +1 -0
- package/dist/utils/exec-error.js +21 -0
- package/dist/utils/exec-error.js.map +1 -0
- package/dist/utils/exec-inherit.d.ts +13 -0
- package/dist/utils/exec-inherit.d.ts.map +1 -0
- package/dist/utils/exec-inherit.js +25 -0
- package/dist/utils/exec-inherit.js.map +1 -0
- package/dist/utils/list-files-recursive.d.ts +2 -2
- package/dist/utils/list-files-recursive.d.ts.map +1 -1
- package/dist/utils/list-files-recursive.js +7 -6
- package/dist/utils/list-files-recursive.js.map +1 -1
- package/dist/utils/path-exists.d.ts +3 -0
- package/dist/utils/path-exists.d.ts.map +1 -0
- package/dist/utils/path-exists.js +12 -0
- package/dist/utils/path-exists.js.map +1 -0
- package/dist/utils/sleep.d.ts +3 -0
- package/dist/utils/sleep.d.ts.map +1 -0
- package/dist/utils/sleep.js +5 -0
- package/dist/utils/sleep.js.map +1 -0
- package/dist/verbose.d.ts +1 -1
- package/dist/verbose.d.ts.map +1 -1
- package/dist/verbose.js +5 -5
- package/dist/verbose.js.map +1 -1
- package/dist/verify/bundle-cli/index.d.ts +2 -2
- package/dist/verify/bundle-cli/index.d.ts.map +1 -1
- package/dist/verify/bundle-cli/index.js +6 -6
- package/dist/verify/bundle-cli/index.js.map +1 -1
- package/dist/verify/bundle-cli/read-python-source.d.ts +1 -1
- package/dist/verify/bundle-cli/read-python-source.d.ts.map +1 -1
- package/dist/verify/bundle-cli/read-python-source.js +5 -4
- package/dist/verify/bundle-cli/read-python-source.js.map +1 -1
- package/dist/verify/crate/extract-crate.d.ts +1 -1
- package/dist/verify/crate/extract-crate.d.ts.map +1 -1
- package/dist/verify/crate/extract-crate.js +5 -5
- package/dist/verify/crate/extract-crate.js.map +1 -1
- package/dist/verify/crate/find-crate-file.d.ts +1 -1
- package/dist/verify/crate/find-crate-file.d.ts.map +1 -1
- package/dist/verify/crate/find-crate-file.js +4 -4
- package/dist/verify/crate/find-crate-file.js.map +1 -1
- package/dist/verify/crate/has-crate-source.d.ts +1 -1
- package/dist/verify/crate/has-crate-source.d.ts.map +1 -1
- package/dist/verify/crate/has-crate-source.js +2 -2
- package/dist/verify/crate/has-crate-source.js.map +1 -1
- package/dist/verify/crate/index.d.ts +2 -2
- package/dist/verify/crate/index.d.ts.map +1 -1
- package/dist/verify/crate/index.js +8 -8
- package/dist/verify/crate/index.js.map +1 -1
- package/dist/verify/npm-tarball/download.d.ts +2 -2
- package/dist/verify/npm-tarball/download.d.ts.map +1 -1
- package/dist/verify/npm-tarball/download.js +7 -7
- package/dist/verify/npm-tarball/download.js.map +1 -1
- package/dist/verify/npm-tarball/local-dir-state.d.ts +1 -1
- package/dist/verify/npm-tarball/local-dir-state.d.ts.map +1 -1
- package/dist/verify/npm-tarball/local-dir-state.js +5 -4
- package/dist/verify/npm-tarball/local-dir-state.js.map +1 -1
- package/dist/verify/npm-tarball/main.d.ts.map +1 -1
- package/dist/verify/npm-tarball/main.js +8 -7
- package/dist/verify/npm-tarball/main.js.map +1 -1
- package/dist/verify/npm-tarball/resolve-url.js +4 -4
- package/dist/verify/npm-tarball/resolve-url.js.map +1 -1
- package/dist/verify/npm-tarball/triple.js +5 -5
- package/dist/verify/npm-tarball/triple.js.map +1 -1
- package/dist/verify/posture.js +1 -1
- package/dist/verify/posture.js.map +1 -1
- package/dist/verify/wheel/find-dist-file.d.ts +1 -1
- package/dist/verify/wheel/find-dist-file.d.ts.map +1 -1
- package/dist/verify/wheel/find-dist-file.js +6 -5
- package/dist/verify/wheel/find-dist-file.js.map +1 -1
- package/dist/verify/wheel/index.d.ts +2 -2
- package/dist/verify/wheel/index.d.ts.map +1 -1
- package/dist/verify/wheel/index.js +8 -7
- package/dist/verify/wheel/index.js.map +1 -1
- package/dist/verify/wheel/read-wheel-version.d.ts +1 -1
- package/dist/verify/wheel/read-wheel-version.d.ts.map +1 -1
- package/dist/verify/wheel/read-wheel-version.js +3 -3
- package/dist/verify/wheel/read-wheel-version.js.map +1 -1
- package/dist/wheel-abi.d.ts +2 -2
- package/dist/wheel-abi.d.ts.map +1 -1
- package/dist/wheel-abi.js +9 -7
- package/dist/wheel-abi.js.map +1 -1
- package/dist/write-crate-version.d.ts +1 -1
- package/dist/write-crate-version.d.ts.map +1 -1
- package/dist/write-crate-version.js +4 -4
- package/dist/write-crate-version.js.map +1 -1
- package/dist/write-launcher.d.ts +2 -2
- package/dist/write-launcher.d.ts.map +1 -1
- package/dist/write-launcher.js +9 -9
- package/dist/write-launcher.js.map +1 -1
- package/dist/write-resolved-cargo-version.d.ts +1 -1
- package/dist/write-resolved-cargo-version.d.ts.map +1 -1
- package/dist/write-resolved-cargo-version.js +6 -6
- package/dist/write-resolved-cargo-version.js.map +1 -1
- package/dist/write-version.d.ts +1 -1
- package/dist/write-version.d.ts.map +1 -1
- package/dist/write-version.js +7 -5
- package/dist/write-version.js.map +1 -1
- package/package.json +4 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"find-crate-file.d.ts","sourceRoot":"","sources":["../../../src/verify/crate/find-crate-file.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAOH,
|
|
1
|
+
{"version":3,"file":"find-crate-file.d.ts","sourceRoot":"","sources":["../../../src/verify/crate/find-crate-file.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAOH,wBAAsB,aAAa,CACjC,YAAY,EAAE,MAAM,EACpB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAQxB"}
|
|
@@ -8,13 +8,13 @@
|
|
|
8
8
|
* registry` stores `.crate` files nested under the root, so the search
|
|
9
9
|
* recurses.
|
|
10
10
|
*/
|
|
11
|
-
import {
|
|
11
|
+
import { stat } from 'node:fs/promises';
|
|
12
12
|
import { basename } from 'node:path';
|
|
13
13
|
import { listFilesRecursive } from '../../utils/list-files-recursive.js';
|
|
14
|
-
export function findCrateFile(registryRoot, name, version) {
|
|
14
|
+
export async function findCrateFile(registryRoot, name, version) {
|
|
15
15
|
const target = `${name}-${version}.crate`;
|
|
16
|
-
for (const file of listFilesRecursive(registryRoot)) {
|
|
17
|
-
if (basename(file) === target &&
|
|
16
|
+
for (const file of await listFilesRecursive(registryRoot)) {
|
|
17
|
+
if (basename(file) === target && (await stat(file)).size > 0) {
|
|
18
18
|
return file;
|
|
19
19
|
}
|
|
20
20
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"find-crate-file.js","sourceRoot":"","sources":["../../../src/verify/crate/find-crate-file.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"find-crate-file.js","sourceRoot":"","sources":["../../../src/verify/crate/find-crate-file.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACxC,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAErC,OAAO,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AAEzE,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,YAAoB,EACpB,IAAY,EACZ,OAAe;IAEf,MAAM,MAAM,GAAG,GAAG,IAAI,IAAI,OAAO,QAAQ,CAAC;IAC1C,KAAK,MAAM,IAAI,IAAI,MAAM,kBAAkB,CAAC,YAAY,CAAC,EAAE,CAAC;QAC1D,IAAI,QAAQ,CAAC,IAAI,CAAC,KAAK,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;YAC7D,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -6,5 +6,5 @@
|
|
|
6
6
|
* This is the crates-side of the npm verify's "files[] dir is populated"
|
|
7
7
|
* check: proof the publish shipped the source tree, not an empty tarball.
|
|
8
8
|
*/
|
|
9
|
-
export declare function hasCrateSource(dir: string): boolean
|
|
9
|
+
export declare function hasCrateSource(dir: string): Promise<boolean>;
|
|
10
10
|
//# sourceMappingURL=has-crate-source.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"has-crate-source.d.ts","sourceRoot":"","sources":["../../../src/verify/crate/has-crate-source.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAMH,
|
|
1
|
+
{"version":3,"file":"has-crate-source.d.ts","sourceRoot":"","sources":["../../../src/verify/crate/has-crate-source.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAMH,wBAAsB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CASlE"}
|
|
@@ -8,12 +8,12 @@
|
|
|
8
8
|
*/
|
|
9
9
|
import { basename, dirname } from 'node:path';
|
|
10
10
|
import { listFilesRecursive } from '../../utils/list-files-recursive.js';
|
|
11
|
-
export function hasCrateSource(dir) {
|
|
11
|
+
export async function hasCrateSource(dir) {
|
|
12
12
|
// Match a `lib.rs` / `main.rs` whose parent dir is `src`, via
|
|
13
13
|
// basename/dirname rather than a `/src/…` string suffix — the extracted
|
|
14
14
|
// paths use the platform separator, so a literal `/` check silently
|
|
15
15
|
// misses on Windows (`…\src\lib.rs`) and the unit matrix goes red.
|
|
16
|
-
return listFilesRecursive(dir).some((f) => {
|
|
16
|
+
return (await listFilesRecursive(dir)).some((f) => {
|
|
17
17
|
const name = basename(f);
|
|
18
18
|
return (name === 'lib.rs' || name === 'main.rs') && basename(dirname(f)) === 'src';
|
|
19
19
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"has-crate-source.js","sourceRoot":"","sources":["../../../src/verify/crate/has-crate-source.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAE9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AAEzE,MAAM,UAAU,cAAc,CAAC,GAAW;
|
|
1
|
+
{"version":3,"file":"has-crate-source.js","sourceRoot":"","sources":["../../../src/verify/crate/has-crate-source.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAE9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AAEzE,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,GAAW;IAC9C,8DAA8D;IAC9D,wEAAwE;IACxE,oEAAoE;IACpE,mEAAmE;IACnE,OAAO,CAAC,MAAM,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE;QAChD,MAAM,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;QACzB,OAAO,CAAC,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,SAAS,CAAC,IAAI,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC;IACrF,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -13,9 +13,9 @@
|
|
|
13
13
|
*
|
|
14
14
|
* The diagnostic this gate gives (the rust-vanilla-first-publish fixture):
|
|
15
15
|
* without it, a publish that silently no-op'd or produced an empty `.crate`
|
|
16
|
-
* would still go green.
|
|
16
|
+
* would still go green. Async throughout, per the engine convention.
|
|
17
17
|
* Returns the process exit code (0 ok, 1 on any miss).
|
|
18
18
|
*/
|
|
19
19
|
import type { VerifyCrateOptions } from './types.js';
|
|
20
|
-
export declare function verifyCrate(opts: VerifyCrateOptions): number
|
|
20
|
+
export declare function verifyCrate(opts: VerifyCrateOptions): Promise<number>;
|
|
21
21
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/verify/crate/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAQH,OAAO,KAAK,EAAY,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAE/D,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/verify/crate/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAQH,OAAO,KAAK,EAAY,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAE/D,wBAAsB,WAAW,CAAC,IAAI,EAAE,kBAAkB,GAAG,OAAO,CAAC,MAAM,CAAC,CA+B3E"}
|
|
@@ -13,15 +13,15 @@
|
|
|
13
13
|
*
|
|
14
14
|
* The diagnostic this gate gives (the rust-vanilla-first-publish fixture):
|
|
15
15
|
* without it, a publish that silently no-op'd or produced an empty `.crate`
|
|
16
|
-
* would still go green.
|
|
16
|
+
* would still go green. Async throughout, per the engine convention.
|
|
17
17
|
* Returns the process exit code (0 ok, 1 on any miss).
|
|
18
18
|
*/
|
|
19
|
-
import {
|
|
19
|
+
import { rm } from 'node:fs/promises';
|
|
20
20
|
import { extractCrate } from './extract-crate.js';
|
|
21
21
|
import { findCrateFile } from './find-crate-file.js';
|
|
22
22
|
import { hasCrateSource } from './has-crate-source.js';
|
|
23
23
|
import { listFilesRecursive } from '../../utils/list-files-recursive.js';
|
|
24
|
-
export function verifyCrate(opts) {
|
|
24
|
+
export async function verifyCrate(opts) {
|
|
25
25
|
const rows = JSON.parse(opts.matrix).filter((r) => r.kind === 'crates');
|
|
26
26
|
if (rows.length === 0) {
|
|
27
27
|
process.stdout.write('No crates rows; nothing to verify.\n');
|
|
@@ -29,22 +29,22 @@ export function verifyCrate(opts) {
|
|
|
29
29
|
}
|
|
30
30
|
let fail = 0;
|
|
31
31
|
for (const row of rows) {
|
|
32
|
-
const crateFile = findCrateFile(opts.registryRoot, row.name, row.version);
|
|
32
|
+
const crateFile = await findCrateFile(opts.registryRoot, row.name, row.version);
|
|
33
33
|
if (crateFile === null) {
|
|
34
34
|
process.stdout.write(`::error::[${row.name}@${row.version}] no .crate file found (or empty) under ${opts.registryRoot}\n`);
|
|
35
35
|
fail = 1;
|
|
36
36
|
continue;
|
|
37
37
|
}
|
|
38
|
-
const extracted = extractCrate(crateFile);
|
|
39
|
-
if (hasCrateSource(extracted)) {
|
|
38
|
+
const extracted = await extractCrate(crateFile);
|
|
39
|
+
if (await hasCrateSource(extracted)) {
|
|
40
40
|
process.stdout.write(`ok: ${crateFile} contains src/lib.rs or src/main.rs\n`);
|
|
41
41
|
}
|
|
42
42
|
else {
|
|
43
|
-
const listing = listFilesRecursive(extracted).join(' ');
|
|
43
|
+
const listing = (await listFilesRecursive(extracted)).join(' ');
|
|
44
44
|
process.stdout.write(`::error::[${row.name}@${row.version}] .crate tarball missing src/lib.rs and src/main.rs. Tarball contents: ${listing}\n`);
|
|
45
45
|
fail = 1;
|
|
46
46
|
}
|
|
47
|
-
|
|
47
|
+
await rm(extracted, { recursive: true, force: true });
|
|
48
48
|
}
|
|
49
49
|
return fail;
|
|
50
50
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/verify/crate/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/verify/crate/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAC;AAEtC,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AAGzE,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,IAAwB;IACxD,MAAM,IAAI,GAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC;IACxF,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,sCAAsC,CAAC,CAAC;QAC7D,OAAO,CAAC,CAAC;IACX,CAAC;IAED,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,SAAS,GAAG,MAAM,aAAa,CAAC,IAAI,CAAC,YAAY,EAAE,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;QAChF,IAAI,SAAS,KAAK,IAAI,EAAE,CAAC;YACvB,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,aAAa,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,OAAO,2CAA2C,IAAI,CAAC,YAAY,IAAI,CACrG,CAAC;YACF,IAAI,GAAG,CAAC,CAAC;YACT,SAAS;QACX,CAAC;QAED,MAAM,SAAS,GAAG,MAAM,YAAY,CAAC,SAAS,CAAC,CAAC;QAChD,IAAI,MAAM,cAAc,CAAC,SAAS,CAAC,EAAE,CAAC;YACpC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,SAAS,uCAAuC,CAAC,CAAC;QAChF,CAAC;aAAM,CAAC;YACN,MAAM,OAAO,GAAG,CAAC,MAAM,kBAAkB,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAChE,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,aAAa,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,OAAO,0EAA0E,OAAO,IAAI,CAC1H,CAAC;YACF,IAAI,GAAG,CAAC,CAAC;QACX,CAAC;QACD,MAAM,EAAE,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACxD,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -11,10 +11,10 @@
|
|
|
11
11
|
* Caller owns cleanup of the returned `root`.
|
|
12
12
|
*/
|
|
13
13
|
export interface ExtractedTarball {
|
|
14
|
-
/** Temp dir to `
|
|
14
|
+
/** Temp dir to `rm` when done. */
|
|
15
15
|
root: string;
|
|
16
16
|
/** The unpacked `package/` directory inside the tarball. */
|
|
17
17
|
packageDir: string;
|
|
18
18
|
}
|
|
19
|
-
export declare function downloadNpmTarball(url: string, retryDelay: number): ExtractedTarball
|
|
19
|
+
export declare function downloadNpmTarball(url: string, retryDelay: number): Promise<ExtractedTarball>;
|
|
20
20
|
//# sourceMappingURL=download.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"download.d.ts","sourceRoot":"","sources":["../../../src/verify/npm-tarball/download.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;
|
|
1
|
+
{"version":3,"file":"download.d.ts","sourceRoot":"","sources":["../../../src/verify/npm-tarball/download.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAQH,MAAM,WAAW,gBAAgB;IAC/B,kCAAkC;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,4DAA4D;IAC5D,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,wBAAsB,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAUnG"}
|
|
@@ -10,19 +10,19 @@
|
|
|
10
10
|
*
|
|
11
11
|
* Caller owns cleanup of the returned `root`.
|
|
12
12
|
*/
|
|
13
|
-
import {
|
|
14
|
-
import { mkdirSync, mkdtempSync } from 'node:fs';
|
|
13
|
+
import { mkdir, mkdtemp } from 'node:fs/promises';
|
|
15
14
|
import { tmpdir } from 'node:os';
|
|
16
15
|
import { join } from 'node:path';
|
|
17
|
-
|
|
18
|
-
|
|
16
|
+
import { execCapture } from '../../utils/exec-capture.js';
|
|
17
|
+
export async function downloadNpmTarball(url, retryDelay) {
|
|
18
|
+
const root = await mkdtemp(join(tmpdir(), 'piot-tarball-'));
|
|
19
19
|
const tgz = join(root, 'pkg.tgz');
|
|
20
20
|
const extracted = join(root, 'extracted');
|
|
21
|
-
|
|
21
|
+
await execCapture('curl', [
|
|
22
22
|
'-fsSL', '--retry', '5', '--retry-all-errors', '--retry-delay', String(retryDelay), '-o', tgz, url,
|
|
23
23
|
]);
|
|
24
|
-
|
|
25
|
-
|
|
24
|
+
await mkdir(extracted);
|
|
25
|
+
await execCapture('tar', ['-xzf', tgz, '-C', extracted]);
|
|
26
26
|
return { root, packageDir: join(extracted, 'package') };
|
|
27
27
|
}
|
|
28
28
|
//# sourceMappingURL=download.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"download.js","sourceRoot":"","sources":["../../../src/verify/npm-tarball/download.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"download.js","sourceRoot":"","sources":["../../../src/verify/npm-tarball/download.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAS1D,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,GAAW,EAAE,UAAkB;IACtE,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,eAAe,CAAC,CAAC,CAAC;IAC5D,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAClC,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;IAC1C,MAAM,WAAW,CAAC,MAAM,EAAE;QACxB,OAAO,EAAE,SAAS,EAAE,GAAG,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,CAAC,UAAU,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG;KACnG,CAAC,CAAC;IACH,MAAM,KAAK,CAAC,SAAS,CAAC,CAAC;IACvB,MAAM,WAAW,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC;IACzD,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,EAAE,CAAC;AAC1D,CAAC"}
|
|
@@ -8,5 +8,5 @@
|
|
|
8
8
|
* without it. Absent locally points at a different misconfiguration. The
|
|
9
9
|
* string is appended to the tarball-missing `::error::`.
|
|
10
10
|
*/
|
|
11
|
-
export declare function localDirState(localPath: string): string
|
|
11
|
+
export declare function localDirState(localPath: string): Promise<string>;
|
|
12
12
|
//# sourceMappingURL=local-dir-state.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"local-dir-state.d.ts","sourceRoot":"","sources":["../../../src/verify/npm-tarball/local-dir-state.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;
|
|
1
|
+
{"version":3,"file":"local-dir-state.d.ts","sourceRoot":"","sources":["../../../src/verify/npm-tarball/local-dir-state.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAOH,wBAAsB,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAMtE"}
|
|
@@ -8,11 +8,12 @@
|
|
|
8
8
|
* without it. Absent locally points at a different misconfiguration. The
|
|
9
9
|
* string is appended to the tarball-missing `::error::`.
|
|
10
10
|
*/
|
|
11
|
-
import {
|
|
11
|
+
import { stat } from 'node:fs/promises';
|
|
12
12
|
import { listFilesRecursive } from '../../utils/list-files-recursive.js';
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
13
|
+
import { pathExists } from '../../utils/path-exists.js';
|
|
14
|
+
export async function localDirState(localPath) {
|
|
15
|
+
if ((await pathExists(localPath)) && (await stat(localPath)).isDirectory()) {
|
|
16
|
+
const files = await listFilesRecursive(localPath);
|
|
16
17
|
return `local ${localPath}: present, ${files.length} file(s) — ${files.join(' ')} `;
|
|
17
18
|
}
|
|
18
19
|
return `local ${localPath}: missing`;
|
|
@@ -1 +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,
|
|
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,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAExC,OAAO,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AACzE,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAExD,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,SAAiB;IACnD,IAAI,CAAC,MAAM,UAAU,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;QAC3E,MAAM,KAAK,GAAG,MAAM,kBAAkB,CAAC,SAAS,CAAC,CAAC;QAClD,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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../../../src/verify/npm-tarball/main.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;
|
|
1
|
+
{"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../../../src/verify/npm-tarball/main.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAUH,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"}
|
|
@@ -14,10 +14,11 @@
|
|
|
14
14
|
* `lib`); dotted entries (`README.md`) are individual files and need no
|
|
15
15
|
* per-tree assertion. Returns the process exit code (0 ok, 1 on any miss).
|
|
16
16
|
*/
|
|
17
|
-
import {
|
|
17
|
+
import { readFile, rm, stat } from 'node:fs/promises';
|
|
18
18
|
import { join } from 'node:path';
|
|
19
19
|
import { downloadNpmTarball } from './download.js';
|
|
20
20
|
import { listFilesRecursive } from '../../utils/list-files-recursive.js';
|
|
21
|
+
import { pathExists } from '../../utils/path-exists.js';
|
|
21
22
|
import { localDirState } from './local-dir-state.js';
|
|
22
23
|
import { resolveNpmTarballUrl } from './resolve-url.js';
|
|
23
24
|
export async function verifyNpmTarballMain(rows, opts) {
|
|
@@ -34,7 +35,7 @@ export async function verifyNpmTarballMain(rows, opts) {
|
|
|
34
35
|
let fail = 0;
|
|
35
36
|
for (const row of npmRows) {
|
|
36
37
|
const pkgDirLocal = join(opts.cwd, row.path);
|
|
37
|
-
const pkgJson = JSON.parse(
|
|
38
|
+
const pkgJson = JSON.parse(await readFile(join(pkgDirLocal, 'package.json'), 'utf8'));
|
|
38
39
|
const pkgName = pkgJson.name;
|
|
39
40
|
const version = row.version;
|
|
40
41
|
const dirs = (pkgJson.files ?? []).filter((f) => !f.includes('.'));
|
|
@@ -49,22 +50,22 @@ export async function verifyNpmTarballMain(rows, opts) {
|
|
|
49
50
|
fail = 1;
|
|
50
51
|
continue;
|
|
51
52
|
}
|
|
52
|
-
const { root, packageDir } = downloadNpmTarball(url, 5);
|
|
53
|
+
const { root, packageDir } = await downloadNpmTarball(url, 5);
|
|
53
54
|
for (const d of dirs) {
|
|
54
55
|
const target = join(packageDir, d);
|
|
55
56
|
// `-d` before counting: `listFilesRecursive` reads the dir, so it
|
|
56
57
|
// must not run on a non-directory. The `&&` short-circuit mirrors
|
|
57
58
|
// the bash `[ -d dir ] && [ "$(find … | wc -l)" -gt 0 ]`.
|
|
58
|
-
if (
|
|
59
|
-
const count = listFilesRecursive(target).length;
|
|
59
|
+
if ((await pathExists(target)) && (await stat(target)).isDirectory() && (await listFilesRecursive(target)).length > 0) {
|
|
60
|
+
const count = (await listFilesRecursive(target)).length;
|
|
60
61
|
process.stdout.write(` ok: package/${d}/ (${count} file(s))\n`);
|
|
61
62
|
}
|
|
62
63
|
else {
|
|
63
|
-
process.stdout.write(`::error::[${pkgName}@${version}] tarball missing '${d}'. ${localDirState(join(pkgDirLocal, d))}\n`);
|
|
64
|
+
process.stdout.write(`::error::[${pkgName}@${version}] tarball missing '${d}'. ${await localDirState(join(pkgDirLocal, d))}\n`);
|
|
64
65
|
fail = 1;
|
|
65
66
|
}
|
|
66
67
|
}
|
|
67
|
-
|
|
68
|
+
await rm(root, { recursive: true, force: true });
|
|
68
69
|
}
|
|
69
70
|
return fail;
|
|
70
71
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"main.js","sourceRoot":"","sources":["../../../src/verify/npm-tarball/main.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"main.js","sourceRoot":"","sources":["../../../src/verify/npm-tarball/main.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,11 +12,11 @@
|
|
|
12
12
|
* `npm view` is the sole subprocess; `--registry` (when set) is appended
|
|
13
13
|
* after the positional args so it stays out of the `name@version` slot.
|
|
14
14
|
*/
|
|
15
|
-
import {
|
|
16
|
-
function viewTarballUrl(spec, registry) {
|
|
15
|
+
import { execCapture } from '../../utils/exec-capture.js';
|
|
16
|
+
async function viewTarballUrl(spec, registry) {
|
|
17
17
|
try {
|
|
18
18
|
const args = ['view', spec, 'dist.tarball', ...(registry ? ['--registry', registry] : [])];
|
|
19
|
-
return
|
|
19
|
+
return (await execCapture('npm', args)).stdout.trim();
|
|
20
20
|
}
|
|
21
21
|
catch {
|
|
22
22
|
// `npm view` exits non-zero when the packument isn't there yet.
|
|
@@ -30,7 +30,7 @@ export async function resolveNpmTarballUrl(name, version, opts) {
|
|
|
30
30
|
const spec = `${name}@${version}`;
|
|
31
31
|
const attempts = opts.sleeps.length + 1;
|
|
32
32
|
for (let attempt = 1; attempt <= attempts; attempt++) {
|
|
33
|
-
const url = viewTarballUrl(spec, opts.registry);
|
|
33
|
+
const url = await viewTarballUrl(spec, opts.registry);
|
|
34
34
|
if (url) {
|
|
35
35
|
return url;
|
|
36
36
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolve-url.js","sourceRoot":"","sources":["../../../src/verify/npm-tarball/resolve-url.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"resolve-url.js","sourceRoot":"","sources":["../../../src/verify/npm-tarball/resolve-url.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAO1D,KAAK,UAAU,cAAc,CAAC,IAAY,EAAE,QAAiB;IAC3D,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,CAAC,MAAM,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;IACxD,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,MAAM,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QACtD,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"}
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
* main package name (synthesis is a publish-time concern). Returns the
|
|
16
16
|
* process exit code (0 ok, 1 on any metadata-only tarball).
|
|
17
17
|
*/
|
|
18
|
-
import {
|
|
18
|
+
import { readdir, rm } from 'node:fs/promises';
|
|
19
19
|
import { basename } from 'node:path';
|
|
20
20
|
import { downloadNpmTarball } from './download.js';
|
|
21
21
|
import { listFilesRecursive } from '../../utils/list-files-recursive.js';
|
|
@@ -38,19 +38,19 @@ export async function verifyNpmTarballTriple(rows, opts) {
|
|
|
38
38
|
fail = 1;
|
|
39
39
|
continue;
|
|
40
40
|
}
|
|
41
|
-
const { root, packageDir } = downloadNpmTarball(url, 2);
|
|
42
|
-
const topLevel =
|
|
41
|
+
const { root, packageDir } = await downloadNpmTarball(url, 2);
|
|
42
|
+
const topLevel = (await readdir(packageDir, { withFileTypes: true }))
|
|
43
43
|
.filter((e) => e.isFile() && e.name !== 'package.json')
|
|
44
44
|
.map((e) => e.name);
|
|
45
45
|
if (topLevel.length > 0) {
|
|
46
46
|
process.stdout.write(` ok: ${topLevel.length} non-metadata file(s): ${topLevel.join(' ')} \n`);
|
|
47
47
|
}
|
|
48
48
|
else {
|
|
49
|
-
const listing = listFilesRecursive(packageDir).map((p) => basename(p)).join(' ');
|
|
49
|
+
const listing = (await listFilesRecursive(packageDir)).map((p) => basename(p)).join(' ');
|
|
50
50
|
process.stdout.write(`::error::[${platformName}@${version}] tarball contains only package.json (no synthesized binary/.node staged). Tarball contents: ${listing} \n`);
|
|
51
51
|
fail = 1;
|
|
52
52
|
}
|
|
53
|
-
|
|
53
|
+
await rm(root, { recursive: true, force: true });
|
|
54
54
|
}
|
|
55
55
|
return fail;
|
|
56
56
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"triple.js","sourceRoot":"","sources":["../../../src/verify/npm-tarball/triple.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"triple.js","sourceRoot":"","sources":["../../../src/verify/npm-tarball/triple.ts"],"names":[],"mappings":"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"}
|
package/dist/verify/posture.js
CHANGED
|
@@ -20,7 +20,7 @@ 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');
|
|
23
|
-
const config = loadConfig(cfgPath);
|
|
23
|
+
const config = await loadConfig(cfgPath);
|
|
24
24
|
const ctx = {
|
|
25
25
|
cwd,
|
|
26
26
|
log: createLogger(),
|
|
@@ -1 +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;
|
|
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,MAAM,UAAU,CAAC,OAAO,CAAC,CAAC;IACzC,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"}
|
|
@@ -4,5 +4,5 @@
|
|
|
4
4
|
* `find "$dist_dir" -maxdepth 1 -name '*<ext>' -print -quit`. Sorted for a
|
|
5
5
|
* deterministic pick when a dist dir holds more than one match.
|
|
6
6
|
*/
|
|
7
|
-
export declare function findDistFile(dir: string, ext: string): string | null
|
|
7
|
+
export declare function findDistFile(dir: string, ext: string): Promise<string | null>;
|
|
8
8
|
//# sourceMappingURL=find-dist-file.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"find-dist-file.d.ts","sourceRoot":"","sources":["../../../src/verify/wheel/find-dist-file.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;
|
|
1
|
+
{"version":3,"file":"find-dist-file.d.ts","sourceRoot":"","sources":["../../../src/verify/wheel/find-dist-file.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAOH,wBAAsB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAanF"}
|
|
@@ -4,16 +4,17 @@
|
|
|
4
4
|
* `find "$dist_dir" -maxdepth 1 -name '*<ext>' -print -quit`. Sorted for a
|
|
5
5
|
* deterministic pick when a dist dir holds more than one match.
|
|
6
6
|
*/
|
|
7
|
-
import {
|
|
7
|
+
import { readdir, stat } from 'node:fs/promises';
|
|
8
8
|
import { join } from 'node:path';
|
|
9
|
-
|
|
10
|
-
|
|
9
|
+
import { pathExists } from '../../utils/path-exists.js';
|
|
10
|
+
export async function findDistFile(dir, ext) {
|
|
11
|
+
if (!(await pathExists(dir))) {
|
|
11
12
|
return null;
|
|
12
13
|
}
|
|
13
|
-
for (const name of
|
|
14
|
+
for (const name of (await readdir(dir)).sort()) {
|
|
14
15
|
if (name.endsWith(ext)) {
|
|
15
16
|
const full = join(dir, name);
|
|
16
|
-
if (
|
|
17
|
+
if ((await stat(full)).isFile()) {
|
|
17
18
|
return full;
|
|
18
19
|
}
|
|
19
20
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"find-dist-file.js","sourceRoot":"","sources":["../../../src/verify/wheel/find-dist-file.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"find-dist-file.js","sourceRoot":"","sources":["../../../src/verify/wheel/find-dist-file.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAExD,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,GAAW,EAAE,GAAW;IACzD,IAAI,CAAC,CAAC,MAAM,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;QAC7B,OAAO,IAAI,CAAC;IACd,CAAC;IACD,KAAK,MAAM,IAAI,IAAI,CAAC,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;QAC/C,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YACvB,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;YAC7B,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC;gBAChC,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -14,9 +14,9 @@
|
|
|
14
14
|
* `-<version>.tar.gz`; for a wheel row the first `*.whl`'s
|
|
15
15
|
* `*.dist-info/METADATA` `Version:` must equal `--version`. The wheel is
|
|
16
16
|
* read with a pure-Node zip reader (no `unzip`), so this runs on every
|
|
17
|
-
* platform the maturin matrix builds on.
|
|
17
|
+
* platform the maturin matrix builds on. Async throughout. Returns the
|
|
18
18
|
* process exit code (0 ok, 1 on any miss).
|
|
19
19
|
*/
|
|
20
20
|
import type { VerifyWheelOptions } from './types.js';
|
|
21
|
-
export declare function verifyWheel(opts: VerifyWheelOptions): number
|
|
21
|
+
export declare function verifyWheel(opts: VerifyWheelOptions): Promise<number>;
|
|
22
22
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/verify/wheel/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/verify/wheel/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAQH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAErD,wBAAsB,WAAW,CAAC,IAAI,EAAE,kBAAkB,GAAG,OAAO,CAAC,MAAM,CAAC,CAuC3E"}
|
|
@@ -14,22 +14,23 @@
|
|
|
14
14
|
* `-<version>.tar.gz`; for a wheel row the first `*.whl`'s
|
|
15
15
|
* `*.dist-info/METADATA` `Version:` must equal `--version`. The wheel is
|
|
16
16
|
* read with a pure-Node zip reader (no `unzip`), so this runs on every
|
|
17
|
-
* platform the maturin matrix builds on.
|
|
17
|
+
* platform the maturin matrix builds on. Async throughout. Returns the
|
|
18
18
|
* process exit code (0 ok, 1 on any miss).
|
|
19
19
|
*/
|
|
20
|
-
import {
|
|
20
|
+
import { stat } from 'node:fs/promises';
|
|
21
21
|
import { basename, isAbsolute, join, resolve } from 'node:path';
|
|
22
22
|
import { findDistFile } from './find-dist-file.js';
|
|
23
23
|
import { readWheelVersion } from './read-wheel-version.js';
|
|
24
|
-
|
|
24
|
+
import { pathExists } from '../../utils/path-exists.js';
|
|
25
|
+
export async function verifyWheel(opts) {
|
|
25
26
|
const pkgDir = isAbsolute(opts.path) ? opts.path : resolve(opts.cwd, opts.path);
|
|
26
27
|
const distDir = join(pkgDir, 'dist');
|
|
27
|
-
if (!
|
|
28
|
+
if (!(await pathExists(distDir)) || !(await stat(distDir)).isDirectory()) {
|
|
28
29
|
process.stdout.write(`::error::no dist/ produced under ${distDir}\n`);
|
|
29
30
|
return 1;
|
|
30
31
|
}
|
|
31
32
|
if (opts.target === 'sdist') {
|
|
32
|
-
const sdist = findDistFile(distDir, '.tar.gz');
|
|
33
|
+
const sdist = await findDistFile(distDir, '.tar.gz');
|
|
33
34
|
if (sdist === null) {
|
|
34
35
|
process.stdout.write(`::error::no sdist produced in ${distDir}\n`);
|
|
35
36
|
return 1;
|
|
@@ -42,12 +43,12 @@ export function verifyWheel(opts) {
|
|
|
42
43
|
process.stdout.write(`::error::sdist filename '${name}' does not contain planned version '${opts.version}'\n`);
|
|
43
44
|
return 1;
|
|
44
45
|
}
|
|
45
|
-
const wheel = findDistFile(distDir, '.whl');
|
|
46
|
+
const wheel = await findDistFile(distDir, '.whl');
|
|
46
47
|
if (wheel === null) {
|
|
47
48
|
process.stdout.write(`::error::no wheel produced in ${distDir}\n`);
|
|
48
49
|
return 1;
|
|
49
50
|
}
|
|
50
|
-
const actual = readWheelVersion(wheel);
|
|
51
|
+
const actual = await readWheelVersion(wheel);
|
|
51
52
|
if (actual !== opts.version) {
|
|
52
53
|
process.stdout.write(`::error::wheel METADATA Version='${actual ?? ''}' but plan='${opts.version}' (wheel: ${basename(wheel)})\n`);
|
|
53
54
|
return 1;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/verify/wheel/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/verify/wheel/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACxC,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEhE,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAGxD,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,IAAwB;IACxD,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IAChF,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,IAAI,CAAC,CAAC,MAAM,UAAU,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;QACzE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,oCAAoC,OAAO,IAAI,CAAC,CAAC;QACtE,OAAO,CAAC,CAAC;IACX,CAAC;IAED,IAAI,IAAI,CAAC,MAAM,KAAK,OAAO,EAAE,CAAC;QAC5B,MAAM,KAAK,GAAG,MAAM,YAAY,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QACrD,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YACnB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,iCAAiC,OAAO,IAAI,CAAC,CAAC;YACnE,OAAO,CAAC,CAAC;QACX,CAAC;QACD,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;QAC7B,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,OAAO,SAAS,CAAC,EAAE,CAAC;YAC7C,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,IAAI,IAAI,CAAC,CAAC;YAC5C,OAAO,CAAC,CAAC;QACX,CAAC;QACD,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,4BAA4B,IAAI,uCAAuC,IAAI,CAAC,OAAO,KAAK,CACzF,CAAC;QACF,OAAO,CAAC,CAAC;IACX,CAAC;IAED,MAAM,KAAK,GAAG,MAAM,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAClD,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QACnB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,iCAAiC,OAAO,IAAI,CAAC,CAAC;QACnE,OAAO,CAAC,CAAC;IACX,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,KAAK,CAAC,CAAC;IAC7C,IAAI,MAAM,KAAK,IAAI,CAAC,OAAO,EAAE,CAAC;QAC5B,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,oCAAoC,MAAM,IAAI,EAAE,eAAe,IAAI,CAAC,OAAO,aAAa,QAAQ,CAAC,KAAK,CAAC,KAAK,CAC7G,CAAC;QACF,OAAO,CAAC,CAAC;IACX,CAAC;IACD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,QAAQ,CAAC,KAAK,CAAC,qBAAqB,MAAM,IAAI,CAAC,CAAC;IAClF,OAAO,CAAC,CAAC;AACX,CAAC"}
|
|
@@ -8,5 +8,5 @@
|
|
|
8
8
|
* `Version:` line. `Metadata-Version:` is deliberately not matched — only a
|
|
9
9
|
* line that begins exactly `Version:`, mirroring the bash `^Version:`.
|
|
10
10
|
*/
|
|
11
|
-
export declare function readWheelVersion(wheelPath: string): string | null
|
|
11
|
+
export declare function readWheelVersion(wheelPath: string): Promise<string | null>;
|
|
12
12
|
//# sourceMappingURL=read-wheel-version.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"read-wheel-version.d.ts","sourceRoot":"","sources":["../../../src/verify/wheel/read-wheel-version.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAMH,
|
|
1
|
+
{"version":3,"file":"read-wheel-version.d.ts","sourceRoot":"","sources":["../../../src/verify/wheel/read-wheel-version.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAMH,wBAAsB,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAYhF"}
|
|
@@ -8,10 +8,10 @@
|
|
|
8
8
|
* `Version:` line. `Metadata-Version:` is deliberately not matched — only a
|
|
9
9
|
* line that begins exactly `Version:`, mirroring the bash `^Version:`.
|
|
10
10
|
*/
|
|
11
|
-
import {
|
|
11
|
+
import { readFile } from 'node:fs/promises';
|
|
12
12
|
import { readZipEntry } from './read-zip-entry.js';
|
|
13
|
-
export function readWheelVersion(wheelPath) {
|
|
14
|
-
const meta = readZipEntry(
|
|
13
|
+
export async function readWheelVersion(wheelPath) {
|
|
14
|
+
const meta = readZipEntry(await readFile(wheelPath), (name) => name.endsWith('.dist-info/METADATA'));
|
|
15
15
|
if (meta === null) {
|
|
16
16
|
return null;
|
|
17
17
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"read-wheel-version.js","sourceRoot":"","sources":["../../../src/verify/wheel/read-wheel-version.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"read-wheel-version.js","sourceRoot":"","sources":["../../../src/verify/wheel/read-wheel-version.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAE5C,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAEnD,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,SAAiB;IACtD,MAAM,IAAI,GAAG,YAAY,CAAC,MAAM,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAAC,CAAC;IACrG,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;QAClB,OAAO,IAAI,CAAC;IACd,CAAC;IACD,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;QACxD,MAAM,CAAC,GAAG,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC5C,IAAI,CAAC,EAAE,CAAC;YACN,OAAO,CAAC,CAAC,CAAC,CAAE,CAAC;QACf,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
|
package/dist/wheel-abi.d.ts
CHANGED
|
@@ -26,12 +26,12 @@
|
|
|
26
26
|
* table), falls through to `false` and the planner keeps fanning — the
|
|
27
27
|
* pre-#401 behavior, never worse.
|
|
28
28
|
*
|
|
29
|
-
* Engine convention:
|
|
29
|
+
* Engine convention: async `readFile` throughout (AGENTS.md, #469).
|
|
30
30
|
*/
|
|
31
31
|
/**
|
|
32
32
|
* True when the maturin wheel for the package at `cwd/pkgPath` is
|
|
33
33
|
* Python-version-independent and so should be built once rather than
|
|
34
34
|
* fanned across the resolved CPython set.
|
|
35
35
|
*/
|
|
36
|
-
export declare function isVersionIndependentWheel(pkgPath: string, cwd: string): boolean
|
|
36
|
+
export declare function isVersionIndependentWheel(pkgPath: string, cwd: string): Promise<boolean>;
|
|
37
37
|
//# sourceMappingURL=wheel-abi.d.ts.map
|