@powerhousedao/connect 5.1.0-dev.3 → 5.1.0-dev.30

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 (140) hide show
  1. package/.env +1 -0
  2. package/dist/assets/AddDriveModal-D9L-2Lil.js +1 -0
  3. package/dist/assets/ClearStorageModal-DT3crd2J.js +1 -0
  4. package/dist/assets/CookiesPolicyModal-Cg-ZIYwQ.js +1 -0
  5. package/dist/assets/CreateDocumentModal-B5-4x1PL.js +1 -0
  6. package/dist/assets/DebugSettingsModal-2VROxLa6.js +1 -0
  7. package/dist/assets/DeleteDriveModal-BqTbD9AA.js +1 -0
  8. package/dist/assets/DeleteItemModal-BcTkVZ5s.js +1 -0
  9. package/dist/assets/DisclaimerModal-C8twiB3J.js +1 -0
  10. package/dist/assets/DriveSettingsModal-DGXi1S_w.js +1 -0
  11. package/dist/assets/ExportDocumentWithErrorsModal-CnVPh2hg.js +1 -0
  12. package/dist/assets/SettingsModal-DhLRuwrH.js +1 -0
  13. package/dist/assets/UpgradeDriveModal-BQmVYoWu.js +1 -0
  14. package/dist/assets/{design_system-D6ejBLrT.js → design_system-wiExdGSo.js} +1 -1
  15. package/dist/assets/design_system_connect-C8sP_VL9.js +45 -0
  16. package/dist/assets/{design_system_ui-CtSAZiBK.js → design_system_ui-CPf6X_7e.js} +1 -1
  17. package/dist/assets/document_drive-CwJB1Xeu.js +316 -0
  18. package/dist/assets/{document_engineering-BTWZsN7i.js → document_engineering-CO_nmZuG.js} +1 -1
  19. package/dist/assets/{document_model-DXcLJEjZ.js → document_model-Dg5TMlFt.js} +11 -11
  20. package/dist/assets/document_model_editor-BWBEv1yk.js +25 -0
  21. package/dist/assets/{drive_explorer-B7kE_9_o.js → drive_explorer-Br9HlKVt.js} +2 -2
  22. package/dist/assets/{graphql-editor-CwDDLZi4.js → graphql-editor-CJvpFT5J.js} +1 -1
  23. package/dist/assets/{hooks-Cu19Ukp1.js → hooks-CBM25xI9.js} +1 -1
  24. package/dist/assets/index-C9sx8eSK.js +18 -0
  25. package/dist/assets/index-CaSdt_en.js +25 -0
  26. package/dist/assets/index-CdamZauA.css +1 -0
  27. package/dist/assets/{json-editor-W5vEzMnK.js → json-editor-ROpu8Iji.js} +1 -1
  28. package/dist/assets/nodefs-Vq2O_c5A.js +1 -0
  29. package/dist/assets/opfs-ahp-BrSKGNTW.js +3 -0
  30. package/dist/assets/pg_dump-CW0pN9tG.wasm +0 -0
  31. package/dist/assets/postgres-CkP7QCDB.data +0 -0
  32. package/dist/assets/postgres-CyuUVpXN.wasm +0 -0
  33. package/dist/assets/reactor_browser-C4GeHg-H.js +129 -0
  34. package/dist/assets/{state-schemas-CE_hoR2g.js → state-schemas--EJ9plhU.js} +2 -2
  35. package/dist/assets/zod-BpTyxkjy.js +20 -0
  36. package/dist/index.html +11 -11
  37. package/heroku/Dockerfile +3 -0
  38. package/lib/package.copy.json +17 -8
  39. package/lib/src/components/app.d.ts.map +1 -1
  40. package/lib/src/components/app.js +11 -0
  41. package/lib/src/components/app.js.map +1 -1
  42. package/lib/src/components/drive-editor-container.d.ts.map +1 -1
  43. package/lib/src/components/drive-editor-container.js +3 -6
  44. package/lib/src/components/drive-editor-container.js.map +1 -1
  45. package/lib/src/components/editors.d.ts.map +1 -1
  46. package/lib/src/components/editors.js +3 -9
  47. package/lib/src/components/editors.js.map +1 -1
  48. package/lib/src/components/error-boundary.d.ts +103 -0
  49. package/lib/src/components/error-boundary.d.ts.map +1 -0
  50. package/lib/src/components/error-boundary.js +104 -0
  51. package/lib/src/components/error-boundary.js.map +1 -0
  52. package/lib/src/components/modal/index.d.ts +0 -1
  53. package/lib/src/components/modal/index.d.ts.map +1 -1
  54. package/lib/src/components/modal/index.js +0 -1
  55. package/lib/src/components/modal/index.js.map +1 -1
  56. package/lib/src/components/modal/modals/AddDriveModal.d.ts.map +1 -1
  57. package/lib/src/components/modal/modals/AddDriveModal.js +35 -27
  58. package/lib/src/components/modal/modals/AddDriveModal.js.map +1 -1
  59. package/lib/src/components/modal/modals/InspectorModal/InspectorModal.d.ts +2 -0
  60. package/lib/src/components/modal/modals/InspectorModal/InspectorModal.d.ts.map +1 -0
  61. package/lib/src/components/modal/modals/InspectorModal/InspectorModal.js +26 -0
  62. package/lib/src/components/modal/modals/InspectorModal/InspectorModal.js.map +1 -0
  63. package/lib/src/components/modal/modals/InspectorModal/index.d.ts +2 -0
  64. package/lib/src/components/modal/modals/InspectorModal/index.d.ts.map +1 -0
  65. package/lib/src/components/modal/modals/InspectorModal/index.js +2 -0
  66. package/lib/src/components/modal/modals/InspectorModal/index.js.map +1 -0
  67. package/lib/src/components/modal/modals/InspectorModal/useDbExplorer.d.ts +32 -0
  68. package/lib/src/components/modal/modals/InspectorModal/useDbExplorer.d.ts.map +1 -0
  69. package/lib/src/components/modal/modals/InspectorModal/useDbExplorer.js +108 -0
  70. package/lib/src/components/modal/modals/InspectorModal/useDbExplorer.js.map +1 -0
  71. package/lib/src/components/modal/modals/InspectorModal/useRemotesInspector.d.ts +4 -0
  72. package/lib/src/components/modal/modals/InspectorModal/useRemotesInspector.d.ts.map +1 -0
  73. package/lib/src/components/modal/modals/InspectorModal/useRemotesInspector.js +12 -0
  74. package/lib/src/components/modal/modals/InspectorModal/useRemotesInspector.js.map +1 -0
  75. package/lib/src/components/modal/modals-container.d.ts.map +1 -1
  76. package/lib/src/components/modal/modals-container.js +6 -2
  77. package/lib/src/components/modal/modals-container.js.map +1 -1
  78. package/lib/src/components/sidebar.d.ts.map +1 -1
  79. package/lib/src/components/sidebar.js +7 -4
  80. package/lib/src/components/sidebar.js.map +1 -1
  81. package/lib/src/connect.config.d.ts +2 -0
  82. package/lib/src/connect.config.d.ts.map +1 -1
  83. package/lib/src/connect.config.js +1 -0
  84. package/lib/src/connect.config.js.map +1 -1
  85. package/lib/src/feature-flags.d.ts +22 -3
  86. package/lib/src/feature-flags.d.ts.map +1 -1
  87. package/lib/src/feature-flags.js +48 -3
  88. package/lib/src/feature-flags.js.map +1 -1
  89. package/lib/src/hooks/useClientErrorHandler.d.ts.map +1 -1
  90. package/lib/src/hooks/useClientErrorHandler.js +13 -2
  91. package/lib/src/hooks/useClientErrorHandler.js.map +1 -1
  92. package/lib/src/pages/demo/atlas-import.js +2 -2
  93. package/lib/src/pages/demo/atlas-import.js.map +1 -1
  94. package/lib/src/store/reactor.d.ts.map +1 -1
  95. package/lib/src/store/reactor.js +105 -51
  96. package/lib/src/store/reactor.js.map +1 -1
  97. package/lib/src/utils/reactor.d.ts +7 -0
  98. package/lib/src/utils/reactor.d.ts.map +1 -1
  99. package/lib/src/utils/reactor.js +35 -2
  100. package/lib/src/utils/reactor.js.map +1 -1
  101. package/lib/style.css +12451 -0
  102. package/lib/test/utils/signer.test.d.ts +2 -0
  103. package/lib/test/utils/signer.test.d.ts.map +1 -0
  104. package/lib/test/utils/signer.test.js +318 -0
  105. package/lib/test/utils/signer.test.js.map +1 -0
  106. package/lib/tsconfig.tsbuildinfo +1 -1
  107. package/lib/vite.config.d.ts.map +1 -1
  108. package/lib/vite.config.js +4 -0
  109. package/lib/vite.config.js.map +1 -1
  110. package/lib/vitest.config.d.ts +3 -0
  111. package/lib/vitest.config.d.ts.map +1 -0
  112. package/lib/vitest.config.js +8 -0
  113. package/lib/vitest.config.js.map +1 -0
  114. package/nginx.conf +7 -0
  115. package/package.copy.json +17 -8
  116. package/package.json +24 -15
  117. package/src/index.css +1 -0
  118. package/dist/assets/AddDriveModal-BogH1qLY.js +0 -1
  119. package/dist/assets/ClearStorageModal-BGmHb5YI.js +0 -1
  120. package/dist/assets/CookiesPolicyModal-B_awrKM1.js +0 -1
  121. package/dist/assets/CreateDocumentModal-DWmVo234.js +0 -1
  122. package/dist/assets/DebugSettingsModal-CvIx617r.js +0 -1
  123. package/dist/assets/DeleteDriveModal-DrShfGEm.js +0 -1
  124. package/dist/assets/DeleteItemModal-DNwthbws.js +0 -1
  125. package/dist/assets/DisclaimerModal-DbqPTThP.js +0 -1
  126. package/dist/assets/DriveSettingsModal-DN9qItSq.js +0 -1
  127. package/dist/assets/ExportDocumentWithErrorsModal-BYdlElQZ.js +0 -1
  128. package/dist/assets/SettingsModal-xLvRUiBO.js +0 -1
  129. package/dist/assets/UpgradeDriveModal-C2HItk6V.js +0 -1
  130. package/dist/assets/design_system_connect-DGRGq4LH.js +0 -45
  131. package/dist/assets/document_drive-BEIKnuGM.js +0 -305
  132. package/dist/assets/document_model_editor-DcutbKRX.js +0 -23
  133. package/dist/assets/index-Br7E7qjt.css +0 -1
  134. package/dist/assets/index-CweNcjSF.js +0 -18
  135. package/dist/assets/reactor_browser-CBjOdsN2.js +0 -25
  136. package/dist/assets/zod-C6yxFxyo.js +0 -1
  137. package/lib/src/components/modal/modals-error-boundary.d.ts +0 -18
  138. package/lib/src/components/modal/modals-error-boundary.d.ts.map +0 -1
  139. package/lib/src/components/modal/modals-error-boundary.js +0 -22
  140. package/lib/src/components/modal/modals-error-boundary.js.map +0 -1
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=signer.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"signer.test.d.ts","sourceRoot":"","sources":["../../../test/utils/signer.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,318 @@
1
+ import { ConnectCrypto, ConnectCryptoSigner, createSignatureVerifier, } from "@renown/sdk";
2
+ import { beforeEach, describe, expect, it } from "vitest";
3
+ class InMemoryKeyStorage {
4
+ keyPair;
5
+ loadKeyPair() {
6
+ return Promise.resolve(this.keyPair);
7
+ }
8
+ saveKeyPair(keyPair) {
9
+ this.keyPair = keyPair;
10
+ return Promise.resolve();
11
+ }
12
+ }
13
+ describe("ConnectCryptoSigner and Verifier Integration", () => {
14
+ let keyStorage;
15
+ let connectCrypto;
16
+ let signer;
17
+ let verifier;
18
+ beforeEach(async () => {
19
+ keyStorage = new InMemoryKeyStorage();
20
+ connectCrypto = new ConnectCrypto(keyStorage);
21
+ signer = new ConnectCryptoSigner(connectCrypto);
22
+ verifier = createSignatureVerifier();
23
+ await connectCrypto.did();
24
+ });
25
+ it("signs an action and produces a valid signature format", async () => {
26
+ const action = {
27
+ id: "action-1",
28
+ type: "TEST_ACTION",
29
+ timestampUtcMs: new Date().toISOString(),
30
+ input: { foo: "bar" },
31
+ scope: "global",
32
+ };
33
+ const signature = await signer.signAction(action);
34
+ expect(signature).toHaveLength(5);
35
+ const [timestamp, signerKey, hash, prevStateHash, signatureHex] = signature;
36
+ expect(timestamp).toMatch(/^\d+$/);
37
+ expect(signerKey.startsWith("did:key:z")).toBe(true);
38
+ expect(hash).toBeDefined();
39
+ expect(prevStateHash).toBe("");
40
+ expect(signatureHex.startsWith("0x")).toBe(true);
41
+ expect(signatureHex.length).toBeGreaterThan(2);
42
+ });
43
+ it("verifies a signature created by ConnectCryptoSigner", async () => {
44
+ const did = await connectCrypto.did();
45
+ const action = {
46
+ id: "action-1",
47
+ type: "TEST_ACTION",
48
+ timestampUtcMs: new Date().toISOString(),
49
+ input: { foo: "bar" },
50
+ scope: "global",
51
+ };
52
+ const signature = await signer.signAction(action);
53
+ const signedAction = {
54
+ ...action,
55
+ context: {
56
+ signer: {
57
+ user: { address: did, chainId: 1, networkId: "eip155" },
58
+ app: { name: "test-app", key: did },
59
+ signatures: [signature],
60
+ },
61
+ },
62
+ };
63
+ const operation = {
64
+ index: 0,
65
+ timestampUtcMs: action.timestampUtcMs,
66
+ hash: "",
67
+ skip: 0,
68
+ action: signedAction,
69
+ };
70
+ const isValid = await verifier(operation, did);
71
+ expect(isValid).toBe(true);
72
+ });
73
+ it("rejects a tampered signature", async () => {
74
+ const did = await connectCrypto.did();
75
+ const action = {
76
+ id: "action-1",
77
+ type: "TEST_ACTION",
78
+ timestampUtcMs: new Date().toISOString(),
79
+ input: { foo: "bar" },
80
+ scope: "global",
81
+ };
82
+ const signature = await signer.signAction(action);
83
+ const [timestamp, signerKey, hash, prevStateHash] = signature;
84
+ const tamperedSignature = [
85
+ timestamp,
86
+ signerKey,
87
+ hash,
88
+ prevStateHash,
89
+ "0xdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef",
90
+ ];
91
+ const signedAction = {
92
+ ...action,
93
+ context: {
94
+ signer: {
95
+ user: { address: did, chainId: 1, networkId: "eip155" },
96
+ app: { name: "test-app", key: did },
97
+ signatures: [tamperedSignature],
98
+ },
99
+ },
100
+ };
101
+ const operation = {
102
+ index: 0,
103
+ timestampUtcMs: action.timestampUtcMs,
104
+ hash: "",
105
+ skip: 0,
106
+ action: signedAction,
107
+ };
108
+ const isValid = await verifier(operation, did);
109
+ expect(isValid).toBe(false);
110
+ });
111
+ it("rejects verification when public key does not match", async () => {
112
+ const did = await connectCrypto.did();
113
+ const action = {
114
+ id: "action-1",
115
+ type: "TEST_ACTION",
116
+ timestampUtcMs: new Date().toISOString(),
117
+ input: { foo: "bar" },
118
+ scope: "global",
119
+ };
120
+ const signature = await signer.signAction(action);
121
+ const signedAction = {
122
+ ...action,
123
+ context: {
124
+ signer: {
125
+ user: { address: did, chainId: 1, networkId: "eip155" },
126
+ app: { name: "test-app", key: did },
127
+ signatures: [signature],
128
+ },
129
+ },
130
+ };
131
+ const operation = {
132
+ index: 0,
133
+ timestampUtcMs: action.timestampUtcMs,
134
+ hash: "",
135
+ skip: 0,
136
+ action: signedAction,
137
+ };
138
+ const wrongDid = "did:key:zDnaerDaTF5BXEavCrfRZEk316dpbLsfPDZ3WJ5hRTPFU2169";
139
+ const isValid = await verifier(operation, wrongDid);
140
+ expect(isValid).toBe(false);
141
+ });
142
+ it("returns true for operations without signer context", async () => {
143
+ const action = {
144
+ id: "action-1",
145
+ type: "TEST_ACTION",
146
+ timestampUtcMs: new Date().toISOString(),
147
+ input: { foo: "bar" },
148
+ scope: "global",
149
+ };
150
+ const operation = {
151
+ index: 0,
152
+ timestampUtcMs: action.timestampUtcMs,
153
+ hash: "",
154
+ skip: 0,
155
+ action: action,
156
+ };
157
+ const isValid = await verifier(operation, "any-key");
158
+ expect(isValid).toBe(true);
159
+ });
160
+ it("returns false for operations with signer but no signatures", async () => {
161
+ const did = await connectCrypto.did();
162
+ const action = {
163
+ id: "action-1",
164
+ type: "TEST_ACTION",
165
+ timestampUtcMs: new Date().toISOString(),
166
+ input: { foo: "bar" },
167
+ scope: "global",
168
+ context: {
169
+ signer: {
170
+ user: { address: did, chainId: 1, networkId: "eip155" },
171
+ app: { name: "test-app", key: did },
172
+ signatures: [],
173
+ },
174
+ },
175
+ };
176
+ const operation = {
177
+ index: 0,
178
+ timestampUtcMs: action.timestampUtcMs,
179
+ hash: "",
180
+ skip: 0,
181
+ action: action,
182
+ };
183
+ const isValid = await verifier(operation, did);
184
+ expect(isValid).toBe(false);
185
+ });
186
+ it("handles actions with prevOpHash in context", async () => {
187
+ const did = await connectCrypto.did();
188
+ const action = {
189
+ id: "action-1",
190
+ type: "TEST_ACTION",
191
+ timestampUtcMs: new Date().toISOString(),
192
+ input: { foo: "bar" },
193
+ scope: "global",
194
+ context: {
195
+ prevOpHash: "abc123",
196
+ },
197
+ };
198
+ const signature = await signer.signAction(action);
199
+ const signedAction = {
200
+ ...action,
201
+ context: {
202
+ ...action.context,
203
+ signer: {
204
+ user: { address: did, chainId: 1, networkId: "eip155" },
205
+ app: { name: "test-app", key: did },
206
+ signatures: [signature],
207
+ },
208
+ },
209
+ };
210
+ const operation = {
211
+ index: 0,
212
+ timestampUtcMs: action.timestampUtcMs,
213
+ hash: "",
214
+ skip: 0,
215
+ action: signedAction,
216
+ };
217
+ const isValid = await verifier(operation, did);
218
+ expect(isValid).toBe(true);
219
+ expect(signature[3]).toBe("abc123");
220
+ });
221
+ it("handles complex action inputs", async () => {
222
+ const did = await connectCrypto.did();
223
+ const action = {
224
+ id: "action-1",
225
+ type: "COMPLEX_ACTION",
226
+ timestampUtcMs: new Date().toISOString(),
227
+ input: {
228
+ nested: {
229
+ deeply: {
230
+ value: [1, 2, 3],
231
+ unicode: "\u00e9\u00e0\u00f9",
232
+ },
233
+ },
234
+ array: ["a", "b", "c"],
235
+ nullValue: null,
236
+ booleans: { yes: true, no: false },
237
+ },
238
+ scope: "document",
239
+ };
240
+ const signature = await signer.signAction(action);
241
+ const signedAction = {
242
+ ...action,
243
+ context: {
244
+ signer: {
245
+ user: { address: did, chainId: 1, networkId: "eip155" },
246
+ app: { name: "test-app", key: did },
247
+ signatures: [signature],
248
+ },
249
+ },
250
+ };
251
+ const operation = {
252
+ index: 0,
253
+ timestampUtcMs: action.timestampUtcMs,
254
+ hash: "",
255
+ skip: 0,
256
+ action: signedAction,
257
+ };
258
+ const isValid = await verifier(operation, did);
259
+ expect(isValid).toBe(true);
260
+ });
261
+ it("produces different signatures for different actions", async () => {
262
+ const action1 = {
263
+ id: "action-1",
264
+ type: "TEST_ACTION",
265
+ timestampUtcMs: new Date().toISOString(),
266
+ input: { value: 1 },
267
+ scope: "global",
268
+ };
269
+ const action2 = {
270
+ id: "action-2",
271
+ type: "TEST_ACTION",
272
+ timestampUtcMs: new Date().toISOString(),
273
+ input: { value: 2 },
274
+ scope: "global",
275
+ };
276
+ const signature1 = await signer.signAction(action1);
277
+ const signature2 = await signer.signAction(action2);
278
+ expect(signature1[2]).not.toBe(signature2[2]);
279
+ expect(signature1[4]).not.toBe(signature2[4]);
280
+ });
281
+ it("signatures from different keys fail verification", async () => {
282
+ const did1 = await connectCrypto.did();
283
+ const action = {
284
+ id: "action-1",
285
+ type: "TEST_ACTION",
286
+ timestampUtcMs: new Date().toISOString(),
287
+ input: { foo: "bar" },
288
+ scope: "global",
289
+ };
290
+ const signature = await signer.signAction(action);
291
+ const newKeyStorage = new InMemoryKeyStorage();
292
+ const newConnectCrypto = new ConnectCrypto(newKeyStorage);
293
+ const did2 = await newConnectCrypto.did();
294
+ expect(did1).not.toBe(did2);
295
+ const signedAction = {
296
+ ...action,
297
+ context: {
298
+ signer: {
299
+ user: { address: did1, chainId: 1, networkId: "eip155" },
300
+ app: { name: "test-app", key: did1 },
301
+ signatures: [signature],
302
+ },
303
+ },
304
+ };
305
+ const operation = {
306
+ index: 0,
307
+ timestampUtcMs: action.timestampUtcMs,
308
+ hash: "",
309
+ skip: 0,
310
+ action: signedAction,
311
+ };
312
+ const isValidWithOriginalKey = await verifier(operation, did1);
313
+ expect(isValidWithOriginalKey).toBe(true);
314
+ const isValidWithDifferentKey = await verifier(operation, did2);
315
+ expect(isValidWithDifferentKey).toBe(false);
316
+ });
317
+ });
318
+ //# sourceMappingURL=signer.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"signer.test.js","sourceRoot":"","sources":["../../../test/utils/signer.test.ts"],"names":[],"mappings":"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"}