@broccolo1d/wallet-browser 0.2.1 → 0.2.3
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/README.md +50 -20
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +11 -3
- package/dist/cli.js.map +1 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +40 -18
- package/dist/config.js.map +1 -1
- package/dist/doctor.d.ts +37 -0
- package/dist/doctor.d.ts.map +1 -0
- package/dist/doctor.js +406 -0
- package/dist/doctor.js.map +1 -0
- package/dist/fixture-harness.d.ts.map +1 -1
- package/dist/fixture-harness.js +32 -2
- package/dist/fixture-harness.js.map +1 -1
- package/dist/fixture-proof.d.ts +28 -0
- package/dist/fixture-proof.d.ts.map +1 -1
- package/dist/fixture-proof.js +55 -0
- package/dist/fixture-proof.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -2,29 +2,32 @@
|
|
|
2
2
|
|
|
3
3
|
Core browser-wallet runtime helpers for dapp QA.
|
|
4
4
|
|
|
5
|
-
This package owns launch configuration,
|
|
5
|
+
This lower-level package owns Chromium/MetaMask launch configuration, prompt guardrails, network/account assertions, local smoke artifacts, proof verification, and the `wallet-browser` CLI. Most app test suites should consume `@broccolo1d/playwright`; use this package directly for custom runners, package integrations, and low-level wallet runtime work.
|
|
6
6
|
|
|
7
7
|
## Install
|
|
8
8
|
|
|
9
9
|
```bash
|
|
10
|
-
pnpm add -D @broccolo1d/wallet-browser playwright
|
|
10
|
+
pnpm add -D @broccolo1d/wallet-browser@0.2.3 playwright
|
|
11
11
|
```
|
|
12
12
|
|
|
13
|
-
|
|
13
|
+
ESM-only. Node.js `>=22 <23`.
|
|
14
14
|
|
|
15
15
|
## CLI
|
|
16
16
|
|
|
17
|
-
|
|
17
|
+
After install, the package exposes a `wallet-browser` binary:
|
|
18
18
|
|
|
19
19
|
```bash
|
|
20
|
-
pnpm
|
|
21
|
-
|
|
20
|
+
pnpm exec wallet-browser --help
|
|
21
|
+
pnpm exec wallet-browser doctor
|
|
22
|
+
pnpm exec wallet-browser prepare
|
|
23
|
+
pnpm exec wallet-browser verify-smoke-artifacts .wallet-artifacts/metamask-smoke/<run-id>
|
|
22
24
|
```
|
|
23
25
|
|
|
24
|
-
From this repository root,
|
|
26
|
+
From this repository root, convenience scripts build the package first and resolve default `.wallet-*` paths consistently:
|
|
25
27
|
|
|
26
28
|
```bash
|
|
27
29
|
pnpm wallet:cli --help
|
|
30
|
+
pnpm wallet:doctor
|
|
28
31
|
pnpm wallet:metamask:fetch --dry-run
|
|
29
32
|
pnpm wallet:metamask:fetch
|
|
30
33
|
pnpm wallet:prepare
|
|
@@ -33,12 +36,11 @@ pnpm wallet:smoke:fixture-extension
|
|
|
33
36
|
pnpm wallet:smoke:verify
|
|
34
37
|
```
|
|
35
38
|
|
|
36
|
-
The root convenience scripts build the package and invoke `packages/wallet-browser/dist/cli.js` from the repository root, so default `.wallet-*` paths resolve consistently. Fetch the pinned extension before `wallet:prepare` when using the default extension path.
|
|
37
|
-
|
|
38
39
|
Commands:
|
|
39
40
|
|
|
40
41
|
```text
|
|
41
42
|
wallet-browser prepare
|
|
43
|
+
wallet-browser doctor
|
|
42
44
|
wallet-browser smoke-metamask
|
|
43
45
|
wallet-browser smoke-fixture-extension
|
|
44
46
|
wallet-browser verify-smoke-artifacts [artifact-dir]
|
|
@@ -48,7 +50,9 @@ wallet-browser profile-bootstrap-import --dry-run
|
|
|
48
50
|
wallet-browser network-plan
|
|
49
51
|
```
|
|
50
52
|
|
|
51
|
-
`
|
|
53
|
+
`doctor` prints setup diagnostics for Node 22, Playwright/Chromium resolution, the configured MetaMask extension path/manifest, `.env` key presence, wallet profile usability, and `.gitignore` protection for local wallet directories. It exits non-zero for actionable setup errors and never prints `.env` values, private keys, wallet passwords, or RPC tokens.
|
|
54
|
+
|
|
55
|
+
`prepare`, `onboarding-plan`, `network-plan`, and dry-run commands print redacted plans. The raw local output can still contain machine-specific paths; redact before sharing. `smoke-metamask` launches Chromium and captures local-only screenshots, but it does not import, unlock, connect, sign, or transact.
|
|
52
56
|
|
|
53
57
|
## API sketch
|
|
54
58
|
|
|
@@ -62,11 +66,12 @@ import {
|
|
|
62
66
|
verifySmokeArtifactManifest
|
|
63
67
|
} from '@broccolo1d/wallet-browser';
|
|
64
68
|
|
|
65
|
-
const expectedAccount =
|
|
69
|
+
const expectedAccount = process.env.SEPOLIA_WALLET_ADDRESS;
|
|
70
|
+
if (!expectedAccount) throw new Error('SEPOLIA_WALLET_ADDRESS is required for wallet QA');
|
|
71
|
+
|
|
66
72
|
const config = resolveWalletBrowserConfig();
|
|
67
73
|
const { context } = await launchWalletBrowser({ config });
|
|
68
74
|
|
|
69
|
-
// Replace with an app-provided network driver in real wallet jobs.
|
|
70
75
|
const network: MetaMaskNetworkDriver = {
|
|
71
76
|
async getChainId() { return 11155111; },
|
|
72
77
|
async getAccounts() { return [expectedAccount]; },
|
|
@@ -74,20 +79,29 @@ const network: MetaMaskNetworkDriver = {
|
|
|
74
79
|
async addEthereumChain() {}
|
|
75
80
|
};
|
|
76
81
|
|
|
77
|
-
const sepolia = resolveSepoliaNetworkConfig({ expectedAccount });
|
|
78
|
-
|
|
79
82
|
try {
|
|
83
|
+
const sepolia = resolveSepoliaNetworkConfig({ expectedAccount });
|
|
80
84
|
await assertExpectedChainAndAccount(sepolia, network);
|
|
81
85
|
} finally {
|
|
82
86
|
await context.close();
|
|
83
87
|
}
|
|
84
88
|
|
|
85
|
-
verifySmokeArtifactManifest('.wallet-artifacts/metamask-smoke
|
|
89
|
+
verifySmokeArtifactManifest('.wallet-artifacts/metamask-smoke/<run-id>');
|
|
86
90
|
```
|
|
87
91
|
|
|
88
92
|
## Configuration
|
|
89
93
|
|
|
90
|
-
|
|
94
|
+
Prefer explicit options in code. Environment-backed local runs should use ignored `.env` files. Before launching a browser, run:
|
|
95
|
+
|
|
96
|
+
```bash
|
|
97
|
+
npx wallet-browser doctor
|
|
98
|
+
# or inside this repo:
|
|
99
|
+
pnpm wallet:doctor
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
The doctor report lists configured key names and setup status only; it does not print secret values. Fix any `error` checks before running `prepare` or smoke commands.
|
|
103
|
+
|
|
104
|
+
Relevant keys include:
|
|
91
105
|
|
|
92
106
|
- `METAMASK_EXTENSION_PATH` or `METAMASK_EXTENSION_DIR`
|
|
93
107
|
- `METAMASK_EXTENSION_VERSION`
|
|
@@ -101,11 +115,27 @@ Use explicit options where possible. Environment-backed local runs use ignored `
|
|
|
101
115
|
|
|
102
116
|
Never commit `.env`, wallet profiles, extension bundles, traces, screenshots, videos, reports, or local proof artifacts.
|
|
103
117
|
|
|
118
|
+
## Smoke and artifact verification
|
|
119
|
+
|
|
120
|
+
```bash
|
|
121
|
+
# Real browser smoke: local burner/testnet config only.
|
|
122
|
+
xvfb-run -a pnpm exec wallet-browser smoke-metamask
|
|
123
|
+
|
|
124
|
+
# Verify the newest smoke artifact directory.
|
|
125
|
+
pnpm exec wallet-browser verify-smoke-artifacts
|
|
126
|
+
|
|
127
|
+
# Verify one explicit run.
|
|
128
|
+
pnpm exec wallet-browser verify-smoke-artifacts .wallet-artifacts/metamask-smoke/<run-id>
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
`verify-smoke-artifacts` checks manifest shape and attachment hash/size metadata. If no directory is supplied, it verifies the newest run under `.wallet-artifacts/metamask-smoke/` or `.wallet-artifacts/fixture-extension-smoke/`.
|
|
132
|
+
|
|
104
133
|
## Safety notes
|
|
105
134
|
|
|
106
|
-
-
|
|
107
|
-
-
|
|
108
|
-
- Smoke commands launch Chromium and capture local-only screenshots, but do not import, unlock, connect, sign, or transact.
|
|
135
|
+
- Burner/testnet wallets only.
|
|
136
|
+
- Real wallet launch requires explicit configuration.
|
|
109
137
|
- Prompt approval requires explicit prompt-driver support and guardrail policy.
|
|
110
138
|
- Unknown prompts, signatures, and transactions fail closed unless intentionally supported by the caller.
|
|
111
|
-
-
|
|
139
|
+
- Transaction value caps default to zero wei.
|
|
140
|
+
- Plans and public manifests must not expose private keys, seed phrases, wallet passwords, RPC credentials, local paths, or full wallet addresses.
|
|
141
|
+
- Raw screenshots, traces, videos, profiles, and extension bundles remain local unless reviewed and verified.
|
package/dist/cli.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAKA,OAAO,EAA8B,KAAK,gBAAgB,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAKA,OAAO,EAA8B,KAAK,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAMhF,OAAO,EAIL,KAAK,gBAAgB,EACtB,MAAM,qBAAqB,CAAC;AAE7B,MAAM,WAAW,uBAAuB;IACtC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,gBAAgB,CAAC;IACvB,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IACpC,wBAAwB,CAAC,EAAE,gBAAgB,CAAC;CAC7C;AAsFD,wBAAsB,mBAAmB,CAAC,OAAO,GAAE,uBAA4B,GAAG,OAAO,CAAC,MAAM,CAAC,CA2IhG"}
|
package/dist/cli.js
CHANGED
|
@@ -7,6 +7,7 @@ import { createMetaMaskOnboardingPlan, resolveMetaMaskOnboardingConfig } from '.
|
|
|
7
7
|
import { createSepoliaNetworkPlan, resolveSepoliaNetworkConfig } from './network.js';
|
|
8
8
|
import { createProfileBootstrapImportDryRun } from './profile-bootstrap.js';
|
|
9
9
|
import { verifyFixtureConnectionProofManifest } from './fixture-proof.js';
|
|
10
|
+
import { createWalletBrowserDoctorReport } from './doctor.js';
|
|
10
11
|
import { captureFixtureExtensionSmokeScreenshots, captureMetaMaskSmokeScreenshots, verifySmokeArtifactManifest } from './metamask-smoke.js';
|
|
11
12
|
const PREPARE_CONFIG_KEYS = [
|
|
12
13
|
'METAMASK_EXTENSION_PATH',
|
|
@@ -19,6 +20,7 @@ const PREPARE_CONFIG_KEYS = [
|
|
|
19
20
|
const PREPARE_ERROR_REDACT_KEYS = ['METAMASK_EXTENSION_PATH', 'METAMASK_EXTENSION_DIR', 'WALLET_PROFILE_DIR'];
|
|
20
21
|
const USAGE = `Usage:
|
|
21
22
|
wallet-browser prepare
|
|
23
|
+
wallet-browser doctor
|
|
22
24
|
wallet-browser smoke-metamask
|
|
23
25
|
wallet-browser smoke-fixture-extension
|
|
24
26
|
wallet-browser verify-smoke-artifacts [artifact-dir]
|
|
@@ -27,7 +29,8 @@ const USAGE = `Usage:
|
|
|
27
29
|
wallet-browser profile-bootstrap-import --dry-run
|
|
28
30
|
wallet-browser network-plan
|
|
29
31
|
|
|
30
|
-
Print
|
|
32
|
+
Print setup diagnostics for Node, Playwright/Chromium, MetaMask, .env, and ignored wallet artifacts,
|
|
33
|
+
print a sanitized Chromium persistent-context launch plan for the pinned MetaMask extension profile,
|
|
31
34
|
launch real Chromium with MetaMask loaded and capture local-only smoke screenshots,
|
|
32
35
|
launch real Chromium with a generated fake extension to prove extension-loading mechanics only,
|
|
33
36
|
print a redacted MetaMask onboarding plan for the configured burner wallet, or print a
|
|
@@ -71,6 +74,11 @@ export async function runWalletBrowserCli(options = {}) {
|
|
|
71
74
|
stdout(USAGE);
|
|
72
75
|
return 0;
|
|
73
76
|
}
|
|
77
|
+
if (command === 'doctor') {
|
|
78
|
+
const report = createWalletBrowserDoctorReport({ cwd: options.cwd, env: options.env });
|
|
79
|
+
stdout(`${JSON.stringify(report, null, 2)}\n`);
|
|
80
|
+
return report.status === 'error' ? 1 : 0;
|
|
81
|
+
}
|
|
74
82
|
if (command === 'smoke-metamask') {
|
|
75
83
|
try {
|
|
76
84
|
const runSmoke = options.runMetaMaskSmoke ?? captureMetaMaskSmokeScreenshots;
|
|
@@ -120,8 +128,8 @@ export async function runWalletBrowserCli(options = {}) {
|
|
|
120
128
|
stdout(`${JSON.stringify(publicResult, null, 2)}\n`);
|
|
121
129
|
return 0;
|
|
122
130
|
}
|
|
123
|
-
catch
|
|
124
|
-
stderr(
|
|
131
|
+
catch {
|
|
132
|
+
stderr('Fixture proof verification failed. Inspect local artifacts for details.\n');
|
|
125
133
|
return 1;
|
|
126
134
|
}
|
|
127
135
|
}
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAChD,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAE1C,OAAO,EAAE,4BAA4B,EAAE,MAAM,eAAe,CAAC;AAC7D,OAAO,EAAE,0BAA0B,EAAyB,MAAM,aAAa,CAAC;AAChF,OAAO,EAAE,4BAA4B,EAAE,+BAA+B,EAAE,MAAM,iBAAiB,CAAC;AAChG,OAAO,EAAE,wBAAwB,EAAE,2BAA2B,EAAE,MAAM,cAAc,CAAC;AACrF,OAAO,EAAE,kCAAkC,EAAE,MAAM,wBAAwB,CAAC;AAC5E,OAAO,EAAE,oCAAoC,EAAE,MAAM,oBAAoB,CAAC;AAC1E,OAAO,EACL,uCAAuC,EACvC,+BAA+B,EAC/B,2BAA2B,EAE5B,MAAM,qBAAqB,CAAC;AAgC7B,MAAM,mBAAmB,GAAG;IAC1B,yBAAyB;IACzB,wBAAwB;IACxB,4BAA4B;IAC5B,oBAAoB;IACpB,qBAAqB;IACrB,yBAAyB;CACjB,CAAC;AAEX,MAAM,yBAAyB,GAAG,CAAC,yBAAyB,EAAE,wBAAwB,EAAE,oBAAoB,CAAU,CAAC;AAEvH,MAAM,KAAK,GAAG
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
package/dist/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,uBAAuB,YAAY,CAAC;AAEjD,MAAM,WAAW,gBAAgB;IAC/B,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;IAClC,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,0BAA0B,CAAC,EAAE,MAAM,CAAC;IACpC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,0BAA0B,CAAC,EAAE,MAAM,CAAC;IACpC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,8BAA8B,CAAC,EAAE,MAAM,CAAC;IACxC,yBAAyB,CAAC,EAAE,MAAM,CAAC;IACnC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,qCAAqC,CAAC,EAAE,MAAM,CAAC;IAC/C,sBAAsB,CAAC,EAAE,MAAM,CAAC;CACjC;AAED,MAAM,WAAW,iCAAiC;IAChD,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,gBAAgB,CAAC;IACvB,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,MAAM,WAAW,yBAAyB;IACxC,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,mBAAmB;IAClC,WAAW,EAAE,UAAU,CAAC;IACxB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,wBAAwB,EAAE,MAAM,CAAC;IACjC,yBAAyB,EAAE,yBAAyB,CAAC;IACrD,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,OAAO,CAAC;CAC1B;AAID,wBAAgB,0BAA0B,CAAC,OAAO,GAAE,iCAAsC,GAAG,mBAAmB,
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,uBAAuB,YAAY,CAAC;AAEjD,MAAM,WAAW,gBAAgB;IAC/B,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;IAClC,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,0BAA0B,CAAC,EAAE,MAAM,CAAC;IACpC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,0BAA0B,CAAC,EAAE,MAAM,CAAC;IACpC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,8BAA8B,CAAC,EAAE,MAAM,CAAC;IACxC,yBAAyB,CAAC,EAAE,MAAM,CAAC;IACnC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,qCAAqC,CAAC,EAAE,MAAM,CAAC;IAC/C,sBAAsB,CAAC,EAAE,MAAM,CAAC;CACjC;AAED,MAAM,WAAW,iCAAiC;IAChD,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,gBAAgB,CAAC;IACvB,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,MAAM,WAAW,yBAAyB;IACxC,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,mBAAmB;IAClC,WAAW,EAAE,UAAU,CAAC;IACxB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,wBAAwB,EAAE,MAAM,CAAC;IACjC,yBAAyB,EAAE,yBAAyB,CAAC;IACrD,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,OAAO,CAAC;CAC1B;AAID,wBAAgB,0BAA0B,CAAC,OAAO,GAAE,iCAAsC,GAAG,mBAAmB,CAqC/G"}
|
package/dist/config.js
CHANGED
|
@@ -5,16 +5,10 @@ const DEFAULT_PROFILE_NAME = 'sepolia-burner';
|
|
|
5
5
|
export function resolveWalletBrowserConfig(options = {}) {
|
|
6
6
|
const cwd = options.cwd ?? process.cwd();
|
|
7
7
|
const env = options.env ?? process.env;
|
|
8
|
-
const metamaskExtensionVersion = options.metamaskExtensionVersion?.trim() || env.METAMASK_EXTENSION_VERSION?.trim() || PINNED_METAMASK_VERSION;
|
|
9
|
-
const
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
env.METAMASK_EXTENSION_DIR ??
|
|
13
|
-
defaultMetamaskExtensionPath(metamaskExtensionVersion);
|
|
14
|
-
const usesDefaultExtensionArtifact = options.metamaskExtensionPath === undefined &&
|
|
15
|
-
options.metamaskExtensionDir === undefined &&
|
|
16
|
-
env.METAMASK_EXTENSION_PATH === undefined &&
|
|
17
|
-
env.METAMASK_EXTENSION_DIR === undefined;
|
|
8
|
+
const metamaskExtensionVersion = normalizeMetaMaskExtensionVersion(options.metamaskExtensionVersion?.trim() || env.METAMASK_EXTENSION_VERSION?.trim() || PINNED_METAMASK_VERSION);
|
|
9
|
+
const explicitExtensionPath = firstNonBlank(options.metamaskExtensionPath, options.metamaskExtensionDir, env.METAMASK_EXTENSION_PATH, env.METAMASK_EXTENSION_DIR);
|
|
10
|
+
const extensionPathValue = explicitExtensionPath ?? defaultMetamaskExtensionPath(metamaskExtensionVersion);
|
|
11
|
+
const usesDefaultExtensionArtifact = explicitExtensionPath === undefined;
|
|
18
12
|
const metamaskExtensionPath = resolve(cwd, extensionPathValue);
|
|
19
13
|
assertDirectory(metamaskExtensionPath, 'MetaMask extension path');
|
|
20
14
|
const metamaskExtensionIdentity = readMetaMaskManifestIdentity(metamaskExtensionPath);
|
|
@@ -37,16 +31,37 @@ export function resolveWalletBrowserConfig(options = {}) {
|
|
|
37
31
|
};
|
|
38
32
|
}
|
|
39
33
|
function defaultMetamaskExtensionPath(version) {
|
|
34
|
+
normalizeMetaMaskExtensionVersion(version);
|
|
40
35
|
return join('.wallet-extensions', 'metamask', version, 'chrome');
|
|
41
36
|
}
|
|
37
|
+
function firstNonBlank(...values) {
|
|
38
|
+
for (const value of values) {
|
|
39
|
+
if (typeof value !== 'string')
|
|
40
|
+
continue;
|
|
41
|
+
const trimmed = value.trim();
|
|
42
|
+
if (trimmed !== '')
|
|
43
|
+
return trimmed;
|
|
44
|
+
}
|
|
45
|
+
return undefined;
|
|
46
|
+
}
|
|
47
|
+
function normalizeMetaMaskExtensionVersion(value) {
|
|
48
|
+
const version = value.trim();
|
|
49
|
+
if (!/^\d+\.\d+\.\d+(?:[-+][A-Za-z0-9.-]+)?$/.test(version)) {
|
|
50
|
+
throw new Error('METAMASK_EXTENSION_VERSION must be a semver-like version string without path separators.');
|
|
51
|
+
}
|
|
52
|
+
return version;
|
|
53
|
+
}
|
|
42
54
|
function assertDirectory(path, label) {
|
|
43
55
|
if (!existsSync(path)) {
|
|
44
|
-
throw new Error(`${label} does not exist: ${path}. Set METAMASK_EXTENSION_PATH or METAMASK_EXTENSION_DIR to an unpacked MetaMask extension directory, or prepare the pinned default artifact under ${defaultMetamaskExtensionPath(PINNED_METAMASK_VERSION)}.`);
|
|
56
|
+
throw new Error(`${label} does not exist: ${redactLocalPath(path)}. Set METAMASK_EXTENSION_PATH or METAMASK_EXTENSION_DIR to an unpacked MetaMask extension directory, or prepare the pinned default artifact under ${defaultMetamaskExtensionPath(PINNED_METAMASK_VERSION)}.`);
|
|
45
57
|
}
|
|
46
58
|
if (!statSync(path).isDirectory()) {
|
|
47
|
-
throw new Error(`${label} must be a directory: ${path}`);
|
|
59
|
+
throw new Error(`${label} must be a directory: ${redactLocalPath(path)}`);
|
|
48
60
|
}
|
|
49
61
|
}
|
|
62
|
+
function redactLocalPath(value) {
|
|
63
|
+
return value ? '[REDACTED_LOCAL_PATH]' : value;
|
|
64
|
+
}
|
|
50
65
|
function assertSafeProfileDir(profileDir, cwd, metamaskExtensionPath) {
|
|
51
66
|
const root = parse(profileDir).root;
|
|
52
67
|
if (profileDir === root || profileDir === resolve(cwd)) {
|
|
@@ -62,17 +77,17 @@ function isSamePathOrChild(candidatePath, parentPath) {
|
|
|
62
77
|
}
|
|
63
78
|
function assertManifestVersionMatchesConfiguredVersion(identity, configuredVersion, extensionPath) {
|
|
64
79
|
if (identity.version !== configuredVersion) {
|
|
65
|
-
throw new Error(`MetaMask extension manifest version must match configured version for default artifact ${extensionPath}: expected ${configuredVersion}, found ${identity.version ?? 'missing'}.`);
|
|
80
|
+
throw new Error(`MetaMask extension manifest version must match configured version for default artifact ${redactLocalPath(extensionPath)}: expected ${configuredVersion}, found ${identity.version ?? 'missing'}.`);
|
|
66
81
|
}
|
|
67
82
|
}
|
|
68
83
|
function readMetaMaskManifestIdentity(extensionPath) {
|
|
69
84
|
const manifestPath = join(extensionPath, 'manifest.json');
|
|
70
85
|
if (!existsSync(manifestPath)) {
|
|
71
|
-
throw new Error(`MetaMask extension manifest is missing: ${manifestPath}`);
|
|
86
|
+
throw new Error(`MetaMask extension manifest is missing: ${redactLocalPath(manifestPath)}`);
|
|
72
87
|
}
|
|
73
88
|
const manifest = readManifest(manifestPath);
|
|
74
89
|
if (manifest.manifest_version !== 3) {
|
|
75
|
-
throw new Error(`MetaMask extension manifest_version must be 3: ${manifestPath}`);
|
|
90
|
+
throw new Error(`MetaMask extension manifest_version must be 3: ${redactLocalPath(manifestPath)}`);
|
|
76
91
|
}
|
|
77
92
|
const rawName = typeof manifest.name === 'string' ? manifest.name : '';
|
|
78
93
|
const rawShortName = typeof manifest.short_name === 'string' ? manifest.short_name : '';
|
|
@@ -80,7 +95,7 @@ function readMetaMaskManifestIdentity(extensionPath) {
|
|
|
80
95
|
const name = resolveManifestText(rawName, localeMessages).trim();
|
|
81
96
|
const shortName = resolveManifestText(rawShortName, localeMessages).trim();
|
|
82
97
|
if (!isMetaMaskManifestName(name) && !isMetaMaskManifestName(shortName)) {
|
|
83
|
-
throw new Error(`MetaMask extension manifest must identify MetaMask: ${manifestPath}`);
|
|
98
|
+
throw new Error(`MetaMask extension manifest must identify MetaMask: ${redactLocalPath(manifestPath)}`);
|
|
84
99
|
}
|
|
85
100
|
const identity = { name };
|
|
86
101
|
if (shortName !== '') {
|
|
@@ -99,7 +114,14 @@ function readLocaleMessages(extensionPath, manifest) {
|
|
|
99
114
|
if (defaultLocale === '') {
|
|
100
115
|
return {};
|
|
101
116
|
}
|
|
102
|
-
|
|
117
|
+
if (!/^[A-Za-z0-9_@-]+$/.test(defaultLocale)) {
|
|
118
|
+
throw new Error('MetaMask extension default_locale contains unsupported characters.');
|
|
119
|
+
}
|
|
120
|
+
const localesRoot = resolve(extensionPath, '_locales');
|
|
121
|
+
const messagesPath = resolve(localesRoot, defaultLocale, 'messages.json');
|
|
122
|
+
if (!isSamePathOrChild(messagesPath, localesRoot)) {
|
|
123
|
+
throw new Error('MetaMask extension default_locale resolves outside the _locales directory.');
|
|
124
|
+
}
|
|
103
125
|
if (!existsSync(messagesPath)) {
|
|
104
126
|
return {};
|
|
105
127
|
}
|
|
@@ -127,7 +149,7 @@ function readManifest(manifestPath) {
|
|
|
127
149
|
return manifest;
|
|
128
150
|
}
|
|
129
151
|
catch (error) {
|
|
130
|
-
throw new Error(`MetaMask extension manifest must be valid JSON: ${manifestPath}${error instanceof Error ? ` (${error.message})` : ''}`);
|
|
152
|
+
throw new Error(`MetaMask extension manifest must be valid JSON: ${redactLocalPath(manifestPath)}${error instanceof Error ? ` (${error.message})` : ''}`);
|
|
131
153
|
}
|
|
132
154
|
}
|
|
133
155
|
function parseBoolean(value) {
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACxE,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAE5E,MAAM,CAAC,MAAM,uBAAuB,GAAG,SAAS,CAAC;AAgDjD,MAAM,oBAAoB,GAAG,gBAAgB,CAAC;AAE9C,MAAM,UAAU,0BAA0B,CAAC,UAA6C,EAAE;IACxF,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IACzC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC;IACvC,MAAM,wBAAwB,GAAG,OAAO,CAAC,wBAAwB,EAAE,IAAI,EAAE,IAAI,GAAG,CAAC,0BAA0B,EAAE,IAAI,EAAE,IAAI,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
package/dist/doctor.d.ts
ADDED
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { type WalletBrowserEnv } from './config.js';
|
|
2
|
+
export type WalletBrowserDoctorStatus = 'ok' | 'warning' | 'error';
|
|
3
|
+
export interface WalletBrowserDoctorCheck {
|
|
4
|
+
id: string;
|
|
5
|
+
label: string;
|
|
6
|
+
status: WalletBrowserDoctorStatus;
|
|
7
|
+
summary: string;
|
|
8
|
+
action?: string;
|
|
9
|
+
}
|
|
10
|
+
export interface WalletBrowserDoctorReport {
|
|
11
|
+
status: WalletBrowserDoctorStatus;
|
|
12
|
+
checks: WalletBrowserDoctorCheck[];
|
|
13
|
+
env: {
|
|
14
|
+
envFile: {
|
|
15
|
+
path: string;
|
|
16
|
+
present: boolean;
|
|
17
|
+
keys: string[];
|
|
18
|
+
};
|
|
19
|
+
runtime: {
|
|
20
|
+
present: string[];
|
|
21
|
+
missing: string[];
|
|
22
|
+
};
|
|
23
|
+
};
|
|
24
|
+
paths: {
|
|
25
|
+
profileDir?: string;
|
|
26
|
+
metamaskExtensionPath?: string;
|
|
27
|
+
chromiumExecutablePath?: string;
|
|
28
|
+
};
|
|
29
|
+
notes: string[];
|
|
30
|
+
}
|
|
31
|
+
export interface CreateWalletBrowserDoctorReportOptions {
|
|
32
|
+
cwd?: string;
|
|
33
|
+
env?: WalletBrowserEnv;
|
|
34
|
+
nodeVersion?: string;
|
|
35
|
+
}
|
|
36
|
+
export declare function createWalletBrowserDoctorReport(options?: CreateWalletBrowserDoctorReportOptions): WalletBrowserDoctorReport;
|
|
37
|
+
//# sourceMappingURL=doctor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../src/doctor.ts"],"names":[],"mappings":"AAKA,OAAO,EAA2B,KAAK,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAE7E,MAAM,MAAM,yBAAyB,GAAG,IAAI,GAAG,SAAS,GAAG,OAAO,CAAC;AAEnE,MAAM,WAAW,wBAAwB;IACvC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,yBAAyB,CAAC;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,yBAAyB;IACxC,MAAM,EAAE,yBAAyB,CAAC;IAClC,MAAM,EAAE,wBAAwB,EAAE,CAAC;IACnC,GAAG,EAAE;QACH,OAAO,EAAE;YACP,IAAI,EAAE,MAAM,CAAC;YACb,OAAO,EAAE,OAAO,CAAC;YACjB,IAAI,EAAE,MAAM,EAAE,CAAC;SAChB,CAAC;QACF,OAAO,EAAE;YACP,OAAO,EAAE,MAAM,EAAE,CAAC;YAClB,OAAO,EAAE,MAAM,EAAE,CAAC;SACnB,CAAC;KACH,CAAC;IACF,KAAK,EAAE;QACL,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,qBAAqB,CAAC,EAAE,MAAM,CAAC;QAC/B,sBAAsB,CAAC,EAAE,MAAM,CAAC;KACjC,CAAC;IACF,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,MAAM,WAAW,sCAAsC;IACrD,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,gBAAgB,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAkBD,wBAAgB,+BAA+B,CAAC,OAAO,GAAE,sCAA2C,GAAG,yBAAyB,CA+D/H"}
|
package/dist/doctor.js
ADDED
|
@@ -0,0 +1,406 @@
|
|
|
1
|
+
import { existsSync, readFileSync, statSync } from 'node:fs';
|
|
2
|
+
import { isAbsolute, join, parse, relative, resolve, sep } from 'node:path';
|
|
3
|
+
import { chromium } from 'playwright';
|
|
4
|
+
import { PINNED_METAMASK_VERSION } from './config.js';
|
|
5
|
+
const DOCTOR_ENV_KEYS = [
|
|
6
|
+
'METAMASK_EXTENSION_PATH',
|
|
7
|
+
'METAMASK_EXTENSION_DIR',
|
|
8
|
+
'METAMASK_EXTENSION_VERSION',
|
|
9
|
+
'WALLET_PROFILE_DIR',
|
|
10
|
+
'WALLET_PROFILE_NAME',
|
|
11
|
+
'PRESERVE_WALLET_PROFILE',
|
|
12
|
+
'SEPOLIA_WALLET_ADDRESS',
|
|
13
|
+
'SEPOLIA_WALLET_PRIVATE_KEY',
|
|
14
|
+
'METAMASK_PASSWORD',
|
|
15
|
+
'SEPOLIA_CHAIN_ID',
|
|
16
|
+
'SEPOLIA_RPC_URL'
|
|
17
|
+
];
|
|
18
|
+
const REQUIRED_GITIGNORE_PATTERNS = ['.env', '.wallet-profiles/', '.wallet-extensions/', '.wallet-artifacts/'];
|
|
19
|
+
export function createWalletBrowserDoctorReport(options = {}) {
|
|
20
|
+
const cwd = options.cwd ?? process.cwd();
|
|
21
|
+
const env = options.env ?? process.env;
|
|
22
|
+
const checks = [];
|
|
23
|
+
const paths = {};
|
|
24
|
+
checks.push(checkNodeVersion(options.nodeVersion ?? process.version));
|
|
25
|
+
const playwrightCheck = checkPlaywrightChromium();
|
|
26
|
+
checks.push(playwrightCheck.check);
|
|
27
|
+
if (playwrightCheck.chromiumExecutablePath) {
|
|
28
|
+
paths.chromiumExecutablePath = redactLocalPath(playwrightCheck.chromiumExecutablePath);
|
|
29
|
+
}
|
|
30
|
+
const envFile = summarizeEnvFile(cwd);
|
|
31
|
+
checks.push({
|
|
32
|
+
id: 'env-file',
|
|
33
|
+
label: '.env file',
|
|
34
|
+
status: envFile.present ? 'ok' : 'warning',
|
|
35
|
+
summary: envFile.present
|
|
36
|
+
? `.env is present with ${envFile.keys.length} configured key${envFile.keys.length === 1 ? '' : 's'}; values are intentionally omitted.`
|
|
37
|
+
: '.env was not found; runtime environment variables will still be honored.',
|
|
38
|
+
action: envFile.present ? undefined : 'Create a local .env from README examples when you need persistent wallet testnet settings; never commit it.'
|
|
39
|
+
});
|
|
40
|
+
const runtimeEnv = summarizeRuntimeEnv(env);
|
|
41
|
+
checks.push({
|
|
42
|
+
id: 'runtime-env',
|
|
43
|
+
label: 'wallet runtime environment',
|
|
44
|
+
status: runtimeEnv.present.length > 0 ? 'ok' : 'warning',
|
|
45
|
+
summary: runtimeEnv.present.length > 0
|
|
46
|
+
? `Runtime env has ${runtimeEnv.present.length} wallet setup key${runtimeEnv.present.length === 1 ? '' : 's'} configured; values are intentionally omitted.`
|
|
47
|
+
: 'No wallet setup runtime variables are configured.',
|
|
48
|
+
action: runtimeEnv.present.length > 0 ? undefined : 'Set METAMASK_EXTENSION_PATH or run pnpm wallet:metamask:fetch to prepare the pinned default MetaMask artifact.'
|
|
49
|
+
});
|
|
50
|
+
const metamaskCheck = checkMetaMaskExtension(cwd, env);
|
|
51
|
+
checks.push(metamaskCheck.check);
|
|
52
|
+
if (metamaskCheck.metamaskExtensionPath) {
|
|
53
|
+
paths.metamaskExtensionPath = redactLocalPath(metamaskCheck.metamaskExtensionPath);
|
|
54
|
+
}
|
|
55
|
+
if (metamaskCheck.profileDir) {
|
|
56
|
+
paths.profileDir = redactLocalPath(metamaskCheck.profileDir);
|
|
57
|
+
}
|
|
58
|
+
checks.push(checkProfileDirectory(cwd, env));
|
|
59
|
+
checks.push(checkGitignore(cwd));
|
|
60
|
+
const status = summarizeStatus(checks);
|
|
61
|
+
return {
|
|
62
|
+
status,
|
|
63
|
+
checks,
|
|
64
|
+
env: {
|
|
65
|
+
envFile,
|
|
66
|
+
runtime: runtimeEnv
|
|
67
|
+
},
|
|
68
|
+
paths,
|
|
69
|
+
notes: [
|
|
70
|
+
'Doctor never launches Chromium, imports wallets, unlocks MetaMask, connects accounts, signs messages, or sends transactions.',
|
|
71
|
+
'Secret values from .env and process env are not printed; only key names and redacted setup state are reported.',
|
|
72
|
+
'Local filesystem paths are redacted from doctor JSON so reports can be shared safely.'
|
|
73
|
+
]
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
function checkNodeVersion(version) {
|
|
77
|
+
const normalized = version.trim().replace(/^v/, '');
|
|
78
|
+
const major = Number.parseInt(normalized.split('.')[0] ?? '', 10);
|
|
79
|
+
if (major === 22) {
|
|
80
|
+
return {
|
|
81
|
+
id: 'node',
|
|
82
|
+
label: 'Node.js version',
|
|
83
|
+
status: 'ok',
|
|
84
|
+
summary: `Node ${version} satisfies @broccolo1d/wallet-browser engine >=22 <23.`
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
return {
|
|
88
|
+
id: 'node',
|
|
89
|
+
label: 'Node.js version',
|
|
90
|
+
status: 'error',
|
|
91
|
+
summary: `Node ${version} does not satisfy @broccolo1d/wallet-browser engine >=22 <23.`,
|
|
92
|
+
action: 'Install and use Node 22.x before running wallet-browser setup or smoke commands.'
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
function checkPlaywrightChromium() {
|
|
96
|
+
try {
|
|
97
|
+
const executablePath = chromium.executablePath();
|
|
98
|
+
if (executablePath.trim() === '') {
|
|
99
|
+
return {
|
|
100
|
+
check: {
|
|
101
|
+
id: 'playwright-chromium',
|
|
102
|
+
label: 'Playwright Chromium',
|
|
103
|
+
status: 'error',
|
|
104
|
+
summary: 'Playwright is installed but did not report a Chromium executable path.',
|
|
105
|
+
action: 'Run pnpm exec playwright install chromium, then rerun npx wallet-browser doctor.'
|
|
106
|
+
}
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
return {
|
|
110
|
+
chromiumExecutablePath: executablePath,
|
|
111
|
+
check: {
|
|
112
|
+
id: 'playwright-chromium',
|
|
113
|
+
label: 'Playwright Chromium',
|
|
114
|
+
status: existsSync(executablePath) ? 'ok' : 'warning',
|
|
115
|
+
summary: existsSync(executablePath)
|
|
116
|
+
? 'Playwright can resolve an installed Chromium executable.'
|
|
117
|
+
: 'Playwright can resolve a Chromium executable path, but the binary was not found on disk.',
|
|
118
|
+
action: existsSync(executablePath) ? undefined : 'Run pnpm exec playwright install chromium before browser smoke runs.'
|
|
119
|
+
}
|
|
120
|
+
};
|
|
121
|
+
}
|
|
122
|
+
catch (error) {
|
|
123
|
+
return {
|
|
124
|
+
check: {
|
|
125
|
+
id: 'playwright-chromium',
|
|
126
|
+
label: 'Playwright Chromium',
|
|
127
|
+
status: 'error',
|
|
128
|
+
summary: `Playwright Chromium diagnostics failed: ${error instanceof Error ? error.message : String(error)}`,
|
|
129
|
+
action: 'Install dependencies with pnpm install, then run pnpm exec playwright install chromium.'
|
|
130
|
+
}
|
|
131
|
+
};
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
function checkMetaMaskExtension(cwd, env) {
|
|
135
|
+
try {
|
|
136
|
+
const configuredVersion = normalizeMetaMaskExtensionVersion(env.METAMASK_EXTENSION_VERSION?.trim() || PINNED_METAMASK_VERSION);
|
|
137
|
+
const explicitExtensionPath = firstNonBlank(env.METAMASK_EXTENSION_PATH, env.METAMASK_EXTENSION_DIR);
|
|
138
|
+
const extensionPathValue = explicitExtensionPath ?? defaultMetamaskExtensionPath(configuredVersion);
|
|
139
|
+
const usesDefaultExtensionArtifact = explicitExtensionPath === undefined;
|
|
140
|
+
const metamaskExtensionPath = resolve(cwd, extensionPathValue);
|
|
141
|
+
const profileDir = resolveProfileDir(cwd, env);
|
|
142
|
+
assertDirectoryExists(metamaskExtensionPath, 'MetaMask extension path');
|
|
143
|
+
const identity = readMetaMaskManifestIdentity(metamaskExtensionPath);
|
|
144
|
+
if (usesDefaultExtensionArtifact && identity.version !== configuredVersion) {
|
|
145
|
+
throw new Error(`MetaMask extension manifest version must match configured version for default artifact ${redactLocalPath(metamaskExtensionPath)}: expected ${configuredVersion}, found ${identity.version ?? 'missing'}.`);
|
|
146
|
+
}
|
|
147
|
+
return {
|
|
148
|
+
metamaskExtensionPath,
|
|
149
|
+
profileDir,
|
|
150
|
+
check: {
|
|
151
|
+
id: 'metamask-extension',
|
|
152
|
+
label: 'MetaMask extension artifact',
|
|
153
|
+
status: 'ok',
|
|
154
|
+
summary: `MetaMask extension manifest is valid${identity.version ? ` (${identity.version})` : ''}.`
|
|
155
|
+
}
|
|
156
|
+
};
|
|
157
|
+
}
|
|
158
|
+
catch (error) {
|
|
159
|
+
const message = redactDoctorMessage(error instanceof Error ? error.message : String(error), env, cwd);
|
|
160
|
+
return {
|
|
161
|
+
check: {
|
|
162
|
+
id: 'metamask-extension',
|
|
163
|
+
label: 'MetaMask extension artifact',
|
|
164
|
+
status: 'error',
|
|
165
|
+
summary: message,
|
|
166
|
+
action: `Run pnpm wallet:metamask:fetch to populate .wallet-extensions/metamask/${PINNED_METAMASK_VERSION}/chrome, or set METAMASK_EXTENSION_PATH to an unpacked MetaMask MV3 extension directory.`
|
|
167
|
+
}
|
|
168
|
+
};
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
function checkProfileDirectory(cwd, env) {
|
|
172
|
+
try {
|
|
173
|
+
const configuredVersion = normalizeMetaMaskExtensionVersion(env.METAMASK_EXTENSION_VERSION?.trim() || PINNED_METAMASK_VERSION);
|
|
174
|
+
const profileDir = resolveProfileDir(cwd, env);
|
|
175
|
+
const extensionPathValue = firstNonBlank(env.METAMASK_EXTENSION_PATH, env.METAMASK_EXTENSION_DIR) ?? defaultMetamaskExtensionPath(configuredVersion);
|
|
176
|
+
const metamaskExtensionPath = resolve(cwd, extensionPathValue);
|
|
177
|
+
assertSafeProfileDir(profileDir, cwd, metamaskExtensionPath);
|
|
178
|
+
if (!existsSync(profileDir)) {
|
|
179
|
+
return {
|
|
180
|
+
id: 'wallet-profile-dir',
|
|
181
|
+
label: 'wallet profile directory',
|
|
182
|
+
status: 'warning',
|
|
183
|
+
summary: 'Wallet profile directory does not exist yet; setup/smoke commands can create it later. Doctor does not create files.',
|
|
184
|
+
action: 'Run wallet setup or smoke commands only after .gitignore protects .wallet-profiles/.'
|
|
185
|
+
};
|
|
186
|
+
}
|
|
187
|
+
if (!statSync(profileDir).isDirectory()) {
|
|
188
|
+
throw new Error('configured wallet profile path is not a directory');
|
|
189
|
+
}
|
|
190
|
+
return {
|
|
191
|
+
id: 'wallet-profile-dir',
|
|
192
|
+
label: 'wallet profile directory',
|
|
193
|
+
status: 'ok',
|
|
194
|
+
summary: 'Wallet profile directory already exists and is isolated from source-controlled files.'
|
|
195
|
+
};
|
|
196
|
+
}
|
|
197
|
+
catch (error) {
|
|
198
|
+
return {
|
|
199
|
+
id: 'wallet-profile-dir',
|
|
200
|
+
label: 'wallet profile directory',
|
|
201
|
+
status: 'error',
|
|
202
|
+
summary: `Wallet profile directory is not usable: ${redactDoctorMessage(error instanceof Error ? error.message : String(error), env, cwd)}`,
|
|
203
|
+
action: 'Set WALLET_PROFILE_DIR to a writable local-only directory, preferably under .wallet-profiles/.'
|
|
204
|
+
};
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
function checkGitignore(cwd) {
|
|
208
|
+
const gitignorePath = join(cwd, '.gitignore');
|
|
209
|
+
let gitignore = '';
|
|
210
|
+
try {
|
|
211
|
+
gitignore = readFileSync(gitignorePath, 'utf8');
|
|
212
|
+
}
|
|
213
|
+
catch {
|
|
214
|
+
return {
|
|
215
|
+
id: 'gitignore-wallet-artifacts',
|
|
216
|
+
label: 'local wallet artifacts ignored',
|
|
217
|
+
status: 'error',
|
|
218
|
+
summary: '.gitignore is missing, so wallet profiles, extension artifacts, and .env are not protected from accidental commits.',
|
|
219
|
+
action: `Create .gitignore entries for ${REQUIRED_GITIGNORE_PATTERNS.join(', ')}.`
|
|
220
|
+
};
|
|
221
|
+
}
|
|
222
|
+
const missing = REQUIRED_GITIGNORE_PATTERNS.filter((pattern) => !gitignoreIncludesPattern(gitignore, pattern));
|
|
223
|
+
if (missing.length === 0) {
|
|
224
|
+
return {
|
|
225
|
+
id: 'gitignore-wallet-artifacts',
|
|
226
|
+
label: 'local wallet artifacts ignored',
|
|
227
|
+
status: 'ok',
|
|
228
|
+
summary: '.gitignore protects .env, wallet profiles, extension artifacts, and smoke artifacts.'
|
|
229
|
+
};
|
|
230
|
+
}
|
|
231
|
+
return {
|
|
232
|
+
id: 'gitignore-wallet-artifacts',
|
|
233
|
+
label: 'local wallet artifacts ignored',
|
|
234
|
+
status: 'error',
|
|
235
|
+
summary: `.gitignore is missing wallet-local pattern${missing.length === 1 ? '' : 's'}: ${missing.join(', ')}.`,
|
|
236
|
+
action: `Add ${missing.join(', ')} to .gitignore before running wallet setup commands.`
|
|
237
|
+
};
|
|
238
|
+
}
|
|
239
|
+
function defaultMetamaskExtensionPath(version) {
|
|
240
|
+
normalizeMetaMaskExtensionVersion(version);
|
|
241
|
+
return join('.wallet-extensions', 'metamask', version, 'chrome');
|
|
242
|
+
}
|
|
243
|
+
function firstNonBlank(...values) {
|
|
244
|
+
for (const value of values) {
|
|
245
|
+
if (typeof value !== 'string')
|
|
246
|
+
continue;
|
|
247
|
+
const trimmed = value.trim();
|
|
248
|
+
if (trimmed !== '')
|
|
249
|
+
return trimmed;
|
|
250
|
+
}
|
|
251
|
+
return undefined;
|
|
252
|
+
}
|
|
253
|
+
function normalizeMetaMaskExtensionVersion(value) {
|
|
254
|
+
const version = value.trim();
|
|
255
|
+
if (!/^\d+\.\d+\.\d+(?:[-+][A-Za-z0-9.-]+)?$/.test(version)) {
|
|
256
|
+
throw new Error('METAMASK_EXTENSION_VERSION must be a semver-like version string without path separators.');
|
|
257
|
+
}
|
|
258
|
+
return version;
|
|
259
|
+
}
|
|
260
|
+
function resolveProfileDir(cwd, env) {
|
|
261
|
+
const profileName = sanitizeProfileName(env.WALLET_PROFILE_NAME?.trim() || 'sepolia-burner');
|
|
262
|
+
return resolve(cwd, env.WALLET_PROFILE_DIR?.trim() || `.wallet-profiles/${profileName}`);
|
|
263
|
+
}
|
|
264
|
+
function assertDirectoryExists(path, label) {
|
|
265
|
+
if (!existsSync(path)) {
|
|
266
|
+
throw new Error(`${label} does not exist: ${redactLocalPath(path)}.`);
|
|
267
|
+
}
|
|
268
|
+
if (!statSync(path).isDirectory()) {
|
|
269
|
+
throw new Error(`${label} must be a directory: ${redactLocalPath(path)}.`);
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
function assertSafeProfileDir(profileDir, cwd, metamaskExtensionPath) {
|
|
273
|
+
const root = parse(profileDir).root;
|
|
274
|
+
if (profileDir === root || profileDir === resolve(cwd)) {
|
|
275
|
+
throw new Error('Wallet browser profile directory is unsafe; use an isolated directory under .wallet-profiles or an explicit wallet profile root.');
|
|
276
|
+
}
|
|
277
|
+
if (isSamePathOrChild(profileDir, metamaskExtensionPath) || isSamePathOrChild(metamaskExtensionPath, profileDir)) {
|
|
278
|
+
throw new Error('Wallet browser profile directory must not overlap the MetaMask extension path.');
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
function isSamePathOrChild(candidatePath, parentPath) {
|
|
282
|
+
const relation = relative(parentPath, candidatePath);
|
|
283
|
+
return relation === '' || (!relation.startsWith('..') && !isAbsolute(relation) && !relation.startsWith(sep));
|
|
284
|
+
}
|
|
285
|
+
function readMetaMaskManifestIdentity(extensionPath) {
|
|
286
|
+
const manifestPath = join(extensionPath, 'manifest.json');
|
|
287
|
+
if (!existsSync(manifestPath)) {
|
|
288
|
+
throw new Error(`MetaMask extension manifest is missing: ${redactLocalPath(manifestPath)}.`);
|
|
289
|
+
}
|
|
290
|
+
const manifest = JSON.parse(readFileSync(manifestPath, 'utf8'));
|
|
291
|
+
if (manifest.manifest_version !== 3) {
|
|
292
|
+
throw new Error(`MetaMask extension manifest_version must be 3: ${redactLocalPath(manifestPath)}.`);
|
|
293
|
+
}
|
|
294
|
+
const localeMessages = readLocaleMessages(extensionPath, manifest);
|
|
295
|
+
const name = resolveManifestText(typeof manifest.name === 'string' ? manifest.name : '', localeMessages).trim();
|
|
296
|
+
const shortName = resolveManifestText(typeof manifest.short_name === 'string' ? manifest.short_name : '', localeMessages).trim();
|
|
297
|
+
if (name.trim().toLowerCase() !== 'metamask' && shortName.trim().toLowerCase() !== 'metamask') {
|
|
298
|
+
throw new Error(`MetaMask extension manifest must identify MetaMask: ${redactLocalPath(manifestPath)}.`);
|
|
299
|
+
}
|
|
300
|
+
const identity = { name: name || 'MetaMask' };
|
|
301
|
+
if (shortName)
|
|
302
|
+
identity.shortName = shortName;
|
|
303
|
+
if (typeof manifest.version === 'string' && manifest.version.trim() !== '')
|
|
304
|
+
identity.version = manifest.version;
|
|
305
|
+
return identity;
|
|
306
|
+
}
|
|
307
|
+
function readLocaleMessages(extensionPath, manifest) {
|
|
308
|
+
const defaultLocale = typeof manifest.default_locale === 'string' ? manifest.default_locale.trim() : '';
|
|
309
|
+
if (defaultLocale === '') {
|
|
310
|
+
return {};
|
|
311
|
+
}
|
|
312
|
+
if (!/^[A-Za-z0-9_@-]+$/.test(defaultLocale)) {
|
|
313
|
+
throw new Error('MetaMask extension default_locale contains unsupported characters.');
|
|
314
|
+
}
|
|
315
|
+
const localesRoot = resolve(extensionPath, '_locales');
|
|
316
|
+
const messagesPath = resolve(localesRoot, defaultLocale, 'messages.json');
|
|
317
|
+
if (!isSamePathOrChild(messagesPath, localesRoot)) {
|
|
318
|
+
throw new Error('MetaMask extension default_locale resolves outside the _locales directory.');
|
|
319
|
+
}
|
|
320
|
+
if (!existsSync(messagesPath)) {
|
|
321
|
+
return {};
|
|
322
|
+
}
|
|
323
|
+
const messages = JSON.parse(readFileSync(messagesPath, 'utf8'));
|
|
324
|
+
const resolved = {};
|
|
325
|
+
for (const [key, value] of Object.entries(messages)) {
|
|
326
|
+
if (value !== null && typeof value === 'object' && !Array.isArray(value)) {
|
|
327
|
+
const message = value.message;
|
|
328
|
+
if (typeof message === 'string') {
|
|
329
|
+
resolved[key] = message;
|
|
330
|
+
}
|
|
331
|
+
}
|
|
332
|
+
}
|
|
333
|
+
return resolved;
|
|
334
|
+
}
|
|
335
|
+
function resolveManifestText(value, localeMessages) {
|
|
336
|
+
return value.replace(/__MSG_([A-Za-z0-9_@]+)__/g, (match, key) => localeMessages[key] ?? match);
|
|
337
|
+
}
|
|
338
|
+
function sanitizeProfileName(value) {
|
|
339
|
+
if (!/^[a-zA-Z0-9._-]+$/.test(value)) {
|
|
340
|
+
throw new Error('WALLET_PROFILE_NAME may only contain letters, numbers, dots, underscores, and hyphens.');
|
|
341
|
+
}
|
|
342
|
+
return value;
|
|
343
|
+
}
|
|
344
|
+
function redactLocalPath(value) {
|
|
345
|
+
return value ? '[REDACTED_LOCAL_PATH]' : value;
|
|
346
|
+
}
|
|
347
|
+
function summarizeEnvFile(cwd) {
|
|
348
|
+
const envPath = join(cwd, '.env');
|
|
349
|
+
if (!existsSync(envPath)) {
|
|
350
|
+
return { path: '.env', present: false, keys: [] };
|
|
351
|
+
}
|
|
352
|
+
const keys = new Set();
|
|
353
|
+
const content = readFileSync(envPath, 'utf8');
|
|
354
|
+
for (const line of content.split(/\r?\n/)) {
|
|
355
|
+
const trimmed = line.trim();
|
|
356
|
+
if (trimmed === '' || trimmed.startsWith('#')) {
|
|
357
|
+
continue;
|
|
358
|
+
}
|
|
359
|
+
const match = /^(?:export\s+)?([A-Za-z_][A-Za-z0-9_]*)\s*=/.exec(trimmed);
|
|
360
|
+
if (match?.[1]) {
|
|
361
|
+
keys.add(match[1]);
|
|
362
|
+
}
|
|
363
|
+
}
|
|
364
|
+
return { path: '.env', present: true, keys: [...keys].sort() };
|
|
365
|
+
}
|
|
366
|
+
function summarizeRuntimeEnv(env) {
|
|
367
|
+
const present = [];
|
|
368
|
+
const missing = [];
|
|
369
|
+
for (const key of DOCTOR_ENV_KEYS) {
|
|
370
|
+
const value = env[key];
|
|
371
|
+
if (typeof value === 'string' && value.trim() !== '') {
|
|
372
|
+
present.push(key);
|
|
373
|
+
}
|
|
374
|
+
else {
|
|
375
|
+
missing.push(key);
|
|
376
|
+
}
|
|
377
|
+
}
|
|
378
|
+
return { present, missing };
|
|
379
|
+
}
|
|
380
|
+
function gitignoreIncludesPattern(gitignore, pattern) {
|
|
381
|
+
return gitignore
|
|
382
|
+
.split(/\r?\n/)
|
|
383
|
+
.map((line) => line.trim())
|
|
384
|
+
.filter((line) => line !== '' && !line.startsWith('#'))
|
|
385
|
+
.includes(pattern);
|
|
386
|
+
}
|
|
387
|
+
function summarizeStatus(checks) {
|
|
388
|
+
if (checks.some((check) => check.status === 'error')) {
|
|
389
|
+
return 'error';
|
|
390
|
+
}
|
|
391
|
+
if (checks.some((check) => check.status === 'warning')) {
|
|
392
|
+
return 'warning';
|
|
393
|
+
}
|
|
394
|
+
return 'ok';
|
|
395
|
+
}
|
|
396
|
+
function redactDoctorMessage(message, env, cwd) {
|
|
397
|
+
let redacted = cwd ? message.replaceAll(cwd, '[REDACTED_LOCAL_PATH]') : message;
|
|
398
|
+
for (const [key, rawValue] of Object.entries(env)) {
|
|
399
|
+
const value = rawValue?.trim();
|
|
400
|
+
if (value && value.length >= 4) {
|
|
401
|
+
redacted = redacted.replaceAll(value, `[redacted:${key}]`);
|
|
402
|
+
}
|
|
403
|
+
}
|
|
404
|
+
return redacted.replace(/(?:[A-Za-z]:)?\/?(?:[^\s:]+\/){2,}[^\s:)]*/g, '[REDACTED_LOCAL_PATH]');
|
|
405
|
+
}
|
|
406
|
+
//# sourceMappingURL=doctor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../src/doctor.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fixture-harness.d.ts","sourceRoot":"","sources":["../src/fixture-harness.ts"],"names":[],"mappings":"AAIA,OAAO,EAGL,KAAK,8BAA8B,EAEnC,KAAK,wCAAwC,EAC9C,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EAEL,KAAK,mBAAmB,EACxB,KAAK,gBAAgB,EAErB,KAAK,kBAAkB,EACxB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAE1D,MAAM,WAAW,uCAAuC;IACtD,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,8BAA8B,CAAC;CAC1C;AAED,MAAM,WAAW,gCAAgC;IAC/C,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,gBAAgB,CAAC;IACvB,MAAM,EAAE,kBAAkB,CAAC;IAC3B,OAAO,EAAE,qBAAqB,CAAC;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,eAAe,EAAE,MAAM,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAClC,cAAc,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACnC,iBAAiB,CAAC,KAAK,EAAE,uCAAuC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACjF,MAAM,CAAC,EAAE,mBAAmB,CAAC;IAC7B,KAAK,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAC3B;
|
|
1
|
+
{"version":3,"file":"fixture-harness.d.ts","sourceRoot":"","sources":["../src/fixture-harness.ts"],"names":[],"mappings":"AAIA,OAAO,EAGL,KAAK,8BAA8B,EAEnC,KAAK,wCAAwC,EAC9C,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EAEL,KAAK,mBAAmB,EACxB,KAAK,gBAAgB,EAErB,KAAK,kBAAkB,EACxB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAE1D,MAAM,WAAW,uCAAuC;IACtD,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,8BAA8B,CAAC;CAC1C;AAED,MAAM,WAAW,gCAAgC;IAC/C,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,gBAAgB,CAAC;IACvB,MAAM,EAAE,kBAAkB,CAAC;IAC3B,OAAO,EAAE,qBAAqB,CAAC;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,eAAe,EAAE,MAAM,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAClC,cAAc,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACnC,iBAAiB,CAAC,KAAK,EAAE,uCAAuC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACjF,MAAM,CAAC,EAAE,mBAAmB,CAAC;IAC7B,KAAK,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAC3B;AA+BD,wBAAsB,yBAAyB,CAC7C,OAAO,EAAE,gCAAgC,GACxC,OAAO,CAAC,wCAAwC,CAAC,CAoDnD"}
|
package/dist/fixture-harness.js
CHANGED
|
@@ -1,10 +1,14 @@
|
|
|
1
|
-
import { createHash } from 'node:crypto';
|
|
1
|
+
import { createHash, randomUUID } from 'node:crypto';
|
|
2
2
|
import { mkdirSync, readFileSync, statSync, writeFileSync } from 'node:fs';
|
|
3
3
|
import { join } from 'node:path';
|
|
4
4
|
import { FIXTURE_CONNECTION_PROOF_MANIFEST, verifyFixtureConnectionProofManifest } from './fixture-proof.js';
|
|
5
5
|
import { DEFAULT_SEPOLIA_CHAIN_ID } from './network.js';
|
|
6
6
|
import { maskEthereumAddress } from './profile-bootstrap.js';
|
|
7
7
|
import { connectWallet } from './wallet-control.js';
|
|
8
|
+
const WALLET_BROWSER_PACKAGE_VERSION = '0.2.3';
|
|
9
|
+
function runtimeMetadata() {
|
|
10
|
+
return { node: process.version, platform: process.platform, arch: process.arch };
|
|
11
|
+
}
|
|
8
12
|
export async function runFixtureConnectionProof(options) {
|
|
9
13
|
const artifactDir = options.artifactDir;
|
|
10
14
|
mkdirSync(artifactDir, { recursive: true, mode: 0o700 });
|
|
@@ -29,6 +33,16 @@ export async function runFixtureConnectionProof(options) {
|
|
|
29
33
|
await options.captureScreenshot({ path: screenshotPath, evidence });
|
|
30
34
|
const screenshot = createScreenshotManifestEntry(artifactDir, screenshotFile);
|
|
31
35
|
const manifest = {
|
|
36
|
+
schemaVersion: 1,
|
|
37
|
+
createdAt: new Date().toISOString(),
|
|
38
|
+
runId: `fixture-connection-proof-${randomUUID()}`,
|
|
39
|
+
provenance: {
|
|
40
|
+
packageName: '@broccolo1d/wallet-browser',
|
|
41
|
+
packageVersion: WALLET_BROWSER_PACKAGE_VERSION,
|
|
42
|
+
framework: 'wallet-browser',
|
|
43
|
+
tool: 'runFixtureConnectionProof',
|
|
44
|
+
runtime: runtimeMetadata()
|
|
45
|
+
},
|
|
32
46
|
artifactType: 'fixture-dapp-wallet-connection-proof',
|
|
33
47
|
target: 'fixture-dapp',
|
|
34
48
|
status: 'connected',
|
|
@@ -37,7 +51,7 @@ export async function runFixtureConnectionProof(options) {
|
|
|
37
51
|
notes: [
|
|
38
52
|
'Generated by local fixture connection proof harness after wallet-control verified account and chain.',
|
|
39
53
|
'Artifact is local-only under .wallet-artifacts and must be inspected before sharing.',
|
|
40
|
-
...(options.notes ?? [])
|
|
54
|
+
...(options.notes ?? []).map(redactProofNote)
|
|
41
55
|
]
|
|
42
56
|
};
|
|
43
57
|
writeFileSync(join(artifactDir, FIXTURE_CONNECTION_PROOF_MANIFEST), `${JSON.stringify(manifest, null, 2)}\n`, { mode: 0o600 });
|
|
@@ -66,4 +80,20 @@ function sanitizeProofOrigin(origin) {
|
|
|
66
80
|
}
|
|
67
81
|
return `${parsed.origin}${parsed.pathname === '/' ? '' : parsed.pathname}`;
|
|
68
82
|
}
|
|
83
|
+
function redactProofNote(note) {
|
|
84
|
+
return note
|
|
85
|
+
.replace(/\bnpm_[A-Za-z0-9_-]{20,}\b/g, '[redacted:npm-token]')
|
|
86
|
+
.replace(/https?:\/\/[^\s"'`]+:[^\s"'`@]+@[^\s"'`]+/gi, '[redacted:rpc-url]')
|
|
87
|
+
.replace(/https?:\/\/[^\s"'`]*\/(?:[^\s"'`]*[A-Za-z0-9_-]{20,}[^\s"'`]*)/gi, '[redacted:rpc-url]')
|
|
88
|
+
.replace(/https?:\/\/[^\s"'`]+[?&](?:api[_-]?key|token|key|auth|access[_-]?token)=[^\s"'`&]+/gi, '[redacted:rpc-url]')
|
|
89
|
+
.replace(/\b(?:private[_-]?key|seed(?:[ _-]?phrase)?|mnemonic|password|passphrase|secret|token|rpc(?:[_-]?url)?)\b\s*(?::|=|is|was)?\s+[^\n\r]*/gi, (match) => redactLabeledSecret(match))
|
|
90
|
+
.replace(/\b(?:0x)?[0-9a-fA-F]{64}\b/g, '[redacted:secret]')
|
|
91
|
+
.replace(/0x[0-9a-fA-F]{40}/g, maskEthereumAddress)
|
|
92
|
+
.replace(/[A-Za-z]:\\(?:[^\\\s]+\\)*([^\\\s]+)/g, '[path]/$1')
|
|
93
|
+
.replace(/\/(?:[^/\s]+\/)+([^/\s]+)/g, '[path]/$1');
|
|
94
|
+
}
|
|
95
|
+
function redactLabeledSecret(value) {
|
|
96
|
+
const label = value.match(/private[_-]?key|seed(?:[ _-]?phrase)?|mnemonic|password|passphrase|secret|token|rpc(?:[_-]?url)?/i)?.[0] ?? 'secret';
|
|
97
|
+
return `[redacted:${label.toLowerCase().replace(/[ _]/g, '-')}]`;
|
|
98
|
+
}
|
|
69
99
|
//# sourceMappingURL=fixture-harness.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fixture-harness.js","sourceRoot":"","sources":["../src/fixture-harness.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"fixture-harness.js","sourceRoot":"","sources":["../src/fixture-harness.ts"],"names":[],"mappings":"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"}
|
package/dist/fixture-proof.d.ts
CHANGED
|
@@ -11,13 +11,41 @@ export interface FixtureConnectionProofScreenshot {
|
|
|
11
11
|
sizeBytes: number;
|
|
12
12
|
sha256: string;
|
|
13
13
|
}
|
|
14
|
+
interface FixtureConnectionProofManifest {
|
|
15
|
+
schemaVersion: 1;
|
|
16
|
+
createdAt: string;
|
|
17
|
+
runId: string;
|
|
18
|
+
provenance: {
|
|
19
|
+
packageName: '@broccolo1d/wallet-browser';
|
|
20
|
+
packageVersion: string;
|
|
21
|
+
framework: 'wallet-browser';
|
|
22
|
+
tool: string;
|
|
23
|
+
runtime: {
|
|
24
|
+
node: string;
|
|
25
|
+
platform: string;
|
|
26
|
+
arch: string;
|
|
27
|
+
};
|
|
28
|
+
};
|
|
29
|
+
artifactType: 'fixture-dapp-wallet-connection-proof';
|
|
30
|
+
target: 'fixture-dapp';
|
|
31
|
+
status: 'connected';
|
|
32
|
+
evidence: FixtureConnectionProofEvidence;
|
|
33
|
+
screenshots: FixtureConnectionProofScreenshot[];
|
|
34
|
+
notes?: string[];
|
|
35
|
+
}
|
|
14
36
|
export interface FixtureConnectionProofVerificationResult {
|
|
15
37
|
status: 'verified';
|
|
16
38
|
artifactDir: string;
|
|
17
39
|
manifestPath: string;
|
|
40
|
+
manifestSha256: string;
|
|
41
|
+
schemaVersion: 1;
|
|
42
|
+
createdAt: string;
|
|
43
|
+
runId: string;
|
|
44
|
+
provenance: FixtureConnectionProofManifest['provenance'];
|
|
18
45
|
evidence: FixtureConnectionProofEvidence;
|
|
19
46
|
screenshots: FixtureConnectionProofScreenshot[];
|
|
20
47
|
notes: string[];
|
|
21
48
|
}
|
|
22
49
|
export declare function verifyFixtureConnectionProofManifest(artifactDir: string): FixtureConnectionProofVerificationResult;
|
|
50
|
+
export {};
|
|
23
51
|
//# sourceMappingURL=fixture-proof.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fixture-proof.d.ts","sourceRoot":"","sources":["../src/fixture-proof.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,iCAAiC,gCAAgC,CAAC;
|
|
1
|
+
{"version":3,"file":"fixture-proof.d.ts","sourceRoot":"","sources":["../src/fixture-proof.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,iCAAiC,gCAAgC,CAAC;AAO/E,MAAM,WAAW,8BAA8B;IAC7C,eAAe,EAAE,WAAW,CAAC;IAC7B,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,gCAAgC;IAC/C,KAAK,EAAE,mBAAmB,CAAC;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,UAAU,8BAA8B;IACtC,aAAa,EAAE,CAAC,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE;QACV,WAAW,EAAE,4BAA4B,CAAC;QAC1C,cAAc,EAAE,MAAM,CAAC;QACvB,SAAS,EAAE,gBAAgB,CAAC;QAC5B,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE;YACP,IAAI,EAAE,MAAM,CAAC;YACb,QAAQ,EAAE,MAAM,CAAC;YACjB,IAAI,EAAE,MAAM,CAAC;SACd,CAAC;KACH,CAAC;IACF,YAAY,EAAE,sCAAsC,CAAC;IACrD,MAAM,EAAE,cAAc,CAAC;IACvB,MAAM,EAAE,WAAW,CAAC;IACpB,QAAQ,EAAE,8BAA8B,CAAC;IACzC,WAAW,EAAE,gCAAgC,EAAE,CAAC;IAChD,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,MAAM,WAAW,wCAAwC;IACvD,MAAM,EAAE,UAAU,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,CAAC,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,8BAA8B,CAAC,YAAY,CAAC,CAAC;IACzD,QAAQ,EAAE,8BAA8B,CAAC;IACzC,WAAW,EAAE,gCAAgC,EAAE,CAAC;IAChD,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,wBAAgB,oCAAoC,CAAC,WAAW,EAAE,MAAM,GAAG,wCAAwC,CA8DlH"}
|
package/dist/fixture-proof.js
CHANGED
|
@@ -3,13 +3,28 @@ import { existsSync, readFileSync, statSync } from 'node:fs';
|
|
|
3
3
|
import { basename, join } from 'node:path';
|
|
4
4
|
import { DEFAULT_SEPOLIA_CHAIN_ID } from './network.js';
|
|
5
5
|
export const FIXTURE_CONNECTION_PROOF_MANIFEST = 'FIXTURE-PROOF-MANIFEST.json';
|
|
6
|
+
const WALLET_BROWSER_PACKAGE_VERSION = '0.2.3';
|
|
7
|
+
function runtimeMetadata() {
|
|
8
|
+
return { node: process.version, platform: process.platform, arch: process.arch };
|
|
9
|
+
}
|
|
6
10
|
export function verifyFixtureConnectionProofManifest(artifactDir) {
|
|
7
11
|
const manifestPath = join(artifactDir, FIXTURE_CONNECTION_PROOF_MANIFEST);
|
|
8
12
|
const manifestText = readFileSync(manifestPath, 'utf8');
|
|
13
|
+
const manifestSha256 = createHash('sha256').update(manifestText).digest('hex');
|
|
9
14
|
if (manifestText.includes(artifactDir)) {
|
|
10
15
|
throw new Error('Fixture connection proof manifest must not contain the full artifact directory path.');
|
|
11
16
|
}
|
|
17
|
+
if (containsLocalPathLeak(manifestText)) {
|
|
18
|
+
throw new Error('Fixture connection proof manifest must not contain local path leaks.');
|
|
19
|
+
}
|
|
20
|
+
if (containsSecretLeak(manifestText)) {
|
|
21
|
+
throw new Error('Fixture connection proof manifest must not contain raw secrets or tokens.');
|
|
22
|
+
}
|
|
12
23
|
const manifest = JSON.parse(manifestText);
|
|
24
|
+
if (manifest.schemaVersion === undefined) {
|
|
25
|
+
throw new Error('Fixture connection proof schemaVersion is required for verification.');
|
|
26
|
+
}
|
|
27
|
+
verifyFixtureProofProvenance(manifest);
|
|
13
28
|
if (manifest.artifactType !== 'fixture-dapp-wallet-connection-proof') {
|
|
14
29
|
throw new Error('Fixture connection proof manifest has an unexpected artifact type.');
|
|
15
30
|
}
|
|
@@ -42,11 +57,38 @@ export function verifyFixtureConnectionProofManifest(artifactDir) {
|
|
|
42
57
|
status: 'verified',
|
|
43
58
|
artifactDir,
|
|
44
59
|
manifestPath,
|
|
60
|
+
manifestSha256,
|
|
61
|
+
schemaVersion: manifest.schemaVersion,
|
|
62
|
+
createdAt: manifest.createdAt,
|
|
63
|
+
runId: manifest.runId,
|
|
64
|
+
provenance: manifest.provenance,
|
|
45
65
|
evidence: manifest.evidence,
|
|
46
66
|
screenshots,
|
|
47
67
|
notes: Array.isArray(manifest.notes) ? manifest.notes : []
|
|
48
68
|
};
|
|
49
69
|
}
|
|
70
|
+
function verifyFixtureProofProvenance(manifest) {
|
|
71
|
+
if (manifest.schemaVersion !== 1) {
|
|
72
|
+
throw new Error('Fixture connection proof schemaVersion is unsupported.');
|
|
73
|
+
}
|
|
74
|
+
if (!manifest.createdAt || Number.isNaN(Date.parse(manifest.createdAt))) {
|
|
75
|
+
throw new Error('Fixture connection proof createdAt provenance is required.');
|
|
76
|
+
}
|
|
77
|
+
if (!manifest.runId || typeof manifest.runId !== 'string') {
|
|
78
|
+
throw new Error('Fixture connection proof runId provenance is required.');
|
|
79
|
+
}
|
|
80
|
+
if (manifest.provenance?.packageName !== '@broccolo1d/wallet-browser' || manifest.provenance.framework !== 'wallet-browser' || !manifest.provenance.tool) {
|
|
81
|
+
throw new Error('Fixture connection proof provenance is incomplete.');
|
|
82
|
+
}
|
|
83
|
+
if (manifest.provenance.packageVersion !== WALLET_BROWSER_PACKAGE_VERSION) {
|
|
84
|
+
throw new Error('Fixture connection proof package version provenance is inconsistent.');
|
|
85
|
+
}
|
|
86
|
+
const runtime = manifest.provenance.runtime;
|
|
87
|
+
const expectedRuntime = runtimeMetadata();
|
|
88
|
+
if (!runtime || runtime.node !== expectedRuntime.node || runtime.platform !== expectedRuntime.platform || runtime.arch !== expectedRuntime.arch) {
|
|
89
|
+
throw new Error('Fixture connection proof runtime provenance is inconsistent.');
|
|
90
|
+
}
|
|
91
|
+
}
|
|
50
92
|
function verifyFixtureProofScreenshot(artifactDir, screenshot) {
|
|
51
93
|
if (screenshot.label !== 'fixture-connected') {
|
|
52
94
|
throw new Error(`Fixture connection proof manifest contains an unexpected screenshot label: ${String(screenshot.label)}`);
|
|
@@ -75,6 +117,19 @@ function isMaskedAccount(value) {
|
|
|
75
117
|
function containsFullAddress(value) {
|
|
76
118
|
return /0x[0-9a-fA-F]{40}/.test(value);
|
|
77
119
|
}
|
|
120
|
+
function containsLocalPathLeak(text) {
|
|
121
|
+
return /file:\/\/\//i.test(text)
|
|
122
|
+
|| /(?:^|[\s"'`([{<])(?:[A-Za-z]:\\|\\\\)[^\s"'`)\]}>]+/.test(text)
|
|
123
|
+
|| /(?:^|[\s"'`([{<])\/(?!\/)(?:[^/\s"'`)\]}>]+\/)+[^/\s"'`)\]}>]*/.test(text);
|
|
124
|
+
}
|
|
125
|
+
function containsSecretLeak(text) {
|
|
126
|
+
return /\bnpm_[A-Za-z0-9_-]{20,}\b/.test(text)
|
|
127
|
+
|| /\b0x[0-9a-fA-F]{64}\b/.test(text)
|
|
128
|
+
|| /\b(?:private[_-]?key|seed(?:[ _-]?phrase)?|mnemonic|password|passphrase|secret|token|rpc(?:[_-]?url)?)\b\s*(?::|=|is|was)?\s+(?:[A-Za-z][A-Za-z0-9_-]{5,}|[0-9a-fA-F]{64}|https?:\/\/\S+)/i.test(text)
|
|
129
|
+
|| /https?:\/\/[^\s"'`]*\/(?:[^\s"'`]*[A-Za-z0-9_-]{20,}[^\s"'`]*)/i.test(text)
|
|
130
|
+
|| /https?:\/\/[^\s"'`]+[?&](?:api[_-]?key|token|key|auth|access[_-]?token)=[^\s"'`&]+/i.test(text)
|
|
131
|
+
|| /https?:\/\/[^\s"'`]+:[^\s"'`@]+@[^\s"'`]+/i.test(text);
|
|
132
|
+
}
|
|
78
133
|
function isSafeOrigin(value) {
|
|
79
134
|
try {
|
|
80
135
|
const parsed = new URL(value);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fixture-proof.js","sourceRoot":"","sources":["../src/fixture-proof.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC7D,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAE3C,OAAO,EAAE,wBAAwB,EAAE,MAAM,cAAc,CAAC;AAExD,MAAM,CAAC,MAAM,iCAAiC,GAAG,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"fixture-proof.js","sourceRoot":"","sources":["../src/fixture-proof.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -6,6 +6,7 @@ export { DEFAULT_METAMASK_PROMPT_SELECTORS, approveMetaMaskConnectionPrompt, ass
|
|
|
6
6
|
export { FIXTURE_CONNECTION_PROOF_MANIFEST, verifyFixtureConnectionProofManifest, type FixtureConnectionProofEvidence, type FixtureConnectionProofScreenshot, type FixtureConnectionProofVerificationResult } from './fixture-proof.js';
|
|
7
7
|
export { runFixtureConnectionProof, type FixtureConnectionScreenshotCaptureInput, type RunFixtureConnectionProofOptions } from './fixture-harness.js';
|
|
8
8
|
export { runWalletBrowserCli, type WalletBrowserCliOptions } from './cli.js';
|
|
9
|
+
export { createWalletBrowserDoctorReport, type CreateWalletBrowserDoctorReportOptions, type WalletBrowserDoctorCheck, type WalletBrowserDoctorReport, type WalletBrowserDoctorStatus } from './doctor.js';
|
|
9
10
|
export { DEFAULT_METAMASK_ONBOARDING_TIMEOUT_MS, METAMASK_ONBOARDING_SELECTORS, createMetaMaskOnboardingPlan, createMetaMaskPageDriver, findMetaMaskExtensionPage, importPrivateKeyIntoMetaMaskPage, isMetaMaskExtensionPageUrl, maskSecret, resolveMetaMaskOnboardingConfig, runMetaMaskOnboarding, unlockMetaMaskPage, validateEthereumAddress, validateMetaMaskPassword, validatePrivateKey, verifyMetaMaskActiveAddress, type MetaMaskImportPrivateKeyInput, type MetaMaskExtensionPageDiscoveryOptions, type MetaMaskOnboardingConfig, type MetaMaskOnboardingDriver, type MetaMaskOnboardingEnv, type MetaMaskOnboardingResult, type MetaMaskOnboardingState, type MetaMaskOnboardingStatus, type MetaMaskPageDriverOptions, type MetaMaskUnlockInput, type RedactedMetaMaskOnboardingPlan, type ResolveMetaMaskOnboardingConfigOptions } from './onboarding.js';
|
|
10
11
|
export { DEFAULT_ALLOWED_WALLET_CHAIN_IDS, DEFAULT_NETWORK_ASSERTION_TIMEOUT_MS, DEFAULT_SEPOLIA_CHAIN_ID, assertExpectedChainAndAccount, chainIdToHex, createMetaMaskNetworkPageDriver, createSepoliaAddChainInput, createSepoliaNetworkPlan, isAllowedWalletChainId, normalizeChainId, normalizeExpectedAccount, provisionSepoliaNetwork, redactRpcUrl, resolveSepoliaNetworkConfig, validateOptionalRpcUrl, type AddEthereumChainInput, type MetaMaskNetworkDriver, type MetaMaskNetworkPageDriverOptions, type RedactedSepoliaNetworkPlan, type ResolveSepoliaNetworkConfigOptions, type SepoliaNetworkAssertionResult, type SepoliaNetworkConfig, type SepoliaNetworkEnv } from './network.js';
|
|
11
12
|
export { createProfileBootstrapImportDryRun, createProfileBootstrapImportManifest, maskEthereumAddress, type ProfileBootstrapImportDryRunResult, type ProfileBootstrapImportEnv, type ProfileBootstrapImportManifest, type ResolveProfileBootstrapImportOptions } from './profile-bootstrap.js';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,uBAAuB,EACvB,0BAA0B,EAC1B,KAAK,yBAAyB,EAC9B,KAAK,iCAAiC,EACtC,KAAK,mBAAmB,EACxB,KAAK,gBAAgB,EACtB,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,0BAA0B,EAC1B,mBAAmB,EACnB,4BAA4B,EAC5B,KAAK,6BAA6B,EAClC,KAAK,yBAAyB,EAC/B,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,6BAA6B,EAC7B,4BAA4B,EAC5B,4BAA4B,EAC5B,KAAK,oCAAoC,EACzC,KAAK,2BAA2B,EAChC,KAAK,iBAAiB,EACtB,KAAK,yBAAyB,EAC9B,KAAK,mCAAmC,EACzC,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,uCAAuC,EACvC,+BAA+B,EAC/B,iCAAiC,EACjC,0BAA0B,EAC1B,2BAA2B,EAC3B,yBAAyB,EACzB,KAAK,oBAAoB,EACzB,KAAK,mBAAmB,EACxB,KAAK,uBAAuB,EAC5B,KAAK,gBAAgB,EACtB,MAAM,qBAAqB,CAAC;AAG7B,OAAO,EACL,iCAAiC,EACjC,+BAA+B,EAC/B,kCAAkC,EAClC,0BAA0B,EAC1B,KAAK,2BAA2B,EAChC,KAAK,yBAAyB,EAC9B,KAAK,sBAAsB,EAC3B,KAAK,uBAAuB,EAC7B,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,iCAAiC,EACjC,oCAAoC,EACpC,KAAK,8BAA8B,EACnC,KAAK,gCAAgC,EACrC,KAAK,wCAAwC,EAC9C,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,yBAAyB,EACzB,KAAK,uCAAuC,EAC5C,KAAK,gCAAgC,EACtC,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,mBAAmB,EAAE,KAAK,uBAAuB,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -6,6 +6,7 @@ export { DEFAULT_METAMASK_PROMPT_SELECTORS, approveMetaMaskConnectionPrompt, ass
|
|
|
6
6
|
export { FIXTURE_CONNECTION_PROOF_MANIFEST, verifyFixtureConnectionProofManifest } from './fixture-proof.js';
|
|
7
7
|
export { runFixtureConnectionProof } from './fixture-harness.js';
|
|
8
8
|
export { runWalletBrowserCli } from './cli.js';
|
|
9
|
+
export { createWalletBrowserDoctorReport } from './doctor.js';
|
|
9
10
|
export { DEFAULT_METAMASK_ONBOARDING_TIMEOUT_MS, METAMASK_ONBOARDING_SELECTORS, createMetaMaskOnboardingPlan, createMetaMaskPageDriver, findMetaMaskExtensionPage, importPrivateKeyIntoMetaMaskPage, isMetaMaskExtensionPageUrl, maskSecret, resolveMetaMaskOnboardingConfig, runMetaMaskOnboarding, unlockMetaMaskPage, validateEthereumAddress, validateMetaMaskPassword, validatePrivateKey, verifyMetaMaskActiveAddress } from './onboarding.js';
|
|
10
11
|
export { DEFAULT_ALLOWED_WALLET_CHAIN_IDS, DEFAULT_NETWORK_ASSERTION_TIMEOUT_MS, DEFAULT_SEPOLIA_CHAIN_ID, assertExpectedChainAndAccount, chainIdToHex, createMetaMaskNetworkPageDriver, createSepoliaAddChainInput, createSepoliaNetworkPlan, isAllowedWalletChainId, normalizeChainId, normalizeExpectedAccount, provisionSepoliaNetwork, redactRpcUrl, resolveSepoliaNetworkConfig, validateOptionalRpcUrl } from './network.js';
|
|
11
12
|
export { createProfileBootstrapImportDryRun, createProfileBootstrapImportManifest, maskEthereumAddress } from './profile-bootstrap.js';
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,uBAAuB,EACvB,0BAA0B,EAK3B,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,0BAA0B,EAC1B,mBAAmB,EACnB,4BAA4B,EAG7B,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,6BAA6B,EAC7B,4BAA4B,EAC5B,4BAA4B,EAM7B,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,uCAAuC,EACvC,+BAA+B,EAC/B,iCAAiC,EACjC,0BAA0B,EAC1B,2BAA2B,EAC3B,yBAAyB,EAK1B,MAAM,qBAAqB,CAAC;AAG7B,OAAO,EACL,iCAAiC,EACjC,+BAA+B,EAC/B,kCAAkC,EAClC,0BAA0B,EAK3B,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,iCAAiC,EACjC,oCAAoC,EAIrC,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,yBAAyB,EAG1B,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,mBAAmB,EAAgC,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,uBAAuB,EACvB,0BAA0B,EAK3B,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,0BAA0B,EAC1B,mBAAmB,EACnB,4BAA4B,EAG7B,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,6BAA6B,EAC7B,4BAA4B,EAC5B,4BAA4B,EAM7B,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,uCAAuC,EACvC,+BAA+B,EAC/B,iCAAiC,EACjC,0BAA0B,EAC1B,2BAA2B,EAC3B,yBAAyB,EAK1B,MAAM,qBAAqB,CAAC;AAG7B,OAAO,EACL,iCAAiC,EACjC,+BAA+B,EAC/B,kCAAkC,EAClC,0BAA0B,EAK3B,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,iCAAiC,EACjC,oCAAoC,EAIrC,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,yBAAyB,EAG1B,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,mBAAmB,EAAgC,MAAM,UAAU,CAAC;AAC7E,OAAO,EACL,+BAA+B,EAKhC,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,sCAAsC,EACtC,6BAA6B,EAC7B,4BAA4B,EAC5B,wBAAwB,EACxB,yBAAyB,EACzB,gCAAgC,EAChC,0BAA0B,EAC1B,UAAU,EACV,+BAA+B,EAC/B,qBAAqB,EACrB,kBAAkB,EAClB,uBAAuB,EACvB,wBAAwB,EACxB,kBAAkB,EAClB,2BAA2B,EAa5B,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,gCAAgC,EAChC,oCAAoC,EACpC,wBAAwB,EACxB,6BAA6B,EAC7B,YAAY,EACZ,+BAA+B,EAC/B,0BAA0B,EAC1B,wBAAwB,EACxB,sBAAsB,EACtB,gBAAgB,EAChB,wBAAwB,EACxB,uBAAuB,EACvB,YAAY,EACZ,2BAA2B,EAC3B,sBAAsB,EASvB,MAAM,cAAc,CAAC;AAEtB,OAAO,EACL,kCAAkC,EAClC,oCAAoC,EACpC,mBAAmB,EAKpB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EACL,gBAAgB,EAChB,kBAAkB,EAClB,iBAAiB,EACjB,aAAa,EACb,0BAA0B,EAC1B,YAAY,EACZ,aAAa,EAwBd,MAAM,qBAAqB,CAAC"}
|