@bsv/wallet-toolbox 2.4.0 → 2.4.2

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 (179) hide show
  1. package/CHANGELOG.md +42 -0
  2. package/README.md +45 -0
  3. package/docs/client.md +493 -168
  4. package/docs/managed-change-policy.md +79 -0
  5. package/docs/services.md +61 -26
  6. package/docs/storage.md +417 -69
  7. package/docs/wallet.md +465 -155
  8. package/out/src/Wallet.d.ts +5 -1
  9. package/out/src/Wallet.d.ts.map +1 -1
  10. package/out/src/Wallet.js +14 -8
  11. package/out/src/Wallet.js.map +1 -1
  12. package/out/src/WalletPermissionsManager.d.ts +18 -0
  13. package/out/src/WalletPermissionsManager.d.ts.map +1 -1
  14. package/out/src/WalletPermissionsManager.js +56 -9
  15. package/out/src/WalletPermissionsManager.js.map +1 -1
  16. package/out/src/monitor/tasks/TaskArcSSE.d.ts.map +1 -1
  17. package/out/src/monitor/tasks/TaskArcSSE.js +46 -18
  18. package/out/src/monitor/tasks/TaskArcSSE.js.map +1 -1
  19. package/out/src/monitor/tasks/TaskCheckForProofs.d.ts.map +1 -1
  20. package/out/src/monitor/tasks/TaskCheckForProofs.js +10 -10
  21. package/out/src/monitor/tasks/TaskCheckForProofs.js.map +1 -1
  22. package/out/src/monitor/tasks/TaskReviewStatus.d.ts.map +1 -1
  23. package/out/src/monitor/tasks/TaskReviewStatus.js +7 -2
  24. package/out/src/monitor/tasks/TaskReviewStatus.js.map +1 -1
  25. package/out/src/monitor/tasks/TaskUnFail.d.ts.map +1 -1
  26. package/out/src/monitor/tasks/TaskUnFail.js +2 -57
  27. package/out/src/monitor/tasks/TaskUnFail.js.map +1 -1
  28. package/out/src/sdk/WalletServices.interfaces.d.ts +1 -0
  29. package/out/src/sdk/WalletServices.interfaces.d.ts.map +1 -1
  30. package/out/src/sdk/WalletStorage.interfaces.d.ts +10 -4
  31. package/out/src/sdk/WalletStorage.interfaces.d.ts.map +1 -1
  32. package/out/src/sdk/types.d.ts +10 -1
  33. package/out/src/sdk/types.d.ts.map +1 -1
  34. package/out/src/sdk/types.js +16 -2
  35. package/out/src/sdk/types.js.map +1 -1
  36. package/out/src/services/Services.d.ts.map +1 -1
  37. package/out/src/services/Services.js +39 -19
  38. package/out/src/services/Services.js.map +1 -1
  39. package/out/src/services/chaintracker/chaintracks/ChaintracksServiceClient.d.ts.map +1 -1
  40. package/out/src/services/chaintracker/chaintracks/ChaintracksServiceClient.js +8 -0
  41. package/out/src/services/chaintracker/chaintracks/ChaintracksServiceClient.js.map +1 -1
  42. package/out/src/services/chaintracker/chaintracks/GoChaintracksServiceClient.d.ts.map +1 -1
  43. package/out/src/services/chaintracker/chaintracks/GoChaintracksServiceClient.js +4 -0
  44. package/out/src/services/chaintracker/chaintracks/GoChaintracksServiceClient.js.map +1 -1
  45. package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainIngestorWs.d.ts.map +1 -1
  46. package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainIngestorWs.js +2 -0
  47. package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainIngestorWs.js.map +1 -1
  48. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageNoDb.d.ts.map +1 -1
  49. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageNoDb.js +2 -1
  50. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageNoDb.js.map +1 -1
  51. package/out/src/services/chaintracker/chaintracks/util/blockHeaderUtilities.d.ts.map +1 -1
  52. package/out/src/services/chaintracker/chaintracks/util/blockHeaderUtilities.js +1 -0
  53. package/out/src/services/chaintracker/chaintracks/util/blockHeaderUtilities.js.map +1 -1
  54. package/out/src/services/createDefaultWalletServicesOptions.d.ts.map +1 -1
  55. package/out/src/services/createDefaultWalletServicesOptions.js +17 -3
  56. package/out/src/services/createDefaultWalletServicesOptions.js.map +1 -1
  57. package/out/src/services/networkConfig.d.ts +29 -0
  58. package/out/src/services/networkConfig.d.ts.map +1 -0
  59. package/out/src/services/networkConfig.js +54 -0
  60. package/out/src/services/networkConfig.js.map +1 -0
  61. package/out/src/services/providers/Arcade.d.ts +1 -0
  62. package/out/src/services/providers/Arcade.d.ts.map +1 -1
  63. package/out/src/services/providers/Arcade.js +45 -14
  64. package/out/src/services/providers/Arcade.js.map +1 -1
  65. package/out/src/services/providers/SdkWhatsOnChain.d.ts +1 -1
  66. package/out/src/services/providers/SdkWhatsOnChain.d.ts.map +1 -1
  67. package/out/src/services/providers/SdkWhatsOnChain.js +12 -4
  68. package/out/src/services/providers/SdkWhatsOnChain.js.map +1 -1
  69. package/out/src/signer/methods/buildSignableTransaction.d.ts.map +1 -1
  70. package/out/src/signer/methods/buildSignableTransaction.js +3 -1
  71. package/out/src/signer/methods/buildSignableTransaction.js.map +1 -1
  72. package/out/src/signer/methods/completeSignedTransaction.d.ts.map +1 -1
  73. package/out/src/signer/methods/completeSignedTransaction.js +5 -3
  74. package/out/src/signer/methods/completeSignedTransaction.js.map +1 -1
  75. package/out/src/signer/methods/createAction.d.ts.map +1 -1
  76. package/out/src/signer/methods/createAction.js +12 -5
  77. package/out/src/signer/methods/createAction.js.map +1 -1
  78. package/out/src/signer/methods/internalizeAction.d.ts +6 -4
  79. package/out/src/signer/methods/internalizeAction.d.ts.map +1 -1
  80. package/out/src/signer/methods/internalizeAction.js +12 -7
  81. package/out/src/signer/methods/internalizeAction.js.map +1 -1
  82. package/out/src/signer/methods/resultBeef.d.ts +4 -0
  83. package/out/src/signer/methods/resultBeef.d.ts.map +1 -0
  84. package/out/src/signer/methods/resultBeef.js +12 -0
  85. package/out/src/signer/methods/resultBeef.js.map +1 -0
  86. package/out/src/signer/methods/signAction.d.ts.map +1 -1
  87. package/out/src/signer/methods/signAction.js +6 -1
  88. package/out/src/signer/methods/signAction.js.map +1 -1
  89. package/out/src/storage/StorageIdb.d.ts +2 -1
  90. package/out/src/storage/StorageIdb.d.ts.map +1 -1
  91. package/out/src/storage/StorageIdb.js +12 -5
  92. package/out/src/storage/StorageIdb.js.map +1 -1
  93. package/out/src/storage/StorageKnex.d.ts +2 -1
  94. package/out/src/storage/StorageKnex.d.ts.map +1 -1
  95. package/out/src/storage/StorageKnex.js +27 -2
  96. package/out/src/storage/StorageKnex.js.map +1 -1
  97. package/out/src/storage/StorageProvider.d.ts +17 -0
  98. package/out/src/storage/StorageProvider.d.ts.map +1 -1
  99. package/out/src/storage/StorageProvider.js +206 -13
  100. package/out/src/storage/StorageProvider.js.map +1 -1
  101. package/out/src/storage/index.all.d.ts +2 -0
  102. package/out/src/storage/index.all.d.ts.map +1 -1
  103. package/out/src/storage/index.all.js +2 -0
  104. package/out/src/storage/index.all.js.map +1 -1
  105. package/out/src/storage/index.client.d.ts +1 -0
  106. package/out/src/storage/index.client.d.ts.map +1 -1
  107. package/out/src/storage/index.client.js +1 -0
  108. package/out/src/storage/index.client.js.map +1 -1
  109. package/out/src/storage/methods/ListOutputsSpecOp.d.ts +2 -0
  110. package/out/src/storage/methods/ListOutputsSpecOp.d.ts.map +1 -1
  111. package/out/src/storage/methods/ListOutputsSpecOp.js +13 -1
  112. package/out/src/storage/methods/ListOutputsSpecOp.js.map +1 -1
  113. package/out/src/storage/methods/createAction.d.ts.map +1 -1
  114. package/out/src/storage/methods/createAction.js +23 -10
  115. package/out/src/storage/methods/createAction.js.map +1 -1
  116. package/out/src/storage/methods/getBeefForTransaction.d.ts.map +1 -1
  117. package/out/src/storage/methods/getBeefForTransaction.js +47 -24
  118. package/out/src/storage/methods/getBeefForTransaction.js.map +1 -1
  119. package/out/src/storage/methods/internalizeAction.d.ts +6 -4
  120. package/out/src/storage/methods/internalizeAction.d.ts.map +1 -1
  121. package/out/src/storage/methods/internalizeAction.js +26 -15
  122. package/out/src/storage/methods/internalizeAction.js.map +1 -1
  123. package/out/src/storage/methods/listOutputsIdb.d.ts.map +1 -1
  124. package/out/src/storage/methods/listOutputsIdb.js +21 -3
  125. package/out/src/storage/methods/listOutputsIdb.js.map +1 -1
  126. package/out/src/storage/methods/listOutputsKnex.d.ts.map +1 -1
  127. package/out/src/storage/methods/listOutputsKnex.js +14 -0
  128. package/out/src/storage/methods/listOutputsKnex.js.map +1 -1
  129. package/out/src/storage/methods/managedChange.d.ts +26 -0
  130. package/out/src/storage/methods/managedChange.d.ts.map +1 -0
  131. package/out/src/storage/methods/managedChange.js +43 -0
  132. package/out/src/storage/methods/managedChange.js.map +1 -0
  133. package/out/src/storage/methods/processAction.d.ts.map +1 -1
  134. package/out/src/storage/methods/processAction.js +5 -4
  135. package/out/src/storage/methods/processAction.js.map +1 -1
  136. package/out/src/storage/remoting/BinaryJson.d.ts +10 -0
  137. package/out/src/storage/remoting/BinaryJson.d.ts.map +1 -0
  138. package/out/src/storage/remoting/BinaryJson.js +172 -0
  139. package/out/src/storage/remoting/BinaryJson.js.map +1 -0
  140. package/out/src/storage/remoting/KnexSessionManager.d.ts +37 -0
  141. package/out/src/storage/remoting/KnexSessionManager.d.ts.map +1 -0
  142. package/out/src/storage/remoting/KnexSessionManager.js +198 -0
  143. package/out/src/storage/remoting/KnexSessionManager.js.map +1 -0
  144. package/out/src/storage/remoting/StorageClient.d.ts +2 -2
  145. package/out/src/storage/remoting/StorageClient.d.ts.map +1 -1
  146. package/out/src/storage/remoting/StorageClient.js +14 -5
  147. package/out/src/storage/remoting/StorageClient.js.map +1 -1
  148. package/out/src/storage/remoting/StorageClientBase.d.ts +11 -1
  149. package/out/src/storage/remoting/StorageClientBase.d.ts.map +1 -1
  150. package/out/src/storage/remoting/StorageClientBase.js +4 -1
  151. package/out/src/storage/remoting/StorageClientBase.js.map +1 -1
  152. package/out/src/storage/remoting/StorageMobile.d.ts +2 -2
  153. package/out/src/storage/remoting/StorageMobile.d.ts.map +1 -1
  154. package/out/src/storage/remoting/StorageMobile.js +14 -5
  155. package/out/src/storage/remoting/StorageMobile.js.map +1 -1
  156. package/out/src/storage/remoting/StorageServer.d.ts +10 -0
  157. package/out/src/storage/remoting/StorageServer.d.ts.map +1 -1
  158. package/out/src/storage/remoting/StorageServer.js +48 -21
  159. package/out/src/storage/remoting/StorageServer.js.map +1 -1
  160. package/out/src/storage/schema/KnexMigrations.d.ts +2 -0
  161. package/out/src/storage/schema/KnexMigrations.d.ts.map +1 -1
  162. package/out/src/storage/schema/KnexMigrations.js +34 -1
  163. package/out/src/storage/schema/KnexMigrations.js.map +1 -1
  164. package/out/src/storage/schema/tables/TableAuthSession.d.ts +20 -0
  165. package/out/src/storage/schema/tables/TableAuthSession.d.ts.map +1 -0
  166. package/out/src/storage/schema/tables/TableAuthSession.js +15 -0
  167. package/out/src/storage/schema/tables/TableAuthSession.js.map +1 -0
  168. package/out/src/storage/schema/tables/index.d.ts +1 -0
  169. package/out/src/storage/schema/tables/index.d.ts.map +1 -1
  170. package/out/src/storage/schema/tables/index.js +1 -0
  171. package/out/src/storage/schema/tables/index.js.map +1 -1
  172. package/out/src/storage/storageProviderHelpers.d.ts +5 -4
  173. package/out/src/storage/storageProviderHelpers.d.ts.map +1 -1
  174. package/out/src/storage/storageProviderHelpers.js +7 -6
  175. package/out/src/storage/storageProviderHelpers.js.map +1 -1
  176. package/out/src/utility/utilityHelpers.d.ts.map +1 -1
  177. package/out/src/utility/utilityHelpers.js +2 -0
  178. package/out/src/utility/utilityHelpers.js.map +1 -1
  179. package/package.json +6 -5
