bulletin-deploy 0.14.1 → 0.14.2-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/assets/environments.json +3 -0
- package/bin/bulletin-bootstrap +7 -0
- package/dist/auth-config.js +4 -4
- package/dist/bug-report.js +4 -4
- package/dist/chain-health.d.ts +139 -0
- package/dist/chain-health.js +14 -0
- package/dist/{chunk-YDV7M3V2.js → chunk-5ZSV63VD.js} +3 -3
- package/dist/{chunk-L7DCLCCK.js → chunk-6FNSPCYP.js} +1 -1
- package/dist/{chunk-5NQHQFMH.js → chunk-D3QNCTHG.js} +1 -1
- package/dist/{chunk-NLRGFZMQ.js → chunk-EDA4LT7U.js} +17 -1
- package/dist/{chunk-5ZR5L37D.js → chunk-EUZGNOKE.js} +4 -4
- package/dist/{chunk-AB62NERW.js → chunk-GR3EXT5M.js} +15 -8
- package/dist/{chunk-DAFCH55Q.js → chunk-HWVSJAZ2.js} +2 -2
- package/dist/{chunk-4AEFFDHP.js → chunk-IJUKTHEP.js} +8 -2
- package/dist/{chunk-O5TJWVGZ.js → chunk-K2HOSXFH.js} +7 -6
- package/dist/{chunk-ALTGYSBJ.js → chunk-MMRXAITP.js} +1 -1
- package/dist/chunk-QONJLVCR.js +226 -0
- package/dist/{chunk-PQK6XT6Z.js → chunk-RVDPXR2B.js} +8 -8
- package/dist/{chunk-42BNXFWF.js → chunk-WTKBLLMU.js} +39 -36
- package/dist/{chunk-E6J46GNK.js → chunk-XQHRKK7M.js} +5 -1
- package/dist/chunk-probe.js +3 -3
- package/dist/commands/login.js +13 -12
- package/dist/commands/logout.js +5 -5
- package/dist/commands/transfer.js +6 -5
- package/dist/commands/whoami.js +4 -4
- package/dist/deploy-actors.js +8 -7
- package/dist/deploy.js +13 -12
- package/dist/dotns.d.ts +2 -0
- package/dist/dotns.js +6 -5
- package/dist/environments.d.ts +2 -0
- package/dist/environments.js +1 -1
- package/dist/index.js +23 -22
- package/dist/manifest/publish.js +14 -13
- package/dist/memory-report.js +2 -2
- package/dist/merkle.js +13 -12
- package/dist/personhood/bootstrap.js +6 -5
- package/dist/personhood/people-client.js +6 -5
- package/dist/pool.d.ts +2 -0
- package/dist/pool.js +1 -1
- package/dist/run-state.js +1 -1
- package/dist/sss-allowance-cache.js +5 -5
- package/dist/storage-signer.js +13 -12
- package/dist/telemetry.d.ts +23 -1
- package/dist/telemetry.js +4 -2
- package/dist/version-check.js +3 -3
- package/package.json +7 -6
- package/tools/release-retry-wrapper.mjs +7 -0
package/assets/environments.json
CHANGED
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
"network": "testnet",
|
|
7
7
|
"description": "Product Preview net, used by Product Teams",
|
|
8
8
|
"bulletinAutoAuthorize": true,
|
|
9
|
+
"bulletinAuthorizer": "//Eve",
|
|
9
10
|
"e2eEligible": true,
|
|
10
11
|
"backend": "https://polkadot-app-stg.parity.io/",
|
|
11
12
|
"ipfs": "https://previewnet.substrate.dev",
|
|
@@ -43,6 +44,7 @@
|
|
|
43
44
|
"description": "Previewnet bare-Rust PolkaVM DotNS deployment",
|
|
44
45
|
"ipfs": "https://previewnet.substrate.dev",
|
|
45
46
|
"webGateway": "testnet.li",
|
|
47
|
+
"bulletinAuthorizer": "//Eve",
|
|
46
48
|
"autoAccountMapping": true,
|
|
47
49
|
"nativeToEthRatio": 100000000,
|
|
48
50
|
"registerStorageDeposit": 2000000000000,
|
|
@@ -99,6 +101,7 @@
|
|
|
99
101
|
"network": "testnet",
|
|
100
102
|
"description": "Next iteration of the Paseo Next testnet",
|
|
101
103
|
"bulletinAutoAuthorize": true,
|
|
104
|
+
"bulletinAuthorizer": "//Alice",
|
|
102
105
|
"e2eEligible": true,
|
|
103
106
|
"backend": "https://identity-backend-next.parity-testnet.parity.io",
|
|
104
107
|
"ipfs": "https://paseo-bulletin-next-ipfs.polkadot.io",
|
package/bin/bulletin-bootstrap
CHANGED
|
@@ -117,6 +117,13 @@ if (flags.env) {
|
|
|
117
117
|
|
|
118
118
|
bootstrapOpts.bulletinAuthorizeV2 = envEntry.bulletinAuthorizeV2 ?? false;
|
|
119
119
|
|
|
120
|
+
// #1209: which key holds TransactionStorage authorizer rights on this env's
|
|
121
|
+
// Bulletin chain. Not always //Alice — previewnet's sole AllowedAuthorizers
|
|
122
|
+
// entry is //Eve. An explicit --authorizer still wins (set above).
|
|
123
|
+
if (envEntry.bulletinAuthorizer) {
|
|
124
|
+
bootstrapOpts.envAuthorizer = envEntry.bulletinAuthorizer;
|
|
125
|
+
}
|
|
126
|
+
|
|
120
127
|
if (flags.preCheck) {
|
|
121
128
|
// #1059: widen the "needs authorization" threshold to 24h-before-expiry,
|
|
122
129
|
// and hard-gate the actual write to environments cleared for it. This is
|
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-EUZGNOKE.js";
|
|
13
13
|
import "./chunk-TSPERKUS.js";
|
|
14
|
-
import "./chunk-
|
|
15
|
-
import "./chunk-O5TJWVGZ.js";
|
|
16
|
-
import "./chunk-E6J46GNK.js";
|
|
14
|
+
import "./chunk-XQHRKK7M.js";
|
|
17
15
|
import "./chunk-ZOC4GITL.js";
|
|
16
|
+
import "./chunk-EDA4LT7U.js";
|
|
17
|
+
import "./chunk-K2HOSXFH.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-5ZSV63VD.js";
|
|
14
|
+
import "./chunk-6FNSPCYP.js";
|
|
15
|
+
import "./chunk-EDA4LT7U.js";
|
|
16
|
+
import "./chunk-K2HOSXFH.js";
|
|
17
17
|
export {
|
|
18
18
|
buildCliFlagsSummary,
|
|
19
19
|
buildLabels,
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Chain-health sampling — measures what the chain was doing underneath a deploy.
|
|
3
|
+
*
|
|
4
|
+
* Motivation: deploy latency drifted ~17% on paseo-next-v2 over the second half
|
|
5
|
+
* of July 2026 while the Bulletin storage phase stayed flat, pointing at Asset
|
|
6
|
+
* Hub extrinsic inclusion. That diagnosis had to be reconstructed by subtracting
|
|
7
|
+
* child-span durations after the fact, because we emit nothing about the chain
|
|
8
|
+
* itself. This module closes that gap.
|
|
9
|
+
*
|
|
10
|
+
* Design note — why interval spans rather than numeric attributes:
|
|
11
|
+
* `@sentry/node` user-defined attributes come back string-typed in EAP no matter
|
|
12
|
+
* how they're set, so `avg()`/`p95()` refuse to run on them (see the numeric
|
|
13
|
+
* attribute caveat in CLAUDE.md). `span.duration` is a built-in numeric column
|
|
14
|
+
* and does aggregate. All three signals here are genuinely elapsed wall-clock
|
|
15
|
+
* intervals, so encoding each as a span whose duration IS the measurement is
|
|
16
|
+
* honest — nothing synthetic — and it is the only shape that gives us
|
|
17
|
+
* `p50(span.duration)` charts.
|
|
18
|
+
*/
|
|
19
|
+
/** Which chain a sampler is watching. Kept to the two that bound deploy time. */
|
|
20
|
+
type ChainHealthChainId = "bulletin" | "asset-hub";
|
|
21
|
+
/**
|
|
22
|
+
* Minimal slice of papi's PolkadotClient that the sampler needs. Declared
|
|
23
|
+
* structurally rather than importing PolkadotClient so tests can drive the
|
|
24
|
+
* sampler with a scripted block stream and no chain.
|
|
25
|
+
*/
|
|
26
|
+
interface ChainHealthClient {
|
|
27
|
+
blocks$: {
|
|
28
|
+
subscribe(observer: {
|
|
29
|
+
next: (block: {
|
|
30
|
+
hash: string;
|
|
31
|
+
number: number;
|
|
32
|
+
}) => void;
|
|
33
|
+
error?: (e: unknown) => void;
|
|
34
|
+
}): {
|
|
35
|
+
unsubscribe(): void;
|
|
36
|
+
};
|
|
37
|
+
};
|
|
38
|
+
finalizedBlock$: {
|
|
39
|
+
subscribe(observer: {
|
|
40
|
+
next: (block: {
|
|
41
|
+
hash: string;
|
|
42
|
+
number: number;
|
|
43
|
+
}) => void;
|
|
44
|
+
error?: (e: unknown) => void;
|
|
45
|
+
}): {
|
|
46
|
+
unsubscribe(): void;
|
|
47
|
+
};
|
|
48
|
+
};
|
|
49
|
+
getBlockHeader(hash: string): Promise<unknown>;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Blocks per measurement window. 10 smooths per-block jitter without delaying
|
|
53
|
+
* the first sample past a median-length deploy.
|
|
54
|
+
*/
|
|
55
|
+
declare const DEFAULT_WINDOW_BLOCKS = 10;
|
|
56
|
+
/**
|
|
57
|
+
* Hard cap on spans emitted per sampler, per deploy. A pathological multi-hour
|
|
58
|
+
* deploy must not emit thousands. Hitting it is reported, never silent.
|
|
59
|
+
*/
|
|
60
|
+
declare const MAX_SPANS_PER_SAMPLER = 60;
|
|
61
|
+
/**
|
|
62
|
+
* Strip a wss:// endpoint down to its host. The endpoints in environments.json
|
|
63
|
+
* carry no credentials today; host-only keeps it that way by construction and
|
|
64
|
+
* keeps attribute cardinality at a handful of values.
|
|
65
|
+
*/
|
|
66
|
+
declare function endpointHost(endpoint: string): string;
|
|
67
|
+
/**
|
|
68
|
+
* Watches one chain and emits `chain.health.*` interval spans.
|
|
69
|
+
*
|
|
70
|
+
* Lifecycle is attach/detach rather than a one-shot start/stop because the
|
|
71
|
+
* Bulletin client is destroyed and recreated mid-deploy during WS-halt
|
|
72
|
+
* recovery (deploy.ts) and the Asset Hub client is recreated by
|
|
73
|
+
* `recreateReviveClient` (dotns.ts, the #1131 retry path). Each recreation
|
|
74
|
+
* re-attaches; the in-flight window is discarded rather than emitted, because
|
|
75
|
+
* a window spanning a reconnect measures our outage, not the chain's block
|
|
76
|
+
* rate, and would silently poison the metric this exists to provide.
|
|
77
|
+
*/
|
|
78
|
+
declare class ChainHealthSampler {
|
|
79
|
+
private readonly chainId;
|
|
80
|
+
private readonly windowBlocks;
|
|
81
|
+
private host;
|
|
82
|
+
private blocksSub;
|
|
83
|
+
private finalizedSub;
|
|
84
|
+
/** Wall-clock of the block that opened the current window. */
|
|
85
|
+
private windowStartMs;
|
|
86
|
+
private windowStartBlock;
|
|
87
|
+
/** blockNumber -> first-seen wall clock, FIFO-evicted at MAX_TRACKED_BLOCKS. */
|
|
88
|
+
private firstSeen;
|
|
89
|
+
private spansEmitted;
|
|
90
|
+
private capReported;
|
|
91
|
+
/** Set once a window closes, so exactly one ping is issued per window. */
|
|
92
|
+
private pingInFlight;
|
|
93
|
+
/**
|
|
94
|
+
* True while `blocks$.subscribe()` is replaying history.
|
|
95
|
+
*
|
|
96
|
+
* papi documents that on subscribe it synchronously emits the latest
|
|
97
|
+
* finalized block and every known descendant. Those arrive microseconds
|
|
98
|
+
* apart, so letting them close a window would report a near-zero elapsed
|
|
99
|
+
* time and mark the chain as impossibly fast — corrupting the exact metric
|
|
100
|
+
* this module exists to produce. Replayed blocks still record first-seen
|
|
101
|
+
* times (finality lag needs them) and still move the window anchor forward,
|
|
102
|
+
* so timing starts from the moment we caught up rather than in stale history.
|
|
103
|
+
*/
|
|
104
|
+
private inReplay;
|
|
105
|
+
constructor(chainId: ChainHealthChainId, windowBlocks?: number);
|
|
106
|
+
/**
|
|
107
|
+
* Subscribe to a (re)created client. Safe to call repeatedly — an existing
|
|
108
|
+
* subscription is torn down first. Never throws: a sampler failure must not
|
|
109
|
+
* be able to fail a deploy.
|
|
110
|
+
*/
|
|
111
|
+
attach(client: ChainHealthClient, endpoint: string): void;
|
|
112
|
+
/** Unsubscribe and drop the partial window. Idempotent. */
|
|
113
|
+
detach(): void;
|
|
114
|
+
/**
|
|
115
|
+
* Detach and reset per-deploy state. Call from the deploy's teardown.
|
|
116
|
+
*
|
|
117
|
+
* Resetting the span budget here (rather than in attach()) is deliberate.
|
|
118
|
+
* attach() also runs on mid-deploy reconnects, where clearing the counter
|
|
119
|
+
* would defeat the cap; stop() runs exactly once per deploy. deploy.ts holds
|
|
120
|
+
* its Bulletin sampler at module scope, so without this a second deploy() in
|
|
121
|
+
* the same process — playground-cli consumes deploy() as a library — would
|
|
122
|
+
* inherit the first deploy's exhausted budget and emit nothing.
|
|
123
|
+
*/
|
|
124
|
+
stop(): void;
|
|
125
|
+
/** True while subscribed — used by tests and by re-attach guards. */
|
|
126
|
+
get attached(): boolean;
|
|
127
|
+
private resetWindow;
|
|
128
|
+
private atCap;
|
|
129
|
+
private onBlock;
|
|
130
|
+
private onFinalized;
|
|
131
|
+
/**
|
|
132
|
+
* Time one `getBlockHeader` round-trip. Separates "the chain is producing
|
|
133
|
+
* blocks slowly" from "our link to this endpoint is slow" — the endpoints are
|
|
134
|
+
* load-balanced, so those are genuinely different failures.
|
|
135
|
+
*/
|
|
136
|
+
private ping;
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
export { type ChainHealthChainId, type ChainHealthClient, ChainHealthSampler, DEFAULT_WINDOW_BLOCKS, MAX_SPANS_PER_SAMPLER, endpointHost };
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import {
|
|
2
|
+
ChainHealthSampler,
|
|
3
|
+
DEFAULT_WINDOW_BLOCKS,
|
|
4
|
+
MAX_SPANS_PER_SAMPLER,
|
|
5
|
+
endpointHost
|
|
6
|
+
} from "./chunk-QONJLVCR.js";
|
|
7
|
+
import "./chunk-EDA4LT7U.js";
|
|
8
|
+
import "./chunk-K2HOSXFH.js";
|
|
9
|
+
export {
|
|
10
|
+
ChainHealthSampler,
|
|
11
|
+
DEFAULT_WINDOW_BLOCKS,
|
|
12
|
+
MAX_SPANS_PER_SAMPLER,
|
|
13
|
+
endpointHost
|
|
14
|
+
};
|
|
@@ -2,15 +2,15 @@ import {
|
|
|
2
2
|
classifyErrorArea,
|
|
3
3
|
isInteractive,
|
|
4
4
|
promptYesNo
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-6FNSPCYP.js";
|
|
6
6
|
import {
|
|
7
7
|
VERSION,
|
|
8
8
|
getCurrentSentryTraceId,
|
|
9
9
|
resolveIssueRepoSlug
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-EDA4LT7U.js";
|
|
11
11
|
import {
|
|
12
12
|
package_default
|
|
13
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-K2HOSXFH.js";
|
|
14
14
|
|
|
15
15
|
// src/bug-report.ts
|
|
16
16
|
import { execSync, execFileSync } from "child_process";
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
package_default,
|
|
3
3
|
writeRunState
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-K2HOSXFH.js";
|
|
5
5
|
|
|
6
6
|
// src/memory-report.ts
|
|
7
7
|
import * as fs2 from "fs";
|
|
@@ -660,6 +660,21 @@ function setDeploySentryTag(key, value) {
|
|
|
660
660
|
function markCodePath(id) {
|
|
661
661
|
setDeployAttribute(`code.path.${id}`, "true");
|
|
662
662
|
}
|
|
663
|
+
function emitIntervalSpan(op, name, startMs, endMs, attributes) {
|
|
664
|
+
if (!Sentry || !deployRootSpan) return;
|
|
665
|
+
try {
|
|
666
|
+
const span = Sentry.startInactiveSpan({
|
|
667
|
+
op,
|
|
668
|
+
name,
|
|
669
|
+
startTime: startMs,
|
|
670
|
+
parentSpan: deployRootSpan,
|
|
671
|
+
attributes,
|
|
672
|
+
onlyIfParent: false
|
|
673
|
+
});
|
|
674
|
+
span.end(endMs >= startMs ? endMs : startMs);
|
|
675
|
+
} catch {
|
|
676
|
+
}
|
|
677
|
+
}
|
|
663
678
|
function captureWarning(message, context) {
|
|
664
679
|
if (!Sentry) return;
|
|
665
680
|
try {
|
|
@@ -842,6 +857,7 @@ export {
|
|
|
842
857
|
getCurrentSentryTraceId,
|
|
843
858
|
setDeploySentryTag,
|
|
844
859
|
markCodePath,
|
|
860
|
+
emitIntervalSpan,
|
|
845
861
|
captureWarning,
|
|
846
862
|
flush
|
|
847
863
|
};
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import {
|
|
2
2
|
CLI_NAME
|
|
3
3
|
} from "./chunk-TSPERKUS.js";
|
|
4
|
-
import {
|
|
5
|
-
VERSION
|
|
6
|
-
} from "./chunk-NLRGFZMQ.js";
|
|
7
4
|
import {
|
|
8
5
|
loadEnvironments
|
|
9
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-XQHRKK7M.js";
|
|
7
|
+
import {
|
|
8
|
+
VERSION
|
|
9
|
+
} from "./chunk-EDA4LT7U.js";
|
|
10
10
|
|
|
11
11
|
// src/auth-config.ts
|
|
12
12
|
import { existsSync, readdirSync } from "fs";
|
|
@@ -3,7 +3,16 @@ import {
|
|
|
3
3
|
} from "./chunk-SI2ZUOYD.js";
|
|
4
4
|
import {
|
|
5
5
|
isTestnetSpecName
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-IJUKTHEP.js";
|
|
7
|
+
import {
|
|
8
|
+
validateContractAddresses
|
|
9
|
+
} from "./chunk-XQHRKK7M.js";
|
|
10
|
+
import {
|
|
11
|
+
NonRetryableError
|
|
12
|
+
} from "./chunk-ZOC4GITL.js";
|
|
13
|
+
import {
|
|
14
|
+
ChainHealthSampler
|
|
15
|
+
} from "./chunk-QONJLVCR.js";
|
|
7
16
|
import {
|
|
8
17
|
captureWarning,
|
|
9
18
|
markCodePath,
|
|
@@ -11,13 +20,7 @@ import {
|
|
|
11
20
|
setDeploySentryTag,
|
|
12
21
|
truncateAddress,
|
|
13
22
|
withSpan
|
|
14
|
-
} from "./chunk-
|
|
15
|
-
import {
|
|
16
|
-
validateContractAddresses
|
|
17
|
-
} from "./chunk-E6J46GNK.js";
|
|
18
|
-
import {
|
|
19
|
-
NonRetryableError
|
|
20
|
-
} from "./chunk-ZOC4GITL.js";
|
|
23
|
+
} from "./chunk-EDA4LT7U.js";
|
|
21
24
|
|
|
22
25
|
// src/dotns.ts
|
|
23
26
|
import crypto from "crypto";
|
|
@@ -1238,6 +1241,8 @@ var DotNS = class {
|
|
|
1238
1241
|
_phoneSignatureTotal = 0;
|
|
1239
1242
|
/** Running attempt counter per label for re-sign detection. Reset at connect/disconnect. */
|
|
1240
1243
|
_phoneSignatureAttempts = /* @__PURE__ */ new Map();
|
|
1244
|
+
/** Samples Asset Hub block rate / finality lag / RPC latency for the life of this connection. */
|
|
1245
|
+
chainHealth = new ChainHealthSampler("asset-hub");
|
|
1241
1246
|
// Test-only seam: consumed once by classifyAliasAccountState() then cleared.
|
|
1242
1247
|
// Mirrors the __setDeployRootSpanForTest / __setSentryForTest pattern.
|
|
1243
1248
|
_classifyOverrideForTest = null;
|
|
@@ -1285,6 +1290,7 @@ var DotNS = class {
|
|
|
1285
1290
|
}
|
|
1286
1291
|
this.client = createClient(getWsProvider(endpoint, { heartbeatTimeout: WS_HEARTBEAT_TIMEOUT_MS }));
|
|
1287
1292
|
this.clientWrapper = new ReviveClientWrapper(this.client.getUnsafeApi());
|
|
1293
|
+
this.chainHealth.attach(this.client, endpoint);
|
|
1288
1294
|
}
|
|
1289
1295
|
async connect(options = {}) {
|
|
1290
1296
|
if (options.assetHubEndpoints && options.assetHubEndpoints.length > 0) {
|
|
@@ -3067,6 +3073,7 @@ var DotNS = class {
|
|
|
3067
3073
|
this._onPhoneSigningRequired?.(label);
|
|
3068
3074
|
}
|
|
3069
3075
|
disconnect() {
|
|
3076
|
+
this.chainHealth.stop();
|
|
3070
3077
|
if (this.client) {
|
|
3071
3078
|
this.client.destroy();
|
|
3072
3079
|
this.client = null;
|
|
@@ -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-EUZGNOKE.js";
|
|
8
8
|
import {
|
|
9
9
|
DEFAULT_MNEMONIC
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-GR3EXT5M.js";
|
|
11
11
|
|
|
12
12
|
// src/deploy-actors.ts
|
|
13
13
|
var DEFAULT_WORKER_SURI = DEFAULT_MNEMONIC;
|
|
@@ -127,7 +127,8 @@ async function ensureAuthorized(api, address, label, opts = {}) {
|
|
|
127
127
|
if (opts.autoAuthorize) {
|
|
128
128
|
await cryptoWaitReady();
|
|
129
129
|
const keyring = new Keyring({ type: "sr25519" });
|
|
130
|
-
const
|
|
130
|
+
const authorizerUri = opts.authorizer ?? "//Alice";
|
|
131
|
+
const alice = keyring.addFromUri(authorizerUri);
|
|
131
132
|
const signer = getPolkadotSigner(alice.publicKey, "Sr25519", (data) => alice.sign(data));
|
|
132
133
|
const grant = `${TOPUP_TRANSACTIONS} txs / ${Number(TOPUP_BYTES) / 1e6}MB`;
|
|
133
134
|
console.log(` Auto-authorizing ${who} on Bulletin (${grant})...`);
|
|
@@ -139,7 +140,7 @@ async function ensureAuthorized(api, address, label, opts = {}) {
|
|
|
139
140
|
const result = await tx.signAndSubmit(signer);
|
|
140
141
|
if (!result?.ok) {
|
|
141
142
|
throw new Error(
|
|
142
|
-
`Auto-authorization of Bulletin storage account ${who} failed: authorize_account was rejected. This environment is flagged bulletinAutoAuthorize, but
|
|
143
|
+
`Auto-authorization of Bulletin storage account ${who} failed: authorize_account was rejected. This environment is flagged bulletinAutoAuthorize and signed as ${authorizerUri}, but that key may not hold authorizer rights on this chain \u2014 check TransactionStorage.AllowedAuthorizers and set the env's bulletinAuthorizer accordingly.`
|
|
143
144
|
);
|
|
144
145
|
}
|
|
145
146
|
console.log(` Authorized: ${grant}`);
|
|
@@ -254,6 +255,11 @@ ${details}`
|
|
|
254
255
|
const authKey = keyring.addFromUri(opts.authorizerMnemonic);
|
|
255
256
|
authorizerSigner = getPolkadotSigner(authKey.publicKey, "Sr25519", (data) => authKey.sign(data));
|
|
256
257
|
console.log(`Using provided authorizer: ${authKey.address}
|
|
258
|
+
`);
|
|
259
|
+
} else if (opts.envAuthorizer) {
|
|
260
|
+
const authKey = keyring.addFromUri(opts.envAuthorizer);
|
|
261
|
+
authorizerSigner = getPolkadotSigner(authKey.publicKey, "Sr25519", (data) => authKey.sign(data));
|
|
262
|
+
console.log(`Using environment authorizer ${opts.envAuthorizer} (${authKey.address})
|
|
257
263
|
`);
|
|
258
264
|
} else {
|
|
259
265
|
const isTestnet = await detectTestnet(api);
|
|
@@ -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.14.1",
|
|
9
|
+
version: "0.14.2-rc.1",
|
|
10
10
|
private: false,
|
|
11
11
|
repository: {
|
|
12
12
|
type: "git",
|
|
@@ -52,11 +52,11 @@ var package_default = {
|
|
|
52
52
|
"tools/verify-baked-dsn.mjs"
|
|
53
53
|
],
|
|
54
54
|
scripts: {
|
|
55
|
-
build: "tsup src/suppress-localstorage-warning.ts src/index.ts src/deploy.ts src/dotns.ts src/pool.ts src/telemetry.ts src/memory-report.ts src/merkle.ts src/gh-pages-mirror.ts src/version-check.ts src/bug-report.ts src/run-state.ts src/environments.ts src/errors.ts src/manifest.ts src/chunk-probe.ts src/manifest-embed.ts src/manifest-fetch.ts src/manifest-roundtrip.ts src/incremental-stats.ts src/chunker.ts src/personhood/encoding.ts src/personhood/hashing.ts src/personhood/constants.ts src/personhood/member-key.ts src/personhood/people-client.ts src/personhood/proof-validity.ts src/personhood/reprove.ts src/personhood/bind-personal-id.ts src/personhood/claim-pgas.ts src/personhood/bind-paid-alias.ts src/personhood/bootstrap.ts src/personhood/chain-prereqs.ts src/manifest/types.ts src/manifest/schema.ts src/manifest/byte-budget.ts src/manifest/config-load.ts src/manifest/publish.ts src/auth/index.ts src/auth/vendor/index.ts src/auth/vendor/ui/index.ts src/auth-config.ts src/commands/login.ts src/commands/logout.ts src/commands/whoami.ts src/commands/transfer.ts src/storage-signer.ts src/spinner.ts src/sss-allowance.ts src/sss-allowance-cache.ts src/deploy-actors.ts --format esm --dts --clean --target node22",
|
|
55
|
+
build: "tsup src/suppress-localstorage-warning.ts src/index.ts src/deploy.ts src/dotns.ts src/pool.ts src/telemetry.ts src/chain-health.ts src/memory-report.ts src/merkle.ts src/gh-pages-mirror.ts src/version-check.ts src/bug-report.ts src/run-state.ts src/environments.ts src/errors.ts src/manifest.ts src/chunk-probe.ts src/manifest-embed.ts src/manifest-fetch.ts src/manifest-roundtrip.ts src/incremental-stats.ts src/chunker.ts src/personhood/encoding.ts src/personhood/hashing.ts src/personhood/constants.ts src/personhood/member-key.ts src/personhood/people-client.ts src/personhood/proof-validity.ts src/personhood/reprove.ts src/personhood/bind-personal-id.ts src/personhood/claim-pgas.ts src/personhood/bind-paid-alias.ts src/personhood/bootstrap.ts src/personhood/chain-prereqs.ts src/manifest/types.ts src/manifest/schema.ts src/manifest/byte-budget.ts src/manifest/config-load.ts src/manifest/publish.ts src/auth/index.ts src/auth/vendor/index.ts src/auth/vendor/ui/index.ts src/auth-config.ts src/commands/login.ts src/commands/logout.ts src/commands/whoami.ts src/commands/transfer.ts src/storage-signer.ts src/spinner.ts src/sss-allowance.ts src/sss-allowance-cache.ts src/deploy-actors.ts --format esm --dts --clean --target node22",
|
|
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/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 && 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/environments.test.js test/refresh-environments.test.js test/chunk-sharing-report.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/test-release-retry-wrapper.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",
|
|
@@ -78,7 +78,7 @@ var package_default = {
|
|
|
78
78
|
"@polkadot-labs/hdkd-helpers": "^0.0.30",
|
|
79
79
|
"@polkadot/keyring": "^14.0.3",
|
|
80
80
|
"@polkadot/util-crypto": "^14.0.3",
|
|
81
|
-
"@sentry/node": "^
|
|
81
|
+
"@sentry/node": "^10.69.0",
|
|
82
82
|
"ipfs-unixfs": "^11.2.0",
|
|
83
83
|
"ipfs-unixfs-importer": "^16.1.4",
|
|
84
84
|
jiti: "^2.4.2",
|
|
@@ -86,8 +86,8 @@ var package_default = {
|
|
|
86
86
|
"patch-package": "^8.0.1",
|
|
87
87
|
"polkadot-api": "^2.1.3",
|
|
88
88
|
verifiablejs: "1.3.0-beta.4",
|
|
89
|
-
viem: "^2.
|
|
90
|
-
ws: "^8.
|
|
89
|
+
viem: "^2.55.10",
|
|
90
|
+
ws: "^8.21.0"
|
|
91
91
|
},
|
|
92
92
|
devDependencies: {
|
|
93
93
|
"@types/node": "^22.0.0",
|
|
@@ -103,6 +103,7 @@ var package_default = {
|
|
|
103
103
|
engines: {
|
|
104
104
|
node: ">=22"
|
|
105
105
|
},
|
|
106
|
+
packageManager: "npm@11.17.0",
|
|
106
107
|
license: "GPL-3.0-or-later"
|
|
107
108
|
};
|
|
108
109
|
|