bulletin-deploy 0.13.0 → 0.13.1-rc.2
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 +17 -0
- package/dist/auth-config.js +3 -3
- package/dist/bug-report.js +4 -4
- package/dist/{chunk-SJITQINC.js → chunk-BFWPRX5O.js} +1 -1
- package/dist/{chunk-UFY3RBUV.js → chunk-CILFB52S.js} +2 -2
- package/dist/{chunk-NXO6VBEM.js → chunk-F6MIQLOO.js} +1 -1
- package/dist/{chunk-I64OSTIG.js → chunk-H42S7VX2.js} +7 -7
- package/dist/{chunk-3R7RU6WB.js → chunk-HPEXY3JF.js} +3 -3
- package/dist/{chunk-EGG7SJTB.js → chunk-INPIXAV5.js} +2 -2
- package/dist/{chunk-P7HCUQCI.js → chunk-JSEVC62P.js} +92 -16
- package/dist/{chunk-AKHN5OWJ.js → chunk-LAKHIIHO.js} +1 -1
- package/dist/{chunk-HGXLCD5H.js → chunk-LZ5YS3EA.js} +1 -1
- package/dist/{chunk-72NGQCI5.js → chunk-MKRT2DH6.js} +1 -1
- package/dist/{chunk-MRAHKUK7.js → chunk-PFOPWGMV.js} +1 -1
- package/dist/chunk-probe.js +3 -3
- package/dist/commands/login.js +10 -10
- package/dist/commands/logout.js +4 -4
- package/dist/commands/transfer.js +3 -3
- package/dist/commands/whoami.js +3 -3
- package/dist/deploy-actors.js +5 -5
- package/dist/deploy.js +10 -10
- package/dist/dotns.d.ts +28 -2
- package/dist/dotns.js +13 -5
- package/dist/index.d.ts +40 -2
- package/dist/index.js +57 -12
- package/dist/manifest/publish.js +11 -11
- package/dist/memory-report.js +2 -2
- package/dist/merkle.js +10 -10
- package/dist/personhood/bootstrap.js +3 -3
- package/dist/personhood/people-client.js +3 -3
- package/dist/run-state.js +1 -1
- package/dist/sss-allowance-cache.js +4 -4
- package/dist/storage-signer.js +10 -10
- package/dist/telemetry.js +2 -2
- package/dist/version-check.js +3 -3
- package/package.json +1 -1
- package/tools/release-retry-wrapper.mjs +5 -0
package/bin/bulletin-deploy
CHANGED
|
@@ -455,6 +455,23 @@ try {
|
|
|
455
455
|
const _versionInfo = await _versionCheckPromise;
|
|
456
456
|
if (handlePreflightVersionCheck(_versionInfo) === "abort") process.exit(1);
|
|
457
457
|
|
|
458
|
+
// Frontloaded manifest preflight (paritytech/polkadot-app-deploy#125): when a
|
|
459
|
+
// product config applies (--config or discoverable via walk-up), validate it
|
|
460
|
+
// + its referenced icon/executable files BEFORE any storage or chain work, so
|
|
461
|
+
// config errors fail fast up front instead of after merkleize + upload. No-op
|
|
462
|
+
// (returns null) for contenthash-only deploys with no config.
|
|
463
|
+
try {
|
|
464
|
+
const { preflightProductConfig } = await import("../dist/index.js");
|
|
465
|
+
// config-load resolves a relative cwd internally, so no node:path here
|
|
466
|
+
// (it's only dynamically imported later, in the publish block).
|
|
467
|
+
await preflightProductConfig(
|
|
468
|
+
flags.config ? { path: flags.config } : { cwd: buildDir, walkUp: true },
|
|
469
|
+
);
|
|
470
|
+
} catch (err) {
|
|
471
|
+
console.error(`Error: ${err?.message ?? err}`);
|
|
472
|
+
process.exit(err instanceof NonRetryableError ? EXIT_CODE_NO_RETRY : 1);
|
|
473
|
+
}
|
|
474
|
+
|
|
458
475
|
const result = await deploy(buildDir, domain, {
|
|
459
476
|
mnemonic: flags.mnemonic,
|
|
460
477
|
derivationPath: flags.derivationPath,
|
package/dist/auth-config.js
CHANGED
|
@@ -9,10 +9,10 @@ import {
|
|
|
9
9
|
getPeopleChainEndpoints,
|
|
10
10
|
hasPersistedSession,
|
|
11
11
|
resolveBulletinEndpoints
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-LAKHIIHO.js";
|
|
13
13
|
import "./chunk-TSPERKUS.js";
|
|
14
|
-
import "./chunk-
|
|
15
|
-
import "./chunk-
|
|
14
|
+
import "./chunk-BFWPRX5O.js";
|
|
15
|
+
import "./chunk-LZ5YS3EA.js";
|
|
16
16
|
import "./chunk-NTXIXOCN.js";
|
|
17
17
|
import "./chunk-ZOC4GITL.js";
|
|
18
18
|
export {
|
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-HPEXY3JF.js";
|
|
14
|
+
import "./chunk-PFOPWGMV.js";
|
|
15
|
+
import "./chunk-BFWPRX5O.js";
|
|
16
|
+
import "./chunk-LZ5YS3EA.js";
|
|
17
17
|
export {
|
|
18
18
|
buildCliFlagsSummary,
|
|
19
19
|
buildLabels,
|
|
@@ -4,10 +4,10 @@ import {
|
|
|
4
4
|
} from "./chunk-5FLTDWWP.js";
|
|
5
5
|
import {
|
|
6
6
|
DOT_PRODUCT_ID
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-LAKHIIHO.js";
|
|
8
8
|
import {
|
|
9
9
|
DEFAULT_MNEMONIC
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-JSEVC62P.js";
|
|
11
11
|
|
|
12
12
|
// src/deploy-actors.ts
|
|
13
13
|
var DEFAULT_WORKER_SURI = DEFAULT_MNEMONIC;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
preflightSssAllowance
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-MKRT2DH6.js";
|
|
4
4
|
import {
|
|
5
5
|
statementSigningAccount
|
|
6
6
|
} from "./chunk-GRPLHUYC.js";
|
|
@@ -31,18 +31,18 @@ import {
|
|
|
31
31
|
} from "./chunk-S7EM5VMW.js";
|
|
32
32
|
import {
|
|
33
33
|
setDeployContext
|
|
34
|
-
} from "./chunk-
|
|
34
|
+
} from "./chunk-HPEXY3JF.js";
|
|
35
35
|
import {
|
|
36
36
|
getBestBlockNumber,
|
|
37
37
|
probeChunks,
|
|
38
38
|
probeFinalityGap
|
|
39
|
-
} from "./chunk-
|
|
39
|
+
} from "./chunk-F6MIQLOO.js";
|
|
40
40
|
import {
|
|
41
41
|
packSection
|
|
42
42
|
} from "./chunk-C2TS5MER.js";
|
|
43
43
|
import {
|
|
44
44
|
resolveStorageSigner
|
|
45
|
-
} from "./chunk-
|
|
45
|
+
} from "./chunk-CILFB52S.js";
|
|
46
46
|
import {
|
|
47
47
|
createSlotAccountSigner,
|
|
48
48
|
requestResourceAllocation
|
|
@@ -51,7 +51,7 @@ import {
|
|
|
51
51
|
STALE_SESSION_MESSAGE,
|
|
52
52
|
getPeopleChainEndpoints,
|
|
53
53
|
hasPersistedSession
|
|
54
|
-
} from "./chunk-
|
|
54
|
+
} from "./chunk-LAKHIIHO.js";
|
|
55
55
|
import {
|
|
56
56
|
CLI_NAME
|
|
57
57
|
} from "./chunk-TSPERKUS.js";
|
|
@@ -64,7 +64,7 @@ import {
|
|
|
64
64
|
parseDomainName,
|
|
65
65
|
popStatusName,
|
|
66
66
|
verifyNonceAdvanced
|
|
67
|
-
} from "./chunk-
|
|
67
|
+
} from "./chunk-JSEVC62P.js";
|
|
68
68
|
import {
|
|
69
69
|
derivePoolAccounts,
|
|
70
70
|
detectTestnet,
|
|
@@ -86,7 +86,7 @@ import {
|
|
|
86
86
|
truncateAddress,
|
|
87
87
|
withDeploySpan,
|
|
88
88
|
withSpan
|
|
89
|
-
} from "./chunk-
|
|
89
|
+
} from "./chunk-BFWPRX5O.js";
|
|
90
90
|
import {
|
|
91
91
|
DEFAULT_ENV_ID,
|
|
92
92
|
getPopSelfServeConfig,
|
|
@@ -2,15 +2,15 @@ import {
|
|
|
2
2
|
classifyErrorArea,
|
|
3
3
|
isInteractive,
|
|
4
4
|
promptYesNo
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-PFOPWGMV.js";
|
|
6
6
|
import {
|
|
7
7
|
VERSION,
|
|
8
8
|
getCurrentSentryTraceId,
|
|
9
9
|
resolveIssueRepoSlug
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-BFWPRX5O.js";
|
|
11
11
|
import {
|
|
12
12
|
package_default
|
|
13
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-LZ5YS3EA.js";
|
|
14
14
|
|
|
15
15
|
// src/bug-report.ts
|
|
16
16
|
import { execSync, execFileSync } from "child_process";
|
|
@@ -7,10 +7,10 @@ import {
|
|
|
7
7
|
resolveDotnsConnectOptions,
|
|
8
8
|
storeDirectory,
|
|
9
9
|
storeFile
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-H42S7VX2.js";
|
|
11
11
|
import {
|
|
12
12
|
DotNS
|
|
13
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-JSEVC62P.js";
|
|
14
14
|
import {
|
|
15
15
|
getPopSelfServeConfig,
|
|
16
16
|
loadEnvironments,
|
|
@@ -11,7 +11,7 @@ import {
|
|
|
11
11
|
setDeploySentryTag,
|
|
12
12
|
truncateAddress,
|
|
13
13
|
withSpan
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-BFWPRX5O.js";
|
|
15
15
|
import {
|
|
16
16
|
validateContractAddresses
|
|
17
17
|
} from "./chunk-NTXIXOCN.js";
|
|
@@ -125,6 +125,13 @@ var PERSONHOOD_CONTEXT = "0x646f746e73000000000000000000000000000000000000000000
|
|
|
125
125
|
var DECIMALS = 12n;
|
|
126
126
|
var NATIVE_TO_ETH_RATIO = 1000000n;
|
|
127
127
|
var CONNECTION_TIMEOUT_MS = 3e4;
|
|
128
|
+
var REVIVE_ADDRESS_ATTEMPTS = 3;
|
|
129
|
+
var CONTENTHASH_VERIFY_ATTEMPTS = 3;
|
|
130
|
+
function pickVerifyEndpoint(attempt, rpc, assetHubEndpoints) {
|
|
131
|
+
const endpoints = rpc ? [rpc, ...assetHubEndpoints.filter((ep) => ep !== rpc)] : assetHubEndpoints;
|
|
132
|
+
if (endpoints.length === 0) throw new Error("pickVerifyEndpoint: no asset hub endpoints available");
|
|
133
|
+
return endpoints[(attempt - 1) % endpoints.length];
|
|
134
|
+
}
|
|
128
135
|
var OPERATION_TIMEOUT_MS = 3e5;
|
|
129
136
|
var TX_TIMEOUT_MS = 9e4;
|
|
130
137
|
var TX_CHAIN_TIME_BUDGET_MS = 18e4;
|
|
@@ -173,6 +180,24 @@ function dotnsRetryBackoffMs(attempt, rand = Math.random) {
|
|
|
173
180
|
const ceil = Math.min(DOTNS_RETRY_BASE_MS * 2 ** (attempt - 1), DOTNS_RETRY_MAX_MS);
|
|
174
181
|
return Math.round(ceil * (0.5 + rand() * 0.5));
|
|
175
182
|
}
|
|
183
|
+
async function withRetry(fn, opts) {
|
|
184
|
+
const backoffMs = opts.backoffMs ?? dotnsRetryBackoffMs;
|
|
185
|
+
const sleep = opts.sleep ?? ((ms) => new Promise((r) => setTimeout(r, ms)));
|
|
186
|
+
let lastErr;
|
|
187
|
+
for (let attempt = 1; attempt <= opts.attempts; attempt++) {
|
|
188
|
+
try {
|
|
189
|
+
return await fn(attempt);
|
|
190
|
+
} catch (e) {
|
|
191
|
+
lastErr = e;
|
|
192
|
+
if (attempt < opts.attempts) {
|
|
193
|
+
const b = backoffMs(attempt);
|
|
194
|
+
opts.onRetry?.(attempt, e, b);
|
|
195
|
+
await sleep(b);
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
throw lastErr;
|
|
200
|
+
}
|
|
176
201
|
function shouldRetryTxAttempt(attempt, maxAttempts, decision) {
|
|
177
202
|
return decision === "retry" && attempt < maxAttempts;
|
|
178
203
|
}
|
|
@@ -1082,7 +1107,7 @@ var DotNS = class {
|
|
|
1082
1107
|
// Test-only seam: fallback result for reprove() when the real call throws "not strictly
|
|
1083
1108
|
// greater than stored" (account already at latest revision). Any other error propagates.
|
|
1084
1109
|
_reproveFallbackForTest = null;
|
|
1085
|
-
/** Test-only: register a fallback reprove result used
|
|
1110
|
+
/** Test-only: register a fallback reprove result used if the real reprove() throws (e.g. "already at latest revision", or a transient chain error). Consumed once. */
|
|
1086
1111
|
__setReproveFallbackForTest(result) {
|
|
1087
1112
|
this._reproveFallbackForTest = result;
|
|
1088
1113
|
}
|
|
@@ -1096,6 +1121,24 @@ var DotNS = class {
|
|
|
1096
1121
|
this.connected = false;
|
|
1097
1122
|
this.assetHubEndpoints = RPC_ENDPOINTS;
|
|
1098
1123
|
}
|
|
1124
|
+
/**
|
|
1125
|
+
* Tear down the current papi client (if any) and stand up a fresh WS
|
|
1126
|
+
* connection + ReviveClientWrapper against `endpoint`. Escapes a
|
|
1127
|
+
* wedged/slow/stale connection — used by connect()'s ReviveApi.address
|
|
1128
|
+
* retry (#1131) and by setContenthash's post-deploy read-back retry
|
|
1129
|
+
* (#1131-follow-up), which is the single reason this is a shared helper
|
|
1130
|
+
* rather than two copies of the same three lines.
|
|
1131
|
+
*/
|
|
1132
|
+
recreateReviveClient(endpoint) {
|
|
1133
|
+
if (this.client) {
|
|
1134
|
+
try {
|
|
1135
|
+
this.client.destroy();
|
|
1136
|
+
} catch {
|
|
1137
|
+
}
|
|
1138
|
+
}
|
|
1139
|
+
this.client = createClient(getWsProvider(endpoint, { heartbeatTimeout: WS_HEARTBEAT_TIMEOUT_MS }));
|
|
1140
|
+
this.clientWrapper = new ReviveClientWrapper(this.client.getUnsafeApi());
|
|
1141
|
+
}
|
|
1099
1142
|
async connect(options = {}) {
|
|
1100
1143
|
if (options.assetHubEndpoints && options.assetHubEndpoints.length > 0) {
|
|
1101
1144
|
this.assetHubEndpoints = options.assetHubEndpoints;
|
|
@@ -1148,22 +1191,30 @@ var DotNS = class {
|
|
|
1148
1191
|
setDeploySentryTag("deploy.dotns.signer", truncateAddress(this.substrateAddress));
|
|
1149
1192
|
return withSpan("deploy.dotns.connect", "dotns connect", {}, async () => {
|
|
1150
1193
|
try {
|
|
1151
|
-
this.
|
|
1152
|
-
|
|
1153
|
-
|
|
1154
|
-
|
|
1155
|
-
|
|
1156
|
-
|
|
1157
|
-
|
|
1158
|
-
|
|
1159
|
-
|
|
1194
|
+
this.evmAddress = await withRetry(async (attempt) => {
|
|
1195
|
+
this.recreateReviveClient(rpc);
|
|
1196
|
+
const addr = await withTimeout(
|
|
1197
|
+
this.clientWrapper.getEvmAddress(this.substrateAddress),
|
|
1198
|
+
CONNECTION_TIMEOUT_MS,
|
|
1199
|
+
"ReviveApi.address"
|
|
1200
|
+
);
|
|
1201
|
+
if (attempt > 1) setDeployAttribute("deploy.dotns.revive_address_attempts", String(attempt));
|
|
1202
|
+
return addr;
|
|
1203
|
+
}, {
|
|
1204
|
+
attempts: REVIVE_ADDRESS_ATTEMPTS,
|
|
1205
|
+
onRetry: (attempt, e, backoff) => {
|
|
1206
|
+
const inner = e?.message?.slice(0, 160) ?? String(e).slice(0, 160);
|
|
1207
|
+
console.log(` ReviveApi.address attempt ${attempt}/${REVIVE_ADDRESS_ATTEMPTS} failed (${inner}) \u2014 retrying in ${Math.round(backoff / 1e3)}s\u2026`);
|
|
1208
|
+
}
|
|
1209
|
+
});
|
|
1160
1210
|
} catch (e) {
|
|
1161
|
-
const inner = e
|
|
1211
|
+
const inner = e?.message?.slice(0, 200) ?? String(e).slice(0, 200);
|
|
1162
1212
|
const rpcHint = inner.includes("timed out") ? `; RPC: ${rpc} \u2014 retry or set DOTNS_RPC to another endpoint` : "";
|
|
1163
1213
|
throw new Error(
|
|
1164
|
-
`DotNS connect: failed to resolve EVM address from ${this.substrateAddress} via ReviveApi.address (${inner})${rpcHint}`
|
|
1214
|
+
`DotNS connect: failed to resolve EVM address from ${this.substrateAddress} via ReviveApi.address after ${REVIVE_ADDRESS_ATTEMPTS} attempts (${inner})${rpcHint}`
|
|
1165
1215
|
);
|
|
1166
1216
|
}
|
|
1217
|
+
console.log(` H160 Address: ${this.evmAddress}`);
|
|
1167
1218
|
setDeployAttribute("deploy.dotns.rpc_used", rpc);
|
|
1168
1219
|
setDeployAttribute("deploy.dotns.evm_address", this.evmAddress);
|
|
1169
1220
|
this.connected = true;
|
|
@@ -1837,10 +1888,28 @@ var DotNS = class {
|
|
|
1837
1888
|
console.log(`
|
|
1838
1889
|
Linking content...`);
|
|
1839
1890
|
const txRes = await this.contractTransaction(this._contracts.DOTNS_CONTENT_RESOLVER, 0n, DOTNS_CONTENT_RESOLVER_ABI, "setContenthash", [node, contenthashHex], (s) => console.log(` ${s}`), { useNoncePolling: true, verifyEffect, feeAsset: opts.feeAsset, phoneLabel: "Link content" });
|
|
1840
|
-
|
|
1891
|
+
let finalOnChain = "0x";
|
|
1892
|
+
try {
|
|
1893
|
+
await withRetry(async (attempt) => {
|
|
1894
|
+
if (attempt > 1) {
|
|
1895
|
+
const endpoint = pickVerifyEndpoint(attempt, this.rpc, this.assetHubEndpoints);
|
|
1896
|
+
this.recreateReviveClient(endpoint);
|
|
1897
|
+
}
|
|
1898
|
+
finalOnChain = (await this.getContenthash(domainName) || "0x").toLowerCase();
|
|
1899
|
+
if (finalOnChain !== expected) throw new Error(`contenthash still ${finalOnChain}, awaiting ${expected}`);
|
|
1900
|
+
if (attempt > 1) setDeployAttribute("deploy.contenthash.verify_attempts", String(attempt));
|
|
1901
|
+
}, {
|
|
1902
|
+
attempts: CONTENTHASH_VERIFY_ATTEMPTS,
|
|
1903
|
+
onRetry: (attempt, e, backoff) => {
|
|
1904
|
+
const inner = e?.message?.slice(0, 160) ?? String(e).slice(0, 160);
|
|
1905
|
+
console.log(` Read-back attempt ${attempt}/${CONTENTHASH_VERIFY_ATTEMPTS} saw a mismatch (${inner}) \u2014 retrying against a fresh connection in ${Math.round(backoff / 1e3)}s\u2026`);
|
|
1906
|
+
}
|
|
1907
|
+
});
|
|
1908
|
+
} catch {
|
|
1909
|
+
}
|
|
1841
1910
|
if (finalOnChain !== expected) {
|
|
1842
1911
|
throw new Error(
|
|
1843
|
-
`Post-deploy verification failed for ${domainName}.dot: on-chain contenthash is ${finalOnChain}, not the ${expected} we just wrote. The setContenthash tx may have silently failed, or another party overwrote the domain. Re-run the deploy to retry.`
|
|
1912
|
+
`Post-deploy verification failed for ${domainName}.dot: on-chain contenthash is ${finalOnChain}, not the ${expected} we just wrote (after ${CONTENTHASH_VERIFY_ATTEMPTS} read attempts). The setContenthash tx may have silently failed, or another party overwrote the domain. Re-run the deploy to retry.`
|
|
1844
1913
|
);
|
|
1845
1914
|
}
|
|
1846
1915
|
setDeployAttribute("deploy.dotns.tx_resolution", txRes.kind);
|
|
@@ -2751,9 +2820,12 @@ var DotNS = class {
|
|
|
2751
2820
|
});
|
|
2752
2821
|
return result;
|
|
2753
2822
|
} catch (e) {
|
|
2754
|
-
if (this._reproveFallbackForTest
|
|
2823
|
+
if (this._reproveFallbackForTest) {
|
|
2755
2824
|
const fb = this._reproveFallbackForTest;
|
|
2756
2825
|
this._reproveFallbackForTest = null;
|
|
2826
|
+
if (typeof e?.message === "string" && !e.message.includes("not strictly greater than stored")) {
|
|
2827
|
+
console.log(` (test) real reprove() errored transiently \u2014 using synthetic fallback: ${(e.message ?? String(e)).slice(0, 120)}`);
|
|
2828
|
+
}
|
|
2757
2829
|
return fb;
|
|
2758
2830
|
}
|
|
2759
2831
|
throw e;
|
|
@@ -2838,6 +2910,9 @@ export {
|
|
|
2838
2910
|
DECIMALS,
|
|
2839
2911
|
NATIVE_TO_ETH_RATIO,
|
|
2840
2912
|
CONNECTION_TIMEOUT_MS,
|
|
2913
|
+
REVIVE_ADDRESS_ATTEMPTS,
|
|
2914
|
+
CONTENTHASH_VERIFY_ATTEMPTS,
|
|
2915
|
+
pickVerifyEndpoint,
|
|
2841
2916
|
OPERATION_TIMEOUT_MS,
|
|
2842
2917
|
TX_TIMEOUT_MS,
|
|
2843
2918
|
TX_CHAIN_TIME_BUDGET_MS,
|
|
@@ -2854,6 +2929,7 @@ export {
|
|
|
2854
2929
|
classifyTxRetryDecision,
|
|
2855
2930
|
classifyWatcherSilentFastFail,
|
|
2856
2931
|
dotnsRetryBackoffMs,
|
|
2932
|
+
withRetry,
|
|
2857
2933
|
shouldRetryTxAttempt,
|
|
2858
2934
|
shouldRegateBeforeResign,
|
|
2859
2935
|
makeRetryStatusFilter,
|
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-F6MIQLOO.js";
|
|
12
|
+
import "./chunk-BFWPRX5O.js";
|
|
13
|
+
import "./chunk-LZ5YS3EA.js";
|
|
14
14
|
export {
|
|
15
15
|
ChainProbeCrossValidationError,
|
|
16
16
|
ChainProbeMetadataError,
|
package/dist/commands/login.js
CHANGED
|
@@ -3,10 +3,10 @@ import {
|
|
|
3
3
|
} from "../chunk-J7CYVTAW.js";
|
|
4
4
|
import {
|
|
5
5
|
waitForBulletinAuthorization
|
|
6
|
-
} from "../chunk-
|
|
6
|
+
} from "../chunk-H42S7VX2.js";
|
|
7
7
|
import {
|
|
8
8
|
preflightSssAllowance
|
|
9
|
-
} from "../chunk-
|
|
9
|
+
} from "../chunk-MKRT2DH6.js";
|
|
10
10
|
import {
|
|
11
11
|
statementSigningAccount
|
|
12
12
|
} from "../chunk-GRPLHUYC.js";
|
|
@@ -15,11 +15,11 @@ import "../chunk-IW3X2MJF.js";
|
|
|
15
15
|
import "../chunk-KOSF5FDO.js";
|
|
16
16
|
import "../chunk-J3NIXHZZ.js";
|
|
17
17
|
import "../chunk-S7EM5VMW.js";
|
|
18
|
-
import "../chunk-
|
|
19
|
-
import "../chunk-
|
|
20
|
-
import "../chunk-
|
|
18
|
+
import "../chunk-HPEXY3JF.js";
|
|
19
|
+
import "../chunk-PFOPWGMV.js";
|
|
20
|
+
import "../chunk-F6MIQLOO.js";
|
|
21
21
|
import "../chunk-C2TS5MER.js";
|
|
22
|
-
import "../chunk-
|
|
22
|
+
import "../chunk-CILFB52S.js";
|
|
23
23
|
import "../chunk-JQKKMUCT.js";
|
|
24
24
|
import {
|
|
25
25
|
BULLETIN_RESOURCE,
|
|
@@ -36,15 +36,15 @@ import {
|
|
|
36
36
|
getAuthClient,
|
|
37
37
|
getPeopleChainEndpoints,
|
|
38
38
|
resolveBulletinEndpoints
|
|
39
|
-
} from "../chunk-
|
|
39
|
+
} from "../chunk-LAKHIIHO.js";
|
|
40
40
|
import {
|
|
41
41
|
CLI_NAME
|
|
42
42
|
} from "../chunk-TSPERKUS.js";
|
|
43
|
-
import "../chunk-
|
|
43
|
+
import "../chunk-JSEVC62P.js";
|
|
44
44
|
import "../chunk-SI2ZUOYD.js";
|
|
45
45
|
import "../chunk-4AEFFDHP.js";
|
|
46
|
-
import "../chunk-
|
|
47
|
-
import "../chunk-
|
|
46
|
+
import "../chunk-BFWPRX5O.js";
|
|
47
|
+
import "../chunk-LZ5YS3EA.js";
|
|
48
48
|
import {
|
|
49
49
|
loadEnvironments
|
|
50
50
|
} from "../chunk-NTXIXOCN.js";
|
package/dist/commands/logout.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
clearSssAllowanceCache
|
|
3
|
-
} from "../chunk-
|
|
3
|
+
} from "../chunk-MKRT2DH6.js";
|
|
4
4
|
import "../chunk-GRPLHUYC.js";
|
|
5
5
|
import "../chunk-JQKKMUCT.js";
|
|
6
6
|
import "../chunk-5FLTDWWP.js";
|
|
@@ -9,10 +9,10 @@ import {
|
|
|
9
9
|
} from "../chunk-RIRDBSBG.js";
|
|
10
10
|
import {
|
|
11
11
|
getAuthClient
|
|
12
|
-
} from "../chunk-
|
|
12
|
+
} from "../chunk-LAKHIIHO.js";
|
|
13
13
|
import "../chunk-TSPERKUS.js";
|
|
14
|
-
import "../chunk-
|
|
15
|
-
import "../chunk-
|
|
14
|
+
import "../chunk-BFWPRX5O.js";
|
|
15
|
+
import "../chunk-LZ5YS3EA.js";
|
|
16
16
|
import "../chunk-NTXIXOCN.js";
|
|
17
17
|
import "../chunk-ZOC4GITL.js";
|
|
18
18
|
|
|
@@ -4,11 +4,11 @@ import {
|
|
|
4
4
|
import {
|
|
5
5
|
DEFAULT_MNEMONIC,
|
|
6
6
|
DotNS
|
|
7
|
-
} from "../chunk-
|
|
7
|
+
} from "../chunk-JSEVC62P.js";
|
|
8
8
|
import "../chunk-SI2ZUOYD.js";
|
|
9
9
|
import "../chunk-4AEFFDHP.js";
|
|
10
|
-
import "../chunk-
|
|
11
|
-
import "../chunk-
|
|
10
|
+
import "../chunk-BFWPRX5O.js";
|
|
11
|
+
import "../chunk-LZ5YS3EA.js";
|
|
12
12
|
import {
|
|
13
13
|
getPopSelfServeConfig,
|
|
14
14
|
loadEnvironments,
|
package/dist/commands/whoami.js
CHANGED
|
@@ -2,12 +2,12 @@ import {
|
|
|
2
2
|
STALE_SESSION_MESSAGE,
|
|
3
3
|
getAuthClient,
|
|
4
4
|
hasPersistedSession
|
|
5
|
-
} from "../chunk-
|
|
5
|
+
} from "../chunk-LAKHIIHO.js";
|
|
6
6
|
import {
|
|
7
7
|
CLI_NAME
|
|
8
8
|
} from "../chunk-TSPERKUS.js";
|
|
9
|
-
import "../chunk-
|
|
10
|
-
import "../chunk-
|
|
9
|
+
import "../chunk-BFWPRX5O.js";
|
|
10
|
+
import "../chunk-LZ5YS3EA.js";
|
|
11
11
|
import "../chunk-NTXIXOCN.js";
|
|
12
12
|
import "../chunk-ZOC4GITL.js";
|
|
13
13
|
|
package/dist/deploy-actors.js
CHANGED
|
@@ -2,17 +2,17 @@ import {
|
|
|
2
2
|
MainnetDefaultWorkerError,
|
|
3
3
|
resolveDeployActors,
|
|
4
4
|
resolveStorageSigner
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-CILFB52S.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-LAKHIIHO.js";
|
|
10
10
|
import "./chunk-TSPERKUS.js";
|
|
11
|
-
import "./chunk-
|
|
11
|
+
import "./chunk-JSEVC62P.js";
|
|
12
12
|
import "./chunk-SI2ZUOYD.js";
|
|
13
13
|
import "./chunk-4AEFFDHP.js";
|
|
14
|
-
import "./chunk-
|
|
15
|
-
import "./chunk-
|
|
14
|
+
import "./chunk-BFWPRX5O.js";
|
|
15
|
+
import "./chunk-LZ5YS3EA.js";
|
|
16
16
|
import "./chunk-NTXIXOCN.js";
|
|
17
17
|
import "./chunk-ZOC4GITL.js";
|
|
18
18
|
export {
|
package/dist/deploy.js
CHANGED
|
@@ -55,29 +55,29 @@ import {
|
|
|
55
55
|
storeDirectoryV2,
|
|
56
56
|
storeFile,
|
|
57
57
|
unpublish
|
|
58
|
-
} from "./chunk-
|
|
59
|
-
import "./chunk-
|
|
58
|
+
} from "./chunk-H42S7VX2.js";
|
|
59
|
+
import "./chunk-MKRT2DH6.js";
|
|
60
60
|
import "./chunk-GRPLHUYC.js";
|
|
61
61
|
import "./chunk-HOTQDYHD.js";
|
|
62
62
|
import "./chunk-IW3X2MJF.js";
|
|
63
63
|
import "./chunk-KOSF5FDO.js";
|
|
64
64
|
import "./chunk-J3NIXHZZ.js";
|
|
65
65
|
import "./chunk-S7EM5VMW.js";
|
|
66
|
-
import "./chunk-
|
|
67
|
-
import "./chunk-
|
|
68
|
-
import "./chunk-
|
|
66
|
+
import "./chunk-HPEXY3JF.js";
|
|
67
|
+
import "./chunk-PFOPWGMV.js";
|
|
68
|
+
import "./chunk-F6MIQLOO.js";
|
|
69
69
|
import "./chunk-C2TS5MER.js";
|
|
70
|
-
import "./chunk-
|
|
70
|
+
import "./chunk-CILFB52S.js";
|
|
71
71
|
import "./chunk-JQKKMUCT.js";
|
|
72
72
|
import "./chunk-5FLTDWWP.js";
|
|
73
73
|
import "./chunk-RIRDBSBG.js";
|
|
74
|
-
import "./chunk-
|
|
74
|
+
import "./chunk-LAKHIIHO.js";
|
|
75
75
|
import "./chunk-TSPERKUS.js";
|
|
76
|
-
import "./chunk-
|
|
76
|
+
import "./chunk-JSEVC62P.js";
|
|
77
77
|
import "./chunk-SI2ZUOYD.js";
|
|
78
78
|
import "./chunk-4AEFFDHP.js";
|
|
79
|
-
import "./chunk-
|
|
80
|
-
import "./chunk-
|
|
79
|
+
import "./chunk-BFWPRX5O.js";
|
|
80
|
+
import "./chunk-LZ5YS3EA.js";
|
|
81
81
|
import "./chunk-NTXIXOCN.js";
|
|
82
82
|
import {
|
|
83
83
|
EXIT_CODE_NO_RETRY,
|
package/dist/dotns.d.ts
CHANGED
|
@@ -145,6 +145,9 @@ declare const CONTRACTS: {
|
|
|
145
145
|
declare const DECIMALS: bigint;
|
|
146
146
|
declare const NATIVE_TO_ETH_RATIO: bigint;
|
|
147
147
|
declare const CONNECTION_TIMEOUT_MS: number;
|
|
148
|
+
declare const REVIVE_ADDRESS_ATTEMPTS: number;
|
|
149
|
+
declare const CONTENTHASH_VERIFY_ATTEMPTS: number;
|
|
150
|
+
declare function pickVerifyEndpoint(attempt: number, rpc: string | null, assetHubEndpoints: string[]): string;
|
|
148
151
|
declare const OPERATION_TIMEOUT_MS: number;
|
|
149
152
|
declare const TX_TIMEOUT_MS: number;
|
|
150
153
|
declare const TX_CHAIN_TIME_BUDGET_MS: number;
|
|
@@ -187,6 +190,20 @@ declare function classifyTxRetryDecision(err: unknown): "retry" | "abort";
|
|
|
187
190
|
*/
|
|
188
191
|
declare function classifyWatcherSilentFastFail(err: unknown, isPhoneSigner: boolean | undefined): NonRetryableError | null;
|
|
189
192
|
declare function dotnsRetryBackoffMs(attempt: number, rand?: () => number): number;
|
|
193
|
+
/**
|
|
194
|
+
* Run `fn` up to `attempts` times, backing off between failures. Returns the
|
|
195
|
+
* first success; rethrows the LAST error if every attempt fails. `sleep` and
|
|
196
|
+
* `backoffMs` are injectable so the retry policy is unit-testable without real
|
|
197
|
+
* timers. Used for the ReviveApi.address resolution in connect() (#1131) — a
|
|
198
|
+
* generic seam so the "retry N times with backoff" behaviour is tested once,
|
|
199
|
+
* independent of the live-chain call it wraps.
|
|
200
|
+
*/
|
|
201
|
+
declare function withRetry<T>(fn: (attempt: number) => Promise<T>, opts: {
|
|
202
|
+
attempts: number;
|
|
203
|
+
onRetry?: (attempt: number, err: unknown, backoffMs: number) => void;
|
|
204
|
+
backoffMs?: (attempt: number) => number;
|
|
205
|
+
sleep?: (ms: number) => Promise<void>;
|
|
206
|
+
}): Promise<T>;
|
|
190
207
|
/**
|
|
191
208
|
* Whether a failed attempt should be retried: only when the error is
|
|
192
209
|
* retry-eligible AND there's a later attempt left in the budget. Extracted so
|
|
@@ -508,13 +525,22 @@ declare class DotNS {
|
|
|
508
525
|
/** Test-only: inject a fixed getUserPopStatus return value for the next call. Consumed once. */
|
|
509
526
|
__setUserPopStatusForTest(status: number): void;
|
|
510
527
|
private _reproveFallbackForTest;
|
|
511
|
-
/** Test-only: register a fallback reprove result used
|
|
528
|
+
/** Test-only: register a fallback reprove result used if the real reprove() throws (e.g. "already at latest revision", or a transient chain error). Consumed once. */
|
|
512
529
|
__setReproveFallbackForTest(result: {
|
|
513
530
|
oldRevision: number;
|
|
514
531
|
newRevision: number;
|
|
515
532
|
blockHash: string;
|
|
516
533
|
}): void;
|
|
517
534
|
constructor();
|
|
535
|
+
/**
|
|
536
|
+
* Tear down the current papi client (if any) and stand up a fresh WS
|
|
537
|
+
* connection + ReviveClientWrapper against `endpoint`. Escapes a
|
|
538
|
+
* wedged/slow/stale connection — used by connect()'s ReviveApi.address
|
|
539
|
+
* retry (#1131) and by setContenthash's post-deploy read-back retry
|
|
540
|
+
* (#1131-follow-up), which is the single reason this is a shared helper
|
|
541
|
+
* rather than two copies of the same three lines.
|
|
542
|
+
*/
|
|
543
|
+
private recreateReviveClient;
|
|
518
544
|
connect(options?: DotNSConnectOptions): Promise<this>;
|
|
519
545
|
ensureMappedAccountReady(autoAccountMapping?: boolean): Promise<void>;
|
|
520
546
|
ensureAutoMappedAccountReady(): Promise<void>;
|
|
@@ -709,4 +735,4 @@ declare class DotNS {
|
|
|
709
735
|
}
|
|
710
736
|
declare const dotns: DotNS;
|
|
711
737
|
|
|
712
|
-
export { ATTR_TX_RESOLUTION_KIND, type AliasAccountClassification, type AliasAccountState, CONNECTION_TIMEOUT_MS, CONTRACTS, ContractDryRunRevertError, DECIMALS, DEFAULT_MNEMONIC, DOTNS_BEST_BLOCK_GRACE_MS, DOTNS_TX_MAX_ATTEMPTS, DOT_NODE, DotNS, type DotNSConnectOptions, type DotnsPreflightResult, type DotnsSuccessAction, MINIMUM_REGISTER_STORAGE_DEPOSIT, NATIVE_TO_ETH_RATIO, NONCE_ADVANCE_VERIFY_RETRIES, NONCE_ADVANCE_VERIFY_RETRY_INTERVAL_MS, OPERATION_TIMEOUT_MS, type OwnershipResult, PUBLISHER_ABI, type ParsedDomainName, type PhoneSignatureStep, type PriceValidationResult, ProofOfPersonhoodStatus, PublisherNotSupportedError, RPC_ENDPOINTS, ReviveClientWrapper, TX_CHAIN_TIME_BUDGET_MS, TX_KIND_BEST_BLOCK, TX_KIND_HASH, TX_KIND_NONCE_ADVANCED, TX_NO_PROGRESS_MS, TX_TIMEOUT_MS, TX_WALL_CLOCK_CEILING_MS, type TxResolution, VERIFY_EFFECT_CHAIN_SECONDS, WS_HEARTBEAT_TIMEOUT_MS, WatcherSilentNoEventError, __formatContractDryRunFailureForTest, bufferedWeiToNative, canRegister, classifyAliasAccountRow, classifyDotnsLabel, classifyTxRetryDecision, classifyWatcherSilentFastFail, computeDomainTokenId, convertToHexString, convertWeiToNative, countTrailingDigits, decodePublisherRevert, dotns, dotnsRetryBackoffMs, feeFloorFor, fetchNonce, fmtPas, formatDispatchError, formatPersonhoodRemediation, formatPopShortfallReason, isCommitmentMature, isCommitmentTimingBarerevert, makeRetryStatusFilter, parseDomainName, parseProofOfPersonhoodStatus, popStatusName, registerDepositWei, sanitizeDomainLabel, shouldRegateBeforeResign, shouldRetryTxAttempt, stripTrailingDigits, validateDomainLabel, verifyEffectWithGrace, verifyNonceAdvanced, weiToNative };
|
|
738
|
+
export { ATTR_TX_RESOLUTION_KIND, type AliasAccountClassification, type AliasAccountState, CONNECTION_TIMEOUT_MS, CONTENTHASH_VERIFY_ATTEMPTS, CONTRACTS, ContractDryRunRevertError, DECIMALS, DEFAULT_MNEMONIC, DOTNS_BEST_BLOCK_GRACE_MS, DOTNS_TX_MAX_ATTEMPTS, DOT_NODE, DotNS, type DotNSConnectOptions, type DotnsPreflightResult, type DotnsSuccessAction, MINIMUM_REGISTER_STORAGE_DEPOSIT, NATIVE_TO_ETH_RATIO, NONCE_ADVANCE_VERIFY_RETRIES, NONCE_ADVANCE_VERIFY_RETRY_INTERVAL_MS, OPERATION_TIMEOUT_MS, type OwnershipResult, PUBLISHER_ABI, type ParsedDomainName, type PhoneSignatureStep, type PriceValidationResult, ProofOfPersonhoodStatus, PublisherNotSupportedError, REVIVE_ADDRESS_ATTEMPTS, RPC_ENDPOINTS, ReviveClientWrapper, TX_CHAIN_TIME_BUDGET_MS, TX_KIND_BEST_BLOCK, TX_KIND_HASH, TX_KIND_NONCE_ADVANCED, TX_NO_PROGRESS_MS, TX_TIMEOUT_MS, TX_WALL_CLOCK_CEILING_MS, type TxResolution, VERIFY_EFFECT_CHAIN_SECONDS, WS_HEARTBEAT_TIMEOUT_MS, WatcherSilentNoEventError, __formatContractDryRunFailureForTest, bufferedWeiToNative, canRegister, classifyAliasAccountRow, classifyDotnsLabel, classifyTxRetryDecision, classifyWatcherSilentFastFail, computeDomainTokenId, convertToHexString, convertWeiToNative, countTrailingDigits, decodePublisherRevert, dotns, dotnsRetryBackoffMs, feeFloorFor, fetchNonce, fmtPas, formatDispatchError, formatPersonhoodRemediation, formatPopShortfallReason, isCommitmentMature, isCommitmentTimingBarerevert, makeRetryStatusFilter, parseDomainName, parseProofOfPersonhoodStatus, pickVerifyEndpoint, popStatusName, registerDepositWei, sanitizeDomainLabel, shouldRegateBeforeResign, shouldRetryTxAttempt, stripTrailingDigits, validateDomainLabel, verifyEffectWithGrace, verifyNonceAdvanced, weiToNative, withRetry };
|
package/dist/dotns.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
ATTR_TX_RESOLUTION_KIND,
|
|
3
3
|
CONNECTION_TIMEOUT_MS,
|
|
4
|
+
CONTENTHASH_VERIFY_ATTEMPTS,
|
|
4
5
|
CONTRACTS,
|
|
5
6
|
ContractDryRunRevertError,
|
|
6
7
|
DECIMALS,
|
|
@@ -17,6 +18,7 @@ import {
|
|
|
17
18
|
PUBLISHER_ABI,
|
|
18
19
|
ProofOfPersonhoodStatus,
|
|
19
20
|
PublisherNotSupportedError,
|
|
21
|
+
REVIVE_ADDRESS_ATTEMPTS,
|
|
20
22
|
RPC_ENDPOINTS,
|
|
21
23
|
ReviveClientWrapper,
|
|
22
24
|
TX_CHAIN_TIME_BUDGET_MS,
|
|
@@ -54,6 +56,7 @@ import {
|
|
|
54
56
|
makeRetryStatusFilter,
|
|
55
57
|
parseDomainName,
|
|
56
58
|
parseProofOfPersonhoodStatus,
|
|
59
|
+
pickVerifyEndpoint,
|
|
57
60
|
popStatusName,
|
|
58
61
|
registerDepositWei,
|
|
59
62
|
sanitizeDomainLabel,
|
|
@@ -63,17 +66,19 @@ import {
|
|
|
63
66
|
validateDomainLabel,
|
|
64
67
|
verifyEffectWithGrace,
|
|
65
68
|
verifyNonceAdvanced,
|
|
66
|
-
weiToNative
|
|
67
|
-
|
|
69
|
+
weiToNative,
|
|
70
|
+
withRetry
|
|
71
|
+
} from "./chunk-JSEVC62P.js";
|
|
68
72
|
import "./chunk-SI2ZUOYD.js";
|
|
69
73
|
import "./chunk-4AEFFDHP.js";
|
|
70
|
-
import "./chunk-
|
|
71
|
-
import "./chunk-
|
|
74
|
+
import "./chunk-BFWPRX5O.js";
|
|
75
|
+
import "./chunk-LZ5YS3EA.js";
|
|
72
76
|
import "./chunk-NTXIXOCN.js";
|
|
73
77
|
import "./chunk-ZOC4GITL.js";
|
|
74
78
|
export {
|
|
75
79
|
ATTR_TX_RESOLUTION_KIND,
|
|
76
80
|
CONNECTION_TIMEOUT_MS,
|
|
81
|
+
CONTENTHASH_VERIFY_ATTEMPTS,
|
|
77
82
|
CONTRACTS,
|
|
78
83
|
ContractDryRunRevertError,
|
|
79
84
|
DECIMALS,
|
|
@@ -90,6 +95,7 @@ export {
|
|
|
90
95
|
PUBLISHER_ABI,
|
|
91
96
|
ProofOfPersonhoodStatus,
|
|
92
97
|
PublisherNotSupportedError,
|
|
98
|
+
REVIVE_ADDRESS_ATTEMPTS,
|
|
93
99
|
RPC_ENDPOINTS,
|
|
94
100
|
ReviveClientWrapper,
|
|
95
101
|
TX_CHAIN_TIME_BUDGET_MS,
|
|
@@ -127,6 +133,7 @@ export {
|
|
|
127
133
|
makeRetryStatusFilter,
|
|
128
134
|
parseDomainName,
|
|
129
135
|
parseProofOfPersonhoodStatus,
|
|
136
|
+
pickVerifyEndpoint,
|
|
130
137
|
popStatusName,
|
|
131
138
|
registerDepositWei,
|
|
132
139
|
sanitizeDomainLabel,
|
|
@@ -136,5 +143,6 @@ export {
|
|
|
136
143
|
validateDomainLabel,
|
|
137
144
|
verifyEffectWithGrace,
|
|
138
145
|
verifyNonceAdvanced,
|
|
139
|
-
weiToNative
|
|
146
|
+
weiToNative,
|
|
147
|
+
withRetry
|
|
140
148
|
};
|
package/dist/index.d.ts
CHANGED
|
@@ -9,10 +9,12 @@ export { FetchOptions, FetchOutcome, fetchPreviousManifest } from './manifest-fe
|
|
|
9
9
|
export { ComputeStatsInput, IncrementalStats, computeStats, renderSummary, telemetryAttributes } from './incremental-stats.js';
|
|
10
10
|
export { Chain, ChainEndpoint, DEFAULT_ENV_ID, Environment, EnvironmentListing, EnvironmentsDoc, EnvironmentsSource, LoadOptions, LoadResult, ResolvedEndpoints, deepMergeEnvironments, defaultBundledPath, formatEnvironmentTable, isValidContractAddress, listEnvironments, loadEnvironments, resolveEndpoints, validateContractAddresses } from './environments.js';
|
|
11
11
|
export { RunState, RunStatus, VERSION, loadRunState, probablyOomRssMb, resolveStateDir, shouldShowOomHint, shouldSkipStaleWarning, stateFilePath, writeRunState } from './run-state.js';
|
|
12
|
-
|
|
12
|
+
import { ProductConfig } from './manifest/types.js';
|
|
13
|
+
export { AppExecutableConfig, AppManifest, AppVersion, ExecutableConfig, ExecutableKind, ExecutableManifest, Icon, IconConfig, IconFormat, RootManifest, WidgetDimensions, WidgetExecutableConfig, WidgetManifest, WorkerExecutableConfig, WorkerIncludes, WorkerManifest, defineConfig } from './manifest/types.js';
|
|
13
14
|
export { ValidationErr, ValidationOk, ValidationResult, validateExecutableManifest, validateProductConfig, validateRootManifest } from './manifest/schema.js';
|
|
14
15
|
export { BudgetCheck, DEFAULT_TEXT_RECORD_BUDGET_BYTES, PLACEHOLDER_CID, PessimisticSizeReport, assertWithinBudget, getTextRecordBudgetBytes, pessimisticSizePreflight } from './manifest/byte-budget.js';
|
|
15
|
-
|
|
16
|
+
import { LoadProductConfigOptions, LoadedProductConfig } from './manifest/config-load.js';
|
|
17
|
+
export { loadProductConfig, tryLoadProductConfig } from './manifest/config-load.js';
|
|
16
18
|
export { PublishManifestOptions, PublishManifestResult, publishManifest } from './manifest/publish.js';
|
|
17
19
|
import 'polkadot-api/ws';
|
|
18
20
|
import 'multiformats/cid';
|
|
@@ -23,3 +25,39 @@ import './personhood/bind-personal-id.js';
|
|
|
23
25
|
import './personhood/claim-pgas.js';
|
|
24
26
|
import './personhood/bind-paid-alias.js';
|
|
25
27
|
import './personhood/chain-prereqs.js';
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* Frontloaded product-manifest preflight.
|
|
31
|
+
*
|
|
32
|
+
* The deploy CLI historically loaded + validated the product config only in
|
|
33
|
+
* the post-deploy manifest-publish step — so an invalid config (bad `domain`,
|
|
34
|
+
* oversized text record, missing icon/executable file) surfaced *after*
|
|
35
|
+
* preflight and a full merkleize/upload (see paritytech/polkadot-app-deploy#125).
|
|
36
|
+
*
|
|
37
|
+
* This runs all the pure/local manifest checks up front, before any storage or
|
|
38
|
+
* chain work, so config errors fail fast with one aggregated message:
|
|
39
|
+
* 1. discover + load the config (schema validation, incl. `domain` ending
|
|
40
|
+
* in `.dot`, via `loadProductConfig`),
|
|
41
|
+
* 2. byte-budget preflight for every text record (`pessimisticSizePreflight`),
|
|
42
|
+
* 3. the referenced icon file + every executable path exist on disk.
|
|
43
|
+
*
|
|
44
|
+
* Returns the loaded+validated config so the caller can reuse it (no double
|
|
45
|
+
* load), or `null` when no config is applicable (opt-in manifest mode).
|
|
46
|
+
*/
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* Check that every file a product config references exists on disk, resolved
|
|
50
|
+
* relative to the config's own directory. Returns a list of human-readable
|
|
51
|
+
* error strings (empty when everything is present). The icon must be a regular
|
|
52
|
+
* file; an executable path may be a file or a directory (a build dir).
|
|
53
|
+
*/
|
|
54
|
+
declare function checkProductConfigFilesExist(config: ProductConfig, configDir: string): Promise<string[]>;
|
|
55
|
+
/**
|
|
56
|
+
* Run the full local manifest preflight. Throws a single aggregated
|
|
57
|
+
* `NonRetryableError` on any schema / byte-budget / missing-file problem.
|
|
58
|
+
* Returns the loaded config (reusable by the publish step) or `null` when no
|
|
59
|
+
* product config is present.
|
|
60
|
+
*/
|
|
61
|
+
declare function preflightProductConfig(options?: LoadProductConfigOptions): Promise<LoadedProductConfig | null>;
|
|
62
|
+
|
|
63
|
+
export { LoadProductConfigOptions, LoadedProductConfig, ProductConfig, checkProductConfigFilesExist, preflightProductConfig };
|
package/dist/index.js
CHANGED
|
@@ -4,7 +4,7 @@ import {
|
|
|
4
4
|
} from "./chunk-362JEZKM.js";
|
|
5
5
|
import {
|
|
6
6
|
publishManifest
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-INPIXAV5.js";
|
|
8
8
|
import {
|
|
9
9
|
DEFAULT_TEXT_RECORD_BUDGET_BYTES,
|
|
10
10
|
PLACEHOLDER_CID,
|
|
@@ -24,8 +24,8 @@ import {
|
|
|
24
24
|
deploy,
|
|
25
25
|
merkleizeJS,
|
|
26
26
|
merkleizeWithStableOrder
|
|
27
|
-
} from "./chunk-
|
|
28
|
-
import "./chunk-
|
|
27
|
+
} from "./chunk-H42S7VX2.js";
|
|
28
|
+
import "./chunk-MKRT2DH6.js";
|
|
29
29
|
import "./chunk-GRPLHUYC.js";
|
|
30
30
|
import "./chunk-HOTQDYHD.js";
|
|
31
31
|
import {
|
|
@@ -49,24 +49,24 @@ import {
|
|
|
49
49
|
isVolatilePath,
|
|
50
50
|
parseManifest
|
|
51
51
|
} from "./chunk-S7EM5VMW.js";
|
|
52
|
-
import "./chunk-
|
|
53
|
-
import "./chunk-
|
|
52
|
+
import "./chunk-HPEXY3JF.js";
|
|
53
|
+
import "./chunk-PFOPWGMV.js";
|
|
54
54
|
import {
|
|
55
55
|
probeChunks
|
|
56
|
-
} from "./chunk-
|
|
56
|
+
} from "./chunk-F6MIQLOO.js";
|
|
57
57
|
import "./chunk-C2TS5MER.js";
|
|
58
|
-
import "./chunk-
|
|
58
|
+
import "./chunk-CILFB52S.js";
|
|
59
59
|
import "./chunk-JQKKMUCT.js";
|
|
60
60
|
import "./chunk-5FLTDWWP.js";
|
|
61
61
|
import "./chunk-RIRDBSBG.js";
|
|
62
|
-
import "./chunk-
|
|
62
|
+
import "./chunk-LAKHIIHO.js";
|
|
63
63
|
import "./chunk-TSPERKUS.js";
|
|
64
64
|
import {
|
|
65
65
|
DEFAULT_MNEMONIC,
|
|
66
66
|
DotNS,
|
|
67
67
|
parseDomainName,
|
|
68
68
|
sanitizeDomainLabel
|
|
69
|
-
} from "./chunk-
|
|
69
|
+
} from "./chunk-JSEVC62P.js";
|
|
70
70
|
import "./chunk-SI2ZUOYD.js";
|
|
71
71
|
import {
|
|
72
72
|
BULLETIN_BLOCKS_PER_DAY,
|
|
@@ -82,7 +82,7 @@ import {
|
|
|
82
82
|
poolAccountDerivationPath,
|
|
83
83
|
selectAccount
|
|
84
84
|
} from "./chunk-4AEFFDHP.js";
|
|
85
|
-
import "./chunk-
|
|
85
|
+
import "./chunk-BFWPRX5O.js";
|
|
86
86
|
import {
|
|
87
87
|
VERSION,
|
|
88
88
|
loadRunState,
|
|
@@ -92,7 +92,7 @@ import {
|
|
|
92
92
|
shouldSkipStaleWarning,
|
|
93
93
|
stateFilePath,
|
|
94
94
|
writeRunState
|
|
95
|
-
} from "./chunk-
|
|
95
|
+
} from "./chunk-LZ5YS3EA.js";
|
|
96
96
|
import {
|
|
97
97
|
DEFAULT_ENV_ID,
|
|
98
98
|
deepMergeEnvironments,
|
|
@@ -104,7 +104,50 @@ import {
|
|
|
104
104
|
resolveEndpoints,
|
|
105
105
|
validateContractAddresses
|
|
106
106
|
} from "./chunk-NTXIXOCN.js";
|
|
107
|
-
import
|
|
107
|
+
import {
|
|
108
|
+
NonRetryableError
|
|
109
|
+
} from "./chunk-ZOC4GITL.js";
|
|
110
|
+
|
|
111
|
+
// src/manifest/product-preflight.ts
|
|
112
|
+
import * as fs from "fs/promises";
|
|
113
|
+
import * as path from "path";
|
|
114
|
+
async function checkProductConfigFilesExist(config, configDir) {
|
|
115
|
+
const errors = [];
|
|
116
|
+
const iconAbs = path.resolve(configDir, config.icon.path);
|
|
117
|
+
try {
|
|
118
|
+
const st = await fs.stat(iconAbs);
|
|
119
|
+
if (!st.isFile()) errors.push(`icon.path "${config.icon.path}" is not a file (${iconAbs})`);
|
|
120
|
+
} catch {
|
|
121
|
+
errors.push(`icon.path "${config.icon.path}" not found (${iconAbs})`);
|
|
122
|
+
}
|
|
123
|
+
for (const exec of config.executables) {
|
|
124
|
+
const execAbs = path.resolve(configDir, exec.path);
|
|
125
|
+
try {
|
|
126
|
+
await fs.stat(execAbs);
|
|
127
|
+
} catch {
|
|
128
|
+
errors.push(`executables[${exec.kind}].path "${exec.path}" not found (${execAbs})`);
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
return errors;
|
|
132
|
+
}
|
|
133
|
+
async function preflightProductConfig(options = {}) {
|
|
134
|
+
const loaded = await tryLoadProductConfig(options);
|
|
135
|
+
if (!loaded) return null;
|
|
136
|
+
const { config, sourcePath } = loaded;
|
|
137
|
+
const errors = [];
|
|
138
|
+
const report = pessimisticSizePreflight(config, getTextRecordBudgetBytes());
|
|
139
|
+
for (const c of report.checks) {
|
|
140
|
+
if (!c.ok) errors.push(`text record "${c.key}" is ${c.bytes} B, over the ${c.budget} B dotNS budget`);
|
|
141
|
+
}
|
|
142
|
+
errors.push(...await checkProductConfigFilesExist(config, path.dirname(sourcePath)));
|
|
143
|
+
if (errors.length > 0) {
|
|
144
|
+
throw new NonRetryableError(
|
|
145
|
+
`Product config preflight failed for ${sourcePath}:
|
|
146
|
+
- ${errors.join("\n - ")}`
|
|
147
|
+
);
|
|
148
|
+
}
|
|
149
|
+
return loaded;
|
|
150
|
+
}
|
|
108
151
|
export {
|
|
109
152
|
BULLETIN_BLOCKS_PER_DAY,
|
|
110
153
|
DEFAULT_ENV_ID,
|
|
@@ -122,6 +165,7 @@ export {
|
|
|
122
165
|
assertWithinBudget,
|
|
123
166
|
assetHubTopUpAmount,
|
|
124
167
|
bootstrapPool,
|
|
168
|
+
checkProductConfigFilesExist,
|
|
125
169
|
classifyFile,
|
|
126
170
|
computeStats,
|
|
127
171
|
deepMergeEnvironments,
|
|
@@ -149,6 +193,7 @@ export {
|
|
|
149
193
|
parseManifest,
|
|
150
194
|
pessimisticSizePreflight,
|
|
151
195
|
poolAccountDerivationPath,
|
|
196
|
+
preflightProductConfig,
|
|
152
197
|
probablyOomRssMb,
|
|
153
198
|
probeChunks,
|
|
154
199
|
publishManifest,
|
package/dist/manifest/publish.js
CHANGED
|
@@ -1,30 +1,30 @@
|
|
|
1
1
|
import {
|
|
2
2
|
publishManifest
|
|
3
|
-
} from "../chunk-
|
|
3
|
+
} from "../chunk-INPIXAV5.js";
|
|
4
4
|
import "../chunk-WIMRJK32.js";
|
|
5
|
-
import "../chunk-
|
|
6
|
-
import "../chunk-
|
|
5
|
+
import "../chunk-H42S7VX2.js";
|
|
6
|
+
import "../chunk-MKRT2DH6.js";
|
|
7
7
|
import "../chunk-GRPLHUYC.js";
|
|
8
8
|
import "../chunk-HOTQDYHD.js";
|
|
9
9
|
import "../chunk-IW3X2MJF.js";
|
|
10
10
|
import "../chunk-KOSF5FDO.js";
|
|
11
11
|
import "../chunk-J3NIXHZZ.js";
|
|
12
12
|
import "../chunk-S7EM5VMW.js";
|
|
13
|
-
import "../chunk-
|
|
14
|
-
import "../chunk-
|
|
15
|
-
import "../chunk-
|
|
13
|
+
import "../chunk-HPEXY3JF.js";
|
|
14
|
+
import "../chunk-PFOPWGMV.js";
|
|
15
|
+
import "../chunk-F6MIQLOO.js";
|
|
16
16
|
import "../chunk-C2TS5MER.js";
|
|
17
|
-
import "../chunk-
|
|
17
|
+
import "../chunk-CILFB52S.js";
|
|
18
18
|
import "../chunk-JQKKMUCT.js";
|
|
19
19
|
import "../chunk-5FLTDWWP.js";
|
|
20
20
|
import "../chunk-RIRDBSBG.js";
|
|
21
|
-
import "../chunk-
|
|
21
|
+
import "../chunk-LAKHIIHO.js";
|
|
22
22
|
import "../chunk-TSPERKUS.js";
|
|
23
|
-
import "../chunk-
|
|
23
|
+
import "../chunk-JSEVC62P.js";
|
|
24
24
|
import "../chunk-SI2ZUOYD.js";
|
|
25
25
|
import "../chunk-4AEFFDHP.js";
|
|
26
|
-
import "../chunk-
|
|
27
|
-
import "../chunk-
|
|
26
|
+
import "../chunk-BFWPRX5O.js";
|
|
27
|
+
import "../chunk-LZ5YS3EA.js";
|
|
28
28
|
import "../chunk-NTXIXOCN.js";
|
|
29
29
|
import "../chunk-ZOC4GITL.js";
|
|
30
30
|
export {
|
package/dist/memory-report.js
CHANGED
package/dist/merkle.js
CHANGED
|
@@ -6,29 +6,29 @@ import {
|
|
|
6
6
|
merkleizeKuboBackend,
|
|
7
7
|
merkleizeWithStableOrder,
|
|
8
8
|
rebuildOrderedCarFromBytes
|
|
9
|
-
} from "./chunk-
|
|
10
|
-
import "./chunk-
|
|
9
|
+
} from "./chunk-H42S7VX2.js";
|
|
10
|
+
import "./chunk-MKRT2DH6.js";
|
|
11
11
|
import "./chunk-GRPLHUYC.js";
|
|
12
12
|
import "./chunk-HOTQDYHD.js";
|
|
13
13
|
import "./chunk-IW3X2MJF.js";
|
|
14
14
|
import "./chunk-KOSF5FDO.js";
|
|
15
15
|
import "./chunk-J3NIXHZZ.js";
|
|
16
16
|
import "./chunk-S7EM5VMW.js";
|
|
17
|
-
import "./chunk-
|
|
18
|
-
import "./chunk-
|
|
19
|
-
import "./chunk-
|
|
17
|
+
import "./chunk-HPEXY3JF.js";
|
|
18
|
+
import "./chunk-PFOPWGMV.js";
|
|
19
|
+
import "./chunk-F6MIQLOO.js";
|
|
20
20
|
import "./chunk-C2TS5MER.js";
|
|
21
|
-
import "./chunk-
|
|
21
|
+
import "./chunk-CILFB52S.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-LAKHIIHO.js";
|
|
26
26
|
import "./chunk-TSPERKUS.js";
|
|
27
|
-
import "./chunk-
|
|
27
|
+
import "./chunk-JSEVC62P.js";
|
|
28
28
|
import "./chunk-SI2ZUOYD.js";
|
|
29
29
|
import "./chunk-4AEFFDHP.js";
|
|
30
|
-
import "./chunk-
|
|
31
|
-
import "./chunk-
|
|
30
|
+
import "./chunk-BFWPRX5O.js";
|
|
31
|
+
import "./chunk-LZ5YS3EA.js";
|
|
32
32
|
import "./chunk-NTXIXOCN.js";
|
|
33
33
|
import "./chunk-ZOC4GITL.js";
|
|
34
34
|
export {
|
|
@@ -21,15 +21,15 @@ import {
|
|
|
21
21
|
} from "../chunk-ZYVGHDMU.js";
|
|
22
22
|
import {
|
|
23
23
|
WS_HEARTBEAT_TIMEOUT_MS
|
|
24
|
-
} from "../chunk-
|
|
24
|
+
} from "../chunk-JSEVC62P.js";
|
|
25
25
|
import {
|
|
26
26
|
DOTNS_CONTEXT_BYTES,
|
|
27
27
|
PEOPLE_MEMBER_IDENTIFIER_HEX,
|
|
28
28
|
PGAS_ASSET_ID
|
|
29
29
|
} from "../chunk-SI2ZUOYD.js";
|
|
30
30
|
import "../chunk-4AEFFDHP.js";
|
|
31
|
-
import "../chunk-
|
|
32
|
-
import "../chunk-
|
|
31
|
+
import "../chunk-BFWPRX5O.js";
|
|
32
|
+
import "../chunk-LZ5YS3EA.js";
|
|
33
33
|
import {
|
|
34
34
|
loadEnvironments
|
|
35
35
|
} from "../chunk-NTXIXOCN.js";
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import {
|
|
2
2
|
WS_HEARTBEAT_TIMEOUT_MS
|
|
3
|
-
} from "../chunk-
|
|
3
|
+
} from "../chunk-JSEVC62P.js";
|
|
4
4
|
import "../chunk-SI2ZUOYD.js";
|
|
5
5
|
import "../chunk-4AEFFDHP.js";
|
|
6
|
-
import "../chunk-
|
|
7
|
-
import "../chunk-
|
|
6
|
+
import "../chunk-BFWPRX5O.js";
|
|
7
|
+
import "../chunk-LZ5YS3EA.js";
|
|
8
8
|
import {
|
|
9
9
|
loadEnvironments
|
|
10
10
|
} from "../chunk-NTXIXOCN.js";
|
package/dist/run-state.js
CHANGED
|
@@ -4,12 +4,12 @@ import {
|
|
|
4
4
|
preflightSssAllowance,
|
|
5
5
|
sssPeriodEndSec,
|
|
6
6
|
writeSssAllowanceCache
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-MKRT2DH6.js";
|
|
8
8
|
import "./chunk-GRPLHUYC.js";
|
|
9
|
-
import "./chunk-
|
|
9
|
+
import "./chunk-LAKHIIHO.js";
|
|
10
10
|
import "./chunk-TSPERKUS.js";
|
|
11
|
-
import "./chunk-
|
|
12
|
-
import "./chunk-
|
|
11
|
+
import "./chunk-BFWPRX5O.js";
|
|
12
|
+
import "./chunk-LZ5YS3EA.js";
|
|
13
13
|
import "./chunk-NTXIXOCN.js";
|
|
14
14
|
import "./chunk-ZOC4GITL.js";
|
|
15
15
|
export {
|
package/dist/storage-signer.js
CHANGED
|
@@ -8,29 +8,29 @@ import {
|
|
|
8
8
|
waitForBulletinAuthorization,
|
|
9
9
|
withTransientRetry,
|
|
10
10
|
writeBulletinSlotKey
|
|
11
|
-
} from "./chunk-
|
|
12
|
-
import "./chunk-
|
|
11
|
+
} from "./chunk-H42S7VX2.js";
|
|
12
|
+
import "./chunk-MKRT2DH6.js";
|
|
13
13
|
import "./chunk-GRPLHUYC.js";
|
|
14
14
|
import "./chunk-HOTQDYHD.js";
|
|
15
15
|
import "./chunk-IW3X2MJF.js";
|
|
16
16
|
import "./chunk-KOSF5FDO.js";
|
|
17
17
|
import "./chunk-J3NIXHZZ.js";
|
|
18
18
|
import "./chunk-S7EM5VMW.js";
|
|
19
|
-
import "./chunk-
|
|
20
|
-
import "./chunk-
|
|
21
|
-
import "./chunk-
|
|
19
|
+
import "./chunk-HPEXY3JF.js";
|
|
20
|
+
import "./chunk-PFOPWGMV.js";
|
|
21
|
+
import "./chunk-F6MIQLOO.js";
|
|
22
22
|
import "./chunk-C2TS5MER.js";
|
|
23
|
-
import "./chunk-
|
|
23
|
+
import "./chunk-CILFB52S.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-LAKHIIHO.js";
|
|
28
28
|
import "./chunk-TSPERKUS.js";
|
|
29
|
-
import "./chunk-
|
|
29
|
+
import "./chunk-JSEVC62P.js";
|
|
30
30
|
import "./chunk-SI2ZUOYD.js";
|
|
31
31
|
import "./chunk-4AEFFDHP.js";
|
|
32
|
-
import "./chunk-
|
|
33
|
-
import "./chunk-
|
|
32
|
+
import "./chunk-BFWPRX5O.js";
|
|
33
|
+
import "./chunk-LZ5YS3EA.js";
|
|
34
34
|
import "./chunk-NTXIXOCN.js";
|
|
35
35
|
import "./chunk-ZOC4GITL.js";
|
|
36
36
|
export {
|
package/dist/telemetry.js
CHANGED
package/dist/version-check.js
CHANGED
|
@@ -11,9 +11,9 @@ import {
|
|
|
11
11
|
isPreReleaseVersion,
|
|
12
12
|
preReleaseWarning,
|
|
13
13
|
promptYesNo
|
|
14
|
-
} from "./chunk-
|
|
15
|
-
import "./chunk-
|
|
16
|
-
import "./chunk-
|
|
14
|
+
} from "./chunk-PFOPWGMV.js";
|
|
15
|
+
import "./chunk-BFWPRX5O.js";
|
|
16
|
+
import "./chunk-LZ5YS3EA.js";
|
|
17
17
|
export {
|
|
18
18
|
assessVersion,
|
|
19
19
|
checkNodeVersion,
|
package/package.json
CHANGED
|
@@ -36,6 +36,11 @@ const FLAKE_PATTERNS = [
|
|
|
36
36
|
"transaction watcher silent for",
|
|
37
37
|
"of chain progress (budget=",
|
|
38
38
|
"did not settle within",
|
|
39
|
+
// Asset Hub runtime-call (EVM address resolution) timeout — the paseo-next-v2
|
|
40
|
+
// AH node degrades under concurrent E2E matrix load and times out ReviveApi.address
|
|
41
|
+
// (#1131). A fresh CI retry lands in a recovered window. Not retried before, so a
|
|
42
|
+
// single bad window failed the whole scenario (shifting failure sets across reruns).
|
|
43
|
+
"ReviveApi.address timed out",
|
|
39
44
|
];
|
|
40
45
|
|
|
41
46
|
// output: combined stdout+stderr text from the child. Any flake pattern
|