@arkade-os/sdk 0.2.1 → 0.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/wallet/serviceWorker/response.js +2 -1
- package/dist/cjs/wallet/serviceWorker/utils.js +23 -8
- package/dist/cjs/wallet/serviceWorker/wallet.js +4 -0
- package/dist/cjs/wallet/serviceWorker/worker.js +1 -1
- package/dist/esm/wallet/serviceWorker/response.js +2 -1
- package/dist/esm/wallet/serviceWorker/utils.js +23 -8
- package/dist/esm/wallet/serviceWorker/wallet.js +4 -0
- package/dist/esm/wallet/serviceWorker/worker.js +1 -1
- package/dist/types/wallet/serviceWorker/response.d.ts +2 -1
- package/package.json +31 -34
|
@@ -151,12 +151,13 @@ var Response;
|
|
|
151
151
|
return response.type === "WALLET_STATUS" && response.success === true;
|
|
152
152
|
}
|
|
153
153
|
Response.isWalletStatus = isWalletStatus;
|
|
154
|
-
function walletStatus(id, walletInitialized) {
|
|
154
|
+
function walletStatus(id, walletInitialized, xOnlyPublicKey) {
|
|
155
155
|
return {
|
|
156
156
|
type: "WALLET_STATUS",
|
|
157
157
|
success: true,
|
|
158
158
|
status: {
|
|
159
159
|
walletInitialized,
|
|
160
|
+
xOnlyPublicKey,
|
|
160
161
|
},
|
|
161
162
|
id,
|
|
162
163
|
};
|
|
@@ -23,12 +23,27 @@ async function setupServiceWorker(path) {
|
|
|
23
23
|
throw new Error("Failed to get service worker instance");
|
|
24
24
|
}
|
|
25
25
|
// wait for the service worker to be ready
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
26
|
+
return new Promise((resolve, reject) => {
|
|
27
|
+
if (serviceWorker.state === "activated")
|
|
28
|
+
return resolve(serviceWorker);
|
|
29
|
+
const onActivate = () => {
|
|
30
|
+
cleanup();
|
|
31
|
+
resolve(serviceWorker);
|
|
32
|
+
};
|
|
33
|
+
const onError = () => {
|
|
34
|
+
cleanup();
|
|
35
|
+
reject(new Error("Service worker failed to activate"));
|
|
36
|
+
};
|
|
37
|
+
const timeout = setTimeout(() => {
|
|
38
|
+
cleanup();
|
|
39
|
+
reject(new Error("Service worker activation timed out"));
|
|
40
|
+
}, 10000);
|
|
41
|
+
const cleanup = () => {
|
|
42
|
+
serviceWorker.removeEventListener("activate", onActivate);
|
|
43
|
+
serviceWorker.removeEventListener("error", onError);
|
|
44
|
+
clearTimeout(timeout);
|
|
45
|
+
};
|
|
46
|
+
serviceWorker.addEventListener("activate", onActivate);
|
|
47
|
+
serviceWorker.addEventListener("error", onError);
|
|
48
|
+
});
|
|
34
49
|
}
|
|
@@ -46,6 +46,9 @@ class ServiceWorkerWallet {
|
|
|
46
46
|
};
|
|
47
47
|
const response = await this.sendMessage(message);
|
|
48
48
|
if (response_1.Response.isWalletStatus(response)) {
|
|
49
|
+
const { walletInitialized, xOnlyPublicKey } = response.status;
|
|
50
|
+
if (walletInitialized)
|
|
51
|
+
this.cachedXOnlyPublicKey = xOnlyPublicKey;
|
|
49
52
|
return response.status;
|
|
50
53
|
}
|
|
51
54
|
throw new UnexpectedResponseError(response);
|
|
@@ -62,6 +65,7 @@ class ServiceWorkerWallet {
|
|
|
62
65
|
if (failIfInitialized) {
|
|
63
66
|
throw new Error("Wallet already initialized");
|
|
64
67
|
}
|
|
68
|
+
this.cachedXOnlyPublicKey = response.status.xOnlyPublicKey;
|
|
65
69
|
return;
|
|
66
70
|
}
|
|
67
71
|
// If not initialized, proceed with initialization
|
|
@@ -407,7 +407,7 @@ class Worker {
|
|
|
407
407
|
event.source?.postMessage(response_1.Response.error(message.id, "Invalid GET_STATUS message format"));
|
|
408
408
|
return;
|
|
409
409
|
}
|
|
410
|
-
event.source?.postMessage(response_1.Response.walletStatus(message.id, this.wallet !== undefined));
|
|
410
|
+
event.source?.postMessage(response_1.Response.walletStatus(message.id, this.wallet !== undefined, this.wallet?.identity.xOnlyPublicKey()));
|
|
411
411
|
}
|
|
412
412
|
async handleSign(event) {
|
|
413
413
|
const message = event.data;
|
|
@@ -148,12 +148,13 @@ export var Response;
|
|
|
148
148
|
return response.type === "WALLET_STATUS" && response.success === true;
|
|
149
149
|
}
|
|
150
150
|
Response.isWalletStatus = isWalletStatus;
|
|
151
|
-
function walletStatus(id, walletInitialized) {
|
|
151
|
+
function walletStatus(id, walletInitialized, xOnlyPublicKey) {
|
|
152
152
|
return {
|
|
153
153
|
type: "WALLET_STATUS",
|
|
154
154
|
success: true,
|
|
155
155
|
status: {
|
|
156
156
|
walletInitialized,
|
|
157
|
+
xOnlyPublicKey,
|
|
157
158
|
},
|
|
158
159
|
id,
|
|
159
160
|
};
|
|
@@ -20,12 +20,27 @@ export async function setupServiceWorker(path) {
|
|
|
20
20
|
throw new Error("Failed to get service worker instance");
|
|
21
21
|
}
|
|
22
22
|
// wait for the service worker to be ready
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
23
|
+
return new Promise((resolve, reject) => {
|
|
24
|
+
if (serviceWorker.state === "activated")
|
|
25
|
+
return resolve(serviceWorker);
|
|
26
|
+
const onActivate = () => {
|
|
27
|
+
cleanup();
|
|
28
|
+
resolve(serviceWorker);
|
|
29
|
+
};
|
|
30
|
+
const onError = () => {
|
|
31
|
+
cleanup();
|
|
32
|
+
reject(new Error("Service worker failed to activate"));
|
|
33
|
+
};
|
|
34
|
+
const timeout = setTimeout(() => {
|
|
35
|
+
cleanup();
|
|
36
|
+
reject(new Error("Service worker activation timed out"));
|
|
37
|
+
}, 10000);
|
|
38
|
+
const cleanup = () => {
|
|
39
|
+
serviceWorker.removeEventListener("activate", onActivate);
|
|
40
|
+
serviceWorker.removeEventListener("error", onError);
|
|
41
|
+
clearTimeout(timeout);
|
|
42
|
+
};
|
|
43
|
+
serviceWorker.addEventListener("activate", onActivate);
|
|
44
|
+
serviceWorker.addEventListener("error", onError);
|
|
45
|
+
});
|
|
31
46
|
}
|
|
@@ -43,6 +43,9 @@ export class ServiceWorkerWallet {
|
|
|
43
43
|
};
|
|
44
44
|
const response = await this.sendMessage(message);
|
|
45
45
|
if (Response.isWalletStatus(response)) {
|
|
46
|
+
const { walletInitialized, xOnlyPublicKey } = response.status;
|
|
47
|
+
if (walletInitialized)
|
|
48
|
+
this.cachedXOnlyPublicKey = xOnlyPublicKey;
|
|
46
49
|
return response.status;
|
|
47
50
|
}
|
|
48
51
|
throw new UnexpectedResponseError(response);
|
|
@@ -59,6 +62,7 @@ export class ServiceWorkerWallet {
|
|
|
59
62
|
if (failIfInitialized) {
|
|
60
63
|
throw new Error("Wallet already initialized");
|
|
61
64
|
}
|
|
65
|
+
this.cachedXOnlyPublicKey = response.status.xOnlyPublicKey;
|
|
62
66
|
return;
|
|
63
67
|
}
|
|
64
68
|
// If not initialized, proceed with initialization
|
|
@@ -404,7 +404,7 @@ export class Worker {
|
|
|
404
404
|
event.source?.postMessage(Response.error(message.id, "Invalid GET_STATUS message format"));
|
|
405
405
|
return;
|
|
406
406
|
}
|
|
407
|
-
event.source?.postMessage(Response.walletStatus(message.id, this.wallet !== undefined));
|
|
407
|
+
event.source?.postMessage(Response.walletStatus(message.id, this.wallet !== undefined, this.wallet?.identity.xOnlyPublicKey()));
|
|
408
408
|
}
|
|
409
409
|
async handleSign(event) {
|
|
410
410
|
const message = event.data;
|
|
@@ -91,10 +91,11 @@ export declare namespace Response {
|
|
|
91
91
|
success: true;
|
|
92
92
|
status: {
|
|
93
93
|
walletInitialized: boolean;
|
|
94
|
+
xOnlyPublicKey: Uint8Array | undefined;
|
|
94
95
|
};
|
|
95
96
|
}
|
|
96
97
|
function isWalletStatus(response: Base): response is WalletStatus;
|
|
97
|
-
function walletStatus(id: string, walletInitialized: boolean): WalletStatus;
|
|
98
|
+
function walletStatus(id: string, walletInitialized: boolean, xOnlyPublicKey: Uint8Array | undefined): WalletStatus;
|
|
98
99
|
interface ClearResponse extends Base {
|
|
99
100
|
type: "CLEAR_RESPONSE";
|
|
100
101
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@arkade-os/sdk",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.2",
|
|
4
4
|
"description": "Bitcoin wallet SDK with Taproot and Ark integration",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/cjs/index.js",
|
|
@@ -22,37 +22,6 @@
|
|
|
22
22
|
"access": "public",
|
|
23
23
|
"registry": "https://registry.npmjs.org/"
|
|
24
24
|
},
|
|
25
|
-
"scripts": {
|
|
26
|
-
"build": "rimraf dist && pnpm run build:esm && node scripts/add-extensions.js && pnpm run build:cjs && pnpm run build:types && node scripts/generate-package-files.js",
|
|
27
|
-
"build:esm": "tsc -p tsconfig.esm.json --outDir dist/esm",
|
|
28
|
-
"build:cjs": "tsc -p tsconfig.cjs.json --outDir dist/cjs",
|
|
29
|
-
"build:types": "tsc -p tsconfig.json --outDir dist/types --emitDeclarationOnly",
|
|
30
|
-
"build:browser": "node scripts/build-browser.js",
|
|
31
|
-
"docs:build": "pnpm run build:types && pnpm typedoc",
|
|
32
|
-
"docs:open": "open ./docs/index.html",
|
|
33
|
-
"test": "vitest run",
|
|
34
|
-
"test:master": "ARK_ENV=master vitest run",
|
|
35
|
-
"test:unit": "vitest run --exclude test/e2e",
|
|
36
|
-
"test:setup": "node test/setup.js",
|
|
37
|
-
"test:setup-docker": "node test/setup.js docker",
|
|
38
|
-
"test:build-docker": "docker compose -f docker-compose.yml build --no-cache",
|
|
39
|
-
"test:up-docker": "docker compose -f docker-compose.yml up -d",
|
|
40
|
-
"test:down-docker": "docker compose -f docker-compose.yml down",
|
|
41
|
-
"test:integration": "vitest run test/e2e/**",
|
|
42
|
-
"test:integration-docker": "ARK_ENV=docker vitest run test/e2e/**",
|
|
43
|
-
"test:watch": "vitest",
|
|
44
|
-
"test:coverage": "vitest run --coverage",
|
|
45
|
-
"test:sw": "pnpm run build:browser && node test/serviceWorker/serve.js",
|
|
46
|
-
"format": "prettier --write src test examples",
|
|
47
|
-
"lint": "prettier --check src test examples",
|
|
48
|
-
"audit": "pnpm audit",
|
|
49
|
-
"preinstall": "npx only-allow pnpm",
|
|
50
|
-
"prepare": "husky",
|
|
51
|
-
"prepublishOnly": "pnpm run build",
|
|
52
|
-
"release": "bash scripts/release.sh",
|
|
53
|
-
"release:dry-run": "bash scripts/release.sh --dry-run",
|
|
54
|
-
"release:cleanup": "bash scripts/release.sh --cleanup"
|
|
55
|
-
},
|
|
56
25
|
"dependencies": {
|
|
57
26
|
"@noble/curves": "1.9.1",
|
|
58
27
|
"@noble/hashes": "1.8.0",
|
|
@@ -83,8 +52,36 @@
|
|
|
83
52
|
],
|
|
84
53
|
"author": "Ark Labs",
|
|
85
54
|
"license": "MIT",
|
|
86
|
-
"packageManager": "pnpm@9.15.2+sha512.93e57b0126f0df74ce6bff29680394c0ba54ec47246b9cf321f0121d8d9bb03f750a705f24edc3c1180853afd7c2c3b94196d0a3d53d3e069d9e2793ef11f321",
|
|
87
55
|
"engines": {
|
|
88
56
|
"node": "^14.17.0 || ^16.13.0 || >=18.0.0"
|
|
57
|
+
},
|
|
58
|
+
"scripts": {
|
|
59
|
+
"build": "rimraf dist && pnpm run build:esm && node scripts/add-extensions.js && pnpm run build:cjs && pnpm run build:types && node scripts/generate-package-files.js",
|
|
60
|
+
"build:esm": "tsc -p tsconfig.esm.json --outDir dist/esm",
|
|
61
|
+
"build:cjs": "tsc -p tsconfig.cjs.json --outDir dist/cjs",
|
|
62
|
+
"build:types": "tsc -p tsconfig.json --outDir dist/types --emitDeclarationOnly",
|
|
63
|
+
"build:browser": "node scripts/build-browser.js",
|
|
64
|
+
"docs:build": "pnpm run build:types && pnpm typedoc",
|
|
65
|
+
"docs:open": "open ./docs/index.html",
|
|
66
|
+
"test": "vitest run",
|
|
67
|
+
"test:master": "ARK_ENV=master vitest run",
|
|
68
|
+
"test:unit": "vitest run --exclude test/e2e",
|
|
69
|
+
"test:setup": "node test/setup.js",
|
|
70
|
+
"test:setup-docker": "node test/setup.js docker",
|
|
71
|
+
"test:build-docker": "docker compose -f docker-compose.yml build --no-cache",
|
|
72
|
+
"test:up-docker": "docker compose -f docker-compose.yml up -d",
|
|
73
|
+
"test:down-docker": "docker compose -f docker-compose.yml down",
|
|
74
|
+
"test:integration": "vitest run test/e2e/**",
|
|
75
|
+
"test:integration-docker": "ARK_ENV=docker vitest run test/e2e/**",
|
|
76
|
+
"test:watch": "vitest",
|
|
77
|
+
"test:coverage": "vitest run --coverage",
|
|
78
|
+
"test:sw": "pnpm run build:browser && node test/serviceWorker/serve.js",
|
|
79
|
+
"format": "prettier --write src test examples",
|
|
80
|
+
"lint": "prettier --check src test examples",
|
|
81
|
+
"audit": "pnpm audit",
|
|
82
|
+
"preinstall": "npx only-allow pnpm",
|
|
83
|
+
"release": "bash scripts/release.sh",
|
|
84
|
+
"release:dry-run": "bash scripts/release.sh --dry-run",
|
|
85
|
+
"release:cleanup": "bash scripts/release.sh --cleanup"
|
|
89
86
|
}
|
|
90
|
-
}
|
|
87
|
+
}
|