bulletin-deploy 0.18.0 → 0.18.1-rc.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/bulletin-deploy +4 -1
- package/dist/auth-config.js +3 -3
- package/dist/bug-report.js +4 -4
- package/dist/chain-health.js +3 -3
- package/dist/{chunk-A7GZZQ3Q.js → chunk-2WGCBESY.js} +2 -2
- package/dist/{chunk-UY2DR5V4.js → chunk-3BDYD4BG.js} +3 -3
- package/dist/{chunk-TIQ3TCK4.js → chunk-5JVTBR5H.js} +3 -3
- package/dist/{chunk-WYJX7OFF.js → chunk-64UKPUK4.js} +1 -1
- package/dist/{chunk-LZ7HCV4C.js → chunk-6HPDXI7E.js} +1 -1
- package/dist/{chunk-RSAEMNX4.js → chunk-FJTZNSNU.js} +128 -9
- package/dist/{chunk-3CES4RZG.js → chunk-HIODF4QF.js} +1 -1
- package/dist/{chunk-6LR7OM7F.js → chunk-Q6NVSUCX.js} +8 -8
- package/dist/{chunk-6WLVGBLQ.js → chunk-Q7CHACT6.js} +1 -1
- package/dist/{chunk-6BIAW73W.js → chunk-RULOELNF.js} +1 -1
- package/dist/{chunk-3TDAKT7Y.js → chunk-SSV2KD3B.js} +2 -2
- package/dist/{chunk-F4OW5UVA.js → chunk-UPQ2JGIO.js} +1 -1
- package/dist/chunk-probe.js +3 -3
- package/dist/commands/login.js +11 -11
- package/dist/commands/logout.js +4 -4
- package/dist/commands/transfer.js +4 -4
- package/dist/commands/whoami.js +3 -3
- package/dist/deploy-actors.js +6 -6
- package/dist/deploy.js +11 -11
- package/dist/dotns.d.ts +56 -2
- package/dist/dotns.js +4 -4
- package/dist/index.js +12 -12
- package/dist/manifest/publish.js +12 -12
- package/dist/memory-report.js +2 -2
- package/dist/merkle.js +11 -11
- package/dist/personhood/bootstrap.js +4 -4
- package/dist/personhood/people-client.js +4 -4
- package/dist/run-state.js +1 -1
- package/dist/sss-allowance-cache.js +4 -4
- package/dist/storage-signer.js +11 -11
- package/dist/telemetry.js +2 -2
- package/dist/version-check.js +3 -3
- package/package.json +2 -2
- package/tools/release-retry-wrapper.mjs +11 -0
package/bin/bulletin-deploy
CHANGED
|
@@ -585,8 +585,11 @@ try {
|
|
|
585
585
|
console.error(`Manifest publish failed: ${err?.message ?? err}`);
|
|
586
586
|
process.exit(err instanceof NonRetryableError ? EXIT_CODE_NO_RETRY : 1);
|
|
587
587
|
}
|
|
588
|
+
} else if (!loaded && !flags.noManifest) {
|
|
589
|
+
// Only the walk-up can come back empty: an explicit --config that is
|
|
590
|
+
// missing throws out of tryLoadProductConfig rather than returning null.
|
|
591
|
+
console.log(`No product config found from ${buildDirAbs} upward; content deployed, no manifest published.`);
|
|
588
592
|
}
|
|
589
|
-
// No config (or --no-manifest) → the contenthash-only deploy above is the whole job; nothing else to do.
|
|
590
593
|
}
|
|
591
594
|
|
|
592
595
|
if (!flags.help && !flags.version) {
|
package/dist/auth-config.js
CHANGED
|
@@ -9,12 +9,12 @@ import {
|
|
|
9
9
|
getPeopleChainEndpoints,
|
|
10
10
|
hasPersistedSession,
|
|
11
11
|
resolveBulletinEndpoints
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-Q7CHACT6.js";
|
|
13
13
|
import "./chunk-TSPERKUS.js";
|
|
14
14
|
import "./chunk-HDGD5FYX.js";
|
|
15
15
|
import "./chunk-ZOC4GITL.js";
|
|
16
|
-
import "./chunk-
|
|
17
|
-
import "./chunk-
|
|
16
|
+
import "./chunk-HIODF4QF.js";
|
|
17
|
+
import "./chunk-SSV2KD3B.js";
|
|
18
18
|
export {
|
|
19
19
|
DOT_DAPP_ID,
|
|
20
20
|
DOT_DERIVATION_INDEX,
|
package/dist/bug-report.js
CHANGED
|
@@ -10,10 +10,10 @@ import {
|
|
|
10
10
|
offerBugReport,
|
|
11
11
|
scrubSecrets,
|
|
12
12
|
setDeployContext
|
|
13
|
-
} from "./chunk-
|
|
14
|
-
import "./chunk-
|
|
15
|
-
import "./chunk-
|
|
16
|
-
import "./chunk-
|
|
13
|
+
} from "./chunk-3BDYD4BG.js";
|
|
14
|
+
import "./chunk-UPQ2JGIO.js";
|
|
15
|
+
import "./chunk-HIODF4QF.js";
|
|
16
|
+
import "./chunk-SSV2KD3B.js";
|
|
17
17
|
export {
|
|
18
18
|
buildCliFlagsSummary,
|
|
19
19
|
buildLabels,
|
package/dist/chain-health.js
CHANGED
|
@@ -3,9 +3,9 @@ import {
|
|
|
3
3
|
DEFAULT_WINDOW_BLOCKS,
|
|
4
4
|
MAX_SPANS_PER_SAMPLER,
|
|
5
5
|
endpointHost
|
|
6
|
-
} from "./chunk-
|
|
7
|
-
import "./chunk-
|
|
8
|
-
import "./chunk-
|
|
6
|
+
} from "./chunk-6HPDXI7E.js";
|
|
7
|
+
import "./chunk-HIODF4QF.js";
|
|
8
|
+
import "./chunk-SSV2KD3B.js";
|
|
9
9
|
export {
|
|
10
10
|
ChainHealthSampler,
|
|
11
11
|
DEFAULT_WINDOW_BLOCKS,
|
|
@@ -4,10 +4,10 @@ import {
|
|
|
4
4
|
} from "./chunk-5FLTDWWP.js";
|
|
5
5
|
import {
|
|
6
6
|
DEFAULT_MNEMONIC
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-FJTZNSNU.js";
|
|
8
8
|
import {
|
|
9
9
|
DOT_PRODUCT_ID
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-Q7CHACT6.js";
|
|
11
11
|
|
|
12
12
|
// src/deploy-actors.ts
|
|
13
13
|
var DEFAULT_WORKER_SURI = DEFAULT_MNEMONIC;
|
|
@@ -2,15 +2,15 @@ import {
|
|
|
2
2
|
classifyErrorArea,
|
|
3
3
|
isInteractive,
|
|
4
4
|
promptYesNo
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-UPQ2JGIO.js";
|
|
6
6
|
import {
|
|
7
7
|
VERSION,
|
|
8
8
|
getCurrentSentryTraceId,
|
|
9
9
|
resolveIssueRepoSlug
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-HIODF4QF.js";
|
|
11
11
|
import {
|
|
12
12
|
package_default
|
|
13
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-SSV2KD3B.js";
|
|
14
14
|
|
|
15
15
|
// src/bug-report.ts
|
|
16
16
|
import { execSync, execFileSync } from "child_process";
|
|
@@ -13,13 +13,13 @@ import {
|
|
|
13
13
|
setBulletinEndpoints,
|
|
14
14
|
storeDirectory,
|
|
15
15
|
storeFile
|
|
16
|
-
} from "./chunk-
|
|
16
|
+
} from "./chunk-Q6NVSUCX.js";
|
|
17
17
|
import {
|
|
18
18
|
DEFAULT_TLD,
|
|
19
19
|
DotNS,
|
|
20
20
|
TX_KIND_SKIPPED,
|
|
21
21
|
stripTldSuffix
|
|
22
|
-
} from "./chunk-
|
|
22
|
+
} from "./chunk-FJTZNSNU.js";
|
|
23
23
|
import {
|
|
24
24
|
DEFAULT_ENV_ID,
|
|
25
25
|
getPopSelfServeConfig,
|
|
@@ -33,7 +33,7 @@ import {
|
|
|
33
33
|
setDeployAttribute,
|
|
34
34
|
withManifestSpan,
|
|
35
35
|
withSpan
|
|
36
|
-
} from "./chunk-
|
|
36
|
+
} from "./chunk-HIODF4QF.js";
|
|
37
37
|
|
|
38
38
|
// src/manifest/publish.ts
|
|
39
39
|
import * as fs2 from "fs/promises";
|
|
@@ -13,7 +13,7 @@ import {
|
|
|
13
13
|
} from "./chunk-ZOC4GITL.js";
|
|
14
14
|
import {
|
|
15
15
|
ChainHealthSampler
|
|
16
|
-
} from "./chunk-
|
|
16
|
+
} from "./chunk-6HPDXI7E.js";
|
|
17
17
|
import {
|
|
18
18
|
captureWarning,
|
|
19
19
|
markCodePath,
|
|
@@ -21,7 +21,7 @@ import {
|
|
|
21
21
|
setDeploySentryTag,
|
|
22
22
|
truncateAddress,
|
|
23
23
|
withSpan
|
|
24
|
-
} from "./chunk-
|
|
24
|
+
} from "./chunk-HIODF4QF.js";
|
|
25
25
|
import {
|
|
26
26
|
POP_CONTROLLER_PROBE_ABI,
|
|
27
27
|
PROTOCOL_PROBE_LABEL,
|
|
@@ -413,6 +413,9 @@ var DOTNS_REGISTRY_ABI = [
|
|
|
413
413
|
{ inputs: [{ name: "node", type: "bytes32" }], name: "owner", outputs: [{ name: "", type: "address" }], stateMutability: "view", type: "function" },
|
|
414
414
|
{ inputs: [{ name: "node", type: "bytes32" }], name: "resolver", outputs: [{ name: "", type: "address" }], stateMutability: "view", type: "function" }
|
|
415
415
|
];
|
|
416
|
+
var DOTNS_REGISTRY_SET_SUBNODE_OWNER_ABI_V07 = [
|
|
417
|
+
{ inputs: [{ name: "record", type: "tuple", components: [{ name: "parentNode", type: "bytes32" }, { name: "subLabel", type: "string" }, { name: "parentLabel", type: "string" }, { name: "owner", type: "address" }, { name: "persist", type: "bool" }] }], name: "setSubnodeOwner", outputs: [{ name: "subnode", type: "bytes32" }], stateMutability: "nonpayable", type: "function" }
|
|
418
|
+
];
|
|
416
419
|
var DOTNS_CONTENT_RESOLVER_ABI = [
|
|
417
420
|
{ inputs: [{ name: "node", type: "bytes32" }, { name: "hash", type: "bytes" }], name: "setContenthash", outputs: [], stateMutability: "nonpayable", type: "function" },
|
|
418
421
|
{ inputs: [{ name: "node", type: "bytes32" }], name: "contenthash", outputs: [{ name: "", type: "bytes" }], stateMutability: "view", type: "function" }
|
|
@@ -482,6 +485,9 @@ function dotnsContractName(address, contracts = CONTRACTS) {
|
|
|
482
485
|
function stringifyDebugValue(value) {
|
|
483
486
|
return JSON.stringify(value, (_key, nested) => typeof nested === "bigint" ? nested.toString() : nested);
|
|
484
487
|
}
|
|
488
|
+
function isBareRevertResult(revertData, revertFlags) {
|
|
489
|
+
return (revertData === void 0 || revertData.trim() === "0x") && revertFlags === 1n;
|
|
490
|
+
}
|
|
485
491
|
function dotnsTxDebugEnabled() {
|
|
486
492
|
return process.env.BULLETIN_DEPLOY_DOTNS_DEBUG === "1" || process.env.DOTNS_DEBUG === "1";
|
|
487
493
|
}
|
|
@@ -510,8 +516,7 @@ function formatContractDryRunFailure(gasEstimate, context) {
|
|
|
510
516
|
lines.push(` calldata: ${context.encodedData}`);
|
|
511
517
|
if (context.args) lines.push(` args: ${stringifyDebugValue(context.args)}`);
|
|
512
518
|
}
|
|
513
|
-
const
|
|
514
|
-
const isBareRevert = (revertData === void 0 || revertData.trim() === "0x") && gasEstimate.revertFlags === 1n;
|
|
519
|
+
const isBareRevert = isBareRevertResult(gasEstimate.revertData, gasEstimate.revertFlags);
|
|
515
520
|
if (isBareRevert && BARE_REVERT_DIAGNOSTIC_FUNCTIONS.has(functionName)) {
|
|
516
521
|
if (functionName === "register") {
|
|
517
522
|
lines.push(
|
|
@@ -1322,6 +1327,22 @@ var DotNS = class _DotNS {
|
|
|
1322
1327
|
// this into a throw-if-unset without re-checking both of those.
|
|
1323
1328
|
_protocolVersion = DEFAULT_DOTNS_PROFILE;
|
|
1324
1329
|
_adapter = getAdapter(DEFAULT_DOTNS_PROFILE);
|
|
1330
|
+
// #1435: which setSubnodeOwner tuple shape this connection's chain accepts
|
|
1331
|
+
// — "legacy" (4-field, pre-v0.7) or "v07" (5-field + persist). `null` means
|
|
1332
|
+
// "not yet probed"; resolveSubnodeOwnerShape resolves it lazily on the
|
|
1333
|
+
// FIRST subname write per connection (register or transfer, whichever runs
|
|
1334
|
+
// first) and caches the verdict here for the rest of that connection's
|
|
1335
|
+
// life. Defaults to "legacy" (NOT null) for the exact same reason
|
|
1336
|
+
// _protocolVersion defaults to DEFAULT_DOTNS_PROFILE above: every existing
|
|
1337
|
+
// test/library caller that constructs a DotNS instance and stubs
|
|
1338
|
+
// contractTransaction/submitBatchedContractCalls directly WITHOUT ever
|
|
1339
|
+
// calling connect() must keep today's exact pre-#1435 4-field behaviour,
|
|
1340
|
+
// with no probe attempted at all (there is no clientWrapper to probe
|
|
1341
|
+
// against in that case). connect() resets this to null so a real
|
|
1342
|
+
// connection always re-probes on its first subname write rather than
|
|
1343
|
+
// trusting this default or a previous connection's stale verdict — see
|
|
1344
|
+
// the reset next to detectProtocolVersion() below.
|
|
1345
|
+
_subnodeOwnerShape = "legacy";
|
|
1325
1346
|
_onPhoneSigningRequired = void 0;
|
|
1326
1347
|
_confirmPhoneReady = void 0;
|
|
1327
1348
|
/** Total phone-signature count for this DotNS session (drives the `total` field passed to confirmPhoneReady). */
|
|
@@ -1359,6 +1380,10 @@ var DotNS = class _DotNS {
|
|
|
1359
1380
|
this._protocolVersion = profile;
|
|
1360
1381
|
this._adapter = getAdapter(profile);
|
|
1361
1382
|
}
|
|
1383
|
+
/** #1435 test-only: pin the setSubnodeOwner shape cache directly ("legacy", "v07", or null to force resolveSubnodeOwnerShape to re-probe), bypassing the live dry-run probe — for unit tests that stub the probe or exercise the fallback/caching logic itself. */
|
|
1384
|
+
__setSubnodeOwnerShapeForTest(shape) {
|
|
1385
|
+
this._subnodeOwnerShape = shape;
|
|
1386
|
+
}
|
|
1362
1387
|
constructor() {
|
|
1363
1388
|
this.client = null;
|
|
1364
1389
|
this.clientWrapper = null;
|
|
@@ -1540,6 +1565,7 @@ var DotNS = class _DotNS {
|
|
|
1540
1565
|
this.connected = true;
|
|
1541
1566
|
await this.resolveAndVerifyTld(options.tld);
|
|
1542
1567
|
await this.detectProtocolVersion();
|
|
1568
|
+
this._subnodeOwnerShape = null;
|
|
1543
1569
|
if (options.dotnsProtocol && options.dotnsProtocol !== this._protocolVersion) {
|
|
1544
1570
|
this.connected = false;
|
|
1545
1571
|
throw new Error(
|
|
@@ -1932,8 +1958,13 @@ var DotNS = class _DotNS {
|
|
|
1932
1958
|
* v0.5.8-rc1 (pricingVersion answers on both), and classifyProtocolVersion
|
|
1933
1959
|
* already only consults it when pricingVersionOk is true, so gating it
|
|
1934
1960
|
* behind that result resolving first would just add a serialized
|
|
1935
|
-
* round-trip for no benefit — worse
|
|
1936
|
-
*
|
|
1961
|
+
* round-trip for no benefit — worse as v0.6.0 spreads (#1410), since that
|
|
1962
|
+
* "no benefit" case becomes the common one. The discarded-probe cost does
|
|
1963
|
+
* NOT self-liquidate the moment v0.6.0 ships: it persists on every
|
|
1964
|
+
* environment still running an older generation (dotns-protocol.ts's
|
|
1965
|
+
* profile comment owns per-generation status — this one does not restate
|
|
1966
|
+
* it). Parallel regardless: one discarded read beats a serialized
|
|
1967
|
+
* round-trip on every connect. Resolves to `null`
|
|
1937
1968
|
* immediately (no RPC at all) when DOTNS_POP_CONTROLLER has no configured
|
|
1938
1969
|
* address.
|
|
1939
1970
|
*/
|
|
@@ -2086,6 +2117,92 @@ var DotNS = class _DotNS {
|
|
|
2086
2117
|
}
|
|
2087
2118
|
throw new Error("contractTransaction: unreachable \u2014 phone-silence re-arm loop exited without resolving");
|
|
2088
2119
|
}
|
|
2120
|
+
/**
|
|
2121
|
+
* #1435: resolve — once per connection — which `setSubnodeOwner` tuple
|
|
2122
|
+
* shape this chain's DOTNS_REGISTRY accepts, and cache the verdict on
|
|
2123
|
+
* `_subnodeOwnerShape` for the rest of this connection's life. Called by
|
|
2124
|
+
* buildSetSubnodeOwnerCall on the first subname write (register or
|
|
2125
|
+
* transfer, whichever runs first); every subsequent subname write in the
|
|
2126
|
+
* same connection reuses the cached shape with no further chain I/O.
|
|
2127
|
+
*
|
|
2128
|
+
* There is no read-only capability probe for this (see
|
|
2129
|
+
* DOTNS_REGISTRY_SET_SUBNODE_OWNER_ABI_V07's comment — v0.7 adds no new
|
|
2130
|
+
* function/contract to probe), so this probes the WRITE itself: dry-run
|
|
2131
|
+
* the v0.7 (5-field, `persist: false`) encoding against `sampleRecord`
|
|
2132
|
+
* first (a dry run commits no state, so this never spends a fee or
|
|
2133
|
+
* mutates the registry). Three outcomes:
|
|
2134
|
+
*
|
|
2135
|
+
* - The dry run succeeds → this chain is on v0.7+; cache "v07".
|
|
2136
|
+
* - The dry run bare-reverts (empty `0x` data, flags=1 — i.e. no
|
|
2137
|
+
* function matches this selector at all) → this chain predates v0.7;
|
|
2138
|
+
* cache "legacy" and fall back to the 4-field encoding.
|
|
2139
|
+
* - The dry run reverts WITH data → the 5-field function EXISTS and
|
|
2140
|
+
* rejected the call for a real reason (bad parent, not authorised,
|
|
2141
|
+
* etc.) — that is a genuine failure of the caller's actual write, not
|
|
2142
|
+
* a shape mismatch, so it propagates immediately rather than being
|
|
2143
|
+
* swallowed into a fallback attempt. Conflating the two here would
|
|
2144
|
+
* turn a real authorization failure into a confusing shape-probe
|
|
2145
|
+
* loop, retrying the legacy shape (which will ALSO fail, just with a
|
|
2146
|
+
* less informative bare-revert-style error) instead of surfacing the
|
|
2147
|
+
* real cause.
|
|
2148
|
+
*
|
|
2149
|
+
* `sampleRecord` is the actual record the caller is about to write (not a
|
|
2150
|
+
* throwaway probe payload) — probing with real args means a v0.7 chain
|
|
2151
|
+
* that genuinely rejects this specific write (e.g. the signer doesn't own
|
|
2152
|
+
* the parent) reports that real reason here, on the first (probe) dry
|
|
2153
|
+
* run, rather than surfacing a second time once the real submission's own
|
|
2154
|
+
* internal dry run repeats the same call.
|
|
2155
|
+
*/
|
|
2156
|
+
async resolveSubnodeOwnerShape(sampleRecord) {
|
|
2157
|
+
if (this._subnodeOwnerShape !== null) return this._subnodeOwnerShape;
|
|
2158
|
+
this.ensureConnected();
|
|
2159
|
+
if (!this.clientWrapper) throw new Error("resolveSubnodeOwnerShape: polkadot-api client not available");
|
|
2160
|
+
const contractAddress = this._contracts.DOTNS_REGISTRY;
|
|
2161
|
+
const v07Abi = DOTNS_REGISTRY_SET_SUBNODE_OWNER_ABI_V07;
|
|
2162
|
+
const v07Args = [{ ...sampleRecord, persist: false }];
|
|
2163
|
+
const encodedCallData = encodeFunctionData({ abi: v07Abi, functionName: "setSubnodeOwner", args: v07Args });
|
|
2164
|
+
const callResult = await this.clientWrapper.performDryRunCall(this.substrateAddress, contractAddress, 0n, encodedCallData);
|
|
2165
|
+
if (callResult.result.isOk) {
|
|
2166
|
+
this._subnodeOwnerShape = "v07";
|
|
2167
|
+
return "v07";
|
|
2168
|
+
}
|
|
2169
|
+
const errorData = callResult.result.value;
|
|
2170
|
+
const revertData = errorData?.data;
|
|
2171
|
+
const revertFlags = errorData?.flags;
|
|
2172
|
+
if (!isBareRevertResult(revertData, revertFlags)) {
|
|
2173
|
+
throw new Error(formatContractDryRunFailure({
|
|
2174
|
+
revertData,
|
|
2175
|
+
revertFlags,
|
|
2176
|
+
gasConsumed: callResult.gasConsumed,
|
|
2177
|
+
gasRequired: callResult.gasRequired,
|
|
2178
|
+
storageDeposit: callResult.storageDeposit?.value
|
|
2179
|
+
}, {
|
|
2180
|
+
contractAddress,
|
|
2181
|
+
functionName: "setSubnodeOwner",
|
|
2182
|
+
signerSubstrateAddress: this.substrateAddress,
|
|
2183
|
+
signerEvmAddress: this.evmAddress ?? void 0,
|
|
2184
|
+
value: 0n,
|
|
2185
|
+
encodedData: encodedCallData,
|
|
2186
|
+
args: v07Args,
|
|
2187
|
+
contracts: this._contracts
|
|
2188
|
+
}));
|
|
2189
|
+
}
|
|
2190
|
+
this._subnodeOwnerShape = "legacy";
|
|
2191
|
+
return "legacy";
|
|
2192
|
+
}
|
|
2193
|
+
/**
|
|
2194
|
+
* Build the `{ abi, args }` pair a setSubnodeOwner call site should submit,
|
|
2195
|
+
* after resolving (and caching) this connection's accepted tuple shape —
|
|
2196
|
+
* see resolveSubnodeOwnerShape. `record` carries the 4 fields common to
|
|
2197
|
+
* both shapes; the v0.7 shape appends `persist: false` (per #1435, this
|
|
2198
|
+
* only gates the LabelStore write, which is restricted to protocol store
|
|
2199
|
+
* writers — the ownership/resolver record itself is written either way).
|
|
2200
|
+
*/
|
|
2201
|
+
async buildSetSubnodeOwnerCall(record) {
|
|
2202
|
+
const shape = await this.resolveSubnodeOwnerShape(record);
|
|
2203
|
+
if (shape === "v07") return { abi: DOTNS_REGISTRY_SET_SUBNODE_OWNER_ABI_V07, args: [{ ...record, persist: false }] };
|
|
2204
|
+
return { abi: DOTNS_REGISTRY_ABI, args: [record] };
|
|
2205
|
+
}
|
|
2089
2206
|
async checkOwnership(label, ownerAddress = null) {
|
|
2090
2207
|
this.ensureConnected();
|
|
2091
2208
|
const checkAddress = (ownerAddress || this.evmAddress).toLowerCase();
|
|
@@ -2190,12 +2307,13 @@ var DotNS = class _DotNS {
|
|
|
2190
2307
|
return { status: "skipped-already-owned" };
|
|
2191
2308
|
}
|
|
2192
2309
|
const subnodeRecord = { parentNode, subLabel: sublabel, parentLabel, owner: toH160 };
|
|
2310
|
+
const { abi: setSubnodeOwnerAbi, args: setSubnodeOwnerArgs } = await this.buildSetSubnodeOwnerCall(subnodeRecord);
|
|
2193
2311
|
const txRes = await this.contractTransaction(
|
|
2194
2312
|
this._contracts.DOTNS_REGISTRY,
|
|
2195
2313
|
0n,
|
|
2196
|
-
|
|
2314
|
+
setSubnodeOwnerAbi,
|
|
2197
2315
|
"setSubnodeOwner",
|
|
2198
|
-
|
|
2316
|
+
setSubnodeOwnerArgs,
|
|
2199
2317
|
statusCallback
|
|
2200
2318
|
);
|
|
2201
2319
|
const after = await withTimeout(
|
|
@@ -2274,9 +2392,10 @@ var DotNS = class _DotNS {
|
|
|
2274
2392
|
await new Promise((r) => setTimeout(r, POLL_INTERVAL_MS));
|
|
2275
2393
|
}
|
|
2276
2394
|
};
|
|
2395
|
+
const { abi: setSubnodeOwnerAbi, args: setSubnodeOwnerArgs } = await this.buildSetSubnodeOwnerCall(subnodeRecord);
|
|
2277
2396
|
const txResolution = await this.submitBatchedContractCalls(
|
|
2278
2397
|
[
|
|
2279
|
-
{ contractAddress: this._contracts.DOTNS_REGISTRY, abi:
|
|
2398
|
+
{ contractAddress: this._contracts.DOTNS_REGISTRY, abi: setSubnodeOwnerAbi, functionName: "setSubnodeOwner", args: setSubnodeOwnerArgs },
|
|
2280
2399
|
{ contractAddress: this._contracts.DOTNS_REGISTRY, abi: DOTNS_REGISTRY_ABI, functionName: "setResolver", args: [subnodeNode, this._contracts.DOTNS_CONTENT_RESOLVER] }
|
|
2281
2400
|
],
|
|
2282
2401
|
(s) => console.log(` ${s}`),
|
|
@@ -3,7 +3,7 @@ import {
|
|
|
3
3
|
} from "./chunk-M5AKL3FL.js";
|
|
4
4
|
import {
|
|
5
5
|
preflightSssAllowance
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-RULOELNF.js";
|
|
7
7
|
import {
|
|
8
8
|
statementSigningAccount
|
|
9
9
|
} from "./chunk-GRPLHUYC.js";
|
|
@@ -29,18 +29,18 @@ import {
|
|
|
29
29
|
} from "./chunk-WPC2PUCV.js";
|
|
30
30
|
import {
|
|
31
31
|
setDeployContext
|
|
32
|
-
} from "./chunk-
|
|
32
|
+
} from "./chunk-3BDYD4BG.js";
|
|
33
33
|
import {
|
|
34
34
|
getBestBlockNumber,
|
|
35
35
|
probeChunks,
|
|
36
36
|
probeFinalityGap
|
|
37
|
-
} from "./chunk-
|
|
37
|
+
} from "./chunk-64UKPUK4.js";
|
|
38
38
|
import {
|
|
39
39
|
packSection
|
|
40
40
|
} from "./chunk-C2TS5MER.js";
|
|
41
41
|
import {
|
|
42
42
|
resolveStorageSigner
|
|
43
|
-
} from "./chunk-
|
|
43
|
+
} from "./chunk-2WGCBESY.js";
|
|
44
44
|
import {
|
|
45
45
|
createSlotAccountSigner,
|
|
46
46
|
requestResourceAllocation
|
|
@@ -55,7 +55,7 @@ import {
|
|
|
55
55
|
parseDomainName,
|
|
56
56
|
popStatusName,
|
|
57
57
|
verifyNonceAdvanced
|
|
58
|
-
} from "./chunk-
|
|
58
|
+
} from "./chunk-FJTZNSNU.js";
|
|
59
59
|
import {
|
|
60
60
|
derivePoolAccounts,
|
|
61
61
|
detectTestnet,
|
|
@@ -69,7 +69,7 @@ import {
|
|
|
69
69
|
STALE_SESSION_MESSAGE,
|
|
70
70
|
getPeopleChainEndpoints,
|
|
71
71
|
hasPersistedSession
|
|
72
|
-
} from "./chunk-
|
|
72
|
+
} from "./chunk-Q7CHACT6.js";
|
|
73
73
|
import {
|
|
74
74
|
CLI_NAME
|
|
75
75
|
} from "./chunk-TSPERKUS.js";
|
|
@@ -84,7 +84,7 @@ import {
|
|
|
84
84
|
} from "./chunk-ZOC4GITL.js";
|
|
85
85
|
import {
|
|
86
86
|
ChainHealthSampler
|
|
87
|
-
} from "./chunk-
|
|
87
|
+
} from "./chunk-6HPDXI7E.js";
|
|
88
88
|
import {
|
|
89
89
|
VERSION,
|
|
90
90
|
captureWarning,
|
|
@@ -98,7 +98,7 @@ import {
|
|
|
98
98
|
truncateAddress,
|
|
99
99
|
withDeploySpan,
|
|
100
100
|
withSpan
|
|
101
|
-
} from "./chunk-
|
|
101
|
+
} from "./chunk-HIODF4QF.js";
|
|
102
102
|
|
|
103
103
|
// src/merkle.ts
|
|
104
104
|
import * as fs2 from "fs";
|
|
@@ -6,7 +6,7 @@ import * as path from "path";
|
|
|
6
6
|
// package.json
|
|
7
7
|
var package_default = {
|
|
8
8
|
name: "bulletin-deploy",
|
|
9
|
-
version: "0.18.
|
|
9
|
+
version: "0.18.1-rc.1",
|
|
10
10
|
private: false,
|
|
11
11
|
repository: {
|
|
12
12
|
type: "git",
|
|
@@ -56,7 +56,7 @@ var package_default = {
|
|
|
56
56
|
"refresh-environments": "node scripts/refresh-environments.mjs",
|
|
57
57
|
postinstall: "patch-package || true",
|
|
58
58
|
prepare: "npm run build",
|
|
59
|
-
test: "npm run build && node --test test/test.js test/cli-help.test.js test/helpers/e2e-helpers.test.js test/environments.test.js test/refresh-environments.test.js test/chunk-sharing-report.test.js test/dotns-deployments-parser.test.js test/dotns-token-id.test.js test/dotns-subnode-id.test.js test/dotns-protocol.test.js test/product-manifest.test.js test/cache-savings-totals.test.js test/error-pattern-signature.test.js test/exit-codes.test.js test/probe-env-health.test.js test/e2e-chain-calls.test.js test/auth-config.test.js test/whoami.test.js test/login.test.js test/logout.test.js test/auth-resolve.test.js test/storage-signer.test.js test/spinner.test.js test/sss-allowance.test.js test/sss-allowance-cache.test.js test/dotns-transfer.test.js test/deploy-actors.test.js test/transfer-command.test.js test/dotns-register-fee.test.js test/deploy-label-ordering.test.js test/benign-teardown.test.js test/verify-baked-dsn.test.js test/product-account.test.js test/post-release-monitor-skill.test.js test/test-release-retry-wrapper.js test/reprove-alias-tool.test.js test/bootstrap-env.test.js test/check-chain-identity.test.js && npm run test:vendor",
|
|
59
|
+
test: "npm run build && node --test test/test.js test/cli-help.test.js test/helpers/e2e-helpers.test.js test/helpers/e2e-exit-guard.test.js test/environments.test.js test/refresh-environments.test.js test/chunk-sharing-report.test.js test/dotns-deployments-parser.test.js test/dotns-token-id.test.js test/dotns-subnode-id.test.js test/dotns-protocol.test.js test/product-manifest.test.js test/cache-savings-totals.test.js test/error-pattern-signature.test.js test/exit-codes.test.js test/probe-env-health.test.js test/e2e-chain-calls.test.js test/auth-config.test.js test/whoami.test.js test/login.test.js test/logout.test.js test/auth-resolve.test.js test/storage-signer.test.js test/spinner.test.js test/sss-allowance.test.js test/sss-allowance-cache.test.js test/dotns-transfer.test.js test/deploy-actors.test.js test/transfer-command.test.js test/dotns-register-fee.test.js test/deploy-label-ordering.test.js test/benign-teardown.test.js test/verify-baked-dsn.test.js test/product-account.test.js test/post-release-monitor-skill.test.js test/test-release-retry-wrapper.js test/reprove-alias-tool.test.js test/bootstrap-env.test.js test/check-chain-identity.test.js && npm run test:vendor",
|
|
60
60
|
"test:e2e": "npm run build && node --test test/e2e.test.js",
|
|
61
61
|
"test:e2e:smoke": "bash scripts/e2e-pass.sh smoke",
|
|
62
62
|
"test:e2e:pr": "bash scripts/e2e-pass.sh pr",
|
package/dist/chunk-probe.js
CHANGED
|
@@ -8,9 +8,9 @@ import {
|
|
|
8
8
|
getBestBlockNumber,
|
|
9
9
|
probeChunks,
|
|
10
10
|
probeFinalityGap
|
|
11
|
-
} from "./chunk-
|
|
12
|
-
import "./chunk-
|
|
13
|
-
import "./chunk-
|
|
11
|
+
} from "./chunk-64UKPUK4.js";
|
|
12
|
+
import "./chunk-HIODF4QF.js";
|
|
13
|
+
import "./chunk-SSV2KD3B.js";
|
|
14
14
|
export {
|
|
15
15
|
ChainProbeCrossValidationError,
|
|
16
16
|
ChainProbeMetadataError,
|
package/dist/commands/login.js
CHANGED
|
@@ -4,11 +4,11 @@ import {
|
|
|
4
4
|
import {
|
|
5
5
|
isBenignTeardownError,
|
|
6
6
|
waitForBulletinAuthorization
|
|
7
|
-
} from "../chunk-
|
|
7
|
+
} from "../chunk-Q6NVSUCX.js";
|
|
8
8
|
import "../chunk-M5AKL3FL.js";
|
|
9
9
|
import {
|
|
10
10
|
preflightSssAllowance
|
|
11
|
-
} from "../chunk-
|
|
11
|
+
} from "../chunk-RULOELNF.js";
|
|
12
12
|
import {
|
|
13
13
|
statementSigningAccount
|
|
14
14
|
} from "../chunk-GRPLHUYC.js";
|
|
@@ -16,11 +16,11 @@ import "../chunk-IW3X2MJF.js";
|
|
|
16
16
|
import "../chunk-LPTKBQII.js";
|
|
17
17
|
import "../chunk-3MAIF2SF.js";
|
|
18
18
|
import "../chunk-WPC2PUCV.js";
|
|
19
|
-
import "../chunk-
|
|
20
|
-
import "../chunk-
|
|
21
|
-
import "../chunk-
|
|
19
|
+
import "../chunk-3BDYD4BG.js";
|
|
20
|
+
import "../chunk-UPQ2JGIO.js";
|
|
21
|
+
import "../chunk-64UKPUK4.js";
|
|
22
22
|
import "../chunk-C2TS5MER.js";
|
|
23
|
-
import "../chunk-
|
|
23
|
+
import "../chunk-2WGCBESY.js";
|
|
24
24
|
import "../chunk-JQKKMUCT.js";
|
|
25
25
|
import {
|
|
26
26
|
BULLETIN_RESOURCE,
|
|
@@ -32,7 +32,7 @@ import {
|
|
|
32
32
|
import {
|
|
33
33
|
renderLoginStatus
|
|
34
34
|
} from "../chunk-RIRDBSBG.js";
|
|
35
|
-
import "../chunk-
|
|
35
|
+
import "../chunk-FJTZNSNU.js";
|
|
36
36
|
import "../chunk-SI2ZUOYD.js";
|
|
37
37
|
import "../chunk-AYAVRPAP.js";
|
|
38
38
|
import {
|
|
@@ -40,7 +40,7 @@ import {
|
|
|
40
40
|
getAuthClient,
|
|
41
41
|
getPeopleChainEndpoints,
|
|
42
42
|
resolveBulletinEndpoints
|
|
43
|
-
} from "../chunk-
|
|
43
|
+
} from "../chunk-Q7CHACT6.js";
|
|
44
44
|
import {
|
|
45
45
|
CLI_NAME
|
|
46
46
|
} from "../chunk-TSPERKUS.js";
|
|
@@ -48,9 +48,9 @@ import {
|
|
|
48
48
|
loadEnvironments
|
|
49
49
|
} from "../chunk-HDGD5FYX.js";
|
|
50
50
|
import "../chunk-ZOC4GITL.js";
|
|
51
|
-
import "../chunk-
|
|
52
|
-
import "../chunk-
|
|
53
|
-
import "../chunk-
|
|
51
|
+
import "../chunk-6HPDXI7E.js";
|
|
52
|
+
import "../chunk-HIODF4QF.js";
|
|
53
|
+
import "../chunk-SSV2KD3B.js";
|
|
54
54
|
import "../chunk-7I3MTGOR.js";
|
|
55
55
|
|
|
56
56
|
// src/commands/login.ts
|
package/dist/commands/logout.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
clearSssAllowanceCache
|
|
3
|
-
} from "../chunk-
|
|
3
|
+
} from "../chunk-RULOELNF.js";
|
|
4
4
|
import "../chunk-GRPLHUYC.js";
|
|
5
5
|
import "../chunk-JQKKMUCT.js";
|
|
6
6
|
import "../chunk-5FLTDWWP.js";
|
|
@@ -9,12 +9,12 @@ import {
|
|
|
9
9
|
} from "../chunk-RIRDBSBG.js";
|
|
10
10
|
import {
|
|
11
11
|
getAuthClient
|
|
12
|
-
} from "../chunk-
|
|
12
|
+
} from "../chunk-Q7CHACT6.js";
|
|
13
13
|
import "../chunk-TSPERKUS.js";
|
|
14
14
|
import "../chunk-HDGD5FYX.js";
|
|
15
15
|
import "../chunk-ZOC4GITL.js";
|
|
16
|
-
import "../chunk-
|
|
17
|
-
import "../chunk-
|
|
16
|
+
import "../chunk-HIODF4QF.js";
|
|
17
|
+
import "../chunk-SSV2KD3B.js";
|
|
18
18
|
|
|
19
19
|
// src/commands/logout.ts
|
|
20
20
|
function formatLogout(status) {
|
|
@@ -3,7 +3,7 @@ import {
|
|
|
3
3
|
DEFAULT_TLD,
|
|
4
4
|
DotNS,
|
|
5
5
|
parseDomainName
|
|
6
|
-
} from "../chunk-
|
|
6
|
+
} from "../chunk-FJTZNSNU.js";
|
|
7
7
|
import "../chunk-SI2ZUOYD.js";
|
|
8
8
|
import "../chunk-AYAVRPAP.js";
|
|
9
9
|
import {
|
|
@@ -15,9 +15,9 @@ import {
|
|
|
15
15
|
resolveEndpoints
|
|
16
16
|
} from "../chunk-HDGD5FYX.js";
|
|
17
17
|
import "../chunk-ZOC4GITL.js";
|
|
18
|
-
import "../chunk-
|
|
19
|
-
import "../chunk-
|
|
20
|
-
import "../chunk-
|
|
18
|
+
import "../chunk-6HPDXI7E.js";
|
|
19
|
+
import "../chunk-HIODF4QF.js";
|
|
20
|
+
import "../chunk-SSV2KD3B.js";
|
|
21
21
|
import "../chunk-7I3MTGOR.js";
|
|
22
22
|
|
|
23
23
|
// src/commands/transfer.ts
|
package/dist/commands/whoami.js
CHANGED
|
@@ -2,14 +2,14 @@ import {
|
|
|
2
2
|
STALE_SESSION_MESSAGE,
|
|
3
3
|
getAuthClient,
|
|
4
4
|
hasPersistedSession
|
|
5
|
-
} from "../chunk-
|
|
5
|
+
} from "../chunk-Q7CHACT6.js";
|
|
6
6
|
import {
|
|
7
7
|
CLI_NAME
|
|
8
8
|
} from "../chunk-TSPERKUS.js";
|
|
9
9
|
import "../chunk-HDGD5FYX.js";
|
|
10
10
|
import "../chunk-ZOC4GITL.js";
|
|
11
|
-
import "../chunk-
|
|
12
|
-
import "../chunk-
|
|
11
|
+
import "../chunk-HIODF4QF.js";
|
|
12
|
+
import "../chunk-SSV2KD3B.js";
|
|
13
13
|
|
|
14
14
|
// src/commands/whoami.ts
|
|
15
15
|
function formatWhoami(addresses) {
|
package/dist/deploy-actors.js
CHANGED
|
@@ -2,20 +2,20 @@ import {
|
|
|
2
2
|
MainnetDefaultWorkerError,
|
|
3
3
|
resolveDeployActors,
|
|
4
4
|
resolveStorageSigner
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-2WGCBESY.js";
|
|
6
6
|
import "./chunk-JQKKMUCT.js";
|
|
7
7
|
import "./chunk-5FLTDWWP.js";
|
|
8
8
|
import "./chunk-RIRDBSBG.js";
|
|
9
|
-
import "./chunk-
|
|
9
|
+
import "./chunk-FJTZNSNU.js";
|
|
10
10
|
import "./chunk-SI2ZUOYD.js";
|
|
11
11
|
import "./chunk-AYAVRPAP.js";
|
|
12
|
-
import "./chunk-
|
|
12
|
+
import "./chunk-Q7CHACT6.js";
|
|
13
13
|
import "./chunk-TSPERKUS.js";
|
|
14
14
|
import "./chunk-HDGD5FYX.js";
|
|
15
15
|
import "./chunk-ZOC4GITL.js";
|
|
16
|
-
import "./chunk-
|
|
17
|
-
import "./chunk-
|
|
18
|
-
import "./chunk-
|
|
16
|
+
import "./chunk-6HPDXI7E.js";
|
|
17
|
+
import "./chunk-HIODF4QF.js";
|
|
18
|
+
import "./chunk-SSV2KD3B.js";
|
|
19
19
|
import "./chunk-7I3MTGOR.js";
|
|
20
20
|
export {
|
|
21
21
|
MainnetDefaultWorkerError,
|
package/dist/deploy.js
CHANGED
|
@@ -64,35 +64,35 @@ import {
|
|
|
64
64
|
storeDirectory,
|
|
65
65
|
storeDirectoryV2,
|
|
66
66
|
storeFile
|
|
67
|
-
} from "./chunk-
|
|
67
|
+
} from "./chunk-Q6NVSUCX.js";
|
|
68
68
|
import "./chunk-M5AKL3FL.js";
|
|
69
|
-
import "./chunk-
|
|
69
|
+
import "./chunk-RULOELNF.js";
|
|
70
70
|
import "./chunk-GRPLHUYC.js";
|
|
71
71
|
import "./chunk-IW3X2MJF.js";
|
|
72
72
|
import "./chunk-LPTKBQII.js";
|
|
73
73
|
import "./chunk-3MAIF2SF.js";
|
|
74
74
|
import "./chunk-WPC2PUCV.js";
|
|
75
|
-
import "./chunk-
|
|
76
|
-
import "./chunk-
|
|
77
|
-
import "./chunk-
|
|
75
|
+
import "./chunk-3BDYD4BG.js";
|
|
76
|
+
import "./chunk-UPQ2JGIO.js";
|
|
77
|
+
import "./chunk-64UKPUK4.js";
|
|
78
78
|
import "./chunk-C2TS5MER.js";
|
|
79
|
-
import "./chunk-
|
|
79
|
+
import "./chunk-2WGCBESY.js";
|
|
80
80
|
import "./chunk-JQKKMUCT.js";
|
|
81
81
|
import "./chunk-5FLTDWWP.js";
|
|
82
82
|
import "./chunk-RIRDBSBG.js";
|
|
83
|
-
import "./chunk-
|
|
83
|
+
import "./chunk-FJTZNSNU.js";
|
|
84
84
|
import "./chunk-SI2ZUOYD.js";
|
|
85
85
|
import "./chunk-AYAVRPAP.js";
|
|
86
|
-
import "./chunk-
|
|
86
|
+
import "./chunk-Q7CHACT6.js";
|
|
87
87
|
import "./chunk-TSPERKUS.js";
|
|
88
88
|
import "./chunk-HDGD5FYX.js";
|
|
89
89
|
import {
|
|
90
90
|
EXIT_CODE_NO_RETRY,
|
|
91
91
|
NonRetryableError
|
|
92
92
|
} from "./chunk-ZOC4GITL.js";
|
|
93
|
-
import "./chunk-
|
|
94
|
-
import "./chunk-
|
|
95
|
-
import "./chunk-
|
|
93
|
+
import "./chunk-6HPDXI7E.js";
|
|
94
|
+
import "./chunk-HIODF4QF.js";
|
|
95
|
+
import "./chunk-SSV2KD3B.js";
|
|
96
96
|
import "./chunk-7I3MTGOR.js";
|
|
97
97
|
export {
|
|
98
98
|
BLAKE2B_256_MULTIHASH_CODE,
|
package/dist/dotns.d.ts
CHANGED
|
@@ -639,6 +639,7 @@ declare class DotNS {
|
|
|
639
639
|
private _tld;
|
|
640
640
|
private _protocolVersion;
|
|
641
641
|
private _adapter;
|
|
642
|
+
private _subnodeOwnerShape;
|
|
642
643
|
private _onPhoneSigningRequired;
|
|
643
644
|
private _confirmPhoneReady;
|
|
644
645
|
/** Total phone-signature count for this DotNS session (drives the `total` field passed to confirmPhoneReady). */
|
|
@@ -664,6 +665,8 @@ declare class DotNS {
|
|
|
664
665
|
get protocolVersion(): DotnsAbiProfile;
|
|
665
666
|
/** Test-only: bypass connect()'s live probe and pin the adapter directly, for unit tests that stub chain calls without going through connect(). */
|
|
666
667
|
__setProtocolVersionForTest(profile: DotnsAbiProfile): void;
|
|
668
|
+
/** #1435 test-only: pin the setSubnodeOwner shape cache directly ("legacy", "v07", or null to force resolveSubnodeOwnerShape to re-probe), bypassing the live dry-run probe — for unit tests that stub the probe or exercise the fallback/caching logic itself. */
|
|
669
|
+
__setSubnodeOwnerShapeForTest(shape: "legacy" | "v07" | null): void;
|
|
667
670
|
constructor();
|
|
668
671
|
/**
|
|
669
672
|
* The authoritative, post-connect resolved TLD: `options.tld` when the env
|
|
@@ -816,8 +819,13 @@ declare class DotNS {
|
|
|
816
819
|
* v0.5.8-rc1 (pricingVersion answers on both), and classifyProtocolVersion
|
|
817
820
|
* already only consults it when pricingVersionOk is true, so gating it
|
|
818
821
|
* behind that result resolving first would just add a serialized
|
|
819
|
-
* round-trip for no benefit — worse
|
|
820
|
-
*
|
|
822
|
+
* round-trip for no benefit — worse as v0.6.0 spreads (#1410), since that
|
|
823
|
+
* "no benefit" case becomes the common one. The discarded-probe cost does
|
|
824
|
+
* NOT self-liquidate the moment v0.6.0 ships: it persists on every
|
|
825
|
+
* environment still running an older generation (dotns-protocol.ts's
|
|
826
|
+
* profile comment owns per-generation status — this one does not restate
|
|
827
|
+
* it). Parallel regardless: one discarded read beats a serialized
|
|
828
|
+
* round-trip on every connect. Resolves to `null`
|
|
821
829
|
* immediately (no RPC at all) when DOTNS_POP_CONTROLLER has no configured
|
|
822
830
|
* address.
|
|
823
831
|
*/
|
|
@@ -837,6 +845,52 @@ declare class DotNS {
|
|
|
837
845
|
feeAsset?: "pgas";
|
|
838
846
|
phoneLabel?: string;
|
|
839
847
|
}): Promise<TxResolution>;
|
|
848
|
+
/**
|
|
849
|
+
* #1435: resolve — once per connection — which `setSubnodeOwner` tuple
|
|
850
|
+
* shape this chain's DOTNS_REGISTRY accepts, and cache the verdict on
|
|
851
|
+
* `_subnodeOwnerShape` for the rest of this connection's life. Called by
|
|
852
|
+
* buildSetSubnodeOwnerCall on the first subname write (register or
|
|
853
|
+
* transfer, whichever runs first); every subsequent subname write in the
|
|
854
|
+
* same connection reuses the cached shape with no further chain I/O.
|
|
855
|
+
*
|
|
856
|
+
* There is no read-only capability probe for this (see
|
|
857
|
+
* DOTNS_REGISTRY_SET_SUBNODE_OWNER_ABI_V07's comment — v0.7 adds no new
|
|
858
|
+
* function/contract to probe), so this probes the WRITE itself: dry-run
|
|
859
|
+
* the v0.7 (5-field, `persist: false`) encoding against `sampleRecord`
|
|
860
|
+
* first (a dry run commits no state, so this never spends a fee or
|
|
861
|
+
* mutates the registry). Three outcomes:
|
|
862
|
+
*
|
|
863
|
+
* - The dry run succeeds → this chain is on v0.7+; cache "v07".
|
|
864
|
+
* - The dry run bare-reverts (empty `0x` data, flags=1 — i.e. no
|
|
865
|
+
* function matches this selector at all) → this chain predates v0.7;
|
|
866
|
+
* cache "legacy" and fall back to the 4-field encoding.
|
|
867
|
+
* - The dry run reverts WITH data → the 5-field function EXISTS and
|
|
868
|
+
* rejected the call for a real reason (bad parent, not authorised,
|
|
869
|
+
* etc.) — that is a genuine failure of the caller's actual write, not
|
|
870
|
+
* a shape mismatch, so it propagates immediately rather than being
|
|
871
|
+
* swallowed into a fallback attempt. Conflating the two here would
|
|
872
|
+
* turn a real authorization failure into a confusing shape-probe
|
|
873
|
+
* loop, retrying the legacy shape (which will ALSO fail, just with a
|
|
874
|
+
* less informative bare-revert-style error) instead of surfacing the
|
|
875
|
+
* real cause.
|
|
876
|
+
*
|
|
877
|
+
* `sampleRecord` is the actual record the caller is about to write (not a
|
|
878
|
+
* throwaway probe payload) — probing with real args means a v0.7 chain
|
|
879
|
+
* that genuinely rejects this specific write (e.g. the signer doesn't own
|
|
880
|
+
* the parent) reports that real reason here, on the first (probe) dry
|
|
881
|
+
* run, rather than surfacing a second time once the real submission's own
|
|
882
|
+
* internal dry run repeats the same call.
|
|
883
|
+
*/
|
|
884
|
+
private resolveSubnodeOwnerShape;
|
|
885
|
+
/**
|
|
886
|
+
* Build the `{ abi, args }` pair a setSubnodeOwner call site should submit,
|
|
887
|
+
* after resolving (and caching) this connection's accepted tuple shape —
|
|
888
|
+
* see resolveSubnodeOwnerShape. `record` carries the 4 fields common to
|
|
889
|
+
* both shapes; the v0.7 shape appends `persist: false` (per #1435, this
|
|
890
|
+
* only gates the LabelStore write, which is restricted to protocol store
|
|
891
|
+
* writers — the ownership/resolver record itself is written either way).
|
|
892
|
+
*/
|
|
893
|
+
private buildSetSubnodeOwnerCall;
|
|
840
894
|
checkOwnership(label: string, ownerAddress?: string | null): Promise<OwnershipResult>;
|
|
841
895
|
/** Live transfer-fee quote. transferFloor is a pure PopRules view — it
|
|
842
896
|
* classifies the label and reads both tiers, so it works BEFORE the name is
|
package/dist/dotns.js
CHANGED
|
@@ -87,14 +87,14 @@ import {
|
|
|
87
87
|
verifyNonceAdvanced,
|
|
88
88
|
weiToNative,
|
|
89
89
|
withRetry
|
|
90
|
-
} from "./chunk-
|
|
90
|
+
} from "./chunk-FJTZNSNU.js";
|
|
91
91
|
import "./chunk-SI2ZUOYD.js";
|
|
92
92
|
import "./chunk-AYAVRPAP.js";
|
|
93
93
|
import "./chunk-HDGD5FYX.js";
|
|
94
94
|
import "./chunk-ZOC4GITL.js";
|
|
95
|
-
import "./chunk-
|
|
96
|
-
import "./chunk-
|
|
97
|
-
import "./chunk-
|
|
95
|
+
import "./chunk-6HPDXI7E.js";
|
|
96
|
+
import "./chunk-HIODF4QF.js";
|
|
97
|
+
import "./chunk-SSV2KD3B.js";
|
|
98
98
|
import "./chunk-7I3MTGOR.js";
|
|
99
99
|
export {
|
|
100
100
|
ATTR_TX_RESOLUTION_KIND,
|
package/dist/index.js
CHANGED
|
@@ -4,7 +4,7 @@ import {
|
|
|
4
4
|
publishManifest,
|
|
5
5
|
verifyEmbeddedAppManifests,
|
|
6
6
|
writeEmbeddedAppManifests
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-5JVTBR5H.js";
|
|
8
8
|
import {
|
|
9
9
|
DEFAULT_TEXT_RECORD_BUDGET_BYTES,
|
|
10
10
|
PLACEHOLDER_CID,
|
|
@@ -29,9 +29,9 @@ import {
|
|
|
29
29
|
deploy,
|
|
30
30
|
merkleizeJS,
|
|
31
31
|
merkleizeWithStableOrder
|
|
32
|
-
} from "./chunk-
|
|
32
|
+
} from "./chunk-Q6NVSUCX.js";
|
|
33
33
|
import "./chunk-M5AKL3FL.js";
|
|
34
|
-
import "./chunk-
|
|
34
|
+
import "./chunk-RULOELNF.js";
|
|
35
35
|
import "./chunk-GRPLHUYC.js";
|
|
36
36
|
import {
|
|
37
37
|
computeStats,
|
|
@@ -54,13 +54,13 @@ import {
|
|
|
54
54
|
isVolatilePath,
|
|
55
55
|
parseManifest
|
|
56
56
|
} from "./chunk-WPC2PUCV.js";
|
|
57
|
-
import "./chunk-
|
|
58
|
-
import "./chunk-
|
|
57
|
+
import "./chunk-3BDYD4BG.js";
|
|
58
|
+
import "./chunk-UPQ2JGIO.js";
|
|
59
59
|
import {
|
|
60
60
|
probeChunks
|
|
61
|
-
} from "./chunk-
|
|
61
|
+
} from "./chunk-64UKPUK4.js";
|
|
62
62
|
import "./chunk-C2TS5MER.js";
|
|
63
|
-
import "./chunk-
|
|
63
|
+
import "./chunk-2WGCBESY.js";
|
|
64
64
|
import "./chunk-JQKKMUCT.js";
|
|
65
65
|
import "./chunk-5FLTDWWP.js";
|
|
66
66
|
import "./chunk-RIRDBSBG.js";
|
|
@@ -69,7 +69,7 @@ import {
|
|
|
69
69
|
DotNS,
|
|
70
70
|
parseDomainName,
|
|
71
71
|
sanitizeDomainLabel
|
|
72
|
-
} from "./chunk-
|
|
72
|
+
} from "./chunk-FJTZNSNU.js";
|
|
73
73
|
import "./chunk-SI2ZUOYD.js";
|
|
74
74
|
import {
|
|
75
75
|
BULLETIN_BLOCKS_PER_DAY,
|
|
@@ -85,7 +85,7 @@ import {
|
|
|
85
85
|
poolAccountDerivationPath,
|
|
86
86
|
selectAccount
|
|
87
87
|
} from "./chunk-AYAVRPAP.js";
|
|
88
|
-
import "./chunk-
|
|
88
|
+
import "./chunk-Q7CHACT6.js";
|
|
89
89
|
import "./chunk-TSPERKUS.js";
|
|
90
90
|
import {
|
|
91
91
|
DEFAULT_ENV_ID,
|
|
@@ -99,8 +99,8 @@ import {
|
|
|
99
99
|
validateContractAddresses
|
|
100
100
|
} from "./chunk-HDGD5FYX.js";
|
|
101
101
|
import "./chunk-ZOC4GITL.js";
|
|
102
|
-
import "./chunk-
|
|
103
|
-
import "./chunk-
|
|
102
|
+
import "./chunk-6HPDXI7E.js";
|
|
103
|
+
import "./chunk-HIODF4QF.js";
|
|
104
104
|
import {
|
|
105
105
|
VERSION,
|
|
106
106
|
loadRunState,
|
|
@@ -110,7 +110,7 @@ import {
|
|
|
110
110
|
shouldSkipStaleWarning,
|
|
111
111
|
stateFilePath,
|
|
112
112
|
writeRunState
|
|
113
|
-
} from "./chunk-
|
|
113
|
+
} from "./chunk-SSV2KD3B.js";
|
|
114
114
|
import "./chunk-7I3MTGOR.js";
|
|
115
115
|
export {
|
|
116
116
|
BULLETIN_BLOCKS_PER_DAY,
|
package/dist/manifest/publish.js
CHANGED
|
@@ -2,36 +2,36 @@ import {
|
|
|
2
2
|
domainMatchesEnvTld,
|
|
3
3
|
publishManifest,
|
|
4
4
|
registerOrEnsureResolver
|
|
5
|
-
} from "../chunk-
|
|
5
|
+
} from "../chunk-5JVTBR5H.js";
|
|
6
6
|
import "../chunk-RXV677CJ.js";
|
|
7
7
|
import "../chunk-WEVSXHII.js";
|
|
8
8
|
import "../chunk-CVQ7DJHG.js";
|
|
9
|
-
import "../chunk-
|
|
9
|
+
import "../chunk-Q6NVSUCX.js";
|
|
10
10
|
import "../chunk-M5AKL3FL.js";
|
|
11
|
-
import "../chunk-
|
|
11
|
+
import "../chunk-RULOELNF.js";
|
|
12
12
|
import "../chunk-GRPLHUYC.js";
|
|
13
13
|
import "../chunk-IW3X2MJF.js";
|
|
14
14
|
import "../chunk-LPTKBQII.js";
|
|
15
15
|
import "../chunk-3MAIF2SF.js";
|
|
16
16
|
import "../chunk-WPC2PUCV.js";
|
|
17
|
-
import "../chunk-
|
|
18
|
-
import "../chunk-
|
|
19
|
-
import "../chunk-
|
|
17
|
+
import "../chunk-3BDYD4BG.js";
|
|
18
|
+
import "../chunk-UPQ2JGIO.js";
|
|
19
|
+
import "../chunk-64UKPUK4.js";
|
|
20
20
|
import "../chunk-C2TS5MER.js";
|
|
21
|
-
import "../chunk-
|
|
21
|
+
import "../chunk-2WGCBESY.js";
|
|
22
22
|
import "../chunk-JQKKMUCT.js";
|
|
23
23
|
import "../chunk-5FLTDWWP.js";
|
|
24
24
|
import "../chunk-RIRDBSBG.js";
|
|
25
|
-
import "../chunk-
|
|
25
|
+
import "../chunk-FJTZNSNU.js";
|
|
26
26
|
import "../chunk-SI2ZUOYD.js";
|
|
27
27
|
import "../chunk-AYAVRPAP.js";
|
|
28
|
-
import "../chunk-
|
|
28
|
+
import "../chunk-Q7CHACT6.js";
|
|
29
29
|
import "../chunk-TSPERKUS.js";
|
|
30
30
|
import "../chunk-HDGD5FYX.js";
|
|
31
31
|
import "../chunk-ZOC4GITL.js";
|
|
32
|
-
import "../chunk-
|
|
33
|
-
import "../chunk-
|
|
34
|
-
import "../chunk-
|
|
32
|
+
import "../chunk-6HPDXI7E.js";
|
|
33
|
+
import "../chunk-HIODF4QF.js";
|
|
34
|
+
import "../chunk-SSV2KD3B.js";
|
|
35
35
|
import "../chunk-7I3MTGOR.js";
|
|
36
36
|
export {
|
|
37
37
|
domainMatchesEnvTld,
|
package/dist/memory-report.js
CHANGED
package/dist/merkle.js
CHANGED
|
@@ -6,32 +6,32 @@ import {
|
|
|
6
6
|
merkleizeKuboBackend,
|
|
7
7
|
merkleizeWithStableOrder,
|
|
8
8
|
rebuildOrderedCarFromBytes
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-Q6NVSUCX.js";
|
|
10
10
|
import "./chunk-M5AKL3FL.js";
|
|
11
|
-
import "./chunk-
|
|
11
|
+
import "./chunk-RULOELNF.js";
|
|
12
12
|
import "./chunk-GRPLHUYC.js";
|
|
13
13
|
import "./chunk-IW3X2MJF.js";
|
|
14
14
|
import "./chunk-LPTKBQII.js";
|
|
15
15
|
import "./chunk-3MAIF2SF.js";
|
|
16
16
|
import "./chunk-WPC2PUCV.js";
|
|
17
|
-
import "./chunk-
|
|
18
|
-
import "./chunk-
|
|
19
|
-
import "./chunk-
|
|
17
|
+
import "./chunk-3BDYD4BG.js";
|
|
18
|
+
import "./chunk-UPQ2JGIO.js";
|
|
19
|
+
import "./chunk-64UKPUK4.js";
|
|
20
20
|
import "./chunk-C2TS5MER.js";
|
|
21
|
-
import "./chunk-
|
|
21
|
+
import "./chunk-2WGCBESY.js";
|
|
22
22
|
import "./chunk-JQKKMUCT.js";
|
|
23
23
|
import "./chunk-5FLTDWWP.js";
|
|
24
24
|
import "./chunk-RIRDBSBG.js";
|
|
25
|
-
import "./chunk-
|
|
25
|
+
import "./chunk-FJTZNSNU.js";
|
|
26
26
|
import "./chunk-SI2ZUOYD.js";
|
|
27
27
|
import "./chunk-AYAVRPAP.js";
|
|
28
|
-
import "./chunk-
|
|
28
|
+
import "./chunk-Q7CHACT6.js";
|
|
29
29
|
import "./chunk-TSPERKUS.js";
|
|
30
30
|
import "./chunk-HDGD5FYX.js";
|
|
31
31
|
import "./chunk-ZOC4GITL.js";
|
|
32
|
-
import "./chunk-
|
|
33
|
-
import "./chunk-
|
|
34
|
-
import "./chunk-
|
|
32
|
+
import "./chunk-6HPDXI7E.js";
|
|
33
|
+
import "./chunk-HIODF4QF.js";
|
|
34
|
+
import "./chunk-SSV2KD3B.js";
|
|
35
35
|
import "./chunk-7I3MTGOR.js";
|
|
36
36
|
export {
|
|
37
37
|
buildOrderedCar,
|
|
@@ -24,7 +24,7 @@ import {
|
|
|
24
24
|
} from "../chunk-ZYVGHDMU.js";
|
|
25
25
|
import {
|
|
26
26
|
WS_HEARTBEAT_TIMEOUT_MS
|
|
27
|
-
} from "../chunk-
|
|
27
|
+
} from "../chunk-FJTZNSNU.js";
|
|
28
28
|
import {
|
|
29
29
|
DOTNS_CONTEXT_BYTES,
|
|
30
30
|
PEOPLE_MEMBER_IDENTIFIER_HEX,
|
|
@@ -35,9 +35,9 @@ import {
|
|
|
35
35
|
loadEnvironments
|
|
36
36
|
} from "../chunk-HDGD5FYX.js";
|
|
37
37
|
import "../chunk-ZOC4GITL.js";
|
|
38
|
-
import "../chunk-
|
|
39
|
-
import "../chunk-
|
|
40
|
-
import "../chunk-
|
|
38
|
+
import "../chunk-6HPDXI7E.js";
|
|
39
|
+
import "../chunk-HIODF4QF.js";
|
|
40
|
+
import "../chunk-SSV2KD3B.js";
|
|
41
41
|
import "../chunk-7I3MTGOR.js";
|
|
42
42
|
|
|
43
43
|
// src/personhood/bootstrap.ts
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import {
|
|
2
2
|
WS_HEARTBEAT_TIMEOUT_MS
|
|
3
|
-
} from "../chunk-
|
|
3
|
+
} from "../chunk-FJTZNSNU.js";
|
|
4
4
|
import "../chunk-SI2ZUOYD.js";
|
|
5
5
|
import "../chunk-AYAVRPAP.js";
|
|
6
6
|
import {
|
|
7
7
|
loadEnvironments
|
|
8
8
|
} from "../chunk-HDGD5FYX.js";
|
|
9
9
|
import "../chunk-ZOC4GITL.js";
|
|
10
|
-
import "../chunk-
|
|
11
|
-
import "../chunk-
|
|
12
|
-
import "../chunk-
|
|
10
|
+
import "../chunk-6HPDXI7E.js";
|
|
11
|
+
import "../chunk-HIODF4QF.js";
|
|
12
|
+
import "../chunk-SSV2KD3B.js";
|
|
13
13
|
import "../chunk-7I3MTGOR.js";
|
|
14
14
|
|
|
15
15
|
// src/personhood/people-client.ts
|
package/dist/run-state.js
CHANGED
|
@@ -4,14 +4,14 @@ import {
|
|
|
4
4
|
preflightSssAllowance,
|
|
5
5
|
sssPeriodEndSec,
|
|
6
6
|
writeSssAllowanceCache
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-RULOELNF.js";
|
|
8
8
|
import "./chunk-GRPLHUYC.js";
|
|
9
|
-
import "./chunk-
|
|
9
|
+
import "./chunk-Q7CHACT6.js";
|
|
10
10
|
import "./chunk-TSPERKUS.js";
|
|
11
11
|
import "./chunk-HDGD5FYX.js";
|
|
12
12
|
import "./chunk-ZOC4GITL.js";
|
|
13
|
-
import "./chunk-
|
|
14
|
-
import "./chunk-
|
|
13
|
+
import "./chunk-HIODF4QF.js";
|
|
14
|
+
import "./chunk-SSV2KD3B.js";
|
|
15
15
|
export {
|
|
16
16
|
clearSssAllowanceCache,
|
|
17
17
|
isSssAllowanceCacheValid,
|
package/dist/storage-signer.js
CHANGED
|
@@ -8,32 +8,32 @@ import {
|
|
|
8
8
|
waitForBulletinAuthorization,
|
|
9
9
|
withTransientRetry,
|
|
10
10
|
writeBulletinSlotKey
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-Q6NVSUCX.js";
|
|
12
12
|
import "./chunk-M5AKL3FL.js";
|
|
13
|
-
import "./chunk-
|
|
13
|
+
import "./chunk-RULOELNF.js";
|
|
14
14
|
import "./chunk-GRPLHUYC.js";
|
|
15
15
|
import "./chunk-IW3X2MJF.js";
|
|
16
16
|
import "./chunk-LPTKBQII.js";
|
|
17
17
|
import "./chunk-3MAIF2SF.js";
|
|
18
18
|
import "./chunk-WPC2PUCV.js";
|
|
19
|
-
import "./chunk-
|
|
20
|
-
import "./chunk-
|
|
21
|
-
import "./chunk-
|
|
19
|
+
import "./chunk-3BDYD4BG.js";
|
|
20
|
+
import "./chunk-UPQ2JGIO.js";
|
|
21
|
+
import "./chunk-64UKPUK4.js";
|
|
22
22
|
import "./chunk-C2TS5MER.js";
|
|
23
|
-
import "./chunk-
|
|
23
|
+
import "./chunk-2WGCBESY.js";
|
|
24
24
|
import "./chunk-JQKKMUCT.js";
|
|
25
25
|
import "./chunk-5FLTDWWP.js";
|
|
26
26
|
import "./chunk-RIRDBSBG.js";
|
|
27
|
-
import "./chunk-
|
|
27
|
+
import "./chunk-FJTZNSNU.js";
|
|
28
28
|
import "./chunk-SI2ZUOYD.js";
|
|
29
29
|
import "./chunk-AYAVRPAP.js";
|
|
30
|
-
import "./chunk-
|
|
30
|
+
import "./chunk-Q7CHACT6.js";
|
|
31
31
|
import "./chunk-TSPERKUS.js";
|
|
32
32
|
import "./chunk-HDGD5FYX.js";
|
|
33
33
|
import "./chunk-ZOC4GITL.js";
|
|
34
|
-
import "./chunk-
|
|
35
|
-
import "./chunk-
|
|
36
|
-
import "./chunk-
|
|
34
|
+
import "./chunk-6HPDXI7E.js";
|
|
35
|
+
import "./chunk-HIODF4QF.js";
|
|
36
|
+
import "./chunk-SSV2KD3B.js";
|
|
37
37
|
import "./chunk-7I3MTGOR.js";
|
|
38
38
|
export {
|
|
39
39
|
BulletinSlotAuthError,
|
package/dist/telemetry.js
CHANGED
package/dist/version-check.js
CHANGED
|
@@ -12,9 +12,9 @@ import {
|
|
|
12
12
|
isPreReleaseVersion,
|
|
13
13
|
preReleaseWarning,
|
|
14
14
|
promptYesNo
|
|
15
|
-
} from "./chunk-
|
|
16
|
-
import "./chunk-
|
|
17
|
-
import "./chunk-
|
|
15
|
+
} from "./chunk-UPQ2JGIO.js";
|
|
16
|
+
import "./chunk-HIODF4QF.js";
|
|
17
|
+
import "./chunk-SSV2KD3B.js";
|
|
18
18
|
export {
|
|
19
19
|
assessVersion,
|
|
20
20
|
checkNodeVersion,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "bulletin-deploy",
|
|
3
|
-
"version": "0.18.
|
|
3
|
+
"version": "0.18.1-rc.1",
|
|
4
4
|
"private": false,
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -50,7 +50,7 @@
|
|
|
50
50
|
"refresh-environments": "node scripts/refresh-environments.mjs",
|
|
51
51
|
"postinstall": "patch-package || true",
|
|
52
52
|
"prepare": "npm run build",
|
|
53
|
-
"test": "npm run build && node --test test/test.js test/cli-help.test.js test/helpers/e2e-helpers.test.js test/environments.test.js test/refresh-environments.test.js test/chunk-sharing-report.test.js test/dotns-deployments-parser.test.js test/dotns-token-id.test.js test/dotns-subnode-id.test.js test/dotns-protocol.test.js test/product-manifest.test.js test/cache-savings-totals.test.js test/error-pattern-signature.test.js test/exit-codes.test.js test/probe-env-health.test.js test/e2e-chain-calls.test.js test/auth-config.test.js test/whoami.test.js test/login.test.js test/logout.test.js test/auth-resolve.test.js test/storage-signer.test.js test/spinner.test.js test/sss-allowance.test.js test/sss-allowance-cache.test.js test/dotns-transfer.test.js test/deploy-actors.test.js test/transfer-command.test.js test/dotns-register-fee.test.js test/deploy-label-ordering.test.js test/benign-teardown.test.js test/verify-baked-dsn.test.js test/product-account.test.js test/post-release-monitor-skill.test.js test/test-release-retry-wrapper.js test/reprove-alias-tool.test.js test/bootstrap-env.test.js test/check-chain-identity.test.js && npm run test:vendor",
|
|
53
|
+
"test": "npm run build && node --test test/test.js test/cli-help.test.js test/helpers/e2e-helpers.test.js test/helpers/e2e-exit-guard.test.js test/environments.test.js test/refresh-environments.test.js test/chunk-sharing-report.test.js test/dotns-deployments-parser.test.js test/dotns-token-id.test.js test/dotns-subnode-id.test.js test/dotns-protocol.test.js test/product-manifest.test.js test/cache-savings-totals.test.js test/error-pattern-signature.test.js test/exit-codes.test.js test/probe-env-health.test.js test/e2e-chain-calls.test.js test/auth-config.test.js test/whoami.test.js test/login.test.js test/logout.test.js test/auth-resolve.test.js test/storage-signer.test.js test/spinner.test.js test/sss-allowance.test.js test/sss-allowance-cache.test.js test/dotns-transfer.test.js test/deploy-actors.test.js test/transfer-command.test.js test/dotns-register-fee.test.js test/deploy-label-ordering.test.js test/benign-teardown.test.js test/verify-baked-dsn.test.js test/product-account.test.js test/post-release-monitor-skill.test.js test/test-release-retry-wrapper.js test/reprove-alias-tool.test.js test/bootstrap-env.test.js test/check-chain-identity.test.js && npm run test:vendor",
|
|
54
54
|
"test:e2e": "npm run build && node --test test/e2e.test.js",
|
|
55
55
|
"test:e2e:smoke": "bash scripts/e2e-pass.sh smoke",
|
|
56
56
|
"test:e2e:pr": "bash scripts/e2e-pass.sh pr",
|
|
@@ -52,8 +52,19 @@ const FLAKE_PATTERNS = [
|
|
|
52
52
|
|
|
53
53
|
// output: combined stdout+stderr text from the child. Any flake pattern
|
|
54
54
|
// appearing anywhere in the child's output makes the run retry-eligible.
|
|
55
|
+
// Printed by the E2E harness when it outlives its suite. A leak is deterministic,
|
|
56
|
+
// and the WS-fault scenarios log flake wording while passing, so it must not retry.
|
|
57
|
+
export const HARNESS_GUARD_MARKER = ">> FAIL: e2e harness:";
|
|
58
|
+
|
|
59
|
+
// EXIT_CODE_NO_RETRY from src/errors.ts, reachable only when the wrapper spawns
|
|
60
|
+
// the CLI directly: node --test normalises its child's code to 1, which is why
|
|
61
|
+
// the marker is checked too.
|
|
62
|
+
export const NO_RETRY_EXIT_CODE = 78;
|
|
63
|
+
|
|
55
64
|
export function classifyForRetry(output, childExitCode = 1) {
|
|
56
65
|
if (childExitCode === 0) return 0;
|
|
66
|
+
if (childExitCode === NO_RETRY_EXIT_CODE) return NO_RETRY_EXIT_CODE;
|
|
67
|
+
if (output.includes(HARNESS_GUARD_MARKER)) return childExitCode || 1;
|
|
57
68
|
for (const pat of FLAKE_PATTERNS) {
|
|
58
69
|
if (output.includes(pat)) return 75;
|
|
59
70
|
}
|