bulletin-deploy 0.7.25 → 0.7.26-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 +5 -0
- package/dist/bug-report.js +4 -4
- package/dist/{chunk-LB3HGDGW.js → chunk-3Z6VK7XP.js} +1 -1
- package/dist/{chunk-WY3MHJE2.js → chunk-4LB5PXBL.js} +15 -15
- package/dist/{chunk-CKCCNBYX.js → chunk-77OAX2MH.js} +1 -1
- package/dist/{chunk-OCYMH4PS.js → chunk-7NRU7N5A.js} +2 -2
- package/dist/{chunk-Q5NNM4C3.js → chunk-IJOPI6JC.js} +1 -1
- package/dist/{chunk-J5JHYLEN.js → chunk-OHAO2BPD.js} +50 -42
- package/dist/{chunk-FX6T7A3F.js → chunk-SEMZRS7Q.js} +1 -1
- package/dist/chunk-probe.js +3 -3
- package/dist/deploy.d.ts +17 -0
- package/dist/deploy.js +7 -7
- package/dist/dotns.js +3 -3
- package/dist/index.js +7 -7
- package/dist/memory-report.js +2 -2
- package/dist/merkle.js +7 -7
- package/dist/personhood/bootstrap.js +3 -3
- package/dist/personhood/people-client.js +3 -3
- package/dist/run-state.js +1 -1
- package/dist/telemetry.js +2 -2
- package/dist/version-check.js +3 -3
- package/package.json +1 -1
package/bin/bulletin-deploy
CHANGED
|
@@ -42,6 +42,8 @@ for (let i = 0; i < args.length; i++) {
|
|
|
42
42
|
else if (args[i] === "--allow-large-deploy") { flags.allowLargeDeploy = true; }
|
|
43
43
|
else if (args[i] === "--reproducible") { flags.reproducibleSource = "commit"; }
|
|
44
44
|
else if (args[i].startsWith("--reproducible=")) { flags.reproducibleSource = args[i].slice("--reproducible=".length); }
|
|
45
|
+
else if (args[i] === "--dump-car") { flags.dumpCar = true; }
|
|
46
|
+
else if (args[i].startsWith("--dump-car=")) { flags.dumpCar = args[i].slice("--dump-car=".length); }
|
|
45
47
|
else if (args[i] === "--version" || args[i] === "-V") { flags.version = true; }
|
|
46
48
|
else if (args[i] === "--help" || args[i] === "-h") { flags.help = true; }
|
|
47
49
|
else { positional.push(args[i]); }
|
|
@@ -92,6 +94,8 @@ Options:
|
|
|
92
94
|
--js-merkle Use pure-JS merkleization (no IPFS Kubo binary required)
|
|
93
95
|
--input-car <path> Deploy a pre-built CAR file; skips directory scan and merkleization.
|
|
94
96
|
Usage: bulletin-deploy --input-car <file.car> <domain.dot>
|
|
97
|
+
--dump-car[=<path>] Save the pre-upload CAR file to disk. Default path: <buildDir>.bulletin.car.
|
|
98
|
+
Override path with =<path>. Also settable via BULLETIN_DEPLOY_DUMP_CAR env var.
|
|
95
99
|
--tag "..." Label deploy in telemetry (or set DEPLOY_TAG env var); see Telemetry in README
|
|
96
100
|
--name "..." Optional. Sets the "name" text record on the domain.
|
|
97
101
|
--description "..." Optional. Sets the "description" text record (≤100 chars recommended).
|
|
@@ -267,6 +271,7 @@ try {
|
|
|
267
271
|
description: flags.description,
|
|
268
272
|
allowLargeDeploy: flags.allowLargeDeploy,
|
|
269
273
|
reproducibleSource: flags.reproducibleSource,
|
|
274
|
+
dumpCar: flags.dumpCar,
|
|
270
275
|
});
|
|
271
276
|
|
|
272
277
|
const output = process.env.GITHUB_OUTPUT;
|
package/dist/bug-report.js
CHANGED
|
@@ -9,10 +9,10 @@ import {
|
|
|
9
9
|
offerBugReport,
|
|
10
10
|
scrubSecrets,
|
|
11
11
|
setDeployContext
|
|
12
|
-
} from "./chunk-
|
|
13
|
-
import "./chunk-
|
|
14
|
-
import "./chunk-
|
|
15
|
-
import "./chunk-
|
|
12
|
+
} from "./chunk-7NRU7N5A.js";
|
|
13
|
+
import "./chunk-3Z6VK7XP.js";
|
|
14
|
+
import "./chunk-IJOPI6JC.js";
|
|
15
|
+
import "./chunk-77OAX2MH.js";
|
|
16
16
|
export {
|
|
17
17
|
buildCliFlagsSummary,
|
|
18
18
|
buildLabels,
|
|
@@ -7,7 +7,7 @@ import {
|
|
|
7
7
|
setDeploySentryTag,
|
|
8
8
|
truncateAddress,
|
|
9
9
|
withSpan
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-IJOPI6JC.js";
|
|
11
11
|
import {
|
|
12
12
|
validateContractAddresses
|
|
13
13
|
} from "./chunk-MGU5I7H5.js";
|
|
@@ -520,7 +520,7 @@ var ReviveClientWrapper = class _ReviveClientWrapper {
|
|
|
520
520
|
const finish = (fn) => (...args) => {
|
|
521
521
|
if (!settled) {
|
|
522
522
|
settled = true;
|
|
523
|
-
if (deadlinePoller)
|
|
523
|
+
if (deadlinePoller) clearTimeout(deadlinePoller);
|
|
524
524
|
try {
|
|
525
525
|
sub?.unsubscribe();
|
|
526
526
|
} catch {
|
|
@@ -530,7 +530,7 @@ var ReviveClientWrapper = class _ReviveClientWrapper {
|
|
|
530
530
|
};
|
|
531
531
|
const startWallClockMs = Date.now();
|
|
532
532
|
let startChainTimeMs = null;
|
|
533
|
-
|
|
533
|
+
const poll = async () => {
|
|
534
534
|
if (settled) return;
|
|
535
535
|
try {
|
|
536
536
|
if (opts.nonceFallback) {
|
|
@@ -561,10 +561,13 @@ var ReviveClientWrapper = class _ReviveClientWrapper {
|
|
|
561
561
|
if (chainElapsedMs > TX_CHAIN_TIME_BUDGET_MS) {
|
|
562
562
|
statusCallback("failed");
|
|
563
563
|
finish(reject)(new Error(`Transaction not included after ${Math.floor(chainElapsedMs / 1e3)}s of chain progress (budget=${TX_CHAIN_TIME_BUDGET_MS / 1e3}s)`));
|
|
564
|
+
return;
|
|
564
565
|
}
|
|
565
566
|
} catch {
|
|
566
567
|
}
|
|
567
|
-
|
|
568
|
+
if (!settled) deadlinePoller = setTimeout(poll, 6e3);
|
|
569
|
+
};
|
|
570
|
+
deadlinePoller = setTimeout(poll, 6e3);
|
|
568
571
|
try {
|
|
569
572
|
sub = extrinsic.signSubmitAndWatch(signer, { mortality: { mortal: true, period: 256 } }).subscribe({
|
|
570
573
|
next: (event) => {
|
|
@@ -1405,7 +1408,7 @@ var DotNS = class {
|
|
|
1405
1408
|
console.log(` Minimum commitment age: ${minimumAgeSeconds}s, maximum: ${maximumAgeSeconds}s`);
|
|
1406
1409
|
console.log(` Commitment valid window: ${commitTimestamp + minimumAgeSeconds} \u2013 ${commitTimestamp + maximumAgeSeconds}`);
|
|
1407
1410
|
console.log(` Commitment stored on-chain (timestamp: ${commitTimestamp})`);
|
|
1408
|
-
console.log(` Waiting for on-chain block.timestamp > ${commitTimestamp + minimumAgeSeconds}
|
|
1411
|
+
console.log(` Waiting for on-chain block.timestamp > ${commitTimestamp + minimumAgeSeconds} (timeout ${POLL_TIMEOUT_MS / 1e3}s)`);
|
|
1409
1412
|
const pollDeadline = Date.now() + POLL_TIMEOUT_MS;
|
|
1410
1413
|
while (Date.now() < pollDeadline) {
|
|
1411
1414
|
const nowMs = await this.clientWrapper.client.query.Timestamp.Now.getValue();
|
|
@@ -1425,8 +1428,8 @@ var DotNS = class {
|
|
|
1425
1428
|
}
|
|
1426
1429
|
return;
|
|
1427
1430
|
}
|
|
1428
|
-
const
|
|
1429
|
-
console.log(` Chain time ${chainNowSeconds}
|
|
1431
|
+
const chainSecondsToTarget = Math.max(0, commitTimestamp + minimumAgeSeconds - chainNowSeconds);
|
|
1432
|
+
console.log(` Chain time ${chainNowSeconds} \u2014 need +${chainSecondsToTarget}s more chain progress`);
|
|
1430
1433
|
await new Promise((resolve) => setTimeout(resolve, POLL_INTERVAL_MS));
|
|
1431
1434
|
}
|
|
1432
1435
|
throw new Error(`Commitment still too new after ${POLL_TIMEOUT_MS / 1e3}s of polling chain time. The chain may be stalled.`);
|
|
@@ -1658,24 +1661,21 @@ var DotNS = class {
|
|
|
1658
1661
|
signerFreeBalance
|
|
1659
1662
|
};
|
|
1660
1663
|
}
|
|
1661
|
-
console.log(`
|
|
1662
|
-
|
|
1663
|
-
console.log(` Alias binding exists but ring revision is stale (stored=${aliasState.revision ?? "unknown"}).`);
|
|
1664
|
-
console.log(` Refreshing automatically on testnet\u2026`);
|
|
1665
|
-
console.log(` Estimated reprove fee: ${fmtPas(REPROVE_FEE_ESTIMATE)} ${symbol}. Signer balance: ${fmtPas(signerFreeBalance)} ${symbol} \u2014 proceeding.`);
|
|
1664
|
+
console.log(` Personhood: alias revision stale (stored=${aliasState.revision ?? "unknown"}) \u2014 refreshing on testnet`);
|
|
1665
|
+
console.log(` Estimated fee: ${fmtPas(REPROVE_FEE_ESTIMATE)} ${symbol} (signer balance: ${fmtPas(signerFreeBalance)} ${symbol})`);
|
|
1666
1666
|
setDeployAttribute("deploy.dotns.reprove.auto", "true");
|
|
1667
1667
|
let reproveSucceeded = false;
|
|
1668
1668
|
try {
|
|
1669
|
-
console.log(`
|
|
1669
|
+
console.log(` Submitting reprove_alias_account\u2026`);
|
|
1670
1670
|
const reproveResult = await this.reprove(this._localMnemonic);
|
|
1671
|
-
console.log(`
|
|
1671
|
+
console.log(` Refresh complete (revision ${reproveResult.oldRevision} \u2192 ${reproveResult.newRevision}, block ${reproveResult.blockHash})`);
|
|
1672
1672
|
setDeployAttribute("deploy.dotns.reprove.outcome", "success");
|
|
1673
1673
|
setDeployAttribute("deploy.dotns.reprove.old_revision", String(reproveResult.oldRevision));
|
|
1674
1674
|
setDeployAttribute("deploy.dotns.reprove.new_revision", String(reproveResult.newRevision));
|
|
1675
1675
|
reproveSucceeded = true;
|
|
1676
1676
|
} catch (e) {
|
|
1677
1677
|
const msg = e?.message ?? String(e);
|
|
1678
|
-
console.log(`
|
|
1678
|
+
console.log(` Auto-reprove failed: ${msg}`);
|
|
1679
1679
|
setDeployAttribute("deploy.dotns.reprove.outcome", "failed_submission");
|
|
1680
1680
|
}
|
|
1681
1681
|
if (reproveSucceeded) {
|
|
@@ -2,11 +2,11 @@ import {
|
|
|
2
2
|
classifyErrorArea,
|
|
3
3
|
isInteractive,
|
|
4
4
|
promptYesNo
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-3Z6VK7XP.js";
|
|
6
6
|
import {
|
|
7
7
|
VERSION,
|
|
8
8
|
getCurrentSentryTraceId
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-IJOPI6JC.js";
|
|
10
10
|
|
|
11
11
|
// src/bug-report.ts
|
|
12
12
|
import { execSync, execFileSync } from "child_process";
|
|
@@ -20,10 +20,10 @@ import {
|
|
|
20
20
|
} from "./chunk-S7EM5VMW.js";
|
|
21
21
|
import {
|
|
22
22
|
setDeployContext
|
|
23
|
-
} from "./chunk-
|
|
23
|
+
} from "./chunk-7NRU7N5A.js";
|
|
24
24
|
import {
|
|
25
25
|
probeChunks
|
|
26
|
-
} from "./chunk-
|
|
26
|
+
} from "./chunk-SEMZRS7Q.js";
|
|
27
27
|
import {
|
|
28
28
|
packSection
|
|
29
29
|
} from "./chunk-C2TS5MER.js";
|
|
@@ -34,7 +34,7 @@ import {
|
|
|
34
34
|
parseDomainName,
|
|
35
35
|
popStatusName,
|
|
36
36
|
verifyNonceAdvanced
|
|
37
|
-
} from "./chunk-
|
|
37
|
+
} from "./chunk-4LB5PXBL.js";
|
|
38
38
|
import {
|
|
39
39
|
derivePoolAccounts,
|
|
40
40
|
detectTestnet,
|
|
@@ -56,7 +56,7 @@ import {
|
|
|
56
56
|
truncateAddress,
|
|
57
57
|
withDeploySpan,
|
|
58
58
|
withSpan
|
|
59
|
-
} from "./chunk-
|
|
59
|
+
} from "./chunk-IJOPI6JC.js";
|
|
60
60
|
import {
|
|
61
61
|
DEFAULT_ENV_ID,
|
|
62
62
|
getPopSelfServeConfig,
|
|
@@ -141,7 +141,7 @@ var CHUNK_MORTALITY_PERIOD = 16;
|
|
|
141
141
|
var RETRY_BASE_DELAY_MS = 2e3;
|
|
142
142
|
var RETRY_MAX_DELAY_MS = 15e3;
|
|
143
143
|
var WS_HEARTBEAT_TIMEOUT_MS = 3e5;
|
|
144
|
-
var GRANDPA_NATURAL_WAIT_MS =
|
|
144
|
+
var GRANDPA_NATURAL_WAIT_MS = parseInt(process.env.BULLETIN_GRANDPA_NATURAL_WAIT_MS ?? "90000", 10);
|
|
145
145
|
var GRANDPA_REUPLOAD_POLL_MS = 5e3;
|
|
146
146
|
var GRANDPA_REUPLOAD_TIMEOUT_MS = 6e4;
|
|
147
147
|
var RETRY_BUDGET_MAX_EVENTS = parseInt(process.env.BULLETIN_RETRY_BUDGET_MAX ?? "5", 10);
|
|
@@ -925,9 +925,13 @@ async function storeDirectory(directoryPath, providerOrOptions = {}, password, j
|
|
|
925
925
|
carContent = await encryptContent(carContent, password);
|
|
926
926
|
console.log(` Encrypted: ${(carContent.length / 1024 / 1024).toFixed(2)} MB`);
|
|
927
927
|
}
|
|
928
|
-
const
|
|
929
|
-
|
|
930
|
-
|
|
928
|
+
const carDumpEnv = process.env.BULLETIN_DEPLOY_DUMP_CAR;
|
|
929
|
+
const carDumpOpt = opts.dumpCar;
|
|
930
|
+
if (carDumpEnv !== void 0 || carDumpOpt) {
|
|
931
|
+
const dumpPath = typeof carDumpEnv === "string" && carDumpEnv ? carDumpEnv : typeof carDumpOpt === "string" && carDumpOpt ? carDumpOpt : path.join(path.dirname(directoryPath), `${path.basename(directoryPath)}.bulletin.car`);
|
|
932
|
+
fs.writeFileSync(dumpPath, carContent);
|
|
933
|
+
console.log(` Pre-upload CAR saved to ${dumpPath} (${(carContent.length / 1024 / 1024).toFixed(2)} MB)`);
|
|
934
|
+
}
|
|
931
935
|
const carChunks = chunk(carContent, CHUNK_SIZE);
|
|
932
936
|
const predictedStorageCid = computeStorageCid(carChunks);
|
|
933
937
|
if (opts.onCarReady) await opts.onCarReady(carContent, predictedStorageCid);
|
|
@@ -1200,30 +1204,16 @@ async function storeDirectoryV2(directoryPath, opts = {}) {
|
|
|
1200
1204
|
sampleMemory("merkleize_finalise_end");
|
|
1201
1205
|
return r;
|
|
1202
1206
|
});
|
|
1203
|
-
{
|
|
1204
|
-
const phaseBS1 = phaseB.chunkCids.slice(
|
|
1205
|
-
phaseB.sectionChunkCounts.section0,
|
|
1206
|
-
phaseB.sectionChunkCounts.section0 + phaseB.sectionChunkCounts.section1
|
|
1207
|
-
);
|
|
1208
|
-
if (phaseBS1.length !== phaseA.section1ChunkCids.length) {
|
|
1209
|
-
throw new Error(
|
|
1210
|
-
`INVARIANT FAILED: section-1 drift between phases. Phase A section1ChunkCids.length=${phaseA.section1ChunkCids.length}, Phase B section-1 slice length=${phaseBS1.length}. Section 1 must be byte-identical between phases.`
|
|
1211
|
-
);
|
|
1212
|
-
}
|
|
1213
|
-
for (let i = 0; i < phaseBS1.length; i++) {
|
|
1214
|
-
if (phaseBS1[i] !== phaseA.section1ChunkCids[i]) {
|
|
1215
|
-
throw new Error(
|
|
1216
|
-
`INVARIANT FAILED: section-1 drift between phases at chunk index ${i}. Phase A=${phaseA.section1ChunkCids[i]}, Phase B=${phaseBS1[i]}. Section 1 must be byte-identical between phases.`
|
|
1217
|
-
);
|
|
1218
|
-
}
|
|
1219
|
-
}
|
|
1220
|
-
}
|
|
1221
1207
|
const sizeDecision = checkDeploySize(phaseB.carBytes.length, { allowLargeDeploy: opts.allowLargeDeploy });
|
|
1222
1208
|
if (sizeDecision.kind === "abort") throw new Error(sizeDecision.message);
|
|
1223
1209
|
if (sizeDecision.kind === "warn") console.warn(` \u26A0 ${sizeDecision.message}`);
|
|
1224
|
-
const
|
|
1225
|
-
|
|
1226
|
-
|
|
1210
|
+
const carDumpEnv = process.env.BULLETIN_DEPLOY_DUMP_CAR;
|
|
1211
|
+
const carDumpOpt = opts.dumpCar;
|
|
1212
|
+
if (carDumpEnv !== void 0 || carDumpOpt) {
|
|
1213
|
+
const dumpPath = typeof carDumpEnv === "string" && carDumpEnv ? carDumpEnv : typeof carDumpOpt === "string" && carDumpOpt ? carDumpOpt : path.join(path.dirname(directoryPath), `${path.basename(directoryPath)}.bulletin.car`);
|
|
1214
|
+
fs.writeFileSync(dumpPath, phaseB.carBytes);
|
|
1215
|
+
console.log(` Pre-upload CAR saved to ${dumpPath} (${(phaseB.carBytes.length / 1024 / 1024).toFixed(2)} MB)`);
|
|
1216
|
+
}
|
|
1227
1217
|
const carChunksB = phaseB.chunks;
|
|
1228
1218
|
const carChunkCidsB = phaseB.chunkCids;
|
|
1229
1219
|
const trustedCidsB = new Set(phaseAKnownPresent);
|
|
@@ -1281,12 +1271,14 @@ async function storeDirectoryV2(directoryPath, opts = {}) {
|
|
|
1281
1271
|
const elapsed = Math.round((Date.now() - waitStart) / 1e3);
|
|
1282
1272
|
console.log(` \u2713 All ${grandpaCids.length} chunks finalised (waited ${elapsed}s)`);
|
|
1283
1273
|
} else {
|
|
1284
|
-
const
|
|
1285
|
-
|
|
1286
|
-
|
|
1287
|
-
|
|
1288
|
-
|
|
1289
|
-
}
|
|
1274
|
+
const rootHashCode = 18;
|
|
1275
|
+
const rootChunkLinks = phaseB.chunks.map((c) => ({
|
|
1276
|
+
cid: createCID(c, CID_CONFIG.codec, rootHashCode),
|
|
1277
|
+
len: c.length
|
|
1278
|
+
}));
|
|
1279
|
+
const rootFileData = new UnixFS({ type: "file", blockSizes: rootChunkLinks.map((c) => BigInt(c.len)) });
|
|
1280
|
+
const rootDagNode = dagPB.prepare({ Data: rootFileData.marshal(), Links: rootChunkLinks.map((c) => ({ Name: "", Tsize: c.len, Hash: c.cid })) });
|
|
1281
|
+
const rootDagBytes = dagPB.encode(rootDagNode);
|
|
1290
1282
|
console.log(` ${missingCids.size} chunks still missing after wait \u2014 re-uploading`);
|
|
1291
1283
|
const phaseBChunkByCid = /* @__PURE__ */ new Map();
|
|
1292
1284
|
for (let i = 0; i < phaseB.chunkCids.length; i++) {
|
|
@@ -1296,14 +1288,29 @@ async function storeDirectoryV2(directoryPath, opts = {}) {
|
|
|
1296
1288
|
const reuploadList = [...missingCids];
|
|
1297
1289
|
for (let i = 0; i < reuploadList.length; i++) {
|
|
1298
1290
|
const cid = reuploadList[i];
|
|
1299
|
-
const chunkBytes = phaseBChunkByCid.get(cid);
|
|
1300
|
-
if (!chunkBytes) {
|
|
1301
|
-
throw new Error(
|
|
1302
|
-
`Deploy verification failed: chunk ${cid.slice(0, 20)}\u2026 missing at finalised head and its bytes are not in phaseB.chunks (cannot re-upload). This indicates an internal state issue.`
|
|
1303
|
-
);
|
|
1304
|
-
}
|
|
1305
1291
|
const freshNonce = await fetchNonceFn(BULLETIN_ENDPOINTS, phaseALiveProvider.ss58);
|
|
1306
|
-
|
|
1292
|
+
if (cid === storageCid) {
|
|
1293
|
+
const rootTx = phaseALiveProvider.unsafeApi.tx.TransactionStorage.store_with_cid_config({
|
|
1294
|
+
cid: { codec: BigInt(112), hashing: toHashingEnum(rootHashCode) },
|
|
1295
|
+
data: rootDagBytes
|
|
1296
|
+
});
|
|
1297
|
+
await watchTransaction(rootTx, phaseALiveProvider.signer, { mortality: { mortal: true, period: 256 }, nonce: freshNonce }, () => storageCid, {
|
|
1298
|
+
label: "root-reupload",
|
|
1299
|
+
rpc: BULLETIN_ENDPOINTS,
|
|
1300
|
+
senderSS58: phaseALiveProvider.ss58,
|
|
1301
|
+
expectedNonce: freshNonce,
|
|
1302
|
+
timeoutMs: CHUNK_TIMEOUT_MS,
|
|
1303
|
+
fetchNonce: phaseALiveProvider.fetchNonce
|
|
1304
|
+
});
|
|
1305
|
+
} else {
|
|
1306
|
+
const chunkBytes = phaseBChunkByCid.get(cid);
|
|
1307
|
+
if (!chunkBytes) {
|
|
1308
|
+
throw new Error(
|
|
1309
|
+
`Deploy verification failed: chunk ${cid.slice(0, 20)}\u2026 missing at finalised head and its bytes are not in phaseB.chunks (cannot re-upload). This indicates an internal state issue.`
|
|
1310
|
+
);
|
|
1311
|
+
}
|
|
1312
|
+
await storeChunk(phaseALiveProvider.unsafeApi, phaseALiveProvider.signer, chunkBytes, freshNonce, phaseALiveProvider.ss58, { fetchNonce: phaseALiveProvider.fetchNonce });
|
|
1313
|
+
}
|
|
1307
1314
|
reuploadCount++;
|
|
1308
1315
|
console.log(` [${i + 1}/${reuploadList.length}] re-uploaded ${cid.slice(0, 20)}\u2026 (nonce ${freshNonce})`);
|
|
1309
1316
|
}
|
|
@@ -1701,6 +1708,7 @@ async function deploy(content, domainName = null, options = {}) {
|
|
|
1701
1708
|
reproducibleSource: options.reproducibleSource,
|
|
1702
1709
|
domain: name,
|
|
1703
1710
|
gateway: envIpfs,
|
|
1711
|
+
dumpCar: options.dumpCar,
|
|
1704
1712
|
onCarReady: (carBytes, predictedCid) => {
|
|
1705
1713
|
if (options.ghPagesMirror) {
|
|
1706
1714
|
mirrorPromise = mirrorToGitHubPages({
|
package/dist/chunk-probe.js
CHANGED
|
@@ -5,9 +5,9 @@ import {
|
|
|
5
5
|
_decodeStorageValue,
|
|
6
6
|
_resetProbeSession,
|
|
7
7
|
probeChunks
|
|
8
|
-
} from "./chunk-
|
|
9
|
-
import "./chunk-
|
|
10
|
-
import "./chunk-
|
|
8
|
+
} from "./chunk-SEMZRS7Q.js";
|
|
9
|
+
import "./chunk-IJOPI6JC.js";
|
|
10
|
+
import "./chunk-77OAX2MH.js";
|
|
11
11
|
export {
|
|
12
12
|
ChainProbeCrossValidationError,
|
|
13
13
|
ChainProbeMetadataError,
|
package/dist/deploy.d.ts
CHANGED
|
@@ -141,6 +141,14 @@ interface StoreDirectoryOptions {
|
|
|
141
141
|
* before falling through to the IPFS gateway.
|
|
142
142
|
*/
|
|
143
143
|
domain?: string;
|
|
144
|
+
/**
|
|
145
|
+
* Opt-in: write the pre-upload CAR file to disk after merkleization.
|
|
146
|
+
* - `true` → write to `<buildDir>.bulletin.car` (default path).
|
|
147
|
+
* - `string` → write to that explicit path.
|
|
148
|
+
* - omitted / `false` → no file written (default).
|
|
149
|
+
* Also honoured when `BULLETIN_DEPLOY_DUMP_CAR` env var is set (back-compat).
|
|
150
|
+
*/
|
|
151
|
+
dumpCar?: string | boolean;
|
|
144
152
|
}
|
|
145
153
|
declare function storeDirectory(directoryPath: string, providerOrOptions?: ExistingProvider | StoreDirectoryOptions, password?: string, jsMerkle?: boolean): Promise<{
|
|
146
154
|
storageCid: string;
|
|
@@ -230,6 +238,15 @@ interface DeployOptions {
|
|
|
230
238
|
bulletinEndpoints?: string[];
|
|
231
239
|
/** Pre-resolved asset-hub endpoints. Same escape-hatch semantics. */
|
|
232
240
|
assetHubEndpoints?: string[];
|
|
241
|
+
/**
|
|
242
|
+
* Opt-in: write the pre-upload CAR file to disk after merkleization.
|
|
243
|
+
* - `true` → write to `<buildDir>.bulletin.car` (default path).
|
|
244
|
+
* - `string` → write to that explicit path.
|
|
245
|
+
* - omitted / `false` → no file written (default).
|
|
246
|
+
* Also honoured when `BULLETIN_DEPLOY_DUMP_CAR` env var is set (back-compat).
|
|
247
|
+
* CLI: --dump-car[=<path>]
|
|
248
|
+
*/
|
|
249
|
+
dumpCar?: string | boolean;
|
|
233
250
|
}
|
|
234
251
|
declare function resolveDotnsConnectOptions(options: Pick<DeployOptions, "mnemonic" | "derivationPath" | "signer" | "signerAddress">, assetHubEndpoints?: string[], autoAccountMapping?: boolean, contracts?: Record<string, string>, nativeToEthRatio?: bigint, environmentId?: string, popSelfServe?: PopSelfServeConfig | null, registerStorageDeposit?: bigint): {
|
|
235
252
|
signer?: PolkadotSigner;
|
package/dist/deploy.js
CHANGED
|
@@ -32,19 +32,19 @@ import {
|
|
|
32
32
|
storeDirectory,
|
|
33
33
|
storeDirectoryV2,
|
|
34
34
|
storeFile
|
|
35
|
-
} from "./chunk-
|
|
35
|
+
} from "./chunk-OHAO2BPD.js";
|
|
36
36
|
import "./chunk-KHVTYIIX.js";
|
|
37
37
|
import "./chunk-KOSF5FDO.js";
|
|
38
38
|
import "./chunk-FZWJV5AD.js";
|
|
39
39
|
import "./chunk-S7EM5VMW.js";
|
|
40
|
-
import "./chunk-
|
|
41
|
-
import "./chunk-
|
|
42
|
-
import "./chunk-
|
|
40
|
+
import "./chunk-7NRU7N5A.js";
|
|
41
|
+
import "./chunk-3Z6VK7XP.js";
|
|
42
|
+
import "./chunk-SEMZRS7Q.js";
|
|
43
43
|
import "./chunk-C2TS5MER.js";
|
|
44
|
-
import "./chunk-
|
|
44
|
+
import "./chunk-4LB5PXBL.js";
|
|
45
45
|
import "./chunk-QMYW3D6E.js";
|
|
46
|
-
import "./chunk-
|
|
47
|
-
import "./chunk-
|
|
46
|
+
import "./chunk-IJOPI6JC.js";
|
|
47
|
+
import "./chunk-77OAX2MH.js";
|
|
48
48
|
import "./chunk-MGU5I7H5.js";
|
|
49
49
|
import {
|
|
50
50
|
EXIT_CODE_NO_RETRY,
|
package/dist/dotns.js
CHANGED
|
@@ -41,10 +41,10 @@ import {
|
|
|
41
41
|
stripTrailingDigits,
|
|
42
42
|
validateDomainLabel,
|
|
43
43
|
verifyNonceAdvanced
|
|
44
|
-
} from "./chunk-
|
|
44
|
+
} from "./chunk-4LB5PXBL.js";
|
|
45
45
|
import "./chunk-QMYW3D6E.js";
|
|
46
|
-
import "./chunk-
|
|
47
|
-
import "./chunk-
|
|
46
|
+
import "./chunk-IJOPI6JC.js";
|
|
47
|
+
import "./chunk-77OAX2MH.js";
|
|
48
48
|
import "./chunk-MGU5I7H5.js";
|
|
49
49
|
import "./chunk-ZOC4GITL.js";
|
|
50
50
|
export {
|
package/dist/index.js
CHANGED
|
@@ -2,7 +2,7 @@ import {
|
|
|
2
2
|
deploy,
|
|
3
3
|
merkleizeJS,
|
|
4
4
|
merkleizeWithStableOrder
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-OHAO2BPD.js";
|
|
6
6
|
import {
|
|
7
7
|
computeStats,
|
|
8
8
|
renderSummary,
|
|
@@ -24,18 +24,18 @@ import {
|
|
|
24
24
|
isVolatilePath,
|
|
25
25
|
parseManifest
|
|
26
26
|
} from "./chunk-S7EM5VMW.js";
|
|
27
|
-
import "./chunk-
|
|
28
|
-
import "./chunk-
|
|
27
|
+
import "./chunk-7NRU7N5A.js";
|
|
28
|
+
import "./chunk-3Z6VK7XP.js";
|
|
29
29
|
import {
|
|
30
30
|
probeChunks
|
|
31
|
-
} from "./chunk-
|
|
31
|
+
} from "./chunk-SEMZRS7Q.js";
|
|
32
32
|
import "./chunk-C2TS5MER.js";
|
|
33
33
|
import {
|
|
34
34
|
DEFAULT_MNEMONIC,
|
|
35
35
|
DotNS,
|
|
36
36
|
parseDomainName,
|
|
37
37
|
sanitizeDomainLabel
|
|
38
|
-
} from "./chunk-
|
|
38
|
+
} from "./chunk-4LB5PXBL.js";
|
|
39
39
|
import {
|
|
40
40
|
bootstrapPool,
|
|
41
41
|
derivePoolAccounts,
|
|
@@ -43,7 +43,7 @@ import {
|
|
|
43
43
|
fetchPoolAuthorizations,
|
|
44
44
|
selectAccount
|
|
45
45
|
} from "./chunk-QMYW3D6E.js";
|
|
46
|
-
import "./chunk-
|
|
46
|
+
import "./chunk-IJOPI6JC.js";
|
|
47
47
|
import {
|
|
48
48
|
VERSION,
|
|
49
49
|
loadRunState,
|
|
@@ -53,7 +53,7 @@ import {
|
|
|
53
53
|
shouldSkipStaleWarning,
|
|
54
54
|
stateFilePath,
|
|
55
55
|
writeRunState
|
|
56
|
-
} from "./chunk-
|
|
56
|
+
} from "./chunk-77OAX2MH.js";
|
|
57
57
|
import {
|
|
58
58
|
DEFAULT_ENV_ID,
|
|
59
59
|
defaultBundledPath,
|
package/dist/memory-report.js
CHANGED
package/dist/merkle.js
CHANGED
|
@@ -6,19 +6,19 @@ import {
|
|
|
6
6
|
merkleizeKuboBackend,
|
|
7
7
|
merkleizeWithStableOrder,
|
|
8
8
|
rebuildOrderedCarFromBytes
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-OHAO2BPD.js";
|
|
10
10
|
import "./chunk-KHVTYIIX.js";
|
|
11
11
|
import "./chunk-KOSF5FDO.js";
|
|
12
12
|
import "./chunk-FZWJV5AD.js";
|
|
13
13
|
import "./chunk-S7EM5VMW.js";
|
|
14
|
-
import "./chunk-
|
|
15
|
-
import "./chunk-
|
|
16
|
-
import "./chunk-
|
|
14
|
+
import "./chunk-7NRU7N5A.js";
|
|
15
|
+
import "./chunk-3Z6VK7XP.js";
|
|
16
|
+
import "./chunk-SEMZRS7Q.js";
|
|
17
17
|
import "./chunk-C2TS5MER.js";
|
|
18
|
-
import "./chunk-
|
|
18
|
+
import "./chunk-4LB5PXBL.js";
|
|
19
19
|
import "./chunk-QMYW3D6E.js";
|
|
20
|
-
import "./chunk-
|
|
21
|
-
import "./chunk-
|
|
20
|
+
import "./chunk-IJOPI6JC.js";
|
|
21
|
+
import "./chunk-77OAX2MH.js";
|
|
22
22
|
import "./chunk-MGU5I7H5.js";
|
|
23
23
|
import "./chunk-ZOC4GITL.js";
|
|
24
24
|
import "./chunk-HOTQDYHD.js";
|
|
@@ -21,10 +21,10 @@ import {
|
|
|
21
21
|
} from "../chunk-T7EEVWNU.js";
|
|
22
22
|
import {
|
|
23
23
|
WS_HEARTBEAT_TIMEOUT_MS
|
|
24
|
-
} from "../chunk-
|
|
24
|
+
} from "../chunk-4LB5PXBL.js";
|
|
25
25
|
import "../chunk-QMYW3D6E.js";
|
|
26
|
-
import "../chunk-
|
|
27
|
-
import "../chunk-
|
|
26
|
+
import "../chunk-IJOPI6JC.js";
|
|
27
|
+
import "../chunk-77OAX2MH.js";
|
|
28
28
|
import {
|
|
29
29
|
loadEnvironments
|
|
30
30
|
} from "../chunk-MGU5I7H5.js";
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import {
|
|
2
2
|
WS_HEARTBEAT_TIMEOUT_MS
|
|
3
|
-
} from "../chunk-
|
|
3
|
+
} from "../chunk-4LB5PXBL.js";
|
|
4
4
|
import "../chunk-QMYW3D6E.js";
|
|
5
|
-
import "../chunk-
|
|
6
|
-
import "../chunk-
|
|
5
|
+
import "../chunk-IJOPI6JC.js";
|
|
6
|
+
import "../chunk-77OAX2MH.js";
|
|
7
7
|
import {
|
|
8
8
|
loadEnvironments
|
|
9
9
|
} from "../chunk-MGU5I7H5.js";
|
package/dist/run-state.js
CHANGED
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-3Z6VK7XP.js";
|
|
15
|
+
import "./chunk-IJOPI6JC.js";
|
|
16
|
+
import "./chunk-77OAX2MH.js";
|
|
17
17
|
export {
|
|
18
18
|
assessVersion,
|
|
19
19
|
checkNodeVersion,
|