@idos-network/kwil-infra 1.2.0 → 2.2.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.
Files changed (56) hide show
  1. package/CHANGELOG.md +98 -0
  2. package/README.md +46 -1
  3. package/dist/actions/index.d.mts +2 -2
  4. package/dist/actions/index.mjs +1 -1370
  5. package/dist/actions/index.mjs.map +1 -1
  6. package/dist/facesign/index.d.mts +1 -1
  7. package/dist/facesign/index.mjs +1 -2
  8. package/dist/{facesign-signer-ADd4EASX.d.mts → facesign-signer-5I8juA7p.d.mts} +2 -1
  9. package/dist/facesign-signer-5I8juA7p.d.mts.map +1 -0
  10. package/dist/facesign-signer-z5T312uQ.mjs +2 -0
  11. package/dist/facesign-signer-z5T312uQ.mjs.map +1 -0
  12. package/dist/{index-UFgWkjYP.d.mts → index-Bqz6trCk.d.mts} +273 -187
  13. package/dist/index-Bqz6trCk.d.mts.map +1 -0
  14. package/dist/index.d.mts +2 -2
  15. package/dist/index.mjs +1 -415
  16. package/dist/index.mjs.map +1 -1
  17. package/dist/signature-verification/index.d.mts +3 -5
  18. package/dist/signature-verification/index.d.mts.map +1 -1
  19. package/dist/signature-verification/index.mjs +1 -139
  20. package/dist/signature-verification/index.mjs.map +1 -1
  21. package/dist/xrp/utils.d.mts +165 -57
  22. package/dist/xrp/utils.d.mts.map +1 -1
  23. package/dist/xrp/utils.mjs +1 -104
  24. package/dist/xrp/utils.mjs.map +1 -1
  25. package/dist/xrpl-credentials/index.d.mts +162 -153
  26. package/dist/xrpl-credentials/index.d.mts.map +1 -1
  27. package/dist/xrpl-credentials/index.mjs +1 -223
  28. package/dist/xrpl-credentials/index.mjs.map +1 -1
  29. package/package.json +17 -12
  30. package/src/actions/actions.test.ts +189 -0
  31. package/src/actions/actions.ts +368 -467
  32. package/src/actions/index.ts +38 -0
  33. package/src/create-kgw-authenticated-fetch.test.ts +377 -0
  34. package/src/create-kgw-authenticated-fetch.ts +321 -0
  35. package/src/create-kwil-client.ts +33 -10
  36. package/src/create-kwil-signer.test.ts +80 -0
  37. package/src/create-kwil-signer.ts +31 -5
  38. package/src/facesign/facesign-signer.test.ts +77 -0
  39. package/src/facesign/facesign-signer.ts +50 -2
  40. package/src/index.ts +2 -0
  41. package/src/mm-token/create-mm-token-kwil-signer.test.ts +148 -0
  42. package/src/mm-token/create-mm-token-kwil-signer.ts +166 -0
  43. package/src/near/create-near-wallet-kwil-signer.ts +1 -1
  44. package/src/signature-verification/index.test.ts +18 -0
  45. package/src/signature-verification/index.ts +7 -1
  46. package/src/wait-for-kwil-tx.test.ts +92 -0
  47. package/src/wait-for-kwil-tx.ts +111 -0
  48. package/tsdown.config.ts +1 -0
  49. package/vitest.config.ts +4 -0
  50. package/.turbo/turbo-build.log +0 -47
  51. package/.turbo/turbo-test.log +0 -126
  52. package/.turbo/turbo-typecheck.log +0 -5
  53. package/dist/facesign-signer-ADd4EASX.d.mts.map +0 -1
  54. package/dist/facesign-signer-BY9Nti9F.mjs +0 -244
  55. package/dist/facesign-signer-BY9Nti9F.mjs.map +0 -1
  56. package/dist/index-UFgWkjYP.d.mts.map +0 -1
