@1sat/wallet-remote 0.0.4 → 0.0.6
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/createRemoteWallet.d.ts +13 -5
- package/dist/createRemoteWallet.d.ts.map +1 -1
- package/dist/createRemoteWallet.js +34 -5
- package/dist/createRemoteWallet.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
import { OneSatServices } from '@1sat/client';
|
|
2
2
|
import { PrivateKey } from '@bsv/sdk';
|
|
3
|
-
import { Wallet, WalletStorageManager } from '@bsv/wallet-toolbox/out/src/index.client.js';
|
|
3
|
+
import { StorageIdb, Wallet, WalletStorageManager } from '@bsv/wallet-toolbox/out/src/index.client.js';
|
|
4
4
|
type Chain = 'main' | 'test';
|
|
5
|
+
export interface LocalBackupConfig {
|
|
6
|
+
/** IndexedDB database name. Default: 'wallet-backup-{chain}net' */
|
|
7
|
+
databaseName?: string;
|
|
8
|
+
}
|
|
5
9
|
export interface RemoteWalletConfig {
|
|
6
10
|
/** Private key - can be PrivateKey instance, WIF string, or hex string */
|
|
7
11
|
privateKey: PrivateKey | string;
|
|
@@ -16,6 +20,8 @@ export interface RemoteWalletConfig {
|
|
|
16
20
|
};
|
|
17
21
|
/** Connection timeout in milliseconds. Default: 5000 */
|
|
18
22
|
connectionTimeout?: number;
|
|
23
|
+
/** Enable local IndexedDB backup. true = defaults, or pass options. */
|
|
24
|
+
localBackup?: boolean | LocalBackupConfig;
|
|
19
25
|
}
|
|
20
26
|
export interface RemoteWalletResult {
|
|
21
27
|
/** Wallet instance */
|
|
@@ -31,13 +37,15 @@ export interface RemoteWalletResult {
|
|
|
31
37
|
model: 'sat/kb';
|
|
32
38
|
value: number;
|
|
33
39
|
};
|
|
40
|
+
/** Local backup storage instance, if localBackup was enabled */
|
|
41
|
+
backupStorage?: StorageIdb;
|
|
34
42
|
}
|
|
35
43
|
/**
|
|
36
|
-
* Create a wallet that uses a remote storage server as its
|
|
44
|
+
* Create a wallet that uses a remote storage server as its primary storage.
|
|
37
45
|
*
|
|
38
|
-
*
|
|
39
|
-
*
|
|
40
|
-
*
|
|
46
|
+
* When `localBackup` is enabled, a local IndexedDB backup is created and
|
|
47
|
+
* kept in sync after each state-changing operation. The remote remains the
|
|
48
|
+
* active storage — the local copy is for data safety and provider migration.
|
|
41
49
|
*/
|
|
42
50
|
export declare function createRemoteWallet(config: RemoteWalletConfig): Promise<RemoteWalletResult>;
|
|
43
51
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createRemoteWallet.d.ts","sourceRoot":"","sources":["../src/createRemoteWallet.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAC7C,OAAO,EAAc,UAAU,EAAwB,MAAM,UAAU,CAAA;AAEvE,OAAO,EAGN,MAAM,EACN,oBAAoB,EACpB,MAAM,6CAA6C,CAAA;AAEpD,KAAK,KAAK,GAAG,MAAM,GAAG,MAAM,CAAA;AAM5B,MAAM,WAAW,kBAAkB;IAClC,0EAA0E;IAC1E,UAAU,EAAE,UAAU,GAAG,MAAM,CAAA;IAC/B,gCAAgC;IAChC,KAAK,EAAE,KAAK,CAAA;IACZ,gCAAgC;IAChC,gBAAgB,EAAE,MAAM,CAAA;IACxB,0DAA0D;IAC1D,QAAQ,CAAC,EAAE;QAAE,KAAK,EAAE,QAAQ,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAA;IAC7C,wDAAwD;IACxD,iBAAiB,CAAC,EAAE,MAAM,CAAA;
|
|
1
|
+
{"version":3,"file":"createRemoteWallet.d.ts","sourceRoot":"","sources":["../src/createRemoteWallet.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAC7C,OAAO,EAAc,UAAU,EAAwB,MAAM,UAAU,CAAA;AAEvE,OAAO,EAGN,UAAU,EAEV,MAAM,EACN,oBAAoB,EACpB,MAAM,6CAA6C,CAAA;AAEpD,KAAK,KAAK,GAAG,MAAM,GAAG,MAAM,CAAA;AAM5B,MAAM,WAAW,iBAAiB;IACjC,mEAAmE;IACnE,YAAY,CAAC,EAAE,MAAM,CAAA;CACrB;AAED,MAAM,WAAW,kBAAkB;IAClC,0EAA0E;IAC1E,UAAU,EAAE,UAAU,GAAG,MAAM,CAAA;IAC/B,gCAAgC;IAChC,KAAK,EAAE,KAAK,CAAA;IACZ,gCAAgC;IAChC,gBAAgB,EAAE,MAAM,CAAA;IACxB,0DAA0D;IAC1D,QAAQ,CAAC,EAAE;QAAE,KAAK,EAAE,QAAQ,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAA;IAC7C,wDAAwD;IACxD,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,uEAAuE;IACvE,WAAW,CAAC,EAAE,OAAO,GAAG,iBAAiB,CAAA;CACzC;AAED,MAAM,WAAW,kBAAkB;IAClC,sBAAsB;IACtB,MAAM,EAAE,MAAM,CAAA;IACd,mCAAmC;IACnC,QAAQ,EAAE,cAAc,CAAA;IACxB,yCAAyC;IACzC,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;IAC5B,wCAAwC;IACxC,OAAO,EAAE,oBAAoB,CAAA;IAC7B,8CAA8C;IAC9C,QAAQ,EAAE;QAAE,KAAK,EAAE,QAAQ,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAA;IAC5C,gEAAgE;IAChE,aAAa,CAAC,EAAE,UAAU,CAAA;CAC1B;AAwBD;;;;;;GAMG;AACH,wBAAsB,kBAAkB,CACvC,MAAM,EAAE,kBAAkB,GACxB,OAAO,CAAC,kBAAkB,CAAC,CAiG7B"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { OneSatServices } from '@1sat/client';
|
|
2
2
|
import { KeyDeriver, PrivateKey } from '@bsv/sdk';
|
|
3
|
-
import { Services, StorageClient, Wallet, WalletStorageManager, } from '@bsv/wallet-toolbox/out/src/index.client.js';
|
|
3
|
+
import { Services, StorageClient, StorageIdb, StorageProvider, Wallet, WalletStorageManager, } from '@bsv/wallet-toolbox/out/src/index.client.js';
|
|
4
4
|
const DEFAULT_FEE_MODEL = { model: 'sat/kb', value: 100 };
|
|
5
5
|
const DEFAULT_CONNECTION_TIMEOUT = 5000;
|
|
6
6
|
function parsePrivateKey(input) {
|
|
@@ -21,11 +21,11 @@ function parsePrivateKey(input) {
|
|
|
21
21
|
}
|
|
22
22
|
}
|
|
23
23
|
/**
|
|
24
|
-
* Create a wallet that uses a remote storage server as its
|
|
24
|
+
* Create a wallet that uses a remote storage server as its primary storage.
|
|
25
25
|
*
|
|
26
|
-
*
|
|
27
|
-
*
|
|
28
|
-
*
|
|
26
|
+
* When `localBackup` is enabled, a local IndexedDB backup is created and
|
|
27
|
+
* kept in sync after each state-changing operation. The remote remains the
|
|
28
|
+
* active storage — the local copy is for data safety and provider migration.
|
|
29
29
|
*/
|
|
30
30
|
export async function createRemoteWallet(config) {
|
|
31
31
|
const { chain } = config;
|
|
@@ -64,6 +64,34 @@ export async function createRemoteWallet(config) {
|
|
|
64
64
|
if (remoteSettings?.storageIdentityKey) {
|
|
65
65
|
await storage.setActive(remoteSettings.storageIdentityKey);
|
|
66
66
|
}
|
|
67
|
+
// Set up local backup if requested
|
|
68
|
+
let backupStorage;
|
|
69
|
+
if (config.localBackup) {
|
|
70
|
+
const opts = typeof config.localBackup === 'object' ? config.localBackup : {};
|
|
71
|
+
const dbName = opts.databaseName ?? `wallet-backup-${chain}net`;
|
|
72
|
+
const storageOptions = StorageProvider.createStorageBaseOptions(chain);
|
|
73
|
+
storageOptions.feeModel = feeModel;
|
|
74
|
+
backupStorage = new StorageIdb(storageOptions);
|
|
75
|
+
await backupStorage.migrate(dbName, `${identityPubKey}-backup`);
|
|
76
|
+
await storage.addWalletStorageProvider(backupStorage);
|
|
77
|
+
await storage.updateBackups();
|
|
78
|
+
const originalCreateAction = wallet.createAction.bind(wallet);
|
|
79
|
+
wallet.createAction = async (args) => {
|
|
80
|
+
const result = await originalCreateAction(args);
|
|
81
|
+
if (result.txid) {
|
|
82
|
+
storage.updateBackups().catch(() => { });
|
|
83
|
+
}
|
|
84
|
+
return result;
|
|
85
|
+
};
|
|
86
|
+
const originalSignAction = wallet.signAction.bind(wallet);
|
|
87
|
+
wallet.signAction = async (args) => {
|
|
88
|
+
const result = await originalSignAction(args);
|
|
89
|
+
if (result.txid) {
|
|
90
|
+
storage.updateBackups().catch(() => { });
|
|
91
|
+
}
|
|
92
|
+
return result;
|
|
93
|
+
};
|
|
94
|
+
}
|
|
67
95
|
const destroy = async () => {
|
|
68
96
|
await wallet.destroy();
|
|
69
97
|
};
|
|
@@ -73,6 +101,7 @@ export async function createRemoteWallet(config) {
|
|
|
73
101
|
destroy,
|
|
74
102
|
storage,
|
|
75
103
|
feeModel,
|
|
104
|
+
backupStorage,
|
|
76
105
|
};
|
|
77
106
|
}
|
|
78
107
|
//# sourceMappingURL=createRemoteWallet.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createRemoteWallet.js","sourceRoot":"","sources":["../src/createRemoteWallet.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAC7C,OAAO,EAAE,UAAU,EAAE,UAAU,EAAwB,MAAM,UAAU,CAAA;AAEvE,OAAO,EACN,QAAQ,EACR,aAAa,EACb,MAAM,EACN,oBAAoB,GACpB,MAAM,6CAA6C,CAAA;AAKpD,MAAM,iBAAiB,GAAG,EAAE,KAAK,EAAE,QAAiB,EAAE,KAAK,EAAE,GAAG,EAAE,CAAA;AAClE,MAAM,0BAA0B,GAAG,IAAI,CAAA;
|
|
1
|
+
{"version":3,"file":"createRemoteWallet.js","sourceRoot":"","sources":["../src/createRemoteWallet.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export * from '@1sat/wallet';
|
|
2
2
|
export { createRemoteWallet } from './createRemoteWallet';
|
|
3
|
-
export type { RemoteWalletConfig, RemoteWalletResult, } from './createRemoteWallet';
|
|
3
|
+
export type { LocalBackupConfig, RemoteWalletConfig, RemoteWalletResult, } from './createRemoteWallet';
|
|
4
4
|
export { Services, StorageClient, Wallet, WalletStorageManager, type sdk as walletSdk, } from '@bsv/wallet-toolbox/out/src/index.client.js';
|
|
5
5
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAA;AAE5B,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AACzD,YAAY,EACX,kBAAkB,EAClB,kBAAkB,GAClB,MAAM,sBAAsB,CAAA;AAE7B,OAAO,EACN,QAAQ,EACR,aAAa,EACb,MAAM,EACN,oBAAoB,EACpB,KAAK,GAAG,IAAI,SAAS,GACrB,MAAM,6CAA6C,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAA;AAE5B,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AACzD,YAAY,EACX,iBAAiB,EACjB,kBAAkB,EAClB,kBAAkB,GAClB,MAAM,sBAAsB,CAAA;AAE7B,OAAO,EACN,QAAQ,EACR,aAAa,EACb,MAAM,EACN,oBAAoB,EACpB,KAAK,GAAG,IAAI,SAAS,GACrB,MAAM,6CAA6C,CAAA"}
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAA;AAE5B,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAA;AAE5B,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AAOzD,OAAO,EACN,QAAQ,EACR,aAAa,EACb,MAAM,EACN,oBAAoB,GAEpB,MAAM,6CAA6C,CAAA"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@1sat/wallet-remote",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.6",
|
|
4
4
|
"description": "Remote-only wallet factory for 1Sat Ordinals SDK",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
"keywords": ["1sat", "bsv", "ordinals", "wallet", "remote"],
|
|
21
21
|
"license": "MIT",
|
|
22
22
|
"dependencies": {
|
|
23
|
-
"@1sat/wallet": "^0.0.
|
|
23
|
+
"@1sat/wallet": "^0.0.19"
|
|
24
24
|
},
|
|
25
25
|
"peerDependencies": {
|
|
26
26
|
"@1sat/client": "^0.0.8",
|