@ownables/platform-browser 0.1.0 → 0.5.1

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 (118) hide show
  1. package/README.md +42 -0
  2. package/dist/core/src/index.d.ts +21 -0
  3. package/dist/core/src/index.d.ts.map +1 -0
  4. package/dist/core/src/index.js +20 -0
  5. package/dist/core/src/index.js.map +1 -0
  6. package/dist/core/src/interfaces/core.d.ts +53 -0
  7. package/dist/core/src/interfaces/core.d.ts.map +1 -0
  8. package/dist/core/src/interfaces/core.js +2 -0
  9. package/dist/core/src/interfaces/core.js.map +1 -0
  10. package/dist/core/src/logger.d.ts +3 -0
  11. package/dist/core/src/logger.d.ts.map +1 -0
  12. package/dist/core/src/logger.js +2 -0
  13. package/dist/core/src/logger.js.map +1 -0
  14. package/dist/core/src/ownableErrorMessage.d.ts +2 -0
  15. package/dist/core/src/ownableErrorMessage.d.ts.map +1 -0
  16. package/dist/core/src/ownableErrorMessage.js +20 -0
  17. package/dist/core/src/ownableErrorMessage.js.map +1 -0
  18. package/dist/core/src/progress.d.ts +3 -0
  19. package/dist/core/src/progress.d.ts.map +1 -0
  20. package/dist/core/src/progress.js +8 -0
  21. package/dist/core/src/progress.js.map +1 -0
  22. package/dist/core/src/services/EventChain.service.d.ts +47 -0
  23. package/dist/core/src/services/EventChain.service.d.ts.map +1 -0
  24. package/dist/core/src/services/EventChain.service.js +113 -0
  25. package/dist/core/src/services/EventChain.service.js.map +1 -0
  26. package/dist/core/src/services/Ownable.service.d.ts +60 -0
  27. package/dist/core/src/services/Ownable.service.d.ts.map +1 -0
  28. package/dist/core/src/services/Ownable.service.js +421 -0
  29. package/dist/core/src/services/Ownable.service.js.map +1 -0
  30. package/dist/core/src/services/Polling.service.d.ts +31 -0
  31. package/dist/core/src/services/Polling.service.d.ts.map +1 -0
  32. package/dist/core/src/services/Polling.service.js +109 -0
  33. package/dist/core/src/services/Polling.service.js.map +1 -0
  34. package/dist/core/src/services/SIWE.service.d.ts +16 -0
  35. package/dist/core/src/services/SIWE.service.d.ts.map +1 -0
  36. package/dist/core/src/services/SIWE.service.js +123 -0
  37. package/dist/core/src/services/SIWE.service.js.map +1 -0
  38. package/dist/core/src/services/StateStoreRecordStore.service.d.ts +13 -0
  39. package/dist/core/src/services/StateStoreRecordStore.service.d.ts.map +1 -0
  40. package/dist/core/src/services/StateStoreRecordStore.service.js +76 -0
  41. package/dist/core/src/services/StateStoreRecordStore.service.js.map +1 -0
  42. package/dist/core/src/services/WorkerRPC.service.d.ts +37 -0
  43. package/dist/core/src/services/WorkerRPC.service.d.ts.map +1 -0
  44. package/dist/core/src/services/WorkerRPC.service.js +219 -0
  45. package/dist/core/src/services/WorkerRPC.service.js.map +1 -0
  46. package/dist/core/src/services/workerSource.d.ts +2 -0
  47. package/dist/core/src/services/workerSource.d.ts.map +1 -0
  48. package/dist/core/src/services/workerSource.js +72 -0
  49. package/dist/core/src/services/workerSource.js.map +1 -0
  50. package/dist/core/src/types/Authority.d.ts +40 -0
  51. package/dist/core/src/types/Authority.d.ts.map +1 -0
  52. package/dist/core/src/types/Authority.js +2 -0
  53. package/dist/core/src/types/Authority.js.map +1 -0
  54. package/dist/core/src/types/EventChainStore.d.ts +12 -0
  55. package/dist/core/src/types/EventChainStore.d.ts.map +1 -0
  56. package/dist/core/src/types/EventChainStore.js +2 -0
  57. package/dist/core/src/types/EventChainStore.js.map +1 -0
  58. package/dist/core/src/types/MessageInfo.d.ts +19 -0
  59. package/dist/core/src/types/MessageInfo.d.ts.map +1 -0
  60. package/dist/core/src/types/MessageInfo.js +2 -0
  61. package/dist/core/src/types/MessageInfo.js.map +1 -0
  62. package/dist/core/src/types/OwnableRuntime.d.ts +40 -0
  63. package/dist/core/src/types/OwnableRuntime.d.ts.map +1 -0
  64. package/dist/core/src/types/OwnableRuntime.js +2 -0
  65. package/dist/core/src/types/OwnableRuntime.js.map +1 -0
  66. package/dist/core/src/types/Polling.d.ts +14 -0
  67. package/dist/core/src/types/Polling.d.ts.map +1 -0
  68. package/dist/core/src/types/Polling.js +2 -0
  69. package/dist/core/src/types/Polling.js.map +1 -0
  70. package/dist/core/src/types/SIWE.d.ts +30 -0
  71. package/dist/core/src/types/SIWE.d.ts.map +1 -0
  72. package/dist/core/src/types/SIWE.js +2 -0
  73. package/dist/core/src/types/SIWE.js.map +1 -0
  74. package/dist/core/src/types/TypedCosmWasmMsg.d.ts +12 -0
  75. package/dist/core/src/types/TypedCosmWasmMsg.d.ts.map +1 -0
  76. package/dist/core/src/types/TypedCosmWasmMsg.js +2 -0
  77. package/dist/core/src/types/TypedCosmWasmMsg.js.map +1 -0
  78. package/dist/core/src/types/TypedDict.d.ts +4 -0
  79. package/dist/core/src/types/TypedDict.d.ts.map +1 -0
  80. package/dist/core/src/types/TypedDict.js +2 -0
  81. package/dist/core/src/types/TypedDict.js.map +1 -0
  82. package/dist/core/src/types/TypedOwnableInfo.d.ts +34 -0
  83. package/dist/core/src/types/TypedOwnableInfo.d.ts.map +1 -0
  84. package/dist/core/src/types/TypedOwnableInfo.js +2 -0
  85. package/dist/core/src/types/TypedOwnableInfo.js.map +1 -0
  86. package/dist/core/src/types/TypedPackage.d.ts +35 -0
  87. package/dist/core/src/types/TypedPackage.d.ts.map +1 -0
  88. package/dist/core/src/types/TypedPackage.js +2 -0
  89. package/dist/core/src/types/TypedPackage.js.map +1 -0
  90. package/dist/platform-browser/src/index.d.ts +11 -0
  91. package/dist/platform-browser/src/index.d.ts.map +1 -0
  92. package/dist/platform-browser/src/index.js +11 -0
  93. package/dist/platform-browser/src/index.js.map +1 -0
  94. package/dist/platform-browser/src/services/IDB.service.d.ts +29 -0
  95. package/dist/platform-browser/src/services/IDB.service.d.ts.map +1 -0
  96. package/dist/platform-browser/src/services/IDB.service.js +192 -0
  97. package/dist/platform-browser/src/services/IDB.service.js.map +1 -0
  98. package/dist/platform-browser/src/services/LocalStorage.service.d.ts +14 -0
  99. package/dist/platform-browser/src/services/LocalStorage.service.d.ts.map +1 -0
  100. package/dist/platform-browser/src/services/LocalStorage.service.js +57 -0
  101. package/dist/platform-browser/src/services/LocalStorage.service.js.map +1 -0
  102. package/dist/platform-browser/src/services/Package.service.d.ts +49 -0
  103. package/dist/platform-browser/src/services/Package.service.d.ts.map +1 -0
  104. package/dist/platform-browser/src/services/Package.service.js +466 -0
  105. package/dist/platform-browser/src/services/Package.service.js.map +1 -0
  106. package/dist/platform-browser/src/services/Relay.service.d.ts +59 -0
  107. package/dist/platform-browser/src/services/Relay.service.d.ts.map +1 -0
  108. package/dist/platform-browser/src/services/Relay.service.js +299 -0
  109. package/dist/platform-browser/src/services/Relay.service.js.map +1 -0
  110. package/dist/platform-browser/src/services/SessionStorage.service.d.ts +7 -0
  111. package/dist/platform-browser/src/services/SessionStorage.service.d.ts.map +1 -0
  112. package/dist/platform-browser/src/services/SessionStorage.service.js +16 -0
  113. package/dist/platform-browser/src/services/SessionStorage.service.js.map +1 -0
  114. package/dist/platform-browser/src/utils/calculateCid.d.ts +2 -0
  115. package/dist/platform-browser/src/utils/calculateCid.d.ts.map +1 -0
  116. package/dist/platform-browser/src/utils/calculateCid.js +18 -0
  117. package/dist/platform-browser/src/utils/calculateCid.js.map +1 -0
  118. package/package.json +7 -2
