@0xsequence/wallet-core 3.0.0-beta.9 → 3.0.0
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/.turbo/turbo-build.log +2 -2
- package/.turbo/turbo-lint.log +4 -0
- package/.turbo/turbo-typecheck.log +4 -0
- package/CHANGELOG.md +148 -0
- package/dist/bundler/bundlers/pimlico.d.ts +3 -2
- package/dist/bundler/bundlers/pimlico.d.ts.map +1 -1
- package/dist/bundler/bundlers/pimlico.js +9 -3
- package/dist/env.d.ts +22 -0
- package/dist/env.d.ts.map +1 -0
- package/dist/env.js +42 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/signers/index.d.ts +1 -1
- package/dist/signers/passkey.d.ts +11 -3
- package/dist/signers/passkey.d.ts.map +1 -1
- package/dist/signers/passkey.js +12 -6
- package/dist/signers/pk/encrypted.d.ts +13 -2
- package/dist/signers/pk/encrypted.d.ts.map +1 -1
- package/dist/signers/pk/encrypted.js +94 -15
- package/dist/signers/pk/index.d.ts +1 -1
- package/dist/signers/session/explicit.d.ts.map +1 -1
- package/dist/signers/session/explicit.js +2 -2
- package/dist/signers/session/implicit.d.ts.map +1 -1
- package/dist/signers/session/implicit.js +1 -1
- package/dist/state/local/index.d.ts.map +1 -1
- package/dist/state/local/index.js +3 -2
- package/dist/state/local/indexed-db.d.ts +4 -1
- package/dist/state/local/indexed-db.d.ts.map +1 -1
- package/dist/state/local/indexed-db.js +12 -2
- package/dist/state/remote/dev-http.d.ts +2 -1
- package/dist/state/remote/dev-http.d.ts.map +1 -1
- package/dist/state/remote/dev-http.js +11 -5
- package/dist/state/sequence/index.d.ts +2 -1
- package/dist/state/sequence/index.d.ts.map +1 -1
- package/dist/state/sequence/index.js +14 -5
- package/dist/wallet.js +2 -2
- package/eslint.config.js +12 -0
- package/package.json +12 -10
- package/src/bundler/bundlers/pimlico.ts +10 -4
- package/src/env.ts +68 -0
- package/src/index.ts +1 -0
- package/src/signers/index.ts +1 -1
- package/src/signers/passkey.ts +21 -5
- package/src/signers/pk/encrypted.ts +103 -14
- package/src/signers/pk/index.ts +1 -1
- package/src/signers/session/explicit.ts +2 -9
- package/src/signers/session/implicit.ts +1 -2
- package/src/state/local/index.ts +4 -2
- package/src/state/local/indexed-db.ts +15 -2
- package/src/state/remote/dev-http.ts +11 -5
- package/src/state/sequence/index.ts +15 -6
- package/src/wallet.ts +2 -2
- package/test/constants.ts +2 -0
- package/test/envelope.test.ts +0 -1
- package/test/signers-pk.test.ts +1 -1
- package/test/signers-session-implicit.test.ts +0 -2
- package/test/state/debug.test.ts +2 -3
package/.turbo/turbo-build.log
CHANGED
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,153 @@
|
|
|
1
1
|
# @0xsequence/wallet-core
|
|
2
2
|
|
|
3
|
+
## 3.0.0
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- f68be62: ethauth support
|
|
8
|
+
- 49d8a2f: New chains, minor fixes
|
|
9
|
+
- 3411232: Beta release with dapp connector fixes
|
|
10
|
+
- 23cb9e9: New chains, relayer rpc fix
|
|
11
|
+
- f5f6a7a: dapp-client updates
|
|
12
|
+
- e7de3b1: Fix signer 404 error, minor fixes
|
|
13
|
+
- 493836f: multicall3 optimization
|
|
14
|
+
- 30e1f1a: 3.0.0 beta
|
|
15
|
+
- d5017e8: Beta release for v3
|
|
16
|
+
- 24a5fab: Final RC before 3.0.0
|
|
17
|
+
- e5e1a03: Apple auth fixes
|
|
18
|
+
- 0b63113: Apple auth fix
|
|
19
|
+
- a89134a: Userdata service updates
|
|
20
|
+
- 7c6c811: 3.0.0-beta.3 with fixes
|
|
21
|
+
- 3.0.0 release
|
|
22
|
+
- 98ce38b: 3.0.0-beta.2 with identity instrument updates
|
|
23
|
+
- 747e6b5: Relayer fee options fix
|
|
24
|
+
- 40c19ff: dapp client updates for EOA login
|
|
25
|
+
- 6d5de25: 3.0.0-beta.1
|
|
26
|
+
- 934acd1: RC5 upgrade
|
|
27
|
+
- Updated dependencies [f68be62]
|
|
28
|
+
- Updated dependencies [49d8a2f]
|
|
29
|
+
- Updated dependencies [3411232]
|
|
30
|
+
- Updated dependencies [23cb9e9]
|
|
31
|
+
- Updated dependencies [f5f6a7a]
|
|
32
|
+
- Updated dependencies [e7de3b1]
|
|
33
|
+
- Updated dependencies [493836f]
|
|
34
|
+
- Updated dependencies [30e1f1a]
|
|
35
|
+
- Updated dependencies [d5017e8]
|
|
36
|
+
- Updated dependencies [24a5fab]
|
|
37
|
+
- Updated dependencies [e5e1a03]
|
|
38
|
+
- Updated dependencies [0b63113]
|
|
39
|
+
- Updated dependencies [a89134a]
|
|
40
|
+
- Updated dependencies [7c6c811]
|
|
41
|
+
- Updated dependencies
|
|
42
|
+
- Updated dependencies [98ce38b]
|
|
43
|
+
- Updated dependencies [747e6b5]
|
|
44
|
+
- Updated dependencies [40c19ff]
|
|
45
|
+
- Updated dependencies [6d5de25]
|
|
46
|
+
- Updated dependencies [934acd1]
|
|
47
|
+
- @0xsequence/guard@3.0.0
|
|
48
|
+
- @0xsequence/relayer@3.0.0
|
|
49
|
+
- @0xsequence/wallet-primitives@3.0.0
|
|
50
|
+
|
|
51
|
+
## 3.0.0-beta.19
|
|
52
|
+
|
|
53
|
+
### Patch Changes
|
|
54
|
+
|
|
55
|
+
- Final RC before 3.0.0
|
|
56
|
+
- Updated dependencies
|
|
57
|
+
- @0xsequence/guard@3.0.0-beta.19
|
|
58
|
+
- @0xsequence/relayer@3.0.0-beta.19
|
|
59
|
+
- @0xsequence/wallet-primitives@3.0.0-beta.19
|
|
60
|
+
|
|
61
|
+
## 3.0.0-beta.18
|
|
62
|
+
|
|
63
|
+
### Patch Changes
|
|
64
|
+
|
|
65
|
+
- multicall3 optimization
|
|
66
|
+
- Updated dependencies
|
|
67
|
+
- @0xsequence/guard@3.0.0-beta.18
|
|
68
|
+
- @0xsequence/relayer@3.0.0-beta.18
|
|
69
|
+
- @0xsequence/wallet-primitives@3.0.0-beta.18
|
|
70
|
+
|
|
71
|
+
## 3.0.0-beta.17
|
|
72
|
+
|
|
73
|
+
### Patch Changes
|
|
74
|
+
|
|
75
|
+
- New chains, relayer rpc fix
|
|
76
|
+
- Updated dependencies
|
|
77
|
+
- @0xsequence/guard@3.0.0-beta.17
|
|
78
|
+
- @0xsequence/relayer@3.0.0-beta.17
|
|
79
|
+
- @0xsequence/wallet-primitives@3.0.0-beta.17
|
|
80
|
+
|
|
81
|
+
## 3.0.0-beta.16
|
|
82
|
+
|
|
83
|
+
### Patch Changes
|
|
84
|
+
|
|
85
|
+
- ethauth support
|
|
86
|
+
- Updated dependencies
|
|
87
|
+
- @0xsequence/guard@3.0.0-beta.16
|
|
88
|
+
- @0xsequence/relayer@3.0.0-beta.16
|
|
89
|
+
- @0xsequence/wallet-primitives@3.0.0-beta.16
|
|
90
|
+
|
|
91
|
+
## 3.0.0-beta.15
|
|
92
|
+
|
|
93
|
+
### Patch Changes
|
|
94
|
+
|
|
95
|
+
- New chains, minor fixes
|
|
96
|
+
- Updated dependencies
|
|
97
|
+
- @0xsequence/guard@3.0.0-beta.15
|
|
98
|
+
- @0xsequence/relayer@3.0.0-beta.15
|
|
99
|
+
- @0xsequence/wallet-primitives@3.0.0-beta.15
|
|
100
|
+
|
|
101
|
+
## 3.0.0-beta.14
|
|
102
|
+
|
|
103
|
+
### Patch Changes
|
|
104
|
+
|
|
105
|
+
- Relayer fee options fix
|
|
106
|
+
- Updated dependencies
|
|
107
|
+
- @0xsequence/guard@3.0.0-beta.14
|
|
108
|
+
- @0xsequence/relayer@3.0.0-beta.14
|
|
109
|
+
- @0xsequence/wallet-primitives@3.0.0-beta.14
|
|
110
|
+
|
|
111
|
+
## 3.0.0-beta.13
|
|
112
|
+
|
|
113
|
+
### Patch Changes
|
|
114
|
+
|
|
115
|
+
- Userdata service updates
|
|
116
|
+
- Updated dependencies
|
|
117
|
+
- @0xsequence/guard@3.0.0-beta.13
|
|
118
|
+
- @0xsequence/relayer@3.0.0-beta.13
|
|
119
|
+
- @0xsequence/wallet-primitives@3.0.0-beta.13
|
|
120
|
+
|
|
121
|
+
## 3.0.0-beta.12
|
|
122
|
+
|
|
123
|
+
### Patch Changes
|
|
124
|
+
|
|
125
|
+
- Beta release with dapp connector fixes
|
|
126
|
+
- Updated dependencies
|
|
127
|
+
- @0xsequence/guard@3.0.0-beta.12
|
|
128
|
+
- @0xsequence/relayer@3.0.0-beta.12
|
|
129
|
+
- @0xsequence/wallet-primitives@3.0.0-beta.12
|
|
130
|
+
|
|
131
|
+
## 3.0.0-beta.11
|
|
132
|
+
|
|
133
|
+
### Patch Changes
|
|
134
|
+
|
|
135
|
+
- 3.0.0 beta
|
|
136
|
+
- Updated dependencies
|
|
137
|
+
- @0xsequence/guard@3.0.0-beta.11
|
|
138
|
+
- @0xsequence/relayer@3.0.0-beta.11
|
|
139
|
+
- @0xsequence/wallet-primitives@3.0.0-beta.11
|
|
140
|
+
|
|
141
|
+
## 3.0.0-beta.10
|
|
142
|
+
|
|
143
|
+
### Patch Changes
|
|
144
|
+
|
|
145
|
+
- dapp-client updates
|
|
146
|
+
- Updated dependencies
|
|
147
|
+
- @0xsequence/guard@3.0.0-beta.10
|
|
148
|
+
- @0xsequence/relayer@3.0.0-beta.10
|
|
149
|
+
- @0xsequence/wallet-primitives@3.0.0-beta.10
|
|
150
|
+
|
|
3
151
|
## 3.0.0-beta.9
|
|
4
152
|
|
|
5
153
|
### Patch Changes
|
|
@@ -4,11 +4,12 @@ import { Provider, Hex, Address } from 'ox';
|
|
|
4
4
|
import { UserOperation } from 'ox/erc4337';
|
|
5
5
|
import { Relayer } from '@0xsequence/relayer';
|
|
6
6
|
export declare class PimlicoBundler implements Bundler {
|
|
7
|
-
readonly kind
|
|
7
|
+
readonly kind = "bundler";
|
|
8
8
|
readonly id: string;
|
|
9
9
|
readonly provider: Provider.Provider;
|
|
10
10
|
readonly bundlerRpcUrl: string;
|
|
11
|
-
|
|
11
|
+
private readonly fetcher;
|
|
12
|
+
constructor(bundlerRpcUrl: string, provider: Provider.Provider | string, fetcher?: typeof fetch);
|
|
12
13
|
isAvailable(entrypoint: Address.Address, chainId: number): Promise<boolean>;
|
|
13
14
|
relay(entrypoint: Address.Address, userOperation: UserOperation.RpcV07): Promise<{
|
|
14
15
|
opHash: Hex.Hex;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pimlico.d.ts","sourceRoot":"","sources":["../../../src/bundler/bundlers/pimlico.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,+BAA+B,CAAA;AACvD,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AACvC,OAAO,EAAE,QAAQ,EAAE,GAAG,EAAE,OAAO,EAAgB,MAAM,IAAI,CAAA;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAC1C,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAa7C,qBAAa,cAAe,YAAW,OAAO;IAC5C,SAAgB,IAAI,
|
|
1
|
+
{"version":3,"file":"pimlico.d.ts","sourceRoot":"","sources":["../../../src/bundler/bundlers/pimlico.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,+BAA+B,CAAA;AACvD,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AACvC,OAAO,EAAE,QAAQ,EAAE,GAAG,EAAE,OAAO,EAAgB,MAAM,IAAI,CAAA;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAC1C,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAa7C,qBAAa,cAAe,YAAW,OAAO;IAC5C,SAAgB,IAAI,aAAY;IAChC,SAAgB,EAAE,EAAE,MAAM,CAAA;IAE1B,SAAgB,QAAQ,EAAE,QAAQ,CAAC,QAAQ,CAAA;IAC3C,SAAgB,aAAa,EAAE,MAAM,CAAA;IACrC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAc;gBAE1B,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC,QAAQ,GAAG,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,KAAK;IAWzF,WAAW,CAAC,UAAU,EAAE,OAAO,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAa3E,KAAK,CAAC,UAAU,EAAE,OAAO,CAAC,OAAO,EAAE,aAAa,EAAE,aAAa,CAAC,MAAM,GAAG,OAAO,CAAC;QAAE,MAAM,EAAE,GAAG,CAAC,GAAG,CAAA;KAAE,CAAC;IAKrG,cAAc,CAClB,MAAM,EAAE,OAAO,CAAC,OAAO,EACvB,OAAO,EAAE,OAAO,CAAC,YAAY,GAC5B,OAAO,CACR;QACE,KAAK,CAAC,EAAE,MAAM,GAAG,UAAU,GAAG,MAAM,CAAA;QACpC,OAAO,EAAE,OAAO,CAAC,YAAY,CAAA;KAC9B,EAAE,CACJ;IAgCD,OAAO,CAAC,4BAA4B;IAiB9B,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,eAAe,CAAC;YA4DnE,UAAU;CAWzB"}
|
|
@@ -6,10 +6,16 @@ export class PimlicoBundler {
|
|
|
6
6
|
id;
|
|
7
7
|
provider;
|
|
8
8
|
bundlerRpcUrl;
|
|
9
|
-
|
|
9
|
+
fetcher;
|
|
10
|
+
constructor(bundlerRpcUrl, provider, fetcher) {
|
|
10
11
|
this.id = `pimlico-erc4337-${bundlerRpcUrl}`;
|
|
11
12
|
this.provider = typeof provider === 'string' ? Provider.from(RpcTransport.fromHttp(provider)) : provider;
|
|
12
13
|
this.bundlerRpcUrl = bundlerRpcUrl;
|
|
14
|
+
const resolvedFetch = fetcher ?? globalThis.fetch;
|
|
15
|
+
if (!resolvedFetch) {
|
|
16
|
+
throw new Error('fetch is not available');
|
|
17
|
+
}
|
|
18
|
+
this.fetcher = resolvedFetch;
|
|
13
19
|
}
|
|
14
20
|
async isAvailable(entrypoint, chainId) {
|
|
15
21
|
const [bundlerChainId, supportedEntryPoints] = await Promise.all([
|
|
@@ -68,7 +74,7 @@ export class PimlicoBundler {
|
|
|
68
74
|
try {
|
|
69
75
|
pimlico = await this.bundlerRpc('pimlico_getUserOperationStatus', [opHash]);
|
|
70
76
|
}
|
|
71
|
-
catch
|
|
77
|
+
catch {
|
|
72
78
|
/* ignore - not Pimlico or endpoint down */
|
|
73
79
|
}
|
|
74
80
|
if (pimlico) {
|
|
@@ -114,7 +120,7 @@ export class PimlicoBundler {
|
|
|
114
120
|
}
|
|
115
121
|
async bundlerRpc(method, params) {
|
|
116
122
|
const body = JSON.stringify({ jsonrpc: '2.0', id: 1, method, params });
|
|
117
|
-
const res = await
|
|
123
|
+
const res = await this.fetcher(this.bundlerRpcUrl, {
|
|
118
124
|
method: 'POST',
|
|
119
125
|
headers: { 'content-type': 'application/json' },
|
|
120
126
|
body,
|
package/dist/env.d.ts
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
export type StorageLike = {
|
|
2
|
+
getItem: (key: string) => string | null;
|
|
3
|
+
setItem: (key: string, value: string) => void;
|
|
4
|
+
removeItem: (key: string) => void;
|
|
5
|
+
};
|
|
6
|
+
export type CryptoLike = {
|
|
7
|
+
subtle: SubtleCrypto;
|
|
8
|
+
getRandomValues: <T extends ArrayBufferView>(array: T) => T;
|
|
9
|
+
};
|
|
10
|
+
export type TextEncodingLike = {
|
|
11
|
+
TextEncoder: typeof TextEncoder;
|
|
12
|
+
TextDecoder: typeof TextDecoder;
|
|
13
|
+
};
|
|
14
|
+
export type CoreEnv = {
|
|
15
|
+
fetch?: typeof fetch;
|
|
16
|
+
crypto?: CryptoLike;
|
|
17
|
+
storage?: StorageLike;
|
|
18
|
+
indexedDB?: IDBFactory;
|
|
19
|
+
text?: Partial<TextEncodingLike>;
|
|
20
|
+
};
|
|
21
|
+
export declare function resolveCoreEnv(env?: CoreEnv): CoreEnv;
|
|
22
|
+
//# sourceMappingURL=env.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../src/env.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,WAAW,GAAG;IACxB,OAAO,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAA;IACvC,OAAO,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IAC7C,UAAU,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAA;CAClC,CAAA;AAED,MAAM,MAAM,UAAU,GAAG;IACvB,MAAM,EAAE,YAAY,CAAA;IACpB,eAAe,EAAE,CAAC,CAAC,SAAS,eAAe,EAAE,KAAK,EAAE,CAAC,KAAK,CAAC,CAAA;CAC5D,CAAA;AAED,MAAM,MAAM,gBAAgB,GAAG;IAC7B,WAAW,EAAE,OAAO,WAAW,CAAA;IAC/B,WAAW,EAAE,OAAO,WAAW,CAAA;CAChC,CAAA;AAED,MAAM,MAAM,OAAO,GAAG;IACpB,KAAK,CAAC,EAAE,OAAO,KAAK,CAAA;IACpB,MAAM,CAAC,EAAE,UAAU,CAAA;IACnB,OAAO,CAAC,EAAE,WAAW,CAAA;IACrB,SAAS,CAAC,EAAE,UAAU,CAAA;IACtB,IAAI,CAAC,EAAE,OAAO,CAAC,gBAAgB,CAAC,CAAA;CACjC,CAAA;AAYD,wBAAgB,cAAc,CAAC,GAAG,CAAC,EAAE,OAAO,GAAG,OAAO,CAiCrD"}
|
package/dist/env.js
ADDED
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
function isStorageLike(value) {
|
|
2
|
+
if (!value || typeof value !== 'object')
|
|
3
|
+
return false;
|
|
4
|
+
const candidate = value;
|
|
5
|
+
return (typeof candidate.getItem === 'function' &&
|
|
6
|
+
typeof candidate.setItem === 'function' &&
|
|
7
|
+
typeof candidate.removeItem === 'function');
|
|
8
|
+
}
|
|
9
|
+
export function resolveCoreEnv(env) {
|
|
10
|
+
const globalObj = globalThis;
|
|
11
|
+
const windowObj = typeof window !== 'undefined' ? window : (globalObj.window ?? {});
|
|
12
|
+
let storage;
|
|
13
|
+
let text;
|
|
14
|
+
if (isStorageLike(env?.storage)) {
|
|
15
|
+
storage = env.storage;
|
|
16
|
+
}
|
|
17
|
+
else if (isStorageLike(windowObj.localStorage)) {
|
|
18
|
+
storage = windowObj.localStorage;
|
|
19
|
+
}
|
|
20
|
+
else if (isStorageLike(globalObj.localStorage)) {
|
|
21
|
+
storage = globalObj.localStorage;
|
|
22
|
+
}
|
|
23
|
+
if (env?.text) {
|
|
24
|
+
if (!env.text.TextEncoder || !env.text.TextDecoder) {
|
|
25
|
+
throw new Error('env.text must provide both TextEncoder and TextDecoder');
|
|
26
|
+
}
|
|
27
|
+
text = env.text;
|
|
28
|
+
}
|
|
29
|
+
else {
|
|
30
|
+
text = {
|
|
31
|
+
TextEncoder: windowObj.TextEncoder ?? globalObj.TextEncoder,
|
|
32
|
+
TextDecoder: windowObj.TextDecoder ?? globalObj.TextDecoder,
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
return {
|
|
36
|
+
fetch: env?.fetch ?? windowObj.fetch ?? globalObj.fetch,
|
|
37
|
+
crypto: env?.crypto ?? windowObj.crypto ?? globalObj.crypto,
|
|
38
|
+
storage,
|
|
39
|
+
indexedDB: env?.indexedDB ?? windowObj.indexedDB ?? globalObj.indexedDB,
|
|
40
|
+
text,
|
|
41
|
+
};
|
|
42
|
+
}
|
package/dist/index.d.ts
CHANGED
|
@@ -4,5 +4,6 @@ export * as State from './state/index.js';
|
|
|
4
4
|
export * as Bundler from './bundler/index.js';
|
|
5
5
|
export * as Envelope from './envelope.js';
|
|
6
6
|
export * as Utils from './utils/index.js';
|
|
7
|
+
export * from './env.js';
|
|
7
8
|
export { type ExplicitSessionConfig, type ExplicitSession, type ImplicitSession, type Session, } from './utils/session/types.js';
|
|
8
9
|
//# 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,aAAa,CAAA;AAE3B,OAAO,KAAK,OAAO,MAAM,oBAAoB,CAAA;AAC7C,OAAO,KAAK,KAAK,MAAM,kBAAkB,CAAA;AACzC,OAAO,KAAK,OAAO,MAAM,oBAAoB,CAAA;AAC7C,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAA;AACzC,OAAO,KAAK,KAAK,MAAM,kBAAkB,CAAA;AACzC,OAAO,EACL,KAAK,qBAAqB,EAC1B,KAAK,eAAe,EACpB,KAAK,eAAe,EACpB,KAAK,OAAO,GACb,MAAM,0BAA0B,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAA;AAE3B,OAAO,KAAK,OAAO,MAAM,oBAAoB,CAAA;AAC7C,OAAO,KAAK,KAAK,MAAM,kBAAkB,CAAA;AACzC,OAAO,KAAK,OAAO,MAAM,oBAAoB,CAAA;AAC7C,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAA;AACzC,OAAO,KAAK,KAAK,MAAM,kBAAkB,CAAA;AACzC,cAAc,UAAU,CAAA;AACxB,OAAO,EACL,KAAK,qBAAqB,EAC1B,KAAK,eAAe,EACpB,KAAK,eAAe,EACpB,KAAK,OAAO,GACb,MAAM,0BAA0B,CAAA"}
|
package/dist/index.js
CHANGED
package/dist/signers/index.d.ts
CHANGED
|
@@ -16,7 +16,7 @@ export interface SapientSigner {
|
|
|
16
16
|
signSapient: (wallet: Address.Address, chainId: number, payload: Payload.Parented, imageHash: Hex.Hex) => Config.SignerSignature<Signature.SignatureOfSapientSignerLeaf>;
|
|
17
17
|
}
|
|
18
18
|
export interface Witnessable {
|
|
19
|
-
witness: (stateWriter: State.Writer, wallet: Address.Address, extra?:
|
|
19
|
+
witness: (stateWriter: State.Writer, wallet: Address.Address, extra?: object) => Promise<void>;
|
|
20
20
|
}
|
|
21
21
|
type MaybePromise<T> = T | Promise<T>;
|
|
22
22
|
export declare function isSapientSigner(signer: Signer | SapientSigner): signer is SapientSigner;
|
|
@@ -1,20 +1,27 @@
|
|
|
1
1
|
import { Hex, Address } from 'ox';
|
|
2
2
|
import { Payload, Extensions } from '@0xsequence/wallet-primitives';
|
|
3
3
|
import type { Signature as SignatureTypes } from '@0xsequence/wallet-primitives';
|
|
4
|
+
import { WebAuthnP256 } from 'ox';
|
|
4
5
|
import { State } from '../index.js';
|
|
5
6
|
import { SapientSigner, Witnessable } from './index.js';
|
|
7
|
+
export type WebAuthnLike = Pick<typeof WebAuthnP256, 'createCredential' | 'sign'>;
|
|
6
8
|
export type PasskeyOptions = {
|
|
7
9
|
extensions: Pick<Extensions.Extensions, 'passkeys'>;
|
|
8
10
|
publicKey: Extensions.Passkeys.PublicKey;
|
|
9
11
|
credentialId: string;
|
|
10
12
|
embedMetadata?: boolean;
|
|
11
13
|
metadata?: Extensions.Passkeys.PasskeyMetadata;
|
|
14
|
+
webauthn?: WebAuthnLike;
|
|
12
15
|
};
|
|
13
16
|
export type CreatePasskeyOptions = {
|
|
14
17
|
stateProvider?: State.Provider;
|
|
15
18
|
requireUserVerification?: boolean;
|
|
16
19
|
credentialName?: string;
|
|
17
20
|
embedMetadata?: boolean;
|
|
21
|
+
webauthn?: WebAuthnLike;
|
|
22
|
+
};
|
|
23
|
+
export type FindPasskeyOptions = {
|
|
24
|
+
webauthn?: WebAuthnLike;
|
|
18
25
|
};
|
|
19
26
|
export type WitnessMessage = {
|
|
20
27
|
action: 'consent-to-be-part-of-wallet';
|
|
@@ -31,11 +38,12 @@ export declare class Passkey implements SapientSigner, Witnessable {
|
|
|
31
38
|
readonly imageHash: Hex.Hex;
|
|
32
39
|
readonly embedMetadata: boolean;
|
|
33
40
|
readonly metadata?: Extensions.Passkeys.PasskeyMetadata;
|
|
41
|
+
private readonly webauthn;
|
|
34
42
|
constructor(options: PasskeyOptions);
|
|
35
|
-
static loadFromWitness(stateReader: State.Reader, extensions: Pick<Extensions.Extensions, 'passkeys'>, wallet: Address.Address, imageHash: Hex.Hex): Promise<Passkey>;
|
|
43
|
+
static loadFromWitness(stateReader: State.Reader, extensions: Pick<Extensions.Extensions, 'passkeys'>, wallet: Address.Address, imageHash: Hex.Hex, options?: FindPasskeyOptions): Promise<Passkey>;
|
|
36
44
|
static create(extensions: Pick<Extensions.Extensions, 'passkeys'>, options?: CreatePasskeyOptions): Promise<Passkey>;
|
|
37
|
-
static find(stateReader: State.Reader, extensions: Pick<Extensions.Extensions, 'passkeys'
|
|
45
|
+
static find(stateReader: State.Reader, extensions: Pick<Extensions.Extensions, 'passkeys'>, options?: FindPasskeyOptions): Promise<Passkey | undefined>;
|
|
38
46
|
signSapient(wallet: Address.Address, chainId: number, payload: Payload.Parented, imageHash: Hex.Hex): Promise<SignatureTypes.SignatureOfSapientSignerLeaf>;
|
|
39
|
-
witness(stateWriter: State.Writer, wallet: Address.Address, extra?:
|
|
47
|
+
witness(stateWriter: State.Writer, wallet: Address.Address, extra?: object): Promise<void>;
|
|
40
48
|
}
|
|
41
49
|
//# sourceMappingURL=passkey.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"passkey.d.ts","sourceRoot":"","sources":["../../src/signers/passkey.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAS,OAAO,EAAc,MAAM,IAAI,CAAA;AACpD,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAA;AACnE,OAAO,KAAK,EAAE,SAAS,IAAI,cAAc,EAAE,MAAM,+BAA+B,CAAA;
|
|
1
|
+
{"version":3,"file":"passkey.d.ts","sourceRoot":"","sources":["../../src/signers/passkey.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAS,OAAO,EAAc,MAAM,IAAI,CAAA;AACpD,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAA;AACnE,OAAO,KAAK,EAAE,SAAS,IAAI,cAAc,EAAE,MAAM,+BAA+B,CAAA;AAChF,OAAO,EAAE,YAAY,EAAE,MAAM,IAAI,CAAA;AACjC,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AACnC,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAEvD,MAAM,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,YAAY,EAAE,kBAAkB,GAAG,MAAM,CAAC,CAAA;AAEjF,MAAM,MAAM,cAAc,GAAG;IAC3B,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,UAAU,CAAC,CAAA;IACnD,SAAS,EAAE,UAAU,CAAC,QAAQ,CAAC,SAAS,CAAA;IACxC,YAAY,EAAE,MAAM,CAAA;IACpB,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,QAAQ,CAAC,EAAE,UAAU,CAAC,QAAQ,CAAC,eAAe,CAAA;IAC9C,QAAQ,CAAC,EAAE,YAAY,CAAA;CACxB,CAAA;AAED,MAAM,MAAM,oBAAoB,GAAG;IACjC,aAAa,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAA;IAC9B,uBAAuB,CAAC,EAAE,OAAO,CAAA;IACjC,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,QAAQ,CAAC,EAAE,YAAY,CAAA;CACxB,CAAA;AAED,MAAM,MAAM,kBAAkB,GAAG;IAC/B,QAAQ,CAAC,EAAE,YAAY,CAAA;CACxB,CAAA;AAED,MAAM,MAAM,cAAc,GAAG;IAC3B,MAAM,EAAE,8BAA8B,CAAA;IACtC,MAAM,EAAE,OAAO,CAAC,OAAO,CAAA;IACvB,SAAS,EAAE,UAAU,CAAC,QAAQ,CAAC,SAAS,CAAA;IACxC,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,CAAC,EAAE,UAAU,CAAC,QAAQ,CAAC,eAAe,CAAA;CAC/C,CAAA;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,IAAI,cAAc,CAO5E;AAED,qBAAa,OAAQ,YAAW,aAAa,EAAE,WAAW;IACxD,SAAgB,YAAY,EAAE,MAAM,CAAA;IAEpC,SAAgB,SAAS,EAAE,UAAU,CAAC,QAAQ,CAAC,SAAS,CAAA;IACxD,SAAgB,OAAO,EAAE,OAAO,CAAC,OAAO,CAAA;IACxC,SAAgB,SAAS,EAAE,GAAG,CAAC,GAAG,CAAA;IAClC,SAAgB,aAAa,EAAE,OAAO,CAAA;IACtC,SAAgB,QAAQ,CAAC,EAAE,UAAU,CAAC,QAAQ,CAAC,eAAe,CAAA;IAC9D,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAc;gBAE3B,OAAO,EAAE,cAAc;WAUtB,eAAe,CAC1B,WAAW,EAAE,KAAK,CAAC,MAAM,EACzB,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,UAAU,CAAC,EACnD,MAAM,EAAE,OAAO,CAAC,OAAO,EACvB,SAAS,EAAE,GAAG,CAAC,GAAG,EAClB,OAAO,CAAC,EAAE,kBAAkB;WAmCjB,MAAM,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,UAAU,CAAC,EAAE,OAAO,CAAC,EAAE,oBAAoB;WAsC1F,IAAI,CACf,WAAW,EAAE,KAAK,CAAC,MAAM,EACzB,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,UAAU,CAAC,EACnD,OAAO,CAAC,EAAE,kBAAkB,GAC3B,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC;IA0FzB,WAAW,CACf,MAAM,EAAE,OAAO,CAAC,OAAO,EACvB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,OAAO,CAAC,QAAQ,EACzB,SAAS,EAAE,GAAG,CAAC,GAAG,GACjB,OAAO,CAAC,cAAc,CAAC,4BAA4B,CAAC;IAkCjD,OAAO,CAAC,WAAW,EAAE,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAqBjG"}
|
package/dist/signers/passkey.js
CHANGED
|
@@ -14,6 +14,7 @@ export class Passkey {
|
|
|
14
14
|
imageHash;
|
|
15
15
|
embedMetadata;
|
|
16
16
|
metadata;
|
|
17
|
+
webauthn;
|
|
17
18
|
constructor(options) {
|
|
18
19
|
this.address = options.extensions.passkeys;
|
|
19
20
|
this.publicKey = options.publicKey;
|
|
@@ -21,8 +22,9 @@ export class Passkey {
|
|
|
21
22
|
this.embedMetadata = options.embedMetadata ?? false;
|
|
22
23
|
this.imageHash = Extensions.Passkeys.rootFor(options.publicKey);
|
|
23
24
|
this.metadata = options.metadata;
|
|
25
|
+
this.webauthn = options.webauthn ?? WebAuthnP256;
|
|
24
26
|
}
|
|
25
|
-
static async loadFromWitness(stateReader, extensions, wallet, imageHash) {
|
|
27
|
+
static async loadFromWitness(stateReader, extensions, wallet, imageHash, options) {
|
|
26
28
|
// In the witness we will find the public key, and may find the credential id
|
|
27
29
|
const witness = await stateReader.getWitnessForSapient(wallet, extensions.passkeys, imageHash);
|
|
28
30
|
if (!witness) {
|
|
@@ -47,11 +49,13 @@ export class Passkey {
|
|
|
47
49
|
publicKey: message.publicKey,
|
|
48
50
|
embedMetadata: decodedSignature.embedMetadata,
|
|
49
51
|
metadata,
|
|
52
|
+
webauthn: options?.webauthn,
|
|
50
53
|
});
|
|
51
54
|
}
|
|
52
55
|
static async create(extensions, options) {
|
|
56
|
+
const webauthn = options?.webauthn ?? WebAuthnP256;
|
|
53
57
|
const name = options?.credentialName ?? `Sequence (${Date.now()})`;
|
|
54
|
-
const credential = await
|
|
58
|
+
const credential = await webauthn.createCredential({
|
|
55
59
|
user: {
|
|
56
60
|
name,
|
|
57
61
|
},
|
|
@@ -72,14 +76,16 @@ export class Passkey {
|
|
|
72
76
|
},
|
|
73
77
|
embedMetadata: options?.embedMetadata,
|
|
74
78
|
metadata,
|
|
79
|
+
webauthn,
|
|
75
80
|
});
|
|
76
81
|
if (options?.stateProvider) {
|
|
77
82
|
await options.stateProvider.saveTree(Extensions.Passkeys.toTree(passkey.publicKey));
|
|
78
83
|
}
|
|
79
84
|
return passkey;
|
|
80
85
|
}
|
|
81
|
-
static async find(stateReader, extensions) {
|
|
82
|
-
const
|
|
86
|
+
static async find(stateReader, extensions, options) {
|
|
87
|
+
const webauthn = options?.webauthn ?? WebAuthnP256;
|
|
88
|
+
const response = await webauthn.sign({ challenge: Hex.random(32) });
|
|
83
89
|
if (!response.raw)
|
|
84
90
|
throw new Error('No credential returned');
|
|
85
91
|
const authenticatorDataBytes = Bytes.fromHex(response.metadata.authenticatorData);
|
|
@@ -147,7 +153,7 @@ export class Passkey {
|
|
|
147
153
|
if (flattened.length > 1) {
|
|
148
154
|
console.warn('Multiple signers found for passkey', flattened);
|
|
149
155
|
}
|
|
150
|
-
return Passkey.loadFromWitness(stateReader, extensions, flattened[0].wallet, flattened[0].imageHash);
|
|
156
|
+
return Passkey.loadFromWitness(stateReader, extensions, flattened[0].wallet, flattened[0].imageHash, options);
|
|
151
157
|
}
|
|
152
158
|
async signSapient(wallet, chainId, payload, imageHash) {
|
|
153
159
|
if (this.imageHash !== imageHash) {
|
|
@@ -155,7 +161,7 @@ export class Passkey {
|
|
|
155
161
|
throw new Error('Unexpected image hash');
|
|
156
162
|
}
|
|
157
163
|
const challenge = Hex.fromBytes(Payload.hash(wallet, chainId, payload));
|
|
158
|
-
const response = await
|
|
164
|
+
const response = await this.webauthn.sign({
|
|
159
165
|
challenge,
|
|
160
166
|
credentialId: this.credentialId,
|
|
161
167
|
userVerification: this.publicKey.requireUserVerification ? 'required' : 'discouraged',
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { Address, PublicKey, Bytes } from 'ox';
|
|
2
|
+
import { type CoreEnv } from '../../env.js';
|
|
2
3
|
import { PkStore } from './index.js';
|
|
3
4
|
export interface EncryptedData {
|
|
4
5
|
iv: BufferSource;
|
|
@@ -9,11 +10,17 @@ export interface EncryptedData {
|
|
|
9
10
|
}
|
|
10
11
|
export declare class EncryptedPksDb {
|
|
11
12
|
private readonly localStorageKeyPrefix;
|
|
13
|
+
private readonly env?;
|
|
12
14
|
private tableName;
|
|
13
15
|
private dbName;
|
|
14
16
|
private dbVersion;
|
|
15
|
-
constructor(localStorageKeyPrefix?: string, tableName?: string);
|
|
17
|
+
constructor(localStorageKeyPrefix?: string, tableName?: string, env?: CoreEnv | undefined);
|
|
16
18
|
private computeDbKey;
|
|
19
|
+
private getIndexedDB;
|
|
20
|
+
private getStorage;
|
|
21
|
+
private getCrypto;
|
|
22
|
+
private getTextEncoderCtor;
|
|
23
|
+
private getTextDecoderCtor;
|
|
17
24
|
private openDB;
|
|
18
25
|
private putData;
|
|
19
26
|
private getData;
|
|
@@ -26,7 +33,11 @@ export declare class EncryptedPksDb {
|
|
|
26
33
|
}
|
|
27
34
|
export declare class EncryptedPkStore implements PkStore {
|
|
28
35
|
private readonly encrypted;
|
|
29
|
-
|
|
36
|
+
private readonly env?;
|
|
37
|
+
constructor(encrypted: EncryptedData, env?: CoreEnv | undefined);
|
|
38
|
+
private getStorage;
|
|
39
|
+
private getCrypto;
|
|
40
|
+
private getTextDecoderCtor;
|
|
30
41
|
address(): Address.Address;
|
|
31
42
|
publicKey(): PublicKey.PublicKey;
|
|
32
43
|
signDigest(digest: Bytes.Bytes): Promise<{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"encrypted.d.ts","sourceRoot":"","sources":["../../../src/signers/pk/encrypted.ts"],"names":[],"mappings":"AAAA,OAAO,EAAO,OAAO,EAAE,SAAS,EAAa,KAAK,EAAE,MAAM,IAAI,CAAA;AAC9D,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AAEpC,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,YAAY,CAAA;IAChB,IAAI,EAAE,YAAY,CAAA;IAClB,UAAU,EAAE,MAAM,CAAA;IAClB,OAAO,EAAE,OAAO,CAAC,OAAO,CAAA;IACxB,SAAS,EAAE,SAAS,CAAC,SAAS,CAAA;CAC/B;AAED,qBAAa,cAAc;IAMvB,OAAO,CAAC,QAAQ,CAAC,qBAAqB;
|
|
1
|
+
{"version":3,"file":"encrypted.d.ts","sourceRoot":"","sources":["../../../src/signers/pk/encrypted.ts"],"names":[],"mappings":"AAAA,OAAO,EAAO,OAAO,EAAE,SAAS,EAAa,KAAK,EAAE,MAAM,IAAI,CAAA;AAC9D,OAAO,EAAkB,KAAK,OAAO,EAA4D,MAAM,cAAc,CAAA;AACrH,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AAEpC,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,YAAY,CAAA;IAChB,IAAI,EAAE,YAAY,CAAA;IAClB,UAAU,EAAE,MAAM,CAAA;IAClB,OAAO,EAAE,OAAO,CAAC,OAAO,CAAA;IACxB,SAAS,EAAE,SAAS,CAAC,SAAS,CAAA;CAC/B;AAED,qBAAa,cAAc;IAMvB,OAAO,CAAC,QAAQ,CAAC,qBAAqB;IAEtC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC;IAPvB,OAAO,CAAC,SAAS,CAAQ;IACzB,OAAO,CAAC,MAAM,CAAkB;IAChC,OAAO,CAAC,SAAS,CAAY;gBAGV,qBAAqB,GAAE,MAAoB,EAC5D,SAAS,GAAE,MAAe,EACT,GAAG,CAAC,EAAE,OAAO,YAAA;IAKhC,OAAO,CAAC,YAAY;IAIpB,OAAO,CAAC,YAAY;IASpB,OAAO,CAAC,UAAU;IAQlB,OAAO,CAAC,SAAS;IASjB,OAAO,CAAC,kBAAkB;IAY1B,OAAO,CAAC,kBAAkB;IAY1B,OAAO,CAAC,MAAM;YAcA,OAAO;YAWP,OAAO;YAWP,UAAU;IAWlB,gBAAgB,IAAI,OAAO,CAAC,aAAa,CAAC;IAqC1C,iBAAiB,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC;IAK/E,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC;IAMpF,aAAa,IAAI,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;IAK3C,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO;CAMtC;AAED,qBAAa,gBAAiB,YAAW,OAAO;IAE5C,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC;gBADJ,SAAS,EAAE,aAAa,EACxB,GAAG,CAAC,EAAE,OAAO,YAAA;IAGhC,OAAO,CAAC,UAAU;IAQlB,OAAO,CAAC,SAAS;IASjB,OAAO,CAAC,kBAAkB;IAS1B,OAAO,IAAI,OAAO,CAAC,OAAO;IAI1B,SAAS,IAAI,SAAS,CAAC,SAAS;IAI1B,UAAU,CAAC,MAAM,EAAE,KAAK,CAAC,KAAK,GAAG,OAAO,CAAC;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;CAkB1F"}
|