@arkade-os/sdk 0.4.45 → 0.4.47

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 (91) hide show
  1. package/dist/adapters/expo.cjs +5 -5
  2. package/dist/adapters/expo.d.cts +2 -2
  3. package/dist/adapters/expo.d.ts +2 -2
  4. package/dist/adapters/expo.js +3 -3
  5. package/dist/adapters/indexedDB.cjs +5 -5
  6. package/dist/adapters/indexedDB.js +4 -4
  7. package/dist/{ark-C-PjOngm.d.cts → ark-CoJgwTi_.d.cts} +31 -3
  8. package/dist/{ark-C-PjOngm.d.ts → ark-CoJgwTi_.d.ts} +31 -3
  9. package/dist/{asyncStorageTaskQueue-BmBPvTyh.d.cts → asyncStorageTaskQueue-Dowyo59a.d.cts} +2 -2
  10. package/dist/{asyncStorageTaskQueue-CHpI3moJ.d.ts → asyncStorageTaskQueue-Z3aFoXCl.d.ts} +2 -2
  11. package/dist/{chunk-QZ6HZZZK.js → chunk-3N5I6GT6.js} +3 -3
  12. package/dist/{chunk-QZ6HZZZK.js.map → chunk-3N5I6GT6.js.map} +1 -1
  13. package/dist/{chunk-BOA4SHCD.js → chunk-AJQ4AOT3.js} +4 -4
  14. package/dist/{chunk-BOA4SHCD.js.map → chunk-AJQ4AOT3.js.map} +1 -1
  15. package/dist/{chunk-BE5MUB7T.js → chunk-C7TXXTMS.js} +9 -5
  16. package/dist/chunk-C7TXXTMS.js.map +1 -0
  17. package/dist/{chunk-YBQV7XBC.js → chunk-CDDWXBEM.js} +139 -21
  18. package/dist/chunk-CDDWXBEM.js.map +1 -0
  19. package/dist/{chunk-UHOHLN3C.cjs → chunk-HHV5FPC6.cjs} +148 -25
  20. package/dist/chunk-HHV5FPC6.cjs.map +1 -0
  21. package/dist/{chunk-HZ7VIN7P.cjs → chunk-JAYOXOLT.cjs} +14 -14
  22. package/dist/{chunk-HZ7VIN7P.cjs.map → chunk-JAYOXOLT.cjs.map} +1 -1
  23. package/dist/{chunk-HXDZ2QTW.cjs → chunk-L5ND2FJJ.cjs} +9 -5
  24. package/dist/chunk-L5ND2FJJ.cjs.map +1 -0
  25. package/dist/{chunk-TGRJ5WAX.js → chunk-OCS5S3L3.js} +1085 -103
  26. package/dist/chunk-OCS5S3L3.js.map +1 -0
  27. package/dist/chunk-RQSA7ADZ.cjs +2286 -0
  28. package/dist/chunk-RQSA7ADZ.cjs.map +1 -0
  29. package/dist/{chunk-OFQGANH2.cjs → chunk-VE67GMGM.cjs} +7 -7
  30. package/dist/{chunk-OFQGANH2.cjs.map → chunk-VE67GMGM.cjs.map} +1 -1
  31. package/dist/{chunk-SRCWBFSZ.cjs → chunk-WTTLIFS7.cjs} +1281 -289
  32. package/dist/chunk-WTTLIFS7.cjs.map +1 -0
  33. package/dist/chunk-XN3554FT.js +2244 -0
  34. package/dist/chunk-XN3554FT.js.map +1 -0
  35. package/dist/contracts/handlers/index.cjs +11 -7
  36. package/dist/contracts/handlers/index.d.cts +3 -3
  37. package/dist/contracts/handlers/index.d.ts +3 -3
  38. package/dist/contracts/handlers/index.js +2 -2
  39. package/dist/{delegate-BKNqva1j.d.ts → delegate-CuaDqqQi.d.ts} +1 -1
  40. package/dist/{delegate-DOEobYwH.d.cts → delegate-Dl87_zMA.d.cts} +1 -1
  41. package/dist/index-BC_G0VTh.d.cts +512 -0
  42. package/dist/index-CKwpZEpw.d.ts +512 -0
  43. package/dist/index.cjs +219 -159
  44. package/dist/index.d.cts +3097 -2090
  45. package/dist/index.d.ts +3097 -2090
  46. package/dist/index.js +4 -4
  47. package/dist/repositories/realm/index.cjs +23 -19
  48. package/dist/repositories/realm/index.cjs.map +1 -1
  49. package/dist/repositories/realm/index.d.cts +2 -2
  50. package/dist/repositories/realm/index.d.ts +2 -2
  51. package/dist/repositories/realm/index.js +9 -5
  52. package/dist/repositories/realm/index.js.map +1 -1
  53. package/dist/repositories/sqlite/index.cjs +22 -18
  54. package/dist/repositories/sqlite/index.cjs.map +1 -1
  55. package/dist/repositories/sqlite/index.d.cts +2 -2
  56. package/dist/repositories/sqlite/index.d.ts +2 -2
  57. package/dist/repositories/sqlite/index.js +9 -5
  58. package/dist/repositories/sqlite/index.js.map +1 -1
  59. package/dist/{taskRunner-BngWSFMi.d.ts → taskRunner-Dz-TI4Rb.d.ts} +2 -2
  60. package/dist/{taskRunner-DOiyRuJa.d.cts → taskRunner-Dz47k0lp.d.cts} +2 -2
  61. package/dist/wallet/expo/background.cjs +14 -14
  62. package/dist/wallet/expo/background.d.cts +3 -3
  63. package/dist/wallet/expo/background.d.ts +3 -3
  64. package/dist/wallet/expo/background.js +6 -6
  65. package/dist/wallet/expo/index.cjs +18 -14
  66. package/dist/wallet/expo/index.cjs.map +1 -1
  67. package/dist/wallet/expo/index.d.cts +4 -4
  68. package/dist/wallet/expo/index.d.ts +4 -4
  69. package/dist/wallet/expo/index.js +9 -5
  70. package/dist/wallet/expo/index.js.map +1 -1
  71. package/dist/{wallet-DBjumS42.d.cts → wallet-Oxz_wLxo.d.cts} +47 -3
  72. package/dist/{wallet-B3awP1Nj.d.ts → wallet-x7egmXq6.d.ts} +47 -3
  73. package/dist/worker/expo/index.cjs +10 -9
  74. package/dist/worker/expo/index.cjs.map +1 -1
  75. package/dist/worker/expo/index.d.cts +4 -4
  76. package/dist/worker/expo/index.d.ts +4 -4
  77. package/dist/worker/expo/index.js +6 -5
  78. package/dist/worker/expo/index.js.map +1 -1
  79. package/package.json +2 -2
  80. package/dist/chunk-32YKLQPS.cjs +0 -970
  81. package/dist/chunk-32YKLQPS.cjs.map +0 -1
  82. package/dist/chunk-BE5MUB7T.js.map +0 -1
  83. package/dist/chunk-HXDZ2QTW.cjs.map +0 -1
  84. package/dist/chunk-SRCWBFSZ.cjs.map +0 -1
  85. package/dist/chunk-TGRJ5WAX.js.map +0 -1
  86. package/dist/chunk-UHOHLN3C.cjs.map +0 -1
  87. package/dist/chunk-YBQV7XBC.js.map +0 -1
  88. package/dist/chunk-YNEDJTX2.js +0 -957
  89. package/dist/chunk-YNEDJTX2.js.map +0 -1
  90. package/dist/index-BlW4I30l.d.cts +0 -259
  91. package/dist/index-Cm2fGeox.d.ts +0 -259
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/worker/expo/taskQueue.ts","../../../src/worker/expo/asyncStorageTaskQueue.ts"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["/**\n * A task item represents a unit of work in the inbox.\n */\nexport interface TaskItem {\n id: string;\n type: string;\n data: Record<string, unknown>;\n createdAt: number;\n}\n\n/**\n * A task result represents the outcome of processing a task item.\n */\nexport interface TaskResult {\n id: string;\n taskItemId: string;\n type: string;\n status: \"success\" | \"failed\" | \"noop\";\n data?: Record<string, unknown>;\n executedAt: number;\n}\n\n/**\n * Persistence layer for handing off work between foreground and background.\n *\n * - **Inbox**: tasks waiting to be processed.\n * - **Outbox**: results produced by processors, waiting to be consumed.\n */\nexport interface TaskQueue {\n // Inbox\n addTask(task: TaskItem): Promise<void>;\n removeTask(id: string): Promise<void>;\n getTasks(type?: string): Promise<TaskItem[]>;\n clearTasks(): Promise<void>;\n\n // Outbox\n pushResult(result: TaskResult): Promise<void>;\n getResults(): Promise<TaskResult[]>;\n acknowledgeResults(ids: string[]): Promise<void>;\n}\n\n/**\n * In-memory TaskQueue for testing and lightweight use.\n * State is lost when the process exits.\n */\nexport class InMemoryTaskQueue implements TaskQueue {\n private inbox = new Map<string, TaskItem>();\n private outbox = new Map<string, TaskResult>();\n\n async addTask(task: TaskItem): Promise<void> {\n this.inbox.set(task.id, task);\n }\n\n async removeTask(id: string): Promise<void> {\n this.inbox.delete(id);\n }\n\n async getTasks(type?: string): Promise<TaskItem[]> {\n const tasks = Array.from(this.inbox.values());\n if (type) {\n return tasks.filter((t) => t.type === type);\n }\n return tasks;\n }\n\n async clearTasks(): Promise<void> {\n this.inbox.clear();\n }\n\n async pushResult(result: TaskResult): Promise<void> {\n this.outbox.set(result.id, result);\n }\n\n async getResults(): Promise<TaskResult[]> {\n return Array.from(this.outbox.values());\n }\n\n async acknowledgeResults(ids: string[]): Promise<void> {\n for (const id of ids) {\n this.outbox.delete(id);\n }\n }\n}\n","import type { TaskItem, TaskResult, TaskQueue } from \"./taskQueue\";\n\n/**\n * Minimal async key-value storage interface.\n *\n * Compatible with `@react-native-async-storage/async-storage` and\n * any other storage that exposes the same three methods.\n */\nexport interface AsyncStorageLike {\n getItem(key: string): Promise<string | null>;\n setItem(key: string, value: string): Promise<void>;\n removeItem(key: string): Promise<void>;\n}\n\n/**\n * AsyncStorage-backed TaskQueue for Expo/React Native.\n *\n * Persists inbox, outbox, and an optional config blob to AsyncStorage\n * so that data survives process restarts and can be shared between\n * foreground and background execution contexts.\n */\nexport class AsyncStorageTaskQueue implements TaskQueue {\n private readonly inboxKey: string;\n private readonly outboxKey: string;\n private readonly configKey: string;\n\n constructor(\n private readonly storage: AsyncStorageLike,\n prefix = \"ark:task-queue\",\n ) {\n this.inboxKey = `${prefix}:inbox`;\n this.outboxKey = `${prefix}:outbox`;\n this.configKey = `${prefix}:config`;\n }\n\n // ── Inbox ────────────────────────────────────────────────────────\n\n async addTask(task: TaskItem): Promise<void> {\n const tasks = await this.readList<TaskItem>(this.inboxKey);\n tasks.push(task);\n await this.writeList(this.inboxKey, tasks);\n }\n\n async removeTask(id: string): Promise<void> {\n const tasks = await this.readList<TaskItem>(this.inboxKey);\n await this.writeList(\n this.inboxKey,\n tasks.filter((t) => t.id !== id),\n );\n }\n\n async getTasks(type?: string): Promise<TaskItem[]> {\n const tasks = await this.readList<TaskItem>(this.inboxKey);\n if (type) {\n return tasks.filter((t) => t.type === type);\n }\n return tasks;\n }\n\n async clearTasks(): Promise<void> {\n await this.storage.removeItem(this.inboxKey);\n }\n\n // ── Outbox ───────────────────────────────────────────────────────\n\n async pushResult(result: TaskResult): Promise<void> {\n const results = await this.readList<TaskResult>(this.outboxKey);\n results.push(result);\n await this.writeList(this.outboxKey, results);\n }\n\n async getResults(): Promise<TaskResult[]> {\n return this.readList<TaskResult>(this.outboxKey);\n }\n\n async acknowledgeResults(ids: string[]): Promise<void> {\n const idSet = new Set(ids);\n const results = await this.readList<TaskResult>(this.outboxKey);\n await this.writeList(\n this.outboxKey,\n results.filter((r) => !idSet.has(r.id)),\n );\n }\n\n // ── Config persistence (for background handler rehydration) ──────\n\n /**\n * Persist a config blob alongside the queue data.\n * Used by @see ExpoWallet.setup to store the wallet parameters\n * that the background handler needs to reconstruct providers.\n */\n async persistConfig(config: Record<string, unknown> | object): Promise<void> {\n await this.storage.setItem(this.configKey, JSON.stringify(config));\n }\n\n /**\n * Load the persisted config blob.\n * Used by the background handler to rehydrate wallet dependencies.\n */\n async loadConfig<T = Record<string, unknown>>(): Promise<T | null> {\n const raw = await this.storage.getItem(this.configKey);\n return raw ? JSON.parse(raw) : null;\n }\n\n // ── Helpers ──────────────────────────────────────────────────────\n\n private async readList<T>(key: string): Promise<T[]> {\n const raw = await this.storage.getItem(key);\n return raw ? JSON.parse(raw) : [];\n }\n\n private async writeList<T>(key: string, list: T[]): Promise<void> {\n await this.storage.setItem(key, JSON.stringify(list));\n }\n}\n"]}
1
+ {"version":3,"sources":["../../../src/worker/expo/taskQueue.ts","../../../src/worker/expo/asyncStorageTaskQueue.ts"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["/**\n * A task item represents a unit of work in the inbox.\n */\nexport interface TaskItem {\n id: string;\n type: string;\n data: Record<string, unknown>;\n createdAt: number;\n}\n\n/**\n * A task result represents the outcome of processing a task item.\n */\nexport interface TaskResult {\n id: string;\n taskItemId: string;\n type: string;\n status: \"success\" | \"failed\" | \"noop\";\n data?: Record<string, unknown>;\n executedAt: number;\n}\n\n/**\n * Persistence layer for handing off work between foreground and background.\n *\n * - **Inbox**: tasks waiting to be processed.\n * - **Outbox**: results produced by processors, waiting to be consumed.\n */\nexport interface TaskQueue {\n // Inbox\n addTask(task: TaskItem): Promise<void>;\n removeTask(id: string): Promise<void>;\n getTasks(type?: string): Promise<TaskItem[]>;\n clearTasks(): Promise<void>;\n\n // Outbox\n pushResult(result: TaskResult): Promise<void>;\n getResults(): Promise<TaskResult[]>;\n acknowledgeResults(ids: string[]): Promise<void>;\n}\n\n/**\n * In-memory TaskQueue for testing and lightweight use.\n * State is lost when the process exits.\n */\nexport class InMemoryTaskQueue implements TaskQueue {\n private inbox = new Map<string, TaskItem>();\n private outbox = new Map<string, TaskResult>();\n\n async addTask(task: TaskItem): Promise<void> {\n this.inbox.set(task.id, task);\n }\n\n async removeTask(id: string): Promise<void> {\n this.inbox.delete(id);\n }\n\n async getTasks(type?: string): Promise<TaskItem[]> {\n const tasks = Array.from(this.inbox.values());\n if (type) {\n return tasks.filter((t) => t.type === type);\n }\n return tasks;\n }\n\n async clearTasks(): Promise<void> {\n this.inbox.clear();\n }\n\n async pushResult(result: TaskResult): Promise<void> {\n this.outbox.set(result.id, result);\n }\n\n async getResults(): Promise<TaskResult[]> {\n return Array.from(this.outbox.values());\n }\n\n async acknowledgeResults(ids: string[]): Promise<void> {\n for (const id of ids) {\n this.outbox.delete(id);\n }\n }\n}\n","import type { TaskItem, TaskResult, TaskQueue } from \"./taskQueue\";\n\n/**\n * Minimal async key-value storage interface.\n *\n * Compatible with `@react-native-async-storage/async-storage` and\n * any other storage that exposes the same three methods.\n */\nexport interface AsyncStorageLike {\n getItem(key: string): Promise<string | null>;\n setItem(key: string, value: string): Promise<void>;\n removeItem(key: string): Promise<void>;\n}\n\n/**\n * AsyncStorage-backed TaskQueue for Expo/React Native.\n *\n * Persists inbox, outbox, and an optional config blob to AsyncStorage\n * so that data survives process restarts and can be shared between\n * foreground and background execution contexts.\n */\nexport class AsyncStorageTaskQueue implements TaskQueue {\n private readonly inboxKey: string;\n private readonly outboxKey: string;\n private readonly configKey: string;\n\n constructor(\n private readonly storage: AsyncStorageLike,\n prefix = \"ark:task-queue\",\n ) {\n this.inboxKey = `${prefix}:inbox`;\n this.outboxKey = `${prefix}:outbox`;\n this.configKey = `${prefix}:config`;\n }\n\n // ── Inbox ────────────────────────────────────────────────────────\n\n async addTask(task: TaskItem): Promise<void> {\n const tasks = await this.readList<TaskItem>(this.inboxKey);\n tasks.push(task);\n await this.writeList(this.inboxKey, tasks);\n }\n\n async removeTask(id: string): Promise<void> {\n const tasks = await this.readList<TaskItem>(this.inboxKey);\n await this.writeList(\n this.inboxKey,\n tasks.filter((t) => t.id !== id),\n );\n }\n\n async getTasks(type?: string): Promise<TaskItem[]> {\n const tasks = await this.readList<TaskItem>(this.inboxKey);\n if (type) {\n return tasks.filter((t) => t.type === type);\n }\n return tasks;\n }\n\n async clearTasks(): Promise<void> {\n await this.storage.removeItem(this.inboxKey);\n }\n\n // ── Outbox ───────────────────────────────────────────────────────\n\n async pushResult(result: TaskResult): Promise<void> {\n const results = await this.readList<TaskResult>(this.outboxKey);\n results.push(result);\n await this.writeList(this.outboxKey, results);\n }\n\n async getResults(): Promise<TaskResult[]> {\n return this.readList<TaskResult>(this.outboxKey);\n }\n\n async acknowledgeResults(ids: string[]): Promise<void> {\n const idSet = new Set(ids);\n const results = await this.readList<TaskResult>(this.outboxKey);\n await this.writeList(\n this.outboxKey,\n results.filter((r) => !idSet.has(r.id)),\n );\n }\n\n // ── Config persistence (for background handler rehydration) ──────\n\n /**\n * Persist a config blob alongside the queue data.\n * Used by @see ExpoWallet.setup to store the wallet parameters\n * that the background handler needs to reconstruct providers.\n */\n async persistConfig(config: Record<string, unknown> | object): Promise<void> {\n await this.storage.setItem(this.configKey, JSON.stringify(config));\n }\n\n /**\n * Load the persisted config blob.\n * Used by the background handler to rehydrate wallet dependencies.\n */\n async loadConfig<T = Record<string, unknown>>(): Promise<T | null> {\n const raw = await this.storage.getItem(this.configKey);\n return raw ? JSON.parse(raw) : null;\n }\n\n // ── Helpers ──────────────────────────────────────────────────────\n\n private async readList<T>(key: string): Promise<T[]> {\n const raw = await this.storage.getItem(key);\n return raw ? JSON.parse(raw) : [];\n }\n\n private async writeList<T>(key: string, list: T[]): Promise<void> {\n await this.storage.setItem(key, JSON.stringify(list));\n }\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@arkade-os/sdk",
3
- "version": "0.4.45",
3
+ "version": "0.4.47",
4
4
  "description": "TypeScript SDK for building Bitcoin wallets using the Arkade protocol",
5
5
  "type": "module",
6
6
  "main": "./dist/index.cjs",
@@ -149,7 +149,7 @@
149
149
  },
150
150
  "devDependencies": {
151
151
  "@types/better-sqlite3": "7.6.13",
152
- "@vitest/coverage-v8": "3.2.4",
152
+ "@vitest/coverage-v8": "3.2.7",
153
153
  "better-sqlite3": "12.6.2",
154
154
  "typedoc": "^0.28.19"
155
155
  },