@@ -0,0 +1,421 @@
1
+ import { EventChain, Event, Binary } from "eqty-core";
2
+ import { withProgress } from "../progress";
3
+ import WorkerRPC from "./WorkerRPC.service";
4
+ import { DEFAULT_WORKER_SOURCE } from "./workerSource";
5
+ export default class OwnableService {
6
+ stateStore;
7
+ eventChains;
8
+ eqty;
9
+ packages;
10
+ runtimeSource;
11
+ logger;
12
+ runtimeRpc;
13
+ SNAPSHOT_INTERVAL = 50;
14
+ constructor(stateStore, eventChains, eqty, packages, runtimeSource = {
15
+ getWorkerSource: () => DEFAULT_WORKER_SOURCE,
16
+ }, logger = console, runtimeRpc = {
17
+ create: (id) => new WorkerRPC(id),
18
+ }) {
19
+ this.stateStore = stateStore;
20
+ this.eventChains = eventChains;
21
+ this.eqty = eqty;
22
+ this.packages = packages;
23
+ this.runtimeSource = runtimeSource;
24
+ this.logger = logger;
25
+ this.runtimeRpc = runtimeRpc;
26
+ }
27
+ _rpc = new Map();
28
+ get anchoring() {
29
+ return this.eventChains.anchoring;
30
+ }
31
+ async loadAll() {
32
+ return this.eventChains.loadAll();
33
+ }
34
+ isReady(id) {
35
+ return this._rpc.has(id);
36
+ }
37
+ rpc(id) {
38
+ const rpc = this._rpc.get(id);
39
+ if (!rpc)
40
+ throw new Error(`No RPC for ownable ${id}`);
41
+ return rpc;
42
+ }
43
+ clearRpc(id) {
44
+ const rpc = this._rpc.get(id);
45
+ if (!rpc)
46
+ return;
47
+ rpc.terminate();
48
+ this._rpc.delete(id);
49
+ }
50
+ setWidgetWindow(id, win) {
51
+ const rpc = this._rpc.get(id);
52
+ if (rpc)
53
+ rpc.setWidgetWindow(win);
54
+ }
55
+ async initWorker(id, cid) {
56
+ if (this._rpc.has(id))
57
+ return;
58
+ const js = this.runtimeSource.getWorkerSource();
59
+ const wasm = (await this.packages.getAsset(cid, "ownable_bg.wasm", (fr, file) => fr.readAsArrayBuffer(file)));
60
+ const rpc = this.runtimeRpc.create(id);
61
+ await rpc.initialize(js, new Uint8Array(wasm));
62
+ this._rpc.set(id, rpc);
63
+ }
64
+ async create(pkg, onProgress) {
65
+ const address = this.eqty.address;
66
+ const networkId = this.eqty.chainId;
67
+ const chain = EventChain.create(address, networkId);
68
+ const anchors = [];
69
+ if (pkg.isDynamic || this.anchoring) {
70
+ const msg = {
71
+ "@context": "instantiate_msg.json",
72
+ ownable_id: chain.id,
73
+ package: pkg.cid,
74
+ network_id: networkId,
75
+ keywords: pkg.keywords ?? [],
76
+ };
77
+ await withProgress(onProgress)("signEvent", () => this.eqty.sign(new Event(msg).addTo(chain)));
78
+ }
79
+ if (this.anchoring) {
80
+ const hash = chain.latestHash.hex;
81
+ anchors.push(...chain.startingWith(Binary.fromHex(hash)).anchorMap);
82
+ }
83
+ if (anchors.length > 0) {
84
+ // Queue anchors and submit as single tx
85
+ await this.eqty.anchor(...anchors);
86
+ const txHash = await withProgress(onProgress)("anchorEvent", () => this.eqty.submitAnchors());
87
+ return txHash ? { chain, txHash } : { chain };
88
+ }
89
+ return { chain };
90
+ }
91
+ async init(chain, cid, uniqueMessageHash) {
92
+ if (!this._rpc.has(chain.id)) {
93
+ await this.initWorker(chain.id, cid);
94
+ }
95
+ const stateDump = await this.apply(chain, []);
96
+ await this.initStore(chain, cid, uniqueMessageHash, stateDump);
97
+ }
98
+ async createSnapshot(chain, stateDump, eventIndex) {
99
+ const chainId = chain.id;
100
+ const storeId = `ownable:${chainId}`;
101
+ const snapshotStoreId = `${storeId}.snapshots`;
102
+ try {
103
+ const snapshot = {
104
+ eventIndex,
105
+ blockHash: chain.latestHash.hex,
106
+ stateDump,
107
+ timestamp: new Date(),
108
+ };
109
+ if (!(await this.stateStore.hasStore(snapshotStoreId))) {
110
+ await this.stateStore.createStore(snapshotStoreId);
111
+ }
112
+ await this.stateStore.set(snapshotStoreId, `snapshot_${eventIndex}`, snapshot);
113
+ // Cleanup old snapshots (keep only last 3)
114
+ const keys = await this.stateStore.keys(snapshotStoreId);
115
+ if (keys.length > 3) {
116
+ const sortedKeys = keys
117
+ .map((key) => parseInt(key.replace("snapshot_", "")))
118
+ .sort((a, b) => b - a);
119
+ // Delete oldest snapshots, keep the 3 most recent
120
+ const keysToDelete = sortedKeys
121
+ .slice(3)
122
+ .map((index) => `snapshot_${index}`);
123
+ for (const key of keysToDelete) {
124
+ await this.stateStore.delete(snapshotStoreId, key);
125
+ }
126
+ }
127
+ }
128
+ catch (error) {
129
+ this.logger.error("Error creating snapshot:", error);
130
+ }
131
+ }
132
+ async getLatestSnapshot(chainId) {
133
+ const storeId = `ownable:${chainId}`;
134
+ const snapshotStoreId = `${storeId}.snapshots`;
135
+ const exist = await this.stateStore.hasStore(snapshotStoreId);
136
+ if (!exist) {
137
+ return null;
138
+ }
139
+ const snapshots = await this.stateStore.keys(snapshotStoreId);
140
+ if (snapshots.length === 0)
141
+ return null;
142
+ const latestKey = snapshots
143
+ .map((key) => parseInt(key.replace("snapshot_", "")))
144
+ .sort((a, b) => b - a)[0];
145
+ return await this.stateStore.get(snapshotStoreId, `snapshot_${latestKey}`);
146
+ }
147
+ async listSnapshots(chainId) {
148
+ const storeId = `ownable:${chainId}`;
149
+ const snapshotStoreId = `${storeId}.snapshots`;
150
+ if (!(await this.stateStore.hasStore(snapshotStoreId))) {
151
+ return [];
152
+ }
153
+ const snapshots = await this.stateStore.keys(snapshotStoreId);
154
+ const sortedKeys = snapshots
155
+ .map((key) => parseInt(key.replace("snapshot_", "")))
156
+ .sort((a, b) => a - b);
157
+ return Promise.all(sortedKeys.map((index) => this.stateStore.get(snapshotStoreId, `snapshot_${index}`)));
158
+ }
159
+ async deleteSnapshots(chainId) {
160
+ const storeId = `ownable:${chainId}`;
161
+ const snapshotStoreId = `${storeId}.snapshots`;
162
+ if (await this.stateStore.hasStore(snapshotStoreId)) {
163
+ await this.stateStore.deleteStore(snapshotStoreId);
164
+ }
165
+ }
166
+ async applyEvent(rpc, event, stateDump, chain, eventIndex) {
167
+ const info = {
168
+ sender: event.signerAddress || this.eqty.address,
169
+ funds: [],
170
+ };
171
+ const { "@context": context, ...msg } = event.parsedData;
172
+ let result;
173
+ switch (context) {
174
+ case "instantiate_msg.json":
175
+ result = await rpc.instantiate(msg, info);
176
+ break;
177
+ case "execute_msg.json":
178
+ result = await rpc.execute(msg, info, stateDump);
179
+ break;
180
+ case "external_event_msg.json":
181
+ const message = {
182
+ msg: {
183
+ event_type: msg.type,
184
+ attributes: msg.attributes,
185
+ network: "",
186
+ },
187
+ };
188
+ result = await rpc.externalEvent(message, info, stateDump);
189
+ break;
190
+ default:
191
+ throw new Error(`Unknown event type`);
192
+ }
193
+ if ((eventIndex + 1) % this.SNAPSHOT_INTERVAL === 0) {
194
+ await this.createSnapshot(chain, result.state, eventIndex);
195
+ }
196
+ return result;
197
+ }
198
+ async apply(partialChain, stateDump) {
199
+ const rpc = this.rpc(partialChain.id);
200
+ const snapshot = await this.getLatestSnapshot(partialChain.id);
201
+ let startIndex = 0;
202
+ if (snapshot) {
203
+ const snapshotEventIndex = partialChain.events.findIndex((e) => e.hash?.hex === snapshot.blockHash);
204
+ if (snapshotEventIndex !== -1) {
205
+ stateDump = snapshot.stateDump;
206
+ startIndex = snapshotEventIndex + 1;
207
+ }
208
+ }
209
+ const BATCH_SIZE = 10;
210
+ const totalEvents = partialChain.events.length;
211
+ for (let batchStart = startIndex; batchStart < totalEvents; batchStart += BATCH_SIZE) {
212
+ const batchEnd = Math.min(batchStart + BATCH_SIZE, totalEvents);
213
+ const batch = partialChain.events.slice(batchStart, batchEnd);
214
+ for (let i = 0; i < batch.length; i++) {
215
+ const globalIndex = batchStart + i;
216
+ const event = batch[i];
217
+ if (!event)
218
+ continue;
219
+ try {
220
+ const result = await this.applyEvent(rpc, event, stateDump, partialChain, globalIndex);
221
+ stateDump = result.state;
222
+ }
223
+ catch (error) {
224
+ this.logger.error(`Error applying event at index ${globalIndex}:`, error);
225
+ if (globalIndex > startIndex) {
226
+ await this.createSnapshot(partialChain, stateDump, globalIndex - 1);
227
+ }
228
+ throw error;
229
+ }
230
+ }
231
+ if (batchEnd < totalEvents) {
232
+ await new Promise((resolve) => setTimeout(resolve, 0));
233
+ }
234
+ }
235
+ return stateDump;
236
+ }
237
+ async execute(chain, msg, stateDump, onProgress) {
238
+ const info = { sender: this.eqty.address, funds: [] };
239
+ const { state: newStateDump } = await this.rpc(chain.id).execute(msg, info, stateDump);
240
+ delete msg["@context"]; // Shouldn't be set
241
+ await withProgress(onProgress)("signEvent", () => this.eqty.sign(new Event({ "@context": "execute_msg.json", ...msg }).addTo(chain)));
242
+ // Store without submitting anchors yet; submission is controlled by caller
243
+ await this.store(chain, newStateDump);
244
+ return newStateDump;
245
+ }
246
+ async submitAnchors(onProgress) {
247
+ if (!this.anchoring)
248
+ return undefined;
249
+ return await withProgress(onProgress)("anchor", () => this.eqty.submitAnchors());
250
+ }
251
+ async canConsume(consumer, info) {
252
+ if (!this.packages.info(consumer.package).isConsumer)
253
+ return false;
254
+ try {
255
+ const state = await this.eventChains.getStateDump(consumer.chain.id, consumer.chain.state.hex);
256
+ if (!state)
257
+ return false;
258
+ const result = await this.rpc(consumer.chain.id).query({
259
+ is_consumer_of: {
260
+ consumable_type: info.ownable_type,
261
+ issuer: info.issuer,
262
+ },
263
+ }, state);
264
+ return result === true;
265
+ }
266
+ catch (error) {
267
+ this.logger.warn("Error checking canConsume:", error);
268
+ return false;
269
+ }
270
+ }
271
+ async consume(consumer, consumable, onProgress) {
272
+ const info = {
273
+ sender: this.eqty.address,
274
+ funds: [],
275
+ };
276
+ const consumeMessage = { consume: {} };
277
+ const consumerState = await this.eventChains.getStateDump(consumer.id, consumer.state.hex);
278
+ const consumableState = await this.eventChains.getStateDump(consumable.id, consumable.state.hex);
279
+ if (!consumerState || !consumableState)
280
+ throw Error("State mismatch for consume");
281
+ const { events, state: consumableStateDump } = await this.rpc(consumable.id).execute(consumeMessage, info, consumableState);
282
+ const consumeEvent = events.find((event) => event.type === "consume");
283
+ if (!consumeEvent)
284
+ throw Error("No consume event emitted");
285
+ consumeEvent.contract = consumable.id;
286
+ const externalEventMsg = {
287
+ msg: {
288
+ attributes: consumeEvent.attributes,
289
+ network: "",
290
+ event_type: consumeEvent.type,
291
+ },
292
+ };
293
+ const { state: consumerStateDump } = await this.rpc(consumer.id).externalEvent(externalEventMsg, info, consumerState);
294
+ await withProgress(onProgress)("signConsumableEvent", () => this.eqty.sign(new Event({ "@context": "execute_msg.json", ...consumeMessage }).addTo(consumable)));
295
+ await withProgress(onProgress)("signConsumerEvent", () => this.eqty.sign(new Event({
296
+ "@context": "external_event_msg.json",
297
+ ...consumeEvent,
298
+ }).addTo(consumer)));
299
+ // Store both chains; emit anchor progress only once to represent anchoring both
300
+ // Queue anchors for both chains without submitting yet
301
+ await this.store(consumable, consumableStateDump);
302
+ await this.stateStore.set(`ownable:${consumable.id}`, "isConsumed", true);
303
+ await this.store(consumer, consumerStateDump);
304
+ // Submit a single anchor tx for both
305
+ await this.submitAnchors(onProgress);
306
+ }
307
+ async retryOperation(operation, maxRetries = 3, delay = 1000) {
308
+ for (let attempt = 1; attempt <= maxRetries; attempt++) {
309
+ try {
310
+ return await operation();
311
+ }
312
+ catch (error) {
313
+ this.logger.warn(`Attempt ${attempt} failed:`, error);
314
+ if (attempt < maxRetries) {
315
+ await new Promise((resolve) => setTimeout(resolve, delay * attempt));
316
+ }
317
+ }
318
+ }
319
+ throw new Error(`Operation failed after ${maxRetries} attempts. Last error: `);
320
+ }
321
+ async initStore(chain, pkg, uniqueMessageHash, stateDump) {
322
+ const storeId = `ownable:${chain.id}`;
323
+ const stateStoreId = `${storeId}.state`;
324
+ const chainData = {
325
+ chain: chain.toJSON(),
326
+ state: chain.state.hex,
327
+ package: pkg,
328
+ isConsumed: false,
329
+ created: new Date(),
330
+ latestHash: chain.latestHash.hex,
331
+ keywords: this.packages.info(pkg).keywords,
332
+ uniqueMessageHash: this.packages.info(pkg, uniqueMessageHash)
333
+ .uniqueMessageHash,
334
+ };
335
+ const stores = [storeId];
336
+ if (stateDump)
337
+ stores.push(stateStoreId);
338
+ await this.retryOperation(async () => {
339
+ const hasStore = await this.stateStore.hasStore(storeId);
340
+ if (hasStore) {
341
+ return;
342
+ }
343
+ await this.stateStore.createStore(...stores);
344
+ const data = {
345
+ [storeId]: chainData,
346
+ };
347
+ if (stateDump) {
348
+ data[stateStoreId] = new Map(stateDump);
349
+ }
350
+ try {
351
+ await this.stateStore.setAll(data);
352
+ }
353
+ catch (error) {
354
+ // If setAll fails, attempt to clean up
355
+ this.logger.error("Failed to set data, cleaning up stores...");
356
+ await Promise.all(stores.map((store) => this.stateStore.deleteStore(store).catch(() => { })));
357
+ throw error;
358
+ }
359
+ const verifyData = await Promise.all([
360
+ this.stateStore.get(storeId, "state"),
361
+ stateDump ? this.stateStore.getAll(stateStoreId) : Promise.resolve(null),
362
+ ]);
363
+ if (verifyData[0] !== chainData.state ||
364
+ (stateDump && !verifyData[1]?.length)) {
365
+ throw new Error("Data verification failed after write");
366
+ }
367
+ });
368
+ }
369
+ async store(chain, stateDump) {
370
+ const anchors = [];
371
+ const storeId = `ownable:${chain.id}`;
372
+ const stateStoreId = `${storeId}.state`;
373
+ await this.retryOperation(async () => {
374
+ const storedState = await this.stateStore.get(storeId, "state");
375
+ if (storedState === chain.state)
376
+ return;
377
+ const data = {
378
+ [storeId]: {
379
+ chain: chain.toJSON(),
380
+ state: chain.state.hex,
381
+ latestHash: chain.latestHash.hex,
382
+ },
383
+ [stateStoreId]: new Map(stateDump),
384
+ };
385
+ if (this.anchoring) {
386
+ const previousHash = await this.stateStore.get(`ownable:${chain.id}`, "latestHash");
387
+ anchors.push(...chain.startingAfter(Binary.fromHex(previousHash)).anchorMap);
388
+ }
389
+ if (anchors.length > 0) {
390
+ // Queue anchors only; submission handled separately to allow batching
391
+ await this.eqty.anchor(...anchors);
392
+ }
393
+ await this.stateStore.setAll(data);
394
+ const eventCount = chain.events.length;
395
+ if (eventCount % this.SNAPSHOT_INTERVAL === 0) {
396
+ await this.createSnapshot(chain, stateDump, eventCount - 1);
397
+ }
398
+ // Verify write
399
+ const verifyState = await this.stateStore.get(storeId, "state");
400
+ if (verifyState !== chain.state.hex) {
401
+ throw new Error("State verification failed after write");
402
+ }
403
+ });
404
+ }
405
+ async delete(id) {
406
+ await this.eventChains.delete(id);
407
+ }
408
+ async deleteAll() {
409
+ await this.eventChains.deleteAll();
410
+ }
411
+ async zip(chain) {
412
+ const firstEvent = chain.events[0];
413
+ if (!firstEvent)
414
+ throw new Error("Cannot zip an empty ownable chain");
415
+ const packageCid = firstEvent.parsedData.package;
416
+ const zip = await this.packages.zip(packageCid);
417
+ zip.file("chain.json", JSON.stringify(chain.toJSON()));
418
+ return zip;
419
+ }
420
+ }
421
+ //# sourceMappingURL=Ownable.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Ownable.service.js","sourceRoot":"","sources":["../../../../../core/src/services/Ownable.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ import type { KVStore } from "../interfaces/core";
2
+ import type { RelayPollingClient } from "../types/Polling";
3
+ import type { LoggerLike } from "../logger";
4
+ /**
5
+ * @deprecated Relay polling is legacy and will be removed in a future major version.
6
+ * Prefer hub-backed notification flows.
7
+ */
8
+ export declare class PollingService {
9
+ private readonly relay;
10
+ private readonly localStorage;
11
+ private readonly logger;
12
+ private tries;
13
+ private intervalId?;
14
+ private consecutiveFailures;
15
+ private maxConsecutiveFailures;
16
+ constructor(relay: RelayPollingClient, localStorage: KVStore, logger?: LoggerLike);
17
+ /**
18
+ * Fetch new message hashes from the server and compare with client hashes.
19
+ */
20
+ checkForNewHashes(address: string): Promise<any>;
21
+ /**
22
+ * Start polling for message hash updates.
23
+ */
24
+ startPolling(address: string, onUpdate: (count: number) => void, interval?: number): () => void;
25
+ stopPolling(): void;
26
+ /**
27
+ * Clear cached headers and hashes
28
+ */
29
+ clearCache(): void;
30
+ }
31
+ //# sourceMappingURL=Polling.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Polling.service.d.ts","sourceRoot":"","sources":["../../../../../core/src/services/Polling.service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAE5C;;;GAGG;AACH,qBAAa,cAAc;IAOvB,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,MAAM;IARzB,OAAO,CAAC,KAAK,CAAK;IAClB,OAAO,CAAC,UAAU,CAAC,CAAiC;IACpD,OAAO,CAAC,mBAAmB,CAAK;IAChC,OAAO,CAAC,sBAAsB,CAAK;gBAGhB,KAAK,EAAE,kBAAkB,EACzB,YAAY,EAAE,OAAO,EACrB,MAAM,GAAE,UAAoB;IAG/C;;OAEG;IACG,iBAAiB,CAAC,OAAO,EAAE,MAAM;IA2EvC;;OAEG;IACH,YAAY,CACV,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,EACjC,QAAQ,SAAQ,GACf,MAAM,IAAI;IAwBb,WAAW,IAAI,IAAI;IAMnB;;OAEG;IACH,UAAU;CAGX"}
@@ -0,0 +1,109 @@
1
+ /**
2
+ * @deprecated Relay polling is legacy and will be removed in a future major version.
3
+ * Prefer hub-backed notification flows.
4
+ */
5
+ export class PollingService {
6
+ relay;
7
+ localStorage;
8
+ logger;
9
+ tries = 3;
10
+ intervalId;
11
+ consecutiveFailures = 0;
12
+ maxConsecutiveFailures = 5;
13
+ constructor(relay, localStorage, logger = console) {
14
+ this.relay = relay;
15
+ this.localStorage = localStorage;
16
+ this.logger = logger;
17
+ }
18
+ /**
19
+ * Fetch new message hashes from the server and compare with client hashes.
20
+ */
21
+ async checkForNewHashes(address) {
22
+ const pkgs = this.localStorage.get("packages") || [];
23
+ const clientHashes = pkgs.map((msg) => {
24
+ return msg.uniqueMessageHash;
25
+ });
26
+ try {
27
+ const isAvailable = await this.relay.isAvailable();
28
+ if (!isAvailable) {
29
+ return 0;
30
+ }
31
+ await this.relay.ensureAuthenticated();
32
+ const headers = {
33
+ ...this.relay.getAuthHeaders(),
34
+ };
35
+ const lastModified = this.localStorage.get("lastModified");
36
+ if (lastModified) {
37
+ headers["If-Modified-Since"] = lastModified;
38
+ }
39
+ const response = await this.relay.relay.get(`messages/${encodeURIComponent(address)}`, headers);
40
+ // Cast response to handle different response formats
41
+ const responseData = response;
42
+ if (responseData.status === 304) {
43
+ return this.localStorage.get("messageCount") || 0;
44
+ }
45
+ if (responseData.status === 200) {
46
+ const messages = responseData.data?.messages || responseData.messages || [];
47
+ const serverHashes = messages
48
+ .filter((message) => message.hash)
49
+ .map((message) => message.hash);
50
+ const newLastModified = responseData.headers?.["last-modified"];
51
+ if (newLastModified) {
52
+ this.localStorage.set("lastModified", newLastModified);
53
+ }
54
+ const newHashes = serverHashes.filter((hash) => !clientHashes.includes(hash));
55
+ this.localStorage.set("messageCount", newHashes.length);
56
+ return newHashes.length;
57
+ }
58
+ this.consecutiveFailures = 0;
59
+ }
60
+ catch (error) {
61
+ this.logger.error("Error fetching message hashes:", error);
62
+ this.consecutiveFailures++;
63
+ if (this.consecutiveFailures >= this.maxConsecutiveFailures) {
64
+ this.stopPolling();
65
+ return 0;
66
+ }
67
+ if (this.tries-- <= 0) {
68
+ this.tries = 3;
69
+ this.stopPolling();
70
+ }
71
+ }
72
+ return 0;
73
+ }
74
+ /**
75
+ * Start polling for message hash updates.
76
+ */
77
+ startPolling(address, onUpdate, interval = 15000) {
78
+ if (this.intervalId) {
79
+ return () => { };
80
+ }
81
+ this.checkForNewHashes(address).then(onUpdate);
82
+ const fetchHashes = async () => {
83
+ try {
84
+ const newCount = await this.checkForNewHashes(address);
85
+ onUpdate(newCount);
86
+ }
87
+ catch (error) {
88
+ this.logger.error("Polling error:", error);
89
+ }
90
+ };
91
+ this.intervalId = setInterval(fetchHashes, interval);
92
+ //cleanup
93
+ return () => {
94
+ clearInterval(this.intervalId);
95
+ };
96
+ }
97
+ stopPolling() {
98
+ if (this.intervalId) {
99
+ clearInterval(this.intervalId);
100
+ }
101
+ }
102
+ /**
103
+ * Clear cached headers and hashes
104
+ */
105
+ clearCache() {
106
+ this.localStorage.remove("lastModified");
107
+ }
108
+ }
109
+ //# sourceMappingURL=Polling.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Polling.service.js","sourceRoot":"","sources":["../../../../../core/src/services/Polling.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import { ViemSigner } from "eqty-core";
2
+ import type { SIWEMessage, SIWEAuthResult, SIWEClientDeps } from "../types/SIWE";
3
+ export declare class SIWEClient {
4
+ private readonly domain;
5
+ private readonly version;
6
+ private readonly fetchFn;
7
+ private readonly now;
8
+ private readonly nonceGenerator;
9
+ constructor(domain?: string, deps?: SIWEClientDeps);
10
+ generateNonce(): string;
11
+ createMessage(address: string, uri: string, chainId?: number): SIWEMessage;
12
+ signMessage(message: SIWEMessage, signer: ViemSigner): Promise<string>;
13
+ authenticate(signer: ViemSigner, relayUrl: string, chainId?: number): Promise<SIWEAuthResult>;
14
+ getNonce(relayUrl: string): Promise<string>;
15
+ }
16
+ //# sourceMappingURL=SIWE.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SIWE.service.d.ts","sourceRoot":"","sources":["../../../../../core/src/services/SIWE.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACvC,OAAO,KAAK,EAAE,WAAW,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAEjF,qBAAa,UAAU;IACrB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAe;IACvC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAwF;IAChH,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAa;IACjC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAA6B;gBAEhD,MAAM,CAAC,EAAE,MAAM,EAAE,IAAI,GAAE,cAAmB;IAOtD,aAAa,IAAI,MAAM;IAQvB,aAAa,CACX,OAAO,EAAE,MAAM,EACf,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,MAAc,GACtB,WAAW;IAaR,WAAW,CAAC,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC;IA0CtE,YAAY,CAChB,MAAM,EAAE,UAAU,EAClB,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE,MAAc,GACtB,OAAO,CAAC,cAAc,CAAC;IA4CpB,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAoBlD"}