@parity/product-deploy 0.9.0 → 0.10.0-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/DEPLOYMENT.md +124 -0
- package/README.md +73 -6
- package/assets/environments.json +41 -0
- package/bin/bulletin-deploy +49 -21
- package/dist/allocations-CEPeZr6T.d.ts +111 -0
- package/dist/auth/index.d.ts +3 -2
- package/dist/auth/index.js +5 -1
- package/dist/auth/vendor/index.d.ts +3 -2
- package/dist/auth/vendor/index.js +5 -1
- package/dist/auth/vendor/ui/index.d.ts +2 -1
- package/dist/auth-CA_YKtM2.d.ts +128 -0
- package/dist/auth-config.d.ts +13 -8
- package/dist/auth-config.js +4 -4
- package/dist/bug-report.js +4 -4
- package/dist/{chunk-56QBW25C.js → chunk-2GDPXSW3.js} +5 -5
- package/dist/{chunk-GCKWJS2T.js → chunk-4ADUQDYJ.js} +140 -32
- package/dist/{chunk-DHY2ZXVZ.js → chunk-5OKB3TEB.js} +8 -1
- package/dist/{chunk-C7UJ6WZR.js → chunk-64RSUZN4.js} +10 -2
- package/dist/{chunk-D7KZZDU7.js → chunk-HA7BNUK3.js} +1 -1
- package/dist/{chunk-5UE2IWNB.js → chunk-HEUKYXEZ.js} +1 -1
- package/dist/{chunk-UC2AYO2P.js → chunk-HOO5NKN3.js} +1 -1
- package/dist/{chunk-GL3U7K2B.js → chunk-QRKI6MMK.js} +41 -0
- package/dist/{chunk-A3O7TLCS.js → chunk-RX3ZUVVS.js} +4 -3
- package/dist/{chunk-FNCBSJ6R.js → chunk-S42FFXAR.js} +2 -2
- package/dist/{chunk-AQHBKIFF.js → chunk-VHAKRWRH.js} +3 -3
- package/dist/{chunk-WAKSNE7F.js → chunk-ZF2SEY7S.js} +115 -29
- package/dist/chunk-probe.js +3 -3
- package/dist/commands/login.d.ts +42 -6
- package/dist/commands/login.js +89 -37
- package/dist/commands/logout.d.ts +2 -1
- package/dist/commands/logout.js +6 -6
- package/dist/commands/transfer.d.ts +14 -0
- package/dist/commands/transfer.js +67 -0
- package/dist/commands/whoami.d.ts +2 -1
- package/dist/commands/whoami.js +4 -4
- package/dist/deploy-actors.d.ts +24 -0
- package/dist/deploy-actors.js +44 -0
- package/dist/deploy.d.ts +20 -1
- package/dist/deploy.js +15 -10
- package/dist/dotns.d.ts +42 -7
- package/dist/dotns.js +15 -6
- package/dist/environments.js +1 -1
- package/dist/index.js +16 -15
- package/dist/manifest/publish.js +12 -11
- package/dist/memory-report.js +2 -2
- package/dist/merkle.js +11 -10
- package/dist/personhood/bootstrap.js +11 -11
- package/dist/personhood/people-client.js +5 -4
- package/dist/run-state.js +1 -1
- package/dist/{signer-vR6KKC7V.d.ts → signer-Duup0hgQ.d.ts} +1 -1
- package/dist/sss-allowance-cache.js +5 -5
- package/dist/storage-signer.js +11 -10
- package/dist/telemetry.d.ts +17 -1
- package/dist/telemetry.js +4 -2
- package/dist/version-check.js +3 -3
- package/docs/bootstrap.md +1 -1
- package/docs/e2e-bootstrap.md +34 -12
- package/docs/telemetry.md +10 -11
- package/docs/testing.md +2 -0
- package/package.json +4 -3
- package/dist/auth-C-Pel0AT.d.ts +0 -235
package/dist/dotns.js
CHANGED
|
@@ -23,6 +23,7 @@ import {
|
|
|
23
23
|
TX_WALL_CLOCK_CEILING_MS,
|
|
24
24
|
WS_HEARTBEAT_TIMEOUT_MS,
|
|
25
25
|
__formatContractDryRunFailureForTest,
|
|
26
|
+
bufferedWeiToNative,
|
|
26
27
|
canRegister,
|
|
27
28
|
classifyAliasAccountRow,
|
|
28
29
|
classifyDotnsLabel,
|
|
@@ -46,15 +47,19 @@ import {
|
|
|
46
47
|
parseDomainName,
|
|
47
48
|
parseProofOfPersonhoodStatus,
|
|
48
49
|
popStatusName,
|
|
50
|
+
registerDepositWei,
|
|
49
51
|
sanitizeDomainLabel,
|
|
52
|
+
shouldRetryTxAttempt,
|
|
50
53
|
stripTrailingDigits,
|
|
51
54
|
validateDomainLabel,
|
|
52
|
-
verifyNonceAdvanced
|
|
53
|
-
|
|
55
|
+
verifyNonceAdvanced,
|
|
56
|
+
weiToNative
|
|
57
|
+
} from "./chunk-4ADUQDYJ.js";
|
|
58
|
+
import "./chunk-SI2ZUOYD.js";
|
|
54
59
|
import "./chunk-4PVJ2JBZ.js";
|
|
55
|
-
import "./chunk-
|
|
56
|
-
import "./chunk-
|
|
57
|
-
import "./chunk-
|
|
60
|
+
import "./chunk-64RSUZN4.js";
|
|
61
|
+
import "./chunk-RX3ZUVVS.js";
|
|
62
|
+
import "./chunk-QRKI6MMK.js";
|
|
58
63
|
import "./chunk-ZOC4GITL.js";
|
|
59
64
|
export {
|
|
60
65
|
ATTR_TX_RESOLUTION_KIND,
|
|
@@ -81,6 +86,7 @@ export {
|
|
|
81
86
|
TX_WALL_CLOCK_CEILING_MS,
|
|
82
87
|
WS_HEARTBEAT_TIMEOUT_MS,
|
|
83
88
|
__formatContractDryRunFailureForTest,
|
|
89
|
+
bufferedWeiToNative,
|
|
84
90
|
canRegister,
|
|
85
91
|
classifyAliasAccountRow,
|
|
86
92
|
classifyDotnsLabel,
|
|
@@ -104,8 +110,11 @@ export {
|
|
|
104
110
|
parseDomainName,
|
|
105
111
|
parseProofOfPersonhoodStatus,
|
|
106
112
|
popStatusName,
|
|
113
|
+
registerDepositWei,
|
|
107
114
|
sanitizeDomainLabel,
|
|
115
|
+
shouldRetryTxAttempt,
|
|
108
116
|
stripTrailingDigits,
|
|
109
117
|
validateDomainLabel,
|
|
110
|
-
verifyNonceAdvanced
|
|
118
|
+
verifyNonceAdvanced,
|
|
119
|
+
weiToNative
|
|
111
120
|
};
|
package/dist/environments.js
CHANGED
package/dist/index.js
CHANGED
|
@@ -1,18 +1,18 @@
|
|
|
1
|
-
import {
|
|
2
|
-
defineConfig
|
|
3
|
-
} from "./chunk-GZD2UFLR.js";
|
|
4
1
|
import {
|
|
5
2
|
loadProductConfig,
|
|
6
3
|
tryLoadProductConfig
|
|
7
4
|
} from "./chunk-MMAZFJDG.js";
|
|
5
|
+
import {
|
|
6
|
+
publishManifest
|
|
7
|
+
} from "./chunk-VHAKRWRH.js";
|
|
8
8
|
import {
|
|
9
9
|
validateExecutableManifest,
|
|
10
10
|
validateProductConfig,
|
|
11
11
|
validateRootManifest
|
|
12
12
|
} from "./chunk-LZJMVPYW.js";
|
|
13
13
|
import {
|
|
14
|
-
|
|
15
|
-
} from "./chunk-
|
|
14
|
+
defineConfig
|
|
15
|
+
} from "./chunk-GZD2UFLR.js";
|
|
16
16
|
import {
|
|
17
17
|
DEFAULT_TEXT_RECORD_BUDGET_BYTES,
|
|
18
18
|
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-ZF2SEY7S.js";
|
|
28
|
+
import "./chunk-HEUKYXEZ.js";
|
|
29
29
|
import "./chunk-GRPLHUYC.js";
|
|
30
30
|
import "./chunk-HOTQDYHD.js";
|
|
31
31
|
import {
|
|
@@ -49,19 +49,20 @@ import {
|
|
|
49
49
|
isVolatilePath,
|
|
50
50
|
parseManifest
|
|
51
51
|
} from "./chunk-S7EM5VMW.js";
|
|
52
|
-
import "./chunk-
|
|
53
|
-
import "./chunk-
|
|
54
|
-
import "./chunk-
|
|
52
|
+
import "./chunk-2GDPXSW3.js";
|
|
53
|
+
import "./chunk-S42FFXAR.js";
|
|
54
|
+
import "./chunk-HOO5NKN3.js";
|
|
55
55
|
import {
|
|
56
56
|
probeChunks
|
|
57
|
-
} from "./chunk-
|
|
57
|
+
} from "./chunk-HA7BNUK3.js";
|
|
58
58
|
import "./chunk-C2TS5MER.js";
|
|
59
59
|
import {
|
|
60
60
|
DEFAULT_MNEMONIC,
|
|
61
61
|
DotNS,
|
|
62
62
|
parseDomainName,
|
|
63
63
|
sanitizeDomainLabel
|
|
64
|
-
} from "./chunk-
|
|
64
|
+
} from "./chunk-4ADUQDYJ.js";
|
|
65
|
+
import "./chunk-SI2ZUOYD.js";
|
|
65
66
|
import {
|
|
66
67
|
bootstrapPool,
|
|
67
68
|
derivePoolAccounts,
|
|
@@ -69,7 +70,7 @@ import {
|
|
|
69
70
|
fetchPoolAuthorizations,
|
|
70
71
|
selectAccount
|
|
71
72
|
} from "./chunk-4PVJ2JBZ.js";
|
|
72
|
-
import "./chunk-
|
|
73
|
+
import "./chunk-64RSUZN4.js";
|
|
73
74
|
import {
|
|
74
75
|
VERSION,
|
|
75
76
|
loadRunState,
|
|
@@ -79,7 +80,7 @@ import {
|
|
|
79
80
|
shouldSkipStaleWarning,
|
|
80
81
|
stateFilePath,
|
|
81
82
|
writeRunState
|
|
82
|
-
} from "./chunk-
|
|
83
|
+
} from "./chunk-RX3ZUVVS.js";
|
|
83
84
|
import {
|
|
84
85
|
DEFAULT_ENV_ID,
|
|
85
86
|
deepMergeEnvironments,
|
|
@@ -90,7 +91,7 @@ import {
|
|
|
90
91
|
loadEnvironments,
|
|
91
92
|
resolveEndpoints,
|
|
92
93
|
validateContractAddresses
|
|
93
|
-
} from "./chunk-
|
|
94
|
+
} from "./chunk-QRKI6MMK.js";
|
|
94
95
|
import "./chunk-ZOC4GITL.js";
|
|
95
96
|
export {
|
|
96
97
|
DEFAULT_ENV_ID,
|
package/dist/manifest/publish.js
CHANGED
|
@@ -1,25 +1,26 @@
|
|
|
1
1
|
import {
|
|
2
2
|
publishManifest
|
|
3
|
-
} from "../chunk-
|
|
3
|
+
} from "../chunk-VHAKRWRH.js";
|
|
4
4
|
import "../chunk-RI3ZLNPN.js";
|
|
5
|
-
import "../chunk-
|
|
6
|
-
import "../chunk-
|
|
5
|
+
import "../chunk-ZF2SEY7S.js";
|
|
6
|
+
import "../chunk-HEUKYXEZ.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-
|
|
16
|
-
import "../chunk-
|
|
13
|
+
import "../chunk-2GDPXSW3.js";
|
|
14
|
+
import "../chunk-S42FFXAR.js";
|
|
15
|
+
import "../chunk-HOO5NKN3.js";
|
|
16
|
+
import "../chunk-HA7BNUK3.js";
|
|
17
17
|
import "../chunk-C2TS5MER.js";
|
|
18
|
-
import "../chunk-
|
|
18
|
+
import "../chunk-4ADUQDYJ.js";
|
|
19
|
+
import "../chunk-SI2ZUOYD.js";
|
|
19
20
|
import "../chunk-4PVJ2JBZ.js";
|
|
20
|
-
import "../chunk-
|
|
21
|
-
import "../chunk-
|
|
22
|
-
import "../chunk-
|
|
21
|
+
import "../chunk-64RSUZN4.js";
|
|
22
|
+
import "../chunk-RX3ZUVVS.js";
|
|
23
|
+
import "../chunk-QRKI6MMK.js";
|
|
23
24
|
import "../chunk-ZOC4GITL.js";
|
|
24
25
|
export {
|
|
25
26
|
publishManifest
|
package/dist/memory-report.js
CHANGED
package/dist/merkle.js
CHANGED
|
@@ -6,24 +6,25 @@ import {
|
|
|
6
6
|
merkleizeKuboBackend,
|
|
7
7
|
merkleizeWithStableOrder,
|
|
8
8
|
rebuildOrderedCarFromBytes
|
|
9
|
-
} from "./chunk-
|
|
10
|
-
import "./chunk-
|
|
9
|
+
} from "./chunk-ZF2SEY7S.js";
|
|
10
|
+
import "./chunk-HEUKYXEZ.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-
|
|
20
|
-
import "./chunk-
|
|
17
|
+
import "./chunk-2GDPXSW3.js";
|
|
18
|
+
import "./chunk-S42FFXAR.js";
|
|
19
|
+
import "./chunk-HOO5NKN3.js";
|
|
20
|
+
import "./chunk-HA7BNUK3.js";
|
|
21
21
|
import "./chunk-C2TS5MER.js";
|
|
22
|
-
import "./chunk-
|
|
22
|
+
import "./chunk-4ADUQDYJ.js";
|
|
23
|
+
import "./chunk-SI2ZUOYD.js";
|
|
23
24
|
import "./chunk-4PVJ2JBZ.js";
|
|
24
|
-
import "./chunk-
|
|
25
|
-
import "./chunk-
|
|
26
|
-
import "./chunk-
|
|
25
|
+
import "./chunk-64RSUZN4.js";
|
|
26
|
+
import "./chunk-RX3ZUVVS.js";
|
|
27
|
+
import "./chunk-QRKI6MMK.js";
|
|
27
28
|
import "./chunk-ZOC4GITL.js";
|
|
28
29
|
export {
|
|
29
30
|
buildOrderedCar,
|
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
import {
|
|
2
|
+
claimPgas
|
|
3
|
+
} from "../chunk-EATOPQFR.js";
|
|
1
4
|
import {
|
|
2
5
|
deriveMemberEntropy,
|
|
3
6
|
deriveMemberKey
|
|
@@ -10,29 +13,26 @@ import "../chunk-EJI3MX4G.js";
|
|
|
10
13
|
import {
|
|
11
14
|
bindPersonalIdToAccount
|
|
12
15
|
} from "../chunk-7URNKK6J.js";
|
|
16
|
+
import {
|
|
17
|
+
bytesToHex
|
|
18
|
+
} from "../chunk-ZYVGHDMU.js";
|
|
13
19
|
import {
|
|
14
20
|
runChainPrereqProbes
|
|
15
21
|
} from "../chunk-XAB7WM3S.js";
|
|
16
22
|
import {
|
|
17
|
-
|
|
18
|
-
} from "../chunk-
|
|
19
|
-
import {
|
|
20
|
-
bytesToHex
|
|
21
|
-
} from "../chunk-ZYVGHDMU.js";
|
|
23
|
+
WS_HEARTBEAT_TIMEOUT_MS
|
|
24
|
+
} from "../chunk-4ADUQDYJ.js";
|
|
22
25
|
import {
|
|
23
26
|
DOTNS_CONTEXT_BYTES,
|
|
24
27
|
PEOPLE_MEMBER_IDENTIFIER_HEX,
|
|
25
28
|
PGAS_ASSET_ID
|
|
26
29
|
} from "../chunk-SI2ZUOYD.js";
|
|
27
|
-
import {
|
|
28
|
-
WS_HEARTBEAT_TIMEOUT_MS
|
|
29
|
-
} from "../chunk-GCKWJS2T.js";
|
|
30
30
|
import "../chunk-4PVJ2JBZ.js";
|
|
31
|
-
import "../chunk-
|
|
32
|
-
import "../chunk-
|
|
31
|
+
import "../chunk-64RSUZN4.js";
|
|
32
|
+
import "../chunk-RX3ZUVVS.js";
|
|
33
33
|
import {
|
|
34
34
|
loadEnvironments
|
|
35
|
-
} from "../chunk-
|
|
35
|
+
} from "../chunk-QRKI6MMK.js";
|
|
36
36
|
import "../chunk-ZOC4GITL.js";
|
|
37
37
|
|
|
38
38
|
// src/personhood/bootstrap.ts
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
import {
|
|
2
2
|
WS_HEARTBEAT_TIMEOUT_MS
|
|
3
|
-
} from "../chunk-
|
|
3
|
+
} from "../chunk-4ADUQDYJ.js";
|
|
4
|
+
import "../chunk-SI2ZUOYD.js";
|
|
4
5
|
import "../chunk-4PVJ2JBZ.js";
|
|
5
|
-
import "../chunk-
|
|
6
|
-
import "../chunk-
|
|
6
|
+
import "../chunk-64RSUZN4.js";
|
|
7
|
+
import "../chunk-RX3ZUVVS.js";
|
|
7
8
|
import {
|
|
8
9
|
loadEnvironments
|
|
9
|
-
} from "../chunk-
|
|
10
|
+
} from "../chunk-QRKI6MMK.js";
|
|
10
11
|
import "../chunk-ZOC4GITL.js";
|
|
11
12
|
|
|
12
13
|
// src/personhood/people-client.ts
|
package/dist/run-state.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { DevAccountName } from '@parity/product-sdk-tx';
|
|
2
2
|
import { PolkadotSigner } from 'polkadot-api';
|
|
3
|
-
import {
|
|
3
|
+
import { e as SessionHandle, S as SessionAddresses, A as AuthClient } from './auth-CA_YKtM2.js';
|
|
4
4
|
|
|
5
5
|
type SignerSource = "dev" | "session";
|
|
6
6
|
interface ResolvedSigner {
|
|
@@ -4,12 +4,12 @@ import {
|
|
|
4
4
|
preflightSssAllowance,
|
|
5
5
|
sssPeriodEndSec,
|
|
6
6
|
writeSssAllowanceCache
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-HEUKYXEZ.js";
|
|
8
8
|
import "./chunk-GRPLHUYC.js";
|
|
9
|
-
import "./chunk-
|
|
10
|
-
import "./chunk-
|
|
11
|
-
import "./chunk-
|
|
12
|
-
import "./chunk-
|
|
9
|
+
import "./chunk-2GDPXSW3.js";
|
|
10
|
+
import "./chunk-64RSUZN4.js";
|
|
11
|
+
import "./chunk-RX3ZUVVS.js";
|
|
12
|
+
import "./chunk-QRKI6MMK.js";
|
|
13
13
|
import "./chunk-ZOC4GITL.js";
|
|
14
14
|
export {
|
|
15
15
|
clearSssAllowanceCache,
|
package/dist/storage-signer.js
CHANGED
|
@@ -7,24 +7,25 @@ import {
|
|
|
7
7
|
readBulletinSlotSigner,
|
|
8
8
|
waitForBulletinAuthorization,
|
|
9
9
|
writeBulletinSlotKey
|
|
10
|
-
} from "./chunk-
|
|
11
|
-
import "./chunk-
|
|
10
|
+
} from "./chunk-ZF2SEY7S.js";
|
|
11
|
+
import "./chunk-HEUKYXEZ.js";
|
|
12
12
|
import "./chunk-GRPLHUYC.js";
|
|
13
13
|
import "./chunk-HOTQDYHD.js";
|
|
14
14
|
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-
|
|
21
|
-
import "./chunk-
|
|
18
|
+
import "./chunk-2GDPXSW3.js";
|
|
19
|
+
import "./chunk-S42FFXAR.js";
|
|
20
|
+
import "./chunk-HOO5NKN3.js";
|
|
21
|
+
import "./chunk-HA7BNUK3.js";
|
|
22
22
|
import "./chunk-C2TS5MER.js";
|
|
23
|
-
import "./chunk-
|
|
23
|
+
import "./chunk-4ADUQDYJ.js";
|
|
24
|
+
import "./chunk-SI2ZUOYD.js";
|
|
24
25
|
import "./chunk-4PVJ2JBZ.js";
|
|
25
|
-
import "./chunk-
|
|
26
|
-
import "./chunk-
|
|
27
|
-
import "./chunk-
|
|
26
|
+
import "./chunk-64RSUZN4.js";
|
|
27
|
+
import "./chunk-RX3ZUVVS.js";
|
|
28
|
+
import "./chunk-QRKI6MMK.js";
|
|
28
29
|
import "./chunk-ZOC4GITL.js";
|
|
29
30
|
export {
|
|
30
31
|
BulletinSlotAuthError,
|
package/dist/telemetry.d.ts
CHANGED
|
@@ -35,6 +35,22 @@ interface InternalContextSignals {
|
|
|
35
35
|
}
|
|
36
36
|
declare function isInternalContextFromSignals(signals: InternalContextSignals): boolean;
|
|
37
37
|
declare function isInternalContext(): boolean;
|
|
38
|
+
/**
|
|
39
|
+
* Pure decision function for whether telemetry is disabled.
|
|
40
|
+
*
|
|
41
|
+
* Precedence (highest to lowest):
|
|
42
|
+
* 1. optOut (BULLETIN_DEPLOY_TELEMETRY=0/off) → always disabled
|
|
43
|
+
* 2. optIn (BULLETIN_DEPLOY_TELEMETRY=1) → enabled, overrides DO_NOT_TRACK
|
|
44
|
+
* 3. doNotTrack (DO_NOT_TRACK=1) → disabled
|
|
45
|
+
* 4. internalContext (Parity CI / internal org) → enabled
|
|
46
|
+
* 5. default → disabled (telemetry is off for external users)
|
|
47
|
+
*/
|
|
48
|
+
declare function isTelemetryDisabled(s: {
|
|
49
|
+
optIn: boolean;
|
|
50
|
+
optOut: boolean;
|
|
51
|
+
doNotTrack: boolean;
|
|
52
|
+
internalContext: boolean;
|
|
53
|
+
}): boolean;
|
|
38
54
|
declare function scrubPaths(msg: string): string;
|
|
39
55
|
declare function truncateAddress(ss58: string | undefined): string | undefined;
|
|
40
56
|
declare function sanitizeBranch(name: string | undefined): string | undefined;
|
|
@@ -95,4 +111,4 @@ declare function markCodePath(id: CodePath): void;
|
|
|
95
111
|
declare function captureWarning(message: string, context?: Record<string, unknown>): void;
|
|
96
112
|
declare function flush(): Promise<void>;
|
|
97
113
|
|
|
98
|
-
export { type DeployErrorCategory, type DeployErrorKind, type InternalContextSignals, VERSION, __setDeployRootSpanForTest, __setSentryForTest, analyseErrorPattern, captureWarning, classifyDeployError, classifyErrorKind, classifySadReason, closeTelemetry, computeDeployOutcome, flush, getCurrentSentryTraceId, getDeployAttributes, initTelemetry, isExpectedError, isInternalContext, isInternalContextFromSignals, markCodePath, markRelaunchOomHintShown, resolveRepo, resolveRunner, resolveRunnerType, sampleMemory, sanitizeBranch, sanitizeErrorMessage, sanitizeRepo, scrubPaths, setDeployAttribute, setDeployReportContext, setDeploySentryTag, setRunStateActive, truncateAddress, withDeploySpan, withSpan };
|
|
114
|
+
export { type DeployErrorCategory, type DeployErrorKind, type InternalContextSignals, VERSION, __setDeployRootSpanForTest, __setSentryForTest, analyseErrorPattern, captureWarning, classifyDeployError, classifyErrorKind, classifySadReason, closeTelemetry, computeDeployOutcome, flush, getCurrentSentryTraceId, getDeployAttributes, initTelemetry, isExpectedError, isInternalContext, isInternalContextFromSignals, isTelemetryDisabled, markCodePath, markRelaunchOomHintShown, resolveRepo, resolveRunner, resolveRunnerType, sampleMemory, sanitizeBranch, sanitizeErrorMessage, sanitizeRepo, scrubPaths, setDeployAttribute, setDeployReportContext, setDeploySentryTag, setRunStateActive, truncateAddress, withDeploySpan, withSpan };
|
package/dist/telemetry.js
CHANGED
|
@@ -16,6 +16,7 @@ import {
|
|
|
16
16
|
isExpectedError,
|
|
17
17
|
isInternalContext,
|
|
18
18
|
isInternalContextFromSignals,
|
|
19
|
+
isTelemetryDisabled,
|
|
19
20
|
markCodePath,
|
|
20
21
|
markRelaunchOomHintShown,
|
|
21
22
|
resolveRepo,
|
|
@@ -33,8 +34,8 @@ import {
|
|
|
33
34
|
truncateAddress,
|
|
34
35
|
withDeploySpan,
|
|
35
36
|
withSpan
|
|
36
|
-
} from "./chunk-
|
|
37
|
-
import "./chunk-
|
|
37
|
+
} from "./chunk-64RSUZN4.js";
|
|
38
|
+
import "./chunk-RX3ZUVVS.js";
|
|
38
39
|
export {
|
|
39
40
|
VERSION,
|
|
40
41
|
__setDeployRootSpanForTest,
|
|
@@ -53,6 +54,7 @@ export {
|
|
|
53
54
|
isExpectedError,
|
|
54
55
|
isInternalContext,
|
|
55
56
|
isInternalContextFromSignals,
|
|
57
|
+
isTelemetryDisabled,
|
|
56
58
|
markCodePath,
|
|
57
59
|
markRelaunchOomHintShown,
|
|
58
60
|
resolveRepo,
|
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-HOO5NKN3.js";
|
|
15
|
+
import "./chunk-64RSUZN4.js";
|
|
16
|
+
import "./chunk-RX3ZUVVS.js";
|
|
17
17
|
export {
|
|
18
18
|
assessVersion,
|
|
19
19
|
checkNodeVersion,
|
package/docs/bootstrap.md
CHANGED
package/docs/e2e-bootstrap.md
CHANGED
|
@@ -1,11 +1,33 @@
|
|
|
1
1
|
# E2E test setup
|
|
2
2
|
|
|
3
|
+
> This is a **contributor** guide for running the live-testnet E2E suite. If you only want to deploy your own app, see [DEPLOYMENT.md](../DEPLOYMENT.md) instead.
|
|
4
|
+
|
|
3
5
|
The E2E suite (`test/e2e.test.js`, driven by `.github/workflows/e2e.yml`) deploys real content to Paseo Bulletin testnet via `bulletin-deploy` and verifies the on-chain round-trip. It consumes the **shared default pool** (derived from `DEV_PHRASE` — the same pool real users hit in production) for Bulletin chunk upload, so no pool bootstrapping is required.
|
|
4
6
|
|
|
5
7
|
Three one-time setup items are needed before the workflow can pass. Do them once per testnet lifetime (redo if testnet is wiped).
|
|
6
8
|
|
|
7
9
|
---
|
|
8
10
|
|
|
11
|
+
## Chain-admin prerequisites
|
|
12
|
+
|
|
13
|
+
Some of this setup needs authority a normal contributor doesn't have — the Bulletin chain's storage **authorizer** key, the DotNS `POP_RULES` contract **owner**, and (on faucet-less testnets) a funding source. A network operator ensures the following before the suite can pass. The check commands are read-only and safe to run anytime; the grant tools are idempotent — they report current status and do only what is missing.
|
|
14
|
+
|
|
15
|
+
1. **Personhood (PoP) status.** Registering a PoP-Full base label (e.g. `e2epool.dot`) requires Full Personhood on the DotNS Personhood precompile — Alice for the happy-path scenarios, and Bob once for the `e2eowned.dot` S3 fixture. NoStatus fallback labels (e.g. `e2epoolns01.dot`) need no grant; they auto-register on first deploy.
|
|
16
|
+
- Check: `node tools/check-pop-status.mjs --env <id>`
|
|
17
|
+
- Grant: by the `POP_RULES` contract owner — request via an issue on [paritytech/dotns](https://github.com/paritytech/dotns/issues). `bulletin-deploy` cannot self-upgrade a signer.
|
|
18
|
+
|
|
19
|
+
2. **Asset Hub funding (DotNS fees).** The accounts that register or transfer names need a balance on the target Asset Hub.
|
|
20
|
+
- Check: `node tools/check-balances.mjs --env <id>` (shows balances and Bulletin authorization quota for every E2E signer in one pass)
|
|
21
|
+
- Grant: on Paseo, use the public faucet at [https://faucet.polkadot.io/](https://faucet.polkadot.io/). `paseo-next-v2` has no public faucet — the operator funds the accounts out of band.
|
|
22
|
+
|
|
23
|
+
3. **Bulletin storage authorization (upload allowance).** Every account that uploads chunks must carry a `TransactionStorage` authorization; `bulletin-deploy` never self-authorizes. On testnet the authorizer is `//Alice`.
|
|
24
|
+
- Check: `node tools/check-bulletin-auth.mjs --env <id>`
|
|
25
|
+
- Grant: **pool accounts** via `bulletin-bootstrap --env <id>` (authorizes and funds them); **direct-mode signers** (the per-shard `//e2e-*` derivation paths) via `node tools/setup-e2e-derivation-signers.mjs --env <id>`. Alice is the authorizer itself, and Bob only owns the S3 fixture name (never uploads), so neither needs its own storage grant.
|
|
26
|
+
|
|
27
|
+
The per-environment sections below are the step-by-step procedures that satisfy these.
|
|
28
|
+
|
|
29
|
+
---
|
|
30
|
+
|
|
9
31
|
## Paseo (stable testnet)
|
|
10
32
|
|
|
11
33
|
### Prerequisites
|
|
@@ -22,7 +44,7 @@ Both happy-path scenarios (S1, S2) deploy as Alice via DotNS. Registering a new
|
|
|
22
44
|
node tools/check-pop-status.mjs
|
|
23
45
|
```
|
|
24
46
|
|
|
25
|
-
Re-run if the check cannot read Alice's status. Self-attestation is no longer available;
|
|
47
|
+
Re-run if the check cannot read Alice's status. Self-attestation is no longer available; a signer's Personhood status is granted by the `POP_RULES` contract owner. To request a status grant (whitelisting) for a signer, open an issue on [paritytech/dotns](https://github.com/paritytech/dotns/issues).
|
|
26
48
|
|
|
27
49
|
### 2. Fund and map Bob on Asset Hub Paseo
|
|
28
50
|
|
|
@@ -42,7 +64,7 @@ Expected output: Bob's SS58, his H160 (`0x41dccbd49b26c50d34355ed86ff0fa9e489d1e
|
|
|
42
64
|
The S3 negative scenario asserts that `bulletin-deploy` refuses to deploy to a domain owned by a different account (exit 78 with transfer guidance). Have Bob register the label with a DotNS registration tool outside `bulletin-deploy` — no Alice intermediary, no Bulletin content needed (S3 never reads content).
|
|
43
65
|
|
|
44
66
|
```bash
|
|
45
|
-
node tools/register-test-fixture
|
|
67
|
+
node tools/register-test-fixture.mjs e2eowned
|
|
46
68
|
```
|
|
47
69
|
|
|
48
70
|
Expected: `e2eowned.dot` is owned by Bob's H160 `0x41dccbd49b26c50d34355ed86ff0fa9e489d1e01`. The `e2eowned.dot` label requires PoP Full status and a mature commitment (the tool waits 30s after the minimum commitment age). The tool is idempotent: it exits 0 immediately if Bob already owns it, and transfers the label from Alice back to Bob if fixture drift is detected.
|
|
@@ -55,14 +77,14 @@ If S3 ever fails because `e2eowned.dot` was transferred back to Alice by mistake
|
|
|
55
77
|
|
|
56
78
|
Paseo Next v2 uses a separate Asset Hub (`wss://paseo-asset-hub-next-rpc.polkadot.io`) and Bulletin chain (`wss://paseo-bulletin-next-rpc.polkadot.io`) with different contract addresses. The `map_account` extrinsic does not exist on this chain — account mapping is triggered automatically when an account submits its first on-chain transaction.
|
|
57
79
|
|
|
58
|
-
> **Note on PoP grants:** The paseo-next-v2 `POP_RULES` contract (`0x2002C1c15b88632Ad01c7770f6EbE1Ca05c8472E`) is **not permissionless** — `setUserPopStatus` can only be called by
|
|
80
|
+
> **Note on PoP grants:** The paseo-next-v2 `POP_RULES` contract (`0x2002C1c15b88632Ad01c7770f6EbE1Ca05c8472E`) is **not permissionless** — `setUserPopStatus` can only be called by its owner. `bulletin-deploy` cannot upgrade a signer itself; a status grant (whitelisting) is performed out of band by the contract owner. To request one for a signer, open an issue on [paritytech/dotns](https://github.com/paritytech/dotns/issues). CI scenarios pick labels via `pickStableLabel`/`pickDirectLabel`/`pickIncLabel`/`pickRotLabel`, which auto-select between a PoP-Full base name (e.g. `e2epool.dot`) and a NoStatus fallback (e.g. `e2epoolns01.dot`) based on what `Personhood.personhoodStatus(<signer>)` returns at test start. The setup below covers both modes.
|
|
59
81
|
|
|
60
|
-
> **⚠ Testnet wipes reset everything.** When paseo-next-v2 is reset (which happens periodically), Alice's Personhood precompile status drops to NoStatus *and* every `e2e*.dot` registration is gone. Re-run the relevant steps below after each wipe — there is no on-chain self-recovery.
|
|
82
|
+
> **⚠ Testnet wipes reset everything.** When paseo-next-v2 is reset (which happens periodically), Alice's Personhood precompile status drops to NoStatus *and* every `e2e*.dot` registration is gone. Re-run the relevant steps below after each wipe — there is no on-chain self-recovery. A subtle failure mode to watch for: Alice's status can come back as Full while `e2epool.dot` is unregistered, so `setContenthash` reverts with `ERC721NonexistentToken`. As long as ownership stays in lockstep with Alice's PoP grade (Full ↔ PoP-Full labels registered; NoStatus ↔ NoStatus labels auto-register on first deploy), the nightly stays green.
|
|
61
83
|
|
|
62
84
|
### Prerequisites
|
|
63
85
|
|
|
64
86
|
- `bulletin-deploy` built locally (`npm run build`).
|
|
65
|
-
- Alice (`5DfhGyQdFobKM8NsWvEeAKk5EQQgYe9AydgJ7rMB6E1EqRzV`) funded on paseo-next-v2 Asset Hub.
|
|
87
|
+
- Alice (`5DfhGyQdFobKM8NsWvEeAKk5EQQgYe9AydgJ7rMB6E1EqRzV`) funded on paseo-next-v2 Asset Hub. This is a restricted testnet with no public faucet — the account must be funded out of band by the network operator.
|
|
66
88
|
|
|
67
89
|
### 1. Authorize pool accounts on Bulletin Next
|
|
68
90
|
|
|
@@ -81,7 +103,7 @@ node tools/check-pop-status.mjs --env paseo-next-v2
|
|
|
81
103
|
What you see decides which labels need pre-registration:
|
|
82
104
|
|
|
83
105
|
- **`NoStatus (0)`** → no extra work. The tests pick the NoStatus fallback labels (`e2epoolns01`, `e2edirect01`, `e2eincpool01`, `e2erotpool01`) which auto-register on first deploy because their shape (base length ≥ 9 with two trailing digits) bypasses the `Requires Full personhood verification` gate.
|
|
84
|
-
- **`ProofOfPersonhoodFull (2)`** →
|
|
106
|
+
- **`ProofOfPersonhoodFull (2)`** → Alice has been flipped to Full on the Personhood precompile. The tests will now pick the PoP-Full stable labels (`e2epool`, `e2edirect`, `e2einc`, `e2erot`), and those **must already be registered to Alice** before the matrix runs. Register them once:
|
|
85
107
|
|
|
86
108
|
```bash
|
|
87
109
|
# Pre-built fixture is fine — it's the contenthash, not the content, that the tests overwrite.
|
|
@@ -90,11 +112,11 @@ What you see decides which labels need pre-registration:
|
|
|
90
112
|
done
|
|
91
113
|
```
|
|
92
114
|
|
|
93
|
-
Skipping this leaves `setContenthash` reverting with `ERC721NonexistentToken` on whichever PoP-Full label the scenario picks
|
|
115
|
+
Skipping this leaves `setContenthash` reverting with `ERC721NonexistentToken` on whichever PoP-Full label the scenario picks.
|
|
94
116
|
|
|
95
117
|
### 3. Fund Bob and trigger his account mapping
|
|
96
118
|
|
|
97
|
-
Bob (`5FHneW46xGXgs5mUiveU4sbTyGBzmstUspZC92UhjJM694ty`) needs PAS on paseo-next-v2 Asset Hub so he can pay fees for the `e2eowned.dot` registration.
|
|
119
|
+
Bob (`5FHneW46xGXgs5mUiveU4sbTyGBzmstUspZC92UhjJM694ty`) needs PAS on paseo-next-v2 Asset Hub so he can pay fees for the `e2eowned.dot` registration. As above, this testnet has no public faucet — fund his SS58 address (~1 PAS) out of band. His H160 mapping (`0x41dccbd49b26c50d34355ed86ff0fa9e489d1e01`) is triggered automatically when he submits his first on-chain tx.
|
|
98
120
|
|
|
99
121
|
Verify his mapping:
|
|
100
122
|
|
|
@@ -107,14 +129,14 @@ Expected output: Bob's SS58, his H160 (`0x41dccbd49b26c50d34355ed86ff0fa9e489d1e
|
|
|
107
129
|
|
|
108
130
|
### 4. Verify Bob PoP status
|
|
109
131
|
|
|
110
|
-
Bob owns both `e2eownedns02.dot` (NoStatus, used by S3 when Alice is NoStatus) and `e2eowned.dot` (PoP-Full, used by S3 when the Personhood precompile has flipped Alice to Full). The NoStatus branch needs no admin help; the PoP-Full branch needed Bob to register it back when
|
|
132
|
+
Bob owns both `e2eownedns02.dot` (NoStatus, used by S3 when Alice is NoStatus) and `e2eowned.dot` (PoP-Full, used by S3 when the Personhood precompile has flipped Alice to Full). The NoStatus branch needs no admin help; the PoP-Full branch needed Bob to register it back when he was granted Full status once. After that one-shot registration the label persists until expiry, so Bob can stay NoStatus going forward — ownership and PoP-grade are decoupled after registration.
|
|
111
133
|
|
|
112
134
|
### 5. Register `e2eownedns02.dot` directly as Bob
|
|
113
135
|
|
|
114
136
|
Register the domain using the dedicated tool:
|
|
115
137
|
|
|
116
138
|
```bash
|
|
117
|
-
node tools/register-test-fixture
|
|
139
|
+
node tools/register-test-fixture.mjs e2eownedns02
|
|
118
140
|
```
|
|
119
141
|
|
|
120
142
|
Expected: `e2eownedns02.dot` is owned by Bob (`0x41dccbd49b26c50d34355ed86ff0fa9e489d1e01`).
|
|
@@ -126,8 +148,8 @@ S3 picks `e2eowned.dot` when Alice is PoP-Full at test start. If the label is un
|
|
|
126
148
|
|
|
127
149
|
If Bob already owns it (`ownerOf` on `DOTNS_REGISTRAR` returns `0x41dccbd…`), skip. Otherwise:
|
|
128
150
|
|
|
129
|
-
- **If nobody owns it yet:** registration needs Bob to hold Full PoP.
|
|
130
|
-
- **If Alice (or anyone other than Bob) is squatting:** the owner can call `transferFrom(<current>, Bob, tokenId)` on `DOTNS_REGISTRAR`. ERC721 transfer is unconditional on the recipient (no PoP check) and doesn't need Bob's signer. `tools/transfer-e2eowned
|
|
151
|
+
- **If nobody owns it yet:** registration needs Bob to hold Full PoP. Request Full PoP for Bob by opening an issue on [paritytech/dotns](https://github.com/paritytech/dotns/issues), then run `node tools/register-test-fixture.mjs e2eowned` (registers the label as Bob via `//Bob`). After registration Bob can drop back to NoStatus.
|
|
152
|
+
- **If Alice (or anyone other than Bob) is squatting:** the owner can call `transferFrom(<current>, Bob, tokenId)` on `DOTNS_REGISTRAR`. ERC721 transfer is unconditional on the recipient (no PoP check) and doesn't need Bob's signer. Run `node tools/transfer-dotns-name.mjs --label e2eowned --to 0x41dccbd49b26c50d34355ed86ff0fa9e489d1e01 --env paseo-next-v2` to do this for Alice → Bob in one shot.
|
|
131
153
|
|
|
132
154
|
---
|
|
133
155
|
|
package/docs/telemetry.md
CHANGED
|
@@ -4,8 +4,13 @@ Telemetry is **off by default for external users**. It is enabled automatically
|
|
|
4
4
|
|
|
5
5
|
## Opt in / opt out
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
|
|
7
|
+
Telemetry is **off by default** for external users. It is only enabled automatically when running in a known Parity/internal context (see detection signals below), or via explicit opt-in.
|
|
8
|
+
|
|
9
|
+
- `BULLETIN_DEPLOY_TELEMETRY=1`: explicit opt-in — also overrides `DO_NOT_TRACK`
|
|
10
|
+
- `BULLETIN_DEPLOY_TELEMETRY=0` or `BULLETIN_DEPLOY_TELEMETRY=off`: force off
|
|
11
|
+
- `DO_NOT_TRACK=1`: telemetry is disabled (standard EFF Do Not Track convention); overridden only by an explicit `BULLETIN_DEPLOY_TELEMETRY=1`
|
|
12
|
+
|
|
13
|
+
Precedence (highest to lowest): explicit opt-out → explicit opt-in → DO_NOT_TRACK → internal context detection → default off.
|
|
9
14
|
|
|
10
15
|
Internal detection signals are OR'd together:
|
|
11
16
|
|
|
@@ -32,7 +37,7 @@ BULLETIN_DEPLOY_HOST_APP=<your-app-name>
|
|
|
32
37
|
BULLETIN_DEPLOY_HOST_APP_VERSION=<your-app-version>
|
|
33
38
|
```
|
|
34
39
|
|
|
35
|
-
`BULLETIN_DEPLOY_HOST_APP_VERSION` is optional but recommended — it populates `deploy.host_app_version` on every span, enabling version-correlated triage in
|
|
40
|
+
`BULLETIN_DEPLOY_HOST_APP_VERSION` is optional but recommended — it populates `deploy.host_app_version` on every span, enabling version-correlated triage in your Sentry dashboard.
|
|
36
41
|
|
|
37
42
|
That makes `bulletin-deploy` reuse the existing Sentry client instead of calling its own `Sentry.init()`.
|
|
38
43
|
|
|
@@ -49,14 +54,8 @@ Use `--tag` or `DEPLOY_TAG` to separate test and benchmark traffic from real dep
|
|
|
49
54
|
Examples:
|
|
50
55
|
|
|
51
56
|
```bash
|
|
52
|
-
bulletin-deploy --tag
|
|
57
|
+
bulletin-deploy --tag ci-smoke ./build my-app.dot
|
|
53
58
|
DEPLOY_TAG=load-test bulletin-deploy ./build my-app.dot
|
|
54
59
|
```
|
|
55
60
|
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
- `e2e-ci-pr`
|
|
59
|
-
- `e2e-ci-nightly`
|
|
60
|
-
- `e2e-local-smoke`
|
|
61
|
-
- `e2e-local-pr`
|
|
62
|
-
- `e2e-local-nightly`
|
|
61
|
+
Use any label that distinguishes a class of deploy — for example, separating CI smoke runs, nightly runs, and load tests from real user traffic so they can be filtered apart in telemetry.
|
package/docs/testing.md
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
# Testing
|
|
2
2
|
|
|
3
|
+
> Contributor reference. The offline suite runs anywhere; everything past it needs testnet access — see [E2E test setup](./e2e-bootstrap.md) for the one-time chain setup.
|
|
4
|
+
|
|
3
5
|
The repo has three practical test layers: offline unit tests, live-testnet E2E coverage, and GitHub Actions matrices that exercise the shipped reusable workflow.
|
|
4
6
|
|
|
5
7
|
## Offline tests
|