@@ -1 +1 @@
1
- {"version":3,"file":"processAction.d.ts","sourceRoot":"","sources":["../../../../src/storage/methods/processAction.ts"],"names":[],"mappings":"AACA,OAAO,EACL,IAAI,EAEJ,cAAc,EAEd,qBAAqB,EACtB,MAAM,UAAU,CAAA;AAEjB,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AACpD,OAAO,EACL,MAAM,EACN,kBAAkB,EAClB,wBAAwB,EACxB,2BAA2B,EAC5B,MAAM,oCAAoC,CAAA;AAU3C,OAAO,EAAE,iBAAiB,EAAE,MAAM,sCAAsC,CAAA;AAExE,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAA;AACpE,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAA;AAU9D,wBAAsB,aAAa,CACjC,OAAO,EAAE,eAAe,EACxB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,wBAAwB,GAC7B,OAAO,CAAC,2BAA2B,CAAC,CA0CtC;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAA;IACZ,GAAG,CAAC,EAAE,gBAAgB,CAAA;IACtB,MAAM,CAAC,EAAE,aAAa,CAAA;IACtB,MAAM,EAAE,aAAa,GAAG,aAAa,GAAG,OAAO,GAAG,SAAS,CAAA;IAC3D,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,IAAI,CAAA;IACV,OAAO,EAAE,oBAAoB,EAAE,CAAA;CAChC;AAED,MAAM,WAAW,wBAAwB;IACvC,IAAI,EAAE,MAAM,CAAA;IAEZ;;OAEG;IACH,MAAM,EAAE,SAAS,GAAG,OAAO,CAAA;IAE3B;;;;OAIG;IACH,YAAY,CAAC,EAAE,OAAO,CAAA;IAEtB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAmFD,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,eAAe,EACxB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EAAE,EACf,SAAS,EAAE,OAAO,EAClB,CAAC,CAAC,EAAE,oBAAoB,EACxB,MAAM,CAAC,EAAE,qBAAqB,GAC7B,OAAO,CAAC;IAAE,GAAG,EAAE,cAAc,EAAE,CAAC;IAAC,GAAG,EAAE,kBAAkB,EAAE,GAAG,SAAS,CAAA;CAAE,CAAC,CAyC3E;AAwLD,MAAM,WAAW,kBAAkB;IACjC,GAAG,EAAE,iBAAiB,CAAA;IACtB,GAAG,CAAC,EAAE,MAAM,CAAA;CACb"}
1
+ {"version":3,"file":"processAction.d.ts","sourceRoot":"","sources":["../../../../src/storage/methods/processAction.ts"],"names":[],"mappings":"AACA,OAAO,EACL,IAAI,EAEJ,cAAc,EAEd,qBAAqB,EACtB,MAAM,UAAU,CAAA;AAEjB,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AACpD,OAAO,EACL,MAAM,EACN,kBAAkB,EAClB,wBAAwB,EACxB,2BAA2B,EAC5B,MAAM,oCAAoC,CAAA;AAU3C,OAAO,EAAE,iBAAiB,EAAE,MAAM,sCAAsC,CAAA;AAExE,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAA;AACpE,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAA;AAU9D,wBAAsB,aAAa,CACjC,OAAO,EAAE,eAAe,EACxB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,wBAAwB,GAC7B,OAAO,CAAC,2BAA2B,CAAC,CA0CtC;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAA;IACZ,GAAG,CAAC,EAAE,gBAAgB,CAAA;IACtB,MAAM,CAAC,EAAE,aAAa,CAAA;IACtB,MAAM,EAAE,aAAa,GAAG,aAAa,GAAG,OAAO,GAAG,SAAS,CAAA;IAC3D,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,IAAI,CAAA;IACV,OAAO,EAAE,oBAAoB,EAAE,CAAA;CAChC;AAED,MAAM,WAAW,wBAAwB;IACvC,IAAI,EAAE,MAAM,CAAA;IAEZ;;OAEG;IACH,MAAM,EAAE,SAAS,GAAG,OAAO,CAAA;IAE3B;;;;OAIG;IACH,YAAY,CAAC,EAAE,OAAO,CAAA;IAEtB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAmFD,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,eAAe,EACxB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EAAE,EACf,SAAS,EAAE,OAAO,EAClB,CAAC,CAAC,EAAE,oBAAoB,EACxB,MAAM,CAAC,EAAE,qBAAqB,GAC7B,OAAO,CAAC;IAAE,GAAG,EAAE,cAAc,EAAE,CAAC;IAAC,GAAG,EAAE,kBAAkB,EAAE,GAAG,SAAS,CAAA;CAAE,CAAC,CAyC3E;AAyLD,MAAM,WAAW,kBAAkB;IACjC,GAAG,EAAE,iBAAiB,CAAA;IACtB,GAAG,CAAC,EAAE,MAAM,CAAA;CACb"}
@@ -189,9 +189,10 @@ async function validateCommitNewTxToStorageArgs(storage, userId, params) {
189
189
  if (!params.reference || !params.txid || (params.rawTx == null)) {
190
190
  throw new WERR_errors_1.WERR_INVALID_OPERATION('One or more expected params are undefined.');
191
191
  }
192
+ const rawTx = (0, utilityHelpers_noBuffer_1.asArray)(params.rawTx);
192
193
  let tx;
193
194
  try {
194
- tx = sdk_1.Transaction.fromBinary(params.rawTx);
195
+ tx = sdk_1.Transaction.fromBinary(rawTx);
195
196
  }
196
197
  catch (_parseError) {
197
198
  throw new WERR_errors_1.WERR_INVALID_OPERATION('Parsing serialized transaction failed.');
@@ -205,7 +206,7 @@ async function validateCommitNewTxToStorageArgs(storage, userId, params) {
205
206
  Ensure that the transaction meets the rules for being a finalized
206
207
  which can be found at https://wiki.bitcoinsv.io/index.php/NLocktime_and_nSequence`);
207
208
  }
208
- const txScriptOffsets = (0, parseTxScriptOffsets_1.parseTxScriptOffsets)(params.rawTx);
209
+ const txScriptOffsets = (0, parseTxScriptOffsets_1.parseTxScriptOffsets)(rawTx);
209
210
  const transaction = (0, utilityHelpers_1.verifyOne)(await storage.findTransactions({
210
211
  partial: { userId, reference: params.reference }
211
212
  }));
@@ -236,7 +237,7 @@ async function validateCommitNewTxToStorageArgs(storage, userId, params) {
236
237
  throw new WERR_errors_1.WERR_INVALID_OPERATION('Transaction did not include an output to cover service fee.');
237
238
  }
238
239
  }
239
- const req = EntityProvenTxReq_1.EntityProvenTxReq.fromTxid(params.txid, params.rawTx, transaction.inputBEEF);
240
+ const req = EntityProvenTxReq_1.EntityProvenTxReq.fromTxid(params.txid, rawTx, transaction.inputBEEF);
240
241
  req.addNotifyTransactionId(transactionId);
241
242
  // "Processing" a transaction is the final step of creating a new one.
242
243
  // If it is to be sent to the network directly (prior to return from processAction),
@@ -255,7 +256,7 @@ async function validateCommitNewTxToStorageArgs(storage, userId, params) {
255
256
  const vargs = {
256
257
  reference: params.reference,
257
258
  txid: params.txid,
258
- rawTx: params.rawTx,
259
+ rawTx,
259
260
  isSendWith: !!params.sendWith && params.sendWith.length > 0,
260
261
  isDelayed: params.isDelayed,
261
262
  isNoSend: params.isNoSend,
@@ -1 +1 @@
1
- {"version":3,"file":"processAction.js","sourceRoot":"","sources":["../../../../src/storage/methods/processAction.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"processAction.js","sourceRoot":"","sources":["../../../../src/storage/methods/processAction.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ export declare const BINARY_ENCODING_HEADER = "X-BSV-Binary-Encoding";
2
+ export declare const BINARY_REQUEST_ENCODING_HEADER = "X-BSV-Binary-Request-Encoding";
3
+ export declare const BINARY_ENCODING = "base64";
4
+ export declare function binaryJsonReplacer(this: Record<string, unknown>, key: string, value: unknown): unknown;
5
+ export declare function legacyBinaryJsonReplacer(_key: string, value: unknown): unknown;
6
+ export declare function binaryJsonReviver(_key: string, value: unknown): unknown;
7
+ export declare function decodeBinaryJsonValue(value: unknown): unknown;
8
+ export declare function stringifyJsonRpc(value: unknown, binary: boolean): string;
9
+ export declare function parseJsonRpc(text: string, binary?: boolean): any;
10
+ //# sourceMappingURL=BinaryJson.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BinaryJson.d.ts","sourceRoot":"","sources":["../../../../src/storage/remoting/BinaryJson.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,sBAAsB,0BAA0B,CAAA;AAC7D,eAAO,MAAM,8BAA8B,kCAAkC,CAAA;AAC7E,eAAO,MAAM,eAAe,WAAW,CAAA;AAoGvC,wBAAgB,kBAAkB,CAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAYvG;AAED,wBAAgB,wBAAwB,CAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAG/E;AAED,wBAAgB,iBAAiB,CAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAIxE;AAED,wBAAgB,qBAAqB,CAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAyB9D;AAED,wBAAgB,gBAAgB,CAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,GAAG,MAAM,CAEzE;AAED,wBAAgB,YAAY,CAAE,IAAI,EAAE,MAAM,EAAE,MAAM,GAAE,OAAe,GAAG,GAAG,CAExE"}
@@ -0,0 +1,172 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BINARY_ENCODING = exports.BINARY_REQUEST_ENCODING_HEADER = exports.BINARY_ENCODING_HEADER = void 0;
4
+ exports.binaryJsonReplacer = binaryJsonReplacer;
5
+ exports.legacyBinaryJsonReplacer = legacyBinaryJsonReplacer;
6
+ exports.binaryJsonReviver = binaryJsonReviver;
7
+ exports.decodeBinaryJsonValue = decodeBinaryJsonValue;
8
+ exports.stringifyJsonRpc = stringifyJsonRpc;
9
+ exports.parseJsonRpc = parseJsonRpc;
10
+ exports.BINARY_ENCODING_HEADER = 'X-BSV-Binary-Encoding';
11
+ exports.BINARY_REQUEST_ENCODING_HEADER = 'X-BSV-Binary-Request-Encoding';
12
+ exports.BINARY_ENCODING = 'base64';
13
+ const TAG = '$bsvBinary';
14
+ const ESCAPED = 'escaped';
15
+ const BASE64 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
16
+ function getBufferCtor() {
17
+ return typeof globalThis === 'undefined' ? undefined : globalThis.Buffer;
18
+ }
19
+ function toBase64(bytes) {
20
+ const BufferCtor = getBufferCtor();
21
+ if (BufferCtor != null)
22
+ return BufferCtor.from(bytes.buffer, bytes.byteOffset, bytes.byteLength).toString('base64');
23
+ if (typeof globalThis.btoa === 'function') {
24
+ let binary = '';
25
+ const chunkSize = 0x8000;
26
+ for (let offset = 0; offset < bytes.length; offset += chunkSize) {
27
+ binary += String.fromCharCode(...bytes.subarray(offset, Math.min(offset + chunkSize, bytes.length)));
28
+ }
29
+ return globalThis.btoa(binary);
30
+ }
31
+ let encoded = '';
32
+ for (let i = 0; i < bytes.length; i += 3) {
33
+ const first = bytes[i];
34
+ const second = bytes[i + 1] ?? 0;
35
+ const third = bytes[i + 2] ?? 0;
36
+ encoded += BASE64[first >>> 2];
37
+ encoded += BASE64[((first & 3) << 4) | (second >>> 4)];
38
+ encoded += i + 1 < bytes.length ? BASE64[((second & 15) << 2) | (third >>> 6)] : '=';
39
+ encoded += i + 2 < bytes.length ? BASE64[third & 63] : '=';
40
+ }
41
+ return encoded;
42
+ }
43
+ function fromBase64(base64) {
44
+ if (base64.length % 4 !== 0)
45
+ throw new TypeError('Invalid base64 binary JSON value');
46
+ const padding = base64.endsWith('==') ? 2 : base64.endsWith('=') ? 1 : 0;
47
+ const contentLength = base64.length - padding;
48
+ for (let i = 0; i < contentLength; i++) {
49
+ if (!BASE64.includes(base64[i]))
50
+ throw new TypeError('Invalid base64 binary JSON value');
51
+ }
52
+ for (let i = contentLength; i < base64.length; i++) {
53
+ if (base64[i] !== '=')
54
+ throw new TypeError('Invalid base64 binary JSON value');
55
+ }
56
+ if ((padding === 1 && (BASE64.indexOf(base64[contentLength - 1]) & 3) !== 0) ||
57
+ (padding === 2 && (BASE64.indexOf(base64[contentLength - 1]) & 15) !== 0))
58
+ throw new TypeError('Invalid base64 binary JSON value');
59
+ const BufferCtor = getBufferCtor();
60
+ if (BufferCtor != null) {
61
+ const buffer = BufferCtor.from(base64, 'base64');
62
+ return new Uint8Array(buffer.buffer, buffer.byteOffset, buffer.byteLength);
63
+ }
64
+ if (typeof globalThis.atob === 'function') {
65
+ const binary = globalThis.atob(base64);
66
+ // Uint8Array.from performs the conversion in the native collection
67
+ // primitive and avoids an attacker-controlled JavaScript loop bound.
68
+ return Uint8Array.from(binary, character => character.charCodeAt(0));
69
+ }
70
+ const bytes = new Uint8Array(Math.floor(base64.length * 3 / 4) - padding);
71
+ let offset = 0;
72
+ for (let i = 0; i < base64.length; i += 4) {
73
+ const first = BASE64.indexOf(base64[i]);
74
+ const second = BASE64.indexOf(base64[i + 1]);
75
+ const third = base64[i + 2] === '=' ? 0 : BASE64.indexOf(base64[i + 2]);
76
+ const fourth = base64[i + 3] === '=' ? 0 : BASE64.indexOf(base64[i + 3]);
77
+ const value = (first << 18) | (second << 12) | (third << 6) | fourth;
78
+ if (offset < bytes.length)
79
+ bytes[offset++] = value >>> 16;
80
+ if (offset < bytes.length)
81
+ bytes[offset++] = value >>> 8;
82
+ if (offset < bytes.length)
83
+ bytes[offset++] = value;
84
+ }
85
+ return bytes;
86
+ }
87
+ function isTaggedBinary(value) {
88
+ return value != null && typeof value === 'object' &&
89
+ value[TAG] === exports.BINARY_ENCODING && typeof value.data === 'string' &&
90
+ Object.keys(value).length === 2;
91
+ }
92
+ function isBufferJson(value) {
93
+ return value != null && typeof value === 'object' &&
94
+ value.type === 'Buffer' && Array.isArray(value.data) &&
95
+ Object.keys(value).length === 2;
96
+ }
97
+ function isEscapedJson(value) {
98
+ return value != null && typeof value === 'object' &&
99
+ value[TAG] === ESCAPED && Array.isArray(value.entries) &&
100
+ Object.keys(value).length === 2 &&
101
+ value.entries.every((entry) => Array.isArray(entry) && entry.length === 2 && typeof entry[0] === 'string');
102
+ }
103
+ function escapeJsonObject(value) {
104
+ return { [TAG]: ESCAPED, entries: Object.entries(value) };
105
+ }
106
+ function binaryJsonReplacer(key, value) {
107
+ if (value instanceof Uint8Array)
108
+ return { [TAG]: exports.BINARY_ENCODING, data: toBase64(value) };
109
+ if (value == null || typeof value !== 'object')
110
+ return value;
111
+ // Buffer.toJSON runs before a JSON replacer, but the holder still contains
112
+ // the original Buffer. Literal Buffer-JSON objects must remain ordinary data.
113
+ if (isBufferJson(value)) {
114
+ const original = this[key];
115
+ if (original instanceof Uint8Array)
116
+ return { [TAG]: exports.BINARY_ENCODING, data: toBase64(original) };
117
+ return escapeJsonObject(value);
118
+ }
119
+ if (isTaggedBinary(value) || isEscapedJson(value))
120
+ return escapeJsonObject(value);
121
+ return value;
122
+ }
123
+ function legacyBinaryJsonReplacer(_key, value) {
124
+ if (value instanceof Uint8Array)
125
+ return Array.from(value);
126
+ return value;
127
+ }
128
+ function binaryJsonReviver(_key, value) {
129
+ if (isTaggedBinary(value))
130
+ return fromBase64(value.data);
131
+ if (isEscapedJson(value))
132
+ return Object.fromEntries(value.entries);
133
+ return value;
134
+ }
135
+ function decodeBinaryJsonValue(value) {
136
+ if (isTaggedBinary(value))
137
+ return fromBase64(value.data);
138
+ if (value == null || typeof value !== 'object')
139
+ return value;
140
+ // JSON can be nested far more deeply than the JavaScript call stack. Walk it
141
+ // iteratively so an authenticated peer cannot turn binary decoding into a
142
+ // recursion overflow.
143
+ const decoded = isEscapedJson(value) ? Object.fromEntries(value.entries) : value;
144
+ const stack = [decoded];
145
+ while (stack.length > 0) {
146
+ const current = stack.pop();
147
+ if (current == null)
148
+ continue;
149
+ for (const [key, child] of Object.entries(current)) {
150
+ if (isTaggedBinary(child)) {
151
+ ;
152
+ current[key] = fromBase64(child.data);
153
+ }
154
+ else if (isEscapedJson(child)) {
155
+ const restored = Object.fromEntries(child.entries);
156
+ current[key] = restored;
157
+ stack.push(restored);
158
+ }
159
+ else if (child != null && typeof child === 'object') {
160
+ stack.push(child);
161
+ }
162
+ }
163
+ }
164
+ return decoded;
165
+ }
166
+ function stringifyJsonRpc(value, binary) {
167
+ return JSON.stringify(value, binary ? binaryJsonReplacer : legacyBinaryJsonReplacer);
168
+ }
169
+ function parseJsonRpc(text, binary = false) {
170
+ return binary ? JSON.parse(text, binaryJsonReviver) : JSON.parse(text);
171
+ }
172
+ //# sourceMappingURL=BinaryJson.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BinaryJson.js","sourceRoot":"","sources":["../../../../src/storage/remoting/BinaryJson.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,37 @@
1
+ import { AsyncSessionManager, PeerSession } from '@bsv/sdk';
2
+ import { Knex } from 'knex';
3
+ export declare const AUTH_SESSION_TABLE = "auth_sessions";
4
+ export declare const DEFAULT_AUTH_SESSION_TTL_MS: number;
5
+ export interface KnexSessionManagerOptions {
6
+ /** Session lifetime since its most recent authenticated use. Default: 24 hours. */
7
+ ttlMs?: number;
8
+ /** Testable clock source. Defaults to `Date.now`. */
9
+ now?: () => number;
10
+ }
11
+ /**
12
+ * Shared BRC-103 session storage for horizontally scaled StorageServer nodes.
13
+ *
14
+ * Every instance must use the same Knex database. The wallet-toolbox migration
15
+ * creates the required `auth_sessions` table. Writes are monotonic by
16
+ * `PeerSession.lastUpdate`, preventing a delayed request on one replica from
17
+ * replacing newer session state written by another replica.
18
+ */
19
+ export declare class KnexSessionManager implements AsyncSessionManager {
20
+ private readonly knex;
21
+ private readonly ttlMs;
22
+ private readonly now;
23
+ constructor(knex: Knex, options?: KnexSessionManagerOptions);
24
+ addSession(session: PeerSession): Promise<void>;
25
+ updateSession(session: PeerSession): Promise<void>;
26
+ getSession(identifier: string): Promise<PeerSession | undefined>;
27
+ removeSession(session: PeerSession): Promise<void>;
28
+ hasSession(identifier: string): Promise<boolean>;
29
+ /** Delete expired rows. Call from an operator-controlled maintenance task. */
30
+ pruneExpiredSessions(): Promise<number>;
31
+ private activeSessions;
32
+ private persistSession;
33
+ private updateIfCurrentOrNewer;
34
+ private mergeNullableBoolean;
35
+ private toTableAuthSession;
36
+ }
37
+ //# sourceMappingURL=KnexSessionManager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"KnexSessionManager.d.ts","sourceRoot":"","sources":["../../../../src/storage/remoting/KnexSessionManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AAC3D,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAG3B,eAAO,MAAM,kBAAkB,kBAAkB,CAAA;AACjD,eAAO,MAAM,2BAA2B,QAAsB,CAAA;AAE9D,MAAM,WAAW,yBAAyB;IACxC,mFAAmF;IACnF,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,qDAAqD;IACrD,GAAG,CAAC,EAAE,MAAM,MAAM,CAAA;CACnB;AAED;;;;;;;GAOG;AACH,qBAAa,kBAAmB,YAAW,mBAAmB;IAI/C,OAAO,CAAC,QAAQ,CAAC,IAAI;IAHlC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAQ;IAC9B,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAc;gBAEJ,IAAI,EAAE,IAAI,EAAE,OAAO,GAAE,yBAA8B;IAS3E,UAAU,CAAE,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAIhD,aAAa,CAAE,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAInD,UAAU,CAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC;IAcjE,aAAa,CAAE,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAwBnD,UAAU,CAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAYvD,8EAA8E;IACxE,oBAAoB,IAAK,OAAO,CAAC,MAAM,CAAC;IAM9C,OAAO,CAAC,cAAc;YAKR,cAAc;YAqCd,sBAAsB;IAwBpC,OAAO,CAAC,oBAAoB;IAe5B,OAAO,CAAC,kBAAkB;CAiB3B"}
@@ -0,0 +1,198 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.KnexSessionManager = exports.DEFAULT_AUTH_SESSION_TTL_MS = exports.AUTH_SESSION_TABLE = void 0;
4
+ const TableAuthSession_1 = require("../schema/tables/TableAuthSession");
5
+ exports.AUTH_SESSION_TABLE = 'auth_sessions';
6
+ exports.DEFAULT_AUTH_SESSION_TTL_MS = 24 * 60 * 60 * 1000;
7
+ /**
8
+ * Shared BRC-103 session storage for horizontally scaled StorageServer nodes.
9
+ *
10
+ * Every instance must use the same Knex database. The wallet-toolbox migration
11
+ * creates the required `auth_sessions` table. Writes are monotonic by
12
+ * `PeerSession.lastUpdate`, preventing a delayed request on one replica from
13
+ * replacing newer session state written by another replica.
14
+ */
15
+ class KnexSessionManager {
16
+ knex;
17
+ ttlMs;
18
+ now;
19
+ constructor(knex, options = {}) {
20
+ this.knex = knex;
21
+ this.ttlMs = options.ttlMs ?? exports.DEFAULT_AUTH_SESSION_TTL_MS;
22
+ this.now = options.now ?? Date.now;
23
+ if (!Number.isSafeInteger(this.ttlMs) || this.ttlMs <= 0) {
24
+ throw new TypeError('KnexSessionManager ttlMs must be a positive safe integer.');
25
+ }
26
+ }
27
+ async addSession(session) {
28
+ await this.persistSession(session);
29
+ }
30
+ async updateSession(session) {
31
+ await this.persistSession(session);
32
+ }
33
+ async getSession(identifier) {
34
+ const byNonce = await this.activeSessions()
35
+ .where({ sessionNonce: identifier })
36
+ .first();
37
+ if (byNonce != null)
38
+ return (0, TableAuthSession_1.tableAuthSessionToPeerSession)(byNonce);
39
+ const byIdentity = await this.activeSessions()
40
+ .where({ peerIdentityKey: identifier })
41
+ .orderBy('lastUpdate', 'desc')
42
+ .orderBy('sessionNonce', 'desc')
43
+ .first();
44
+ return byIdentity == null ? undefined : (0, TableAuthSession_1.tableAuthSessionToPeerSession)(byIdentity);
45
+ }
46
+ async removeSession(session) {
47
+ if (typeof session.sessionNonce !== 'string')
48
+ return;
49
+ if (!Number.isSafeInteger(session.lastUpdate) || session.lastUpdate < 0)
50
+ return;
51
+ await this.knex(exports.AUTH_SESSION_TABLE)
52
+ .where({ sessionNonce: session.sessionNonce })
53
+ .where(function () {
54
+ // Knex query builders are thenable, but these calls only build the
55
+ // surrounding delete predicate; they do not start standalone queries.
56
+ // eslint-disable-next-line @typescript-eslint/no-floating-promises
57
+ this.where('lastUpdate', '<', session.lastUpdate)
58
+ .orWhere(function () {
59
+ // eslint-disable-next-line @typescript-eslint/no-floating-promises
60
+ this.where('lastUpdate', '=', session.lastUpdate)
61
+ .where('isAuthenticated', session.isAuthenticated);
62
+ applyNullableMatch(this, 'peerNonce', session.peerNonce);
63
+ applyNullableMatch(this, 'peerIdentityKey', session.peerIdentityKey);
64
+ applyNullableMatch(this, 'certificatesRequired', session.certificatesRequired);
65
+ applyNullableMatch(this, 'certificatesValidated', session.certificatesValidated);
66
+ });
67
+ })
68
+ .delete();
69
+ }
70
+ async hasSession(identifier) {
71
+ const byNonce = await this.activeSessions()
72
+ .where({ sessionNonce: identifier })
73
+ .first('sessionNonce');
74
+ if (byNonce != null)
75
+ return true;
76
+ const byIdentity = await this.activeSessions()
77
+ .where({ peerIdentityKey: identifier })
78
+ .first('sessionNonce');
79
+ return byIdentity != null;
80
+ }
81
+ /** Delete expired rows. Call from an operator-controlled maintenance task. */
82
+ async pruneExpiredSessions() {
83
+ return await this.knex(exports.AUTH_SESSION_TABLE)
84
+ .where('expiresAt', '<=', this.now())
85
+ .delete();
86
+ }
87
+ activeSessions() {
88
+ return this.knex(exports.AUTH_SESSION_TABLE)
89
+ .where('expiresAt', '>', this.now());
90
+ }
91
+ async persistSession(session) {
92
+ if (typeof session.sessionNonce !== 'string' || session.sessionNonce.length === 0) {
93
+ throw new TypeError('Invalid session: sessionNonce is required to persist a session.');
94
+ }
95
+ if (!Number.isSafeInteger(session.lastUpdate) || session.lastUpdate < 0) {
96
+ throw new TypeError('Invalid session: lastUpdate must be a non-negative safe integer.');
97
+ }
98
+ const row = this.toTableAuthSession(session);
99
+ const updated = await this.updateIfCurrentOrNewer(row);
100
+ if (updated > 0)
101
+ return;
102
+ // A zero-row update can mean either that this write is stale or that the
103
+ // database reports no changed rows for an idempotent update. Avoid an
104
+ // expected duplicate-key failure in both cases; insert only when the nonce
105
+ // is genuinely absent.
106
+ const existing = await this.knex(exports.AUTH_SESSION_TABLE)
107
+ .where({ sessionNonce: row.sessionNonce })
108
+ .first('lastUpdate');
109
+ if (existing != null) {
110
+ // A concurrent insert may have appeared after the first update. Retry if
111
+ // our state is still current enough to advance or merge that new row.
112
+ if (existing.lastUpdate <= row.lastUpdate)
113
+ await this.updateIfCurrentOrNewer(row);
114
+ return;
115
+ }
116
+ try {
117
+ await this.knex(exports.AUTH_SESSION_TABLE).insert(row);
118
+ }
119
+ catch (error) {
120
+ // Another replica may have inserted this nonce between our update and
121
+ // insert. Retry only known duplicate-key races; preserve every other
122
+ // database failure for the caller.
123
+ if (!isDuplicateKeyError(error))
124
+ throw error;
125
+ await this.updateIfCurrentOrNewer(row);
126
+ }
127
+ }
128
+ async updateIfCurrentOrNewer(row) {
129
+ return await this.knex(exports.AUTH_SESSION_TABLE)
130
+ .where({ sessionNonce: row.sessionNonce })
131
+ .where('lastUpdate', '<=', row.lastUpdate)
132
+ .update({
133
+ // Identity and peer nonces become immutable once established. This
134
+ // prevents an equal-timestamp write from another replica replacing
135
+ // the identifiers attached to an authenticated session.
136
+ peerNonce: this.knex.raw('coalesce(??, ?)', ['peerNonce', row.peerNonce ?? null]),
137
+ peerIdentityKey: this.knex.raw('coalesce(??, ?)', ['peerIdentityKey', row.peerIdentityKey ?? null]),
138
+ // Authentication and certificate validation only advance during a
139
+ // session. Merge those flags so two writes in the same millisecond
140
+ // cannot downgrade stronger state merely because Date.now collided.
141
+ isAuthenticated: this.knex.raw('case when ?? = 1 or ? = 1 then 1 else 0 end', ['isAuthenticated', row.isAuthenticated === true || row.isAuthenticated === 1 ? 1 : 0]),
142
+ certificatesRequired: this.mergeNullableBoolean('certificatesRequired', row.certificatesRequired),
143
+ certificatesValidated: this.mergeNullableBoolean('certificatesValidated', row.certificatesValidated),
144
+ lastUpdate: row.lastUpdate,
145
+ expiresAt: row.expiresAt
146
+ });
147
+ }
148
+ mergeNullableBoolean(column, value) {
149
+ let incoming;
150
+ if (value == null) {
151
+ incoming = null;
152
+ }
153
+ else if (value === true || value === 1) {
154
+ incoming = 1;
155
+ }
156
+ else {
157
+ incoming = 0;
158
+ }
159
+ return this.knex.raw('case when ?? = 1 or ? = 1 then 1 when ?? is null and ? is null then null else 0 end', [column, incoming, column, incoming]);
160
+ }
161
+ toTableAuthSession(session) {
162
+ const expiresAt = session.lastUpdate + this.ttlMs;
163
+ if (!Number.isSafeInteger(expiresAt)) {
164
+ throw new TypeError('Invalid session: lastUpdate plus ttlMs must be a safe integer.');
165
+ }
166
+ return {
167
+ sessionNonce: session.sessionNonce,
168
+ peerNonce: session.peerNonce ?? null,
169
+ peerIdentityKey: session.peerIdentityKey ?? null,
170
+ isAuthenticated: session.isAuthenticated,
171
+ lastUpdate: session.lastUpdate,
172
+ certificatesRequired: session.certificatesRequired ?? null,
173
+ certificatesValidated: session.certificatesValidated ?? null,
174
+ expiresAt
175
+ };
176
+ }
177
+ }
178
+ exports.KnexSessionManager = KnexSessionManager;
179
+ function applyNullableMatch(query, column, value) {
180
+ if (value == null) {
181
+ // eslint-disable-next-line @typescript-eslint/no-floating-promises
182
+ query.whereNull(column);
183
+ }
184
+ else {
185
+ // eslint-disable-next-line @typescript-eslint/no-floating-promises
186
+ query.where(column, value);
187
+ }
188
+ }
189
+ function isDuplicateKeyError(error) {
190
+ if (typeof error !== 'object' || error == null)
191
+ return false;
192
+ const databaseError = error;
193
+ return databaseError.code === 'SQLITE_CONSTRAINT_PRIMARYKEY' ||
194
+ databaseError.code === 'SQLITE_CONSTRAINT_UNIQUE' ||
195
+ databaseError.code === 'ER_DUP_ENTRY' ||
196
+ databaseError.errno === 1062;
197
+ }
198
+ //# sourceMappingURL=KnexSessionManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"KnexSessionManager.js","sourceRoot":"","sources":["../../../../src/storage/remoting/KnexSessionManager.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { WalletInterface } from '@bsv/sdk';
2
- import { StorageClientBase } from './StorageClientBase';
2
+ import { StorageClientBase, type StorageClientOptions } from './StorageClientBase';
3
3
  /**
4
4
  * `StorageClient` implements the `WalletStorageProvider` interface which allows it to
5
5
  * serve as a BRC-100 wallet's active storage.
@@ -15,7 +15,7 @@ import { StorageClientBase } from './StorageClientBase';
15
15
  * For details of the API implemented, follow the "See also" link for the `WalletStorageProvider` interface.
16
16
  */
17
17
  export declare class StorageClient extends StorageClientBase {
18
- constructor(wallet: WalletInterface, endpointUrl: string);
18
+ constructor(wallet: WalletInterface, endpointUrl: string, options?: StorageClientOptions);
19
19
  /**
20
20
  * Make a JSON-RPC call to the remote server.
21
21
  * @param method The WalletStorage method name to call.
@@ -1 +1 @@
1
- {"version":3,"file":"StorageClient.d.ts","sourceRoot":"","sources":["../../../../src/storage/remoting/StorageClient.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EAEhB,MAAM,UAAU,CAAA;AAGjB,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AAEvD;;;;;;;;;;;;;GAaG;AACH,qBAAa,aAAc,SAAQ,iBAAiB;gBACrC,MAAM,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM;IAQzD;;;;OAIG;cACa,OAAO,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC;CA2D1E"}
1
+ {"version":3,"file":"StorageClient.d.ts","sourceRoot":"","sources":["../../../../src/storage/remoting/StorageClient.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EAEhB,MAAM,UAAU,CAAA;AAGjB,OAAO,EAAE,iBAAiB,EAAE,KAAK,oBAAoB,EAAE,MAAM,qBAAqB,CAAA;AAGlF;;;;;;;;;;;;;GAaG;AACH,qBAAa,aAAc,SAAQ,iBAAiB;gBACrC,MAAM,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,EAAE,OAAO,GAAE,oBAAyB;IAQ7F;;;;OAIG;cACa,OAAO,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC;CAkE1E"}
@@ -4,6 +4,7 @@ exports.StorageClient = void 0;
4
4
  const WalletErrorFromJson_1 = require("../../sdk/WalletErrorFromJson");
5
5
  const WalletLogger_1 = require("../../WalletLogger");
6
6
  const StorageClientBase_1 = require("./StorageClientBase");
7
+ const BinaryJson_1 = require("./BinaryJson");
7
8
  /**
8
9
  * `StorageClient` implements the `WalletStorageProvider` interface which allows it to
9
10
  * serve as a BRC-100 wallet's active storage.
@@ -19,8 +20,8 @@ const StorageClientBase_1 = require("./StorageClientBase");
19
20
  * For details of the API implemented, follow the "See also" link for the `WalletStorageProvider` interface.
20
21
  */
21
22
  class StorageClient extends StorageClientBase_1.StorageClientBase {
22
- constructor(wallet, endpointUrl) {
23
- super(wallet, endpointUrl);
23
+ constructor(wallet, endpointUrl, options = {}) {
24
+ super(wallet, endpointUrl, options);
24
25
  }
25
26
  /// ///////////////////////////////////////////////////////////////////////////
26
27
  // JSON-RPC helper
@@ -47,10 +48,15 @@ class StorageClient extends StorageClientBase_1.StorageClientBase {
47
48
  };
48
49
  let response;
49
50
  try {
51
+ const requestUsesBinary = this.binaryRequests && this.serverSupportsBinary;
50
52
  response = await this.authClient.fetch(this.endpointUrl, {
51
53
  method: 'POST',
52
- headers: { 'Content-Type': 'application/json' },
53
- body: JSON.stringify(body)
54
+ headers: {
55
+ 'Content-Type': 'application/json',
56
+ [BinaryJson_1.BINARY_ENCODING_HEADER]: BinaryJson_1.BINARY_ENCODING,
57
+ ...(requestUsesBinary ? { [BinaryJson_1.BINARY_REQUEST_ENCODING_HEADER]: BinaryJson_1.BINARY_ENCODING } : {})
58
+ },
59
+ body: (0, BinaryJson_1.stringifyJsonRpc)(body, requestUsesBinary)
54
60
  });
55
61
  }
56
62
  catch (error_) {
@@ -60,7 +66,10 @@ class StorageClient extends StorageClientBase_1.StorageClientBase {
60
66
  if (!response.ok) {
61
67
  throw new Error(`WalletStorageClient rpcCall: network error ${response.status} ${response.statusText}`);
62
68
  }
63
- const json = await response.json();
69
+ const responseUsesBinary = response.headers.get(BinaryJson_1.BINARY_ENCODING_HEADER) === BinaryJson_1.BINARY_ENCODING;
70
+ if (responseUsesBinary)
71
+ this.serverSupportsBinary = true;
72
+ const json = (0, BinaryJson_1.parseJsonRpc)(await response.text(), responseUsesBinary);
64
73
  if (json.error) {
65
74
  (0, WalletLogger_1.logWalletError)(json.error, logger, 'error from remote service');
66
75
  const werr = (0, WalletErrorFromJson_1.WalletErrorFromJson)(json.error);