@@ -1,47 +0,0 @@
1
-
2
- 
3
- > @idos-network/kwil-infra@1.1.1 build /Users/strnadj/Projects/idos/idos-sdk-js/packages/kwil-infra
4
- > tsdown
5
-
6
- ℹ tsdown v0.22.0 powered by rolldown v1.0.0
7
- ℹ config file: /Users/strnadj/Projects/idos/idos-sdk-js/packages/kwil-infra/tsdown.config.ts
8
- ℹ entry: ./src/index.ts, ./src/actions/index.ts, ./src/signature-verification/index.ts, ./src/xrp/utils.ts, ./src/facesign/index.ts, ./src/xrpl-credentials/index.ts
9
- ℹ tsconfig: tsconfig.json
10
- ℹ Build start
11
- ℹ Cleaning 31 files
12
- ℹ Hint: consider adding deps.onlyBundle option to avoid unintended bundling of dependencies, or set deps.onlyBundle: false to disable this hint.
13
- See more at https://tsdown.dev/options/dependencies#deps-onlybundle
14
- Detected dependencies in bundle:
15
- - @gemwallet/api
16
- - xumm-sdk
17
- - xumm-oauth2-pkce
18
- - xumm-xapp-sdk
19
- - xumm
20
- ℹ dist/actions/index.mjs 37.28 kB │ gzip: 5.51 kB
21
- ℹ dist/index.mjs 15.28 kB │ gzip: 4.28 kB
22
- ℹ dist/xrpl-credentials/index.mjs  8.13 kB │ gzip: 2.22 kB
23
- ℹ dist/signature-verification/index.mjs  5.42 kB │ gzip: 1.48 kB
24
- ℹ dist/xrp/utils.mjs  3.42 kB │ gzip: 1.14 kB
25
- ℹ dist/facesign/index.mjs  0.11 kB │ gzip: 0.10 kB
26
- ℹ dist/actions/index.mjs.map 80.23 kB │ gzip: 9.52 kB
27
- ℹ dist/xrp/utils.d.mts.map 43.87 kB │ gzip: 10.14 kB
28
- ℹ dist/index.mjs.map 33.79 kB │ gzip: 9.09 kB
29
- ℹ dist/index-Ci6QhKJo.d.mts.map 19.55 kB │ gzip: 2.69 kB
30
- ℹ dist/xrpl-credentials/index.mjs.map 14.54 kB │ gzip: 3.66 kB
31
- ℹ dist/facesign-signer-BY9Nti9F.mjs.map 14.08 kB │ gzip: 3.73 kB
32
- ℹ dist/signature-verification/index.mjs.map 11.84 kB │ gzip: 3.27 kB
33
- ℹ dist/xrp/utils.mjs.map  7.77 kB │ gzip: 2.48 kB
34
- ℹ dist/facesign-signer-BY9Nti9F.mjs  7.12 kB │ gzip: 1.84 kB
35
- ℹ dist/xrpl-credentials/index.d.mts.map  0.94 kB │ gzip: 0.43 kB
36
- ℹ dist/facesign-signer-ADd4EASX.d.mts.map  0.52 kB │ gzip: 0.28 kB
37
- ℹ dist/signature-verification/index.d.mts.map  0.24 kB │ gzip: 0.18 kB
38
- ℹ dist/xrp/utils.d.mts 39.80 kB │ gzip: 8.15 kB
39
- ℹ dist/actions/index.d.mts 11.40 kB │ gzip: 2.12 kB
40
- ℹ dist/xrpl-credentials/index.d.mts  7.78 kB │ gzip: 2.12 kB
41
- ℹ dist/index.d.mts  0.68 kB │ gzip: 0.28 kB
42
- ℹ dist/signature-verification/index.d.mts  0.43 kB │ gzip: 0.27 kB
43
- ℹ dist/facesign/index.d.mts  0.23 kB │ gzip: 0.14 kB
44
- ℹ dist/index-Ci6QhKJo.d.mts 36.45 kB │ gzip: 6.43 kB
45
- ℹ dist/facesign-signer-ADd4EASX.d.mts  0.82 kB │ gzip: 0.39 kB
46
- ℹ 26 files, total: 401.70 kB
47
- ✔ Build complete in 948ms
@@ -1,126 +0,0 @@
1
-
2
- 
3
- > @idos-network/kwil-infra@1.0.0-rc.1.1 test /Users/strnadj/Projects/idos/idos-sdk-js/packages/kwil-infra
4
- > vitest
5
-
6
- [?25l
7
-  DEV  v4.0.16 /Users/strnadj/Projects/idos/idos-sdk-js/packages/kwil-infra
8
-
9
- [?2026h
10
-  Test Files 0 passed (1)
11
-  Tests 0 passed (0)
12
-  Start at 15:04:41
13
-  Duration 913ms
14
- [?2026l[?2026h
15
-  ❯ src/signature-verification/index.test.ts [queued]
16
-
17
-  Test Files 0 passed (1)
18
-  Tests 0 passed (0)
19
-  Start at 15:04:41
20
-  Duration 1.22s
21
- [?2026l[?2026h
22
-  ❯ src/signature-verification/index.test.ts 0/6
23
-
24
-  Test Files 0 passed (1)
25
-  Tests 0 passed (6)
26
-  Start at 15:04:41
27
-  Duration 1.42s
28
- [?2026lstdout | src/signature-verification/index.test.ts > verifySignature > routes FaceSign verification
29
- message Uint8Array(5) [ 104, 101, 108, 108, 111 ]
30
- keyPair.secretKey Uint8Array(64) [
31
- 22, 145, 216, 173, 105, 53, 117, 196, 139, 199, 73,
32
- 84, 62, 83, 109, 96, 73, 202, 196, 145, 220, 245,
33
- 177, 220, 36, 77, 247, 198, 242, 229, 237, 178, 163,
34
- 31, 16, 92, 194, 100, 193, 190, 3, 119, 113, 178,
35
- 218, 178, 67, 229, 95, 37, 36, 60, 155, 218, 222,
36
- 48, 194, 22, 119, 47, 75, 138, 246, 21
37
- ]
38
- signature Uint8Array(64) [
39
- 232, 29, 198, 32, 8, 68, 156, 121, 137, 101, 21,
40
- 26, 77, 250, 216, 246, 221, 102, 138, 42, 215, 224,
41
- 241, 27, 181, 30, 125, 60, 238, 19, 27, 32, 209,
42
- 183, 59, 173, 81, 6, 148, 69, 204, 3, 91, 202,
43
- 0, 197, 48, 110, 174, 117, 171, 35, 173, 66, 65,
44
- 126, 90, 167, 83, 48, 131, 150, 196, 10
45
- ]
46
-
47
- ✓ src/signature-verification/index.test.ts (6 tests | 5 skipped) 29ms
48
- ✓ verifySignature (6)
49
- ↓ routes EVM verification
50
- ↓ requires public_key for non-EVM wallets
51
- ↓ routes NEAR verification
52
- ↓ routes Stellar verification
53
- ↓ returns false when verifier throws
54
- ✓ routes FaceSign verification 28ms
55
-
56
-  Test Files  1 passed (1)
57
-  Tests  1 passed | 5 skipped (6)
58
-  Start at  15:04:41
59
-  Duration  1.54s (transform 138ms, setup 0ms, import 272ms, tests 29ms, environment 979ms)
60
-
61
-  PASS  Waiting for file changes...
62
- press h to show help, press q to quit
63
- c RERUN  src/signature-verification/index.test.ts x1 
64
-
65
- [?2026h
66
-  ❯ src/signature-verification/index.test.ts [queued]
67
-
68
-  Test Files 0 passed (1)
69
-  Tests 0 passed (0)
70
-  Start at 15:04:50
71
-  Duration 302ms
72
- [?2026l ✓ src/signature-verification/index.test.ts (6 tests | 5 skipped) 18ms
73
- ✓ verifySignature (6)
74
- ↓ routes EVM verification
75
- ↓ requires public_key for non-EVM wallets
76
- ↓ routes NEAR verification
77
- ↓ routes Stellar verification
78
- ↓ returns false when verifier throws
79
- ✓ routes FaceSign verification 18ms
80
-
81
-  Test Files  1 passed (1)
82
-  Tests  1 passed | 5 skipped (6)
83
-  Start at  15:04:50
84
-  Duration  56ms
85
-
86
-  PASS  Waiting for file changes...
87
- press h to show help, press q to quit
88
- c RERUN  src/signature-verification/index.test.ts x2 
89
-
90
- [?2026h
91
-  ❯ src/signature-verification/index.test.ts [queued]
92
-
93
-  Test Files 0 passed (1)
94
-  Tests 0 passed (0)
95
-  Start at 15:04:55
96
-  Duration 303ms
97
- [?2026lstderr | src/signature-verification/index.test.ts > verifySignature > returns false when verifier throws
98
- Error verifying signature Error: boom
99
- at /Users/strnadj/Projects/idos/idos-sdk-js/packages/kwil-infra/src/signature-verification/index.test.ts:80:13
100
- at Mock (file:///Users/strnadj/Projects/idos/idos-sdk-js/node_modules/.pnpm/@vitest+spy@4.0.16/node_modules/@vitest/spy/dist/index.js:285:34)
101
- at Module.verifySignature (/Users/strnadj/Projects/idos/idos-sdk-js/packages/kwil-infra/src/signature-verification/index.ts:43:16)
102
- at /Users/strnadj/Projects/idos/idos-sdk-js/packages/kwil-infra/src/signature-verification/index.test.ts:83:26
103
- at file:///Users/strnadj/Projects/idos/idos-sdk-js/node_modules/.pnpm/@vitest+runner@4.0.16/node_modules/@vitest/runner/dist/index.js:145:11
104
- at file:///Users/strnadj/Projects/idos/idos-sdk-js/node_modules/.pnpm/@vitest+runner@4.0.16/node_modules/@vitest/runner/dist/index.js:915:26
105
- at file:///Users/strnadj/Projects/idos/idos-sdk-js/node_modules/.pnpm/@vitest+runner@4.0.16/node_modules/@vitest/runner/dist/index.js:1243:20
106
- at new Promise (<anonymous>)
107
- at runWithTimeout (file:///Users/strnadj/Projects/idos/idos-sdk-js/node_modules/.pnpm/@vitest+runner@4.0.16/node_modules/@vitest/runner/dist/index.js:1209:10)
108
- at file:///Users/strnadj/Projects/idos/idos-sdk-js/node_modules/.pnpm/@vitest+runner@4.0.16/node_modules/@vitest/runner/dist/index.js:1653:37
109
-
110
- ✓ src/signature-verification/index.test.ts (6 tests) 23ms
111
- ✓ verifySignature (6)
112
- ✓ routes EVM verification 1ms
113
- ✓ requires public_key for non-EVM wallets 1ms
114
- ✓ routes NEAR verification 0ms
115
- ✓ routes Stellar verification 0ms
116
- ✓ returns false when verifier throws 2ms
117
- ✓ routes FaceSign verification 19ms
118
-
119
-  Test Files  1 passed (1)
120
-  Tests  6 passed (6)
121
-  Start at  15:04:55
122
-  Duration  65ms
123
-
124
-  PASS  Waiting for file changes...
125
- press h to show help, press q to quit
126
- [?25h[?25h ELIFECYCLE  Test failed. See above for more details.
@@ -1,5 +0,0 @@
1
-
2
- 
3
- > @idos-network/kwil-infra@1.1.1 typecheck /Users/strnadj/Projects/idos/idos-sdk-js/packages/kwil-infra
4
- > tsc --noEmit
5
-
@@ -1 +0,0 @@
1
- {"version":3,"file":"facesign-signer-ADd4EASX.d.mts","names":[],"sources":["../src/facesign/facesign-signer.ts"],"mappings":";UAKiB,gBAAA;EACf,IAAA;EACA,WAAA;AAAA;AAAA,UAGe,6BAAA;EACf,QAAA,EAAU,gBAAA;EACV,UAAA;AAAA;AAAA,cAOW,sBAAA;EAAA;EAmBX,aAAA;EACA,UAAA;EACA,aAAA;EACA,SAAA;EAEA,WAAA,CAAY,OAAA,EAAS,6BAAA;EAmDrB,OAAA,CAAA,GAAiB,OAAA;IAAU,MAAA;EAAA;EAM3B,IAAA,CAAA,GAAc,OAAA;EAWd,UAAA,CAAA,GAAoB,OAAA;EAAA,IA0BhB,MAAA,CAAA;EAIJ,WAAA,CAAkB,OAAA,EAAS,UAAA,YAAsB,OAAA,CAAQ,UAAA;EAiFzD,IAAA,CAAA;EAqBA,OAAA,CAAA;AAAA"}
@@ -1,244 +0,0 @@
1
- //#region src/facesign/facesign-signer.ts
2
- const POST_MESSAGE_DELAY_MS = 300;
3
- const PROPOSAL_TIMEOUT_MS = 600 * 1e3;
4
- var FaceSignSignerProvider = class {
5
- #iframe = null;
6
- #container = null;
7
- #resolveOpenEnclave = null;
8
- #resolveSignMessage = null;
9
- #rejectSignMessage = null;
10
- #resolveSessionProposal = null;
11
- #rejectSessionProposal = null;
12
- #resolveAddressRequest = null;
13
- #messageListener = null;
14
- #messageListenerInitialized = false;
15
- #proposalId = 0;
16
- #hasKey = null;
17
- #metadata;
18
- #enclaveUrl;
19
- #enclaveOrigin;
20
- signatureType = "ed25519";
21
- walletType = "FaceSign";
22
- publicAddress = "";
23
- publicKey = "";
24
- constructor(options) {
25
- this.#metadata = options.metadata;
26
- this.#enclaveUrl = options.enclaveUrl;
27
- this.#enclaveOrigin = new URL(options.enclaveUrl).origin;
28
- }
29
- #setupMessageListener() {
30
- if (this.#messageListenerInitialized) return;
31
- this.#messageListener = (event) => {
32
- if (event.origin !== this.#enclaveOrigin) return;
33
- if (event.data?.type === "facesign_ready") {
34
- this.#hasKey = !!event.data.hasKey;
35
- this.#resolveOpenEnclave?.();
36
- }
37
- if (event.data?.type === "sign_proposal_response") {
38
- const payload = event.data.data;
39
- if (!payload) return;
40
- if (payload.signature) this.#resolveSignMessage?.(new Uint8Array(payload.signature));
41
- else this.#rejectSignMessage?.(/* @__PURE__ */ new Error("Sign request rejected by user"));
42
- }
43
- if (event.data?.type === "session_proposal_response") {
44
- const payload = event.data.data;
45
- if (!payload) return;
46
- if (payload.approved && payload.address) this.#resolveSessionProposal?.({ address: payload.address });
47
- else this.#rejectSessionProposal?.(/* @__PURE__ */ new Error("Session request rejected by user"));
48
- }
49
- if (event.data?.type === "address_response") {
50
- const payload = event.data.data;
51
- this.#resolveAddressRequest?.(payload?.address ?? null);
52
- }
53
- };
54
- window.addEventListener("message", this.#messageListener);
55
- this.#messageListenerInitialized = true;
56
- }
57
- async preload() {
58
- this.#setupMessageListener();
59
- await this.#ensureEnclave();
60
- return { hasKey: this.#hasKey ?? false };
61
- }
62
- async init() {
63
- this.#setupMessageListener();
64
- const sessionProposal = await this.#sessionProposal();
65
- this.publicKey = sessionProposal.address;
66
- this.publicAddress = sessionProposal.address;
67
- return sessionProposal.address;
68
- }
69
- async getAddress() {
70
- this.#setupMessageListener();
71
- await this.#ensureEnclave();
72
- if (!this.#hasKey) return null;
73
- return new Promise((resolve) => {
74
- const timer = setTimeout(() => resolve(null), PROPOSAL_TIMEOUT_MS);
75
- this.#resolveAddressRequest = (address) => {
76
- clearTimeout(timer);
77
- this.#resolveAddressRequest = null;
78
- if (address) {
79
- this.publicKey = address;
80
- this.publicAddress = address;
81
- }
82
- resolve(address);
83
- };
84
- this.#iframe?.contentWindow?.postMessage({
85
- type: "address_request",
86
- data: { id: ++this.#proposalId }
87
- }, this.#enclaveUrl);
88
- });
89
- }
90
- get signer() {
91
- return this;
92
- }
93
- async signMessage(message) {
94
- await this.#ensureEnclave();
95
- this.#showEnclave();
96
- const messageToSign = typeof message === "string" ? new TextEncoder().encode(message) : message;
97
- try {
98
- return await new Promise((resolve, reject) => {
99
- const timer = setTimeout(() => {
100
- reject(/* @__PURE__ */ new Error("FaceSign sign request timed out"));
101
- }, PROPOSAL_TIMEOUT_MS);
102
- this.#resolveSignMessage = (sig) => {
103
- clearTimeout(timer);
104
- resolve(sig);
105
- };
106
- this.#rejectSignMessage = (err) => {
107
- clearTimeout(timer);
108
- reject(err);
109
- };
110
- setTimeout(() => {
111
- this.#iframe?.contentWindow?.postMessage({
112
- type: "sign_proposal",
113
- data: {
114
- id: ++this.#proposalId,
115
- data: messageToSign,
116
- metadata: this.#metadata
117
- }
118
- }, this.#enclaveUrl);
119
- }, POST_MESSAGE_DELAY_MS);
120
- });
121
- } finally {
122
- this.#resolveSignMessage = null;
123
- this.#rejectSignMessage = null;
124
- this.#hideEnclave();
125
- }
126
- }
127
- async #sessionProposal() {
128
- await this.#ensureEnclave();
129
- this.#showEnclave();
130
- try {
131
- return await new Promise((resolve, reject) => {
132
- const timer = setTimeout(() => {
133
- reject(/* @__PURE__ */ new Error("FaceSign session proposal timed out"));
134
- }, PROPOSAL_TIMEOUT_MS);
135
- this.#resolveSessionProposal = (res) => {
136
- clearTimeout(timer);
137
- resolve(res);
138
- };
139
- this.#rejectSessionProposal = (err) => {
140
- clearTimeout(timer);
141
- reject(err);
142
- };
143
- setTimeout(() => {
144
- this.#iframe?.contentWindow?.postMessage({
145
- type: "session_proposal",
146
- data: {
147
- id: ++this.#proposalId,
148
- metadata: this.#metadata
149
- }
150
- }, this.#enclaveUrl);
151
- }, POST_MESSAGE_DELAY_MS);
152
- });
153
- } finally {
154
- this.#resolveSessionProposal = null;
155
- this.#rejectSessionProposal = null;
156
- this.#hideEnclave();
157
- }
158
- }
159
- hide() {
160
- this.#cancelPendingProposals();
161
- this.#hideEnclave();
162
- }
163
- #cancelPendingProposals() {
164
- const cancelError = /* @__PURE__ */ new Error("FaceSign operation cancelled");
165
- if (this.#rejectSignMessage) {
166
- this.#rejectSignMessage(cancelError);
167
- this.#resolveSignMessage = null;
168
- this.#rejectSignMessage = null;
169
- }
170
- if (this.#rejectSessionProposal) {
171
- this.#rejectSessionProposal(cancelError);
172
- this.#resolveSessionProposal = null;
173
- this.#rejectSessionProposal = null;
174
- }
175
- }
176
- destroy() {
177
- this.#cancelPendingProposals();
178
- if (this.#messageListener) {
179
- window.removeEventListener("message", this.#messageListener);
180
- this.#messageListener = null;
181
- }
182
- this.#destroyEnclave();
183
- }
184
- #createContainer() {
185
- const container = document.createElement("dialog");
186
- Object.assign(container.style, {
187
- position: "fixed",
188
- inset: "0",
189
- width: "100%",
190
- height: "100%",
191
- maxWidth: "100%",
192
- maxHeight: "100%",
193
- margin: "0",
194
- padding: "0",
195
- border: "none",
196
- zIndex: "99999",
197
- background: "#0a0a0a"
198
- });
199
- document.body.appendChild(container);
200
- return container;
201
- }
202
- #ensureEnclave() {
203
- if (this.#iframe?.contentWindow) return Promise.resolve();
204
- return new Promise((resolve, reject) => {
205
- const timer = setTimeout(() => {
206
- reject(/* @__PURE__ */ new Error("FaceSign enclave failed to load"));
207
- }, PROPOSAL_TIMEOUT_MS);
208
- if (!this.#container) this.#container = this.#createContainer();
209
- this.#iframe = document.createElement("iframe");
210
- this.#iframe.src = this.#enclaveUrl;
211
- this.#iframe.title = "FaceSign Enclave";
212
- this.#iframe.allow = "camera; fullscreen";
213
- this.#iframe.style.cssText = "width:100%;height:100%;border:none;";
214
- this.#container.appendChild(this.#iframe);
215
- this.#resolveOpenEnclave = () => {
216
- console.log("resolveOpenEnclave");
217
- clearTimeout(timer);
218
- resolve();
219
- };
220
- });
221
- }
222
- #showEnclave() {
223
- const el = this.#container;
224
- if (el && !el.open) el.showModal();
225
- }
226
- #hideEnclave() {
227
- const el = this.#container;
228
- if (el?.open) el.close();
229
- }
230
- #destroyEnclave() {
231
- if (this.#iframe) {
232
- this.#iframe.remove();
233
- this.#iframe = null;
234
- }
235
- if (this.#container) {
236
- this.#container.remove();
237
- this.#container = null;
238
- }
239
- }
240
- };
241
- //#endregion
242
- export { FaceSignSignerProvider as t };
243
-
244
- //# sourceMappingURL=facesign-signer-BY9Nti9F.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"facesign-signer-BY9Nti9F.mjs","names":["#metadata","#enclaveUrl","#enclaveOrigin","#messageListenerInitialized","#messageListener","#hasKey","#resolveOpenEnclave","#resolveSignMessage","#rejectSignMessage","#resolveSessionProposal","#rejectSessionProposal","#resolveAddressRequest","#setupMessageListener","#ensureEnclave","#sessionProposal","#iframe","#proposalId","#showEnclave","#hideEnclave","#cancelPendingProposals","#destroyEnclave","#container","#createContainer"],"sources":["../src/facesign/facesign-signer.ts"],"sourcesContent":["// Buffer after showing the iframe before posting a message, giving the enclave time to be ready.\nconst POST_MESSAGE_DELAY_MS = 300;\n// Safety net: reject proposals if the enclave doesn't respond within this window.\nconst PROPOSAL_TIMEOUT_MS = 10 * 60 * 1000; // 10 minutes\n\nexport interface FaceSignMetadata {\n name: string;\n description: string;\n}\n\nexport interface FaceSignSignerProviderOptions {\n metadata: FaceSignMetadata;\n enclaveUrl: string;\n}\n\ninterface SessionResponse {\n address: string;\n}\n\nexport class FaceSignSignerProvider {\n #iframe: HTMLIFrameElement | null = null;\n #container: HTMLDialogElement | null = null;\n\n #resolveOpenEnclave: (() => void) | null = null;\n #resolveSignMessage: ((signature: Uint8Array) => void) | null = null;\n #rejectSignMessage: ((error: Error) => void) | null = null;\n #resolveSessionProposal: ((response: SessionResponse) => void) | null = null;\n #rejectSessionProposal: ((error: Error) => void) | null = null;\n #resolveAddressRequest: ((address: string | null) => void) | null = null;\n\n #messageListener: ((event: MessageEvent) => void) | null = null;\n #messageListenerInitialized = false;\n #proposalId = 0;\n #hasKey: boolean | null = null;\n #metadata: FaceSignMetadata;\n #enclaveUrl: string;\n #enclaveOrigin: string;\n\n signatureType = \"ed25519\";\n walletType = \"FaceSign\";\n publicAddress = \"\";\n publicKey = \"\";\n\n constructor(options: FaceSignSignerProviderOptions) {\n this.#metadata = options.metadata;\n this.#enclaveUrl = options.enclaveUrl;\n this.#enclaveOrigin = new URL(options.enclaveUrl).origin;\n }\n\n #setupMessageListener(): void {\n if (this.#messageListenerInitialized) {\n return;\n }\n\n this.#messageListener = (event: MessageEvent) => {\n if (event.origin !== this.#enclaveOrigin) return;\n\n if (event.data?.type === \"facesign_ready\") {\n this.#hasKey = !!event.data.hasKey;\n this.#resolveOpenEnclave?.();\n }\n\n if (event.data?.type === \"sign_proposal_response\") {\n const payload = event.data.data;\n if (!payload) return;\n\n if (payload.signature) {\n this.#resolveSignMessage?.(new Uint8Array(payload.signature));\n } else {\n this.#rejectSignMessage?.(new Error(\"Sign request rejected by user\"));\n }\n }\n\n if (event.data?.type === \"session_proposal_response\") {\n const payload = event.data.data;\n if (!payload) return;\n\n if (payload.approved && payload.address) {\n this.#resolveSessionProposal?.({ address: payload.address });\n } else {\n this.#rejectSessionProposal?.(new Error(\"Session request rejected by user\"));\n }\n }\n\n if (event.data?.type === \"address_response\") {\n const payload = event.data.data;\n this.#resolveAddressRequest?.(payload?.address ?? null);\n }\n };\n\n window.addEventListener(\"message\", this.#messageListener);\n this.#messageListenerInitialized = true;\n }\n\n async preload(): Promise<{ hasKey: boolean }> {\n this.#setupMessageListener();\n await this.#ensureEnclave();\n return { hasKey: this.#hasKey ?? false };\n }\n\n async init(): Promise<string> {\n this.#setupMessageListener();\n\n const sessionProposal = await this.#sessionProposal();\n\n this.publicKey = sessionProposal.address;\n this.publicAddress = sessionProposal.address;\n\n return sessionProposal.address;\n }\n\n async getAddress(): Promise<string | null> {\n this.#setupMessageListener();\n await this.#ensureEnclave();\n\n if (!this.#hasKey) return null;\n\n return new Promise<string | null>((resolve) => {\n const timer = setTimeout(() => resolve(null), PROPOSAL_TIMEOUT_MS);\n\n this.#resolveAddressRequest = (address) => {\n clearTimeout(timer);\n this.#resolveAddressRequest = null;\n if (address) {\n this.publicKey = address;\n this.publicAddress = address;\n }\n resolve(address);\n };\n\n this.#iframe?.contentWindow?.postMessage(\n { type: \"address_request\", data: { id: ++this.#proposalId } },\n this.#enclaveUrl,\n );\n });\n }\n\n get signer(): this {\n return this;\n }\n\n async signMessage(message: Uint8Array | string): Promise<Uint8Array> {\n await this.#ensureEnclave();\n this.#showEnclave();\n\n const messageToSign = typeof message === \"string\" ? new TextEncoder().encode(message) : message;\n\n try {\n return await new Promise<Uint8Array>((resolve, reject) => {\n const timer = setTimeout(() => {\n reject(new Error(\"FaceSign sign request timed out\"));\n }, PROPOSAL_TIMEOUT_MS);\n\n this.#resolveSignMessage = (sig) => {\n clearTimeout(timer);\n resolve(sig);\n };\n this.#rejectSignMessage = (err) => {\n clearTimeout(timer);\n reject(err);\n };\n\n setTimeout(() => {\n this.#iframe?.contentWindow?.postMessage(\n {\n type: \"sign_proposal\",\n data: {\n id: ++this.#proposalId,\n data: messageToSign,\n metadata: this.#metadata,\n },\n },\n this.#enclaveUrl,\n );\n }, POST_MESSAGE_DELAY_MS);\n });\n } finally {\n this.#resolveSignMessage = null;\n this.#rejectSignMessage = null;\n this.#hideEnclave();\n }\n }\n\n async #sessionProposal(): Promise<SessionResponse> {\n await this.#ensureEnclave();\n this.#showEnclave();\n\n try {\n return await new Promise<SessionResponse>((resolve, reject) => {\n const timer = setTimeout(() => {\n reject(new Error(\"FaceSign session proposal timed out\"));\n }, PROPOSAL_TIMEOUT_MS);\n\n this.#resolveSessionProposal = (res) => {\n clearTimeout(timer);\n resolve(res);\n };\n this.#rejectSessionProposal = (err) => {\n clearTimeout(timer);\n reject(err);\n };\n\n setTimeout(() => {\n this.#iframe?.contentWindow?.postMessage(\n {\n type: \"session_proposal\",\n data: {\n id: ++this.#proposalId,\n metadata: this.#metadata,\n },\n },\n this.#enclaveUrl,\n );\n }, POST_MESSAGE_DELAY_MS);\n });\n } finally {\n this.#resolveSessionProposal = null;\n this.#rejectSessionProposal = null;\n this.#hideEnclave();\n }\n }\n\n hide(): void {\n this.#cancelPendingProposals();\n this.#hideEnclave();\n }\n\n #cancelPendingProposals(): void {\n const cancelError = new Error(\"FaceSign operation cancelled\");\n\n if (this.#rejectSignMessage) {\n this.#rejectSignMessage(cancelError);\n this.#resolveSignMessage = null;\n this.#rejectSignMessage = null;\n }\n\n if (this.#rejectSessionProposal) {\n this.#rejectSessionProposal(cancelError);\n this.#resolveSessionProposal = null;\n this.#rejectSessionProposal = null;\n }\n }\n\n destroy(): void {\n this.#cancelPendingProposals();\n if (this.#messageListener) {\n window.removeEventListener(\"message\", this.#messageListener);\n this.#messageListener = null;\n }\n this.#destroyEnclave();\n }\n\n #createContainer(): HTMLDialogElement {\n const container = document.createElement(\"dialog\");\n Object.assign(container.style, {\n position: \"fixed\",\n inset: \"0\",\n width: \"100%\",\n height: \"100%\",\n maxWidth: \"100%\",\n maxHeight: \"100%\",\n margin: \"0\",\n padding: \"0\",\n border: \"none\",\n zIndex: \"99999\",\n background: \"#0a0a0a\",\n });\n document.body.appendChild(container);\n return container;\n }\n\n #ensureEnclave(): Promise<void> {\n if (this.#iframe?.contentWindow) {\n return Promise.resolve();\n }\n\n return new Promise<void>((resolve, reject) => {\n const timer = setTimeout(() => {\n reject(new Error(\"FaceSign enclave failed to load\"));\n }, PROPOSAL_TIMEOUT_MS);\n\n if (!this.#container) {\n this.#container = this.#createContainer();\n }\n\n this.#iframe = document.createElement(\"iframe\");\n this.#iframe.src = this.#enclaveUrl;\n this.#iframe.title = \"FaceSign Enclave\";\n this.#iframe.allow = \"camera; fullscreen\";\n this.#iframe.style.cssText = \"width:100%;height:100%;border:none;\";\n\n this.#container.appendChild(this.#iframe);\n\n this.#resolveOpenEnclave = () => {\n console.log(\"resolveOpenEnclave\");\n clearTimeout(timer);\n resolve();\n };\n });\n }\n\n #showEnclave(): void {\n const el = this.#container;\n\n if (el && !el.open) {\n el.showModal();\n }\n }\n\n #hideEnclave(): void {\n const el = this.#container;\n if (el?.open) {\n el.close();\n }\n }\n\n #destroyEnclave(): void {\n if (this.#iframe) {\n this.#iframe.remove();\n this.#iframe = null;\n }\n if (this.#container) {\n this.#container.remove();\n this.#container = null;\n }\n }\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index-UFgWkjYP.d.mts","names":[],"sources":["../src/create-kwil-client.ts","../src/create-kwil-signer.ts","../src/near/create-near-wallet-kwil-signer.ts","../src/actions/actions.ts","../src/actions/index.ts"],"mappings":"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"}