@bsv/wallet-toolbox 1.3.28 → 1.3.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 (87) hide show
  1. package/CHANGELOG.md +24 -0
  2. package/docs/client.md +550 -172
  3. package/docs/monitor.md +25 -7
  4. package/docs/services.md +136 -23
  5. package/docs/storage.md +53 -22
  6. package/docs/wallet.md +550 -172
  7. package/mobile/out/src/monitor/Monitor.js +1 -1
  8. package/mobile/out/src/monitor/Monitor.js.map +1 -1
  9. package/mobile/out/src/sdk/WalletServices.interfaces.d.ts.map +1 -1
  10. package/mobile/out/src/services/ServiceCollection.d.ts +3 -2
  11. package/mobile/out/src/services/ServiceCollection.d.ts.map +1 -1
  12. package/mobile/out/src/services/ServiceCollection.js +5 -4
  13. package/mobile/out/src/services/ServiceCollection.js.map +1 -1
  14. package/mobile/out/src/services/Services.d.ts +1 -0
  15. package/mobile/out/src/services/Services.d.ts.map +1 -1
  16. package/mobile/out/src/services/Services.js +29 -7
  17. package/mobile/out/src/services/Services.js.map +1 -1
  18. package/mobile/out/src/services/createDefaultWalletServicesOptions.d.ts.map +1 -1
  19. package/mobile/out/src/services/createDefaultWalletServicesOptions.js +1 -3
  20. package/mobile/out/src/services/createDefaultWalletServicesOptions.js.map +1 -1
  21. package/mobile/out/src/signer/methods/completeSignedTransaction.d.ts +10 -0
  22. package/mobile/out/src/signer/methods/completeSignedTransaction.d.ts.map +1 -0
  23. package/mobile/out/src/signer/methods/completeSignedTransaction.js +104 -0
  24. package/mobile/out/src/signer/methods/completeSignedTransaction.js.map +1 -0
  25. package/mobile/out/src/signer/methods/createAction.d.ts +2 -3
  26. package/mobile/out/src/signer/methods/createAction.d.ts.map +1 -1
  27. package/mobile/out/src/signer/methods/createAction.js +8 -46
  28. package/mobile/out/src/signer/methods/createAction.js.map +1 -1
  29. package/mobile/out/src/signer/methods/signAction.d.ts +2 -4
  30. package/mobile/out/src/signer/methods/signAction.d.ts.map +1 -1
  31. package/mobile/out/src/signer/methods/signAction.js +7 -54
  32. package/mobile/out/src/signer/methods/signAction.js.map +1 -1
  33. package/mobile/out/src/storage/methods/createAction.d.ts.map +1 -1
  34. package/mobile/out/src/storage/methods/createAction.js.map +1 -1
  35. package/mobile/package-lock.json +2 -2
  36. package/mobile/package.json +1 -1
  37. package/out/src/monitor/Monitor.js +1 -1
  38. package/out/src/monitor/Monitor.js.map +1 -1
  39. package/out/src/sdk/WalletServices.interfaces.d.ts.map +1 -1
  40. package/out/src/services/ServiceCollection.d.ts +3 -2
  41. package/out/src/services/ServiceCollection.d.ts.map +1 -1
  42. package/out/src/services/ServiceCollection.js +5 -4
  43. package/out/src/services/ServiceCollection.js.map +1 -1
  44. package/out/src/services/Services.d.ts +1 -0
  45. package/out/src/services/Services.d.ts.map +1 -1
  46. package/out/src/services/Services.js +29 -7
  47. package/out/src/services/Services.js.map +1 -1
  48. package/out/src/services/createDefaultWalletServicesOptions.d.ts.map +1 -1
  49. package/out/src/services/createDefaultWalletServicesOptions.js +1 -3
  50. package/out/src/services/createDefaultWalletServicesOptions.js.map +1 -1
  51. package/out/src/signer/methods/completeSignedTransaction.d.ts +10 -0
  52. package/out/src/signer/methods/completeSignedTransaction.d.ts.map +1 -0
  53. package/out/src/signer/methods/completeSignedTransaction.js +104 -0
  54. package/out/src/signer/methods/completeSignedTransaction.js.map +1 -0
  55. package/out/src/signer/methods/createAction.d.ts +2 -3
  56. package/out/src/signer/methods/createAction.d.ts.map +1 -1
  57. package/out/src/signer/methods/createAction.js +8 -46
  58. package/out/src/signer/methods/createAction.js.map +1 -1
  59. package/out/src/signer/methods/signAction.d.ts +2 -4
  60. package/out/src/signer/methods/signAction.d.ts.map +1 -1
  61. package/out/src/signer/methods/signAction.js +7 -54
  62. package/out/src/signer/methods/signAction.js.map +1 -1
  63. package/out/src/storage/StorageKnex.d.ts.map +1 -1
  64. package/out/src/storage/StorageKnex.js +7 -2
  65. package/out/src/storage/StorageKnex.js.map +1 -1
  66. package/out/src/storage/methods/createAction.d.ts.map +1 -1
  67. package/out/src/storage/methods/createAction.js.map +1 -1
  68. package/out/test/Wallet/support/operations.man.test.js +23 -5
  69. package/out/test/Wallet/support/operations.man.test.js.map +1 -1
  70. package/out/test/wallet/action/createAction2.test.d.ts.map +1 -1
  71. package/out/test/wallet/action/createAction2.test.js +1 -0
  72. package/out/test/wallet/action/createAction2.test.js.map +1 -1
  73. package/out/tsconfig.all.tsbuildinfo +1 -1
  74. package/package.json +1 -1
  75. package/src/monitor/Monitor.ts +1 -1
  76. package/src/sdk/WalletServices.interfaces.ts +2 -2
  77. package/src/services/ServiceCollection.ts +15 -10
  78. package/src/services/Services.ts +53 -42
  79. package/src/services/createDefaultWalletServicesOptions.ts +1 -4
  80. package/src/signer/methods/completeSignedTransaction.ts +115 -0
  81. package/src/signer/methods/createAction.ts +9 -68
  82. package/src/signer/methods/signAction.ts +11 -78
  83. package/src/storage/StorageKnex.ts +45 -14
  84. package/src/storage/StorageProvider.ts +1 -1
  85. package/src/storage/methods/createAction.ts +4 -1
  86. package/test/Wallet/support/operations.man.test.ts +29 -10
  87. package/test/wallet/action/createAction2.test.ts +1 -0
@@ -492,19 +492,44 @@ export class StorageKnex extends StorageProvider implements sdk.WalletStoragePro
492
492
  if (args.orderDescending) {
493
493
  let sortColumn = ''
494
494
  switch (table) {
495
- case 'certificates': sortColumn = 'certificateId'; break
496
- case 'commissions': sortColumn = 'commissionId'; break
497
- case 'output_baskets': sortColumn = 'basketId'; break
498
- case 'outputs': sortColumn = 'outputId'; break
499
- case 'output_tags': sortColumn = 'outputTagId'; break
500
- case 'proven_tx_reqs': sortColumn = 'provenTxReqId'; break
501
- case 'proven_txs': sortColumn = 'provenTxId'; break
502
- case 'sync_states': sortColumn = 'syncStateId'; break
503
- case 'transactions': sortColumn = 'transactionId'; break
504
- case 'tx_labels': sortColumn = 'txLabelId'; break
505
- case 'users': sortColumn = 'userId'; break
506
- case 'monitor_events': sortColumn = 'id'; break
507
- default: break;
495
+ case 'certificates':
496
+ sortColumn = 'certificateId'
497
+ break
498
+ case 'commissions':
499
+ sortColumn = 'commissionId'
500
+ break
501
+ case 'output_baskets':
502
+ sortColumn = 'basketId'
503
+ break
504
+ case 'outputs':
505
+ sortColumn = 'outputId'
506
+ break
507
+ case 'output_tags':
508
+ sortColumn = 'outputTagId'
509
+ break
510
+ case 'proven_tx_reqs':
511
+ sortColumn = 'provenTxReqId'
512
+ break
513
+ case 'proven_txs':
514
+ sortColumn = 'provenTxId'
515
+ break
516
+ case 'sync_states':
517
+ sortColumn = 'syncStateId'
518
+ break
519
+ case 'transactions':
520
+ sortColumn = 'transactionId'
521
+ break
522
+ case 'tx_labels':
523
+ sortColumn = 'txLabelId'
524
+ break
525
+ case 'users':
526
+ sortColumn = 'userId'
527
+ break
528
+ case 'monitor_events':
529
+ sortColumn = 'id'
530
+ break
531
+ default:
532
+ break
508
533
  }
509
534
  if (sortColumn !== '') {
510
535
  q.orderBy(sortColumn, 'desc')
@@ -1156,7 +1181,13 @@ export class StorageKnex extends StorageProvider implements sdk.WalletStoragePro
1156
1181
  async adminStats(adminIdentityKey: string): Promise<AdminStatsResult> {
1157
1182
  if (this.dbtype !== 'MySQL') throw new sdk.WERR_NOT_IMPLEMENTED('adminStats, only MySQL is supported')
1158
1183
 
1159
- const monitorEvent = verifyOneOrNone(await this.findMonitorEvents({ partial: { event: 'MonitorCallHistory'}, orderDescending: true, paged: { limit: 1 } }))
1184
+ const monitorEvent = verifyOneOrNone(
1185
+ await this.findMonitorEvents({
1186
+ partial: { event: 'MonitorCallHistory' },
1187
+ orderDescending: true,
1188
+ paged: { limit: 1 }
1189
+ })
1190
+ )
1160
1191
  const monitorStats: ServicesCallHistory | undefined = monitorEvent ? JSON.parse(monitorEvent.details!) : undefined
1161
1192
  const servicesStats = this.getServices().getServicesCallHistory(true)
1162
1193
  await this.insertMonitorEvent({
@@ -778,4 +778,4 @@ export interface StorageAdminStats {
778
778
  export interface AdminStatsResult extends StorageAdminStats {
779
779
  servicesStats?: ServicesCallHistory
780
780
  monitorStats?: ServicesCallHistory
781
- }
781
+ }
@@ -603,7 +603,10 @@ async function validateRequiredInputs(
603
603
  const output = verifyOneOrNone(await storage.findOutputs({ partial: { userId, txid, vout } }))
604
604
  if (output) {
605
605
  if (output.change) {
606
- throw new sdk.WERR_INVALID_PARAMETER(`inputs[${input.vin}]`, 'an unmanaged input. Change outputs are managed by your wallet.')
606
+ throw new sdk.WERR_INVALID_PARAMETER(
607
+ `inputs[${input.vin}]`,
608
+ 'an unmanaged input. Change outputs are managed by your wallet.'
609
+ )
607
610
  }
608
611
  input.output = output
609
612
  if (!Array.isArray(output.lockingScript) || !Number.isInteger(output.satoshis))
@@ -11,7 +11,7 @@ describe('operations.man tests', () => {
11
11
 
12
12
  test('0 review and release all production invalid change utxos', async () => {
13
13
  const { env, storage } = await _tu.createMainReviewSetup()
14
- const users = await storage.findUsers({ partial: { } })
14
+ const users = await storage.findUsers({ partial: {} })
15
15
  const withInvalid: Record<number, { user: TableUser; outputs: WalletOutput[]; total: number }> = {}
16
16
  const vargs: ValidListOutputsArgs = {
17
17
  basket: specOpInvalidChange,
@@ -55,8 +55,11 @@ describe('operations.man tests', () => {
55
55
  for (;;) {
56
56
  let log = ''
57
57
  const unfails: number[] = []
58
- debugger;
59
- const reqs = await storage.findProvenTxReqs({ partial: { status: 'doubleSpend' }, paged: { limit, offset }, orderDescending: true })
58
+ const reqs = await storage.findProvenTxReqs({
59
+ partial: { status: 'doubleSpend' },
60
+ paged: { limit, offset },
61
+ orderDescending: true
62
+ })
60
63
  for (const req of reqs) {
61
64
  const gsr = await services.getStatusForTxids([req.txid])
62
65
  if (gsr.results[0].status !== 'unknown') {
@@ -83,7 +86,11 @@ describe('operations.man tests', () => {
83
86
  for (;;) {
84
87
  let log = ''
85
88
  const unfails: number[] = []
86
- const reqs = await storage.findProvenTxReqs({ partial: { status: 'invalid' }, paged: { limit, offset }, orderDescending: true })
89
+ const reqs = await storage.findProvenTxReqs({
90
+ partial: { status: 'invalid' },
91
+ paged: { limit, offset },
92
+ orderDescending: true
93
+ })
87
94
  for (const req of reqs) {
88
95
  if (!req.txid || !req.rawTx) continue
89
96
  const gsr = await services.getStatusForTxids([req.txid])
@@ -127,8 +134,16 @@ describe('operations.man tests', () => {
127
134
  if (h.height !== mp.blockHeight || h.merkleRoot !== mr) {
128
135
  console.log(`Merkle root mismatch for ${tx.txid} ${h.merkleRoot} != ${mr}`)
129
136
  } else {
130
- if (tx.merkleRoot !== mr || tx.height !== mp.blockHeight || tx.blockHash !== h.hash || tx.index !== index || mp2.blockHeight !== tx.height || mr2 !== tx.merkleRoot || asString(tx.merklePath) !== asString(mp.toBinary())) {
131
- debugger;
137
+ if (
138
+ tx.merkleRoot !== mr ||
139
+ tx.height !== mp.blockHeight ||
140
+ tx.blockHash !== h.hash ||
141
+ tx.index !== index ||
142
+ mp2.blockHeight !== tx.height ||
143
+ mr2 !== tx.merkleRoot ||
144
+ asString(tx.merklePath) !== asString(mp.toBinary())
145
+ ) {
146
+ debugger
132
147
  await storage.updateProvenTx(tx.provenTxId, {
133
148
  merklePath: mp.toBinary(),
134
149
  merkleRoot: mr,
@@ -242,12 +257,17 @@ describe('operations.man tests', () => {
242
257
 
243
258
  test('13 review use of outputs in all following transactions', async () => {
244
259
  const { env, storage, services } = await _tu.createMainReviewSetup()
245
-
260
+
246
261
  const txids = ['2df7b5059112a42fc40adb54ee36244cee0dd216c35ad6c4b6ef4631c14a0e83'] //, '9fb38fc87c6ff39f5c7321a4c689db535c024498ed20031434485c981dd7a182', '3fb6b02e1d001dded1daee3f59dcd684489b96a35a9dfb5082b4119a31689966', '72ea8d84a4c54dbca292f4a79a5ff08cb9917fc3127c1dcff0628aeba8b40823', '0564a515566bc43c1396becf12bbf2d82d821ae7b6e0ef404eedfa090d4877c2', '3b93e4327a50a7f4a421af9fbdec0206b3b7ba5252bc5a0142d0d64aa34c2e73', 'd4b0c3d820696afad43b43e095f3b8c3df52385bb4aeddff0212e0a472dd8e4e']
247
262
  const userId = 111
248
- const txs = await storage.findTransactions({ partial: { userId }, status: ['completed', 'unproven', 'failed'], orderDescending: true, paged: { limit: 50 } })
263
+ const txs = await storage.findTransactions({
264
+ partial: { userId },
265
+ status: ['completed', 'unproven', 'failed'],
266
+ orderDescending: true,
267
+ paged: { limit: 50 }
268
+ })
249
269
  const allTxids = txs.map(tx => tx.txid!)
250
- debugger;
270
+ debugger
251
271
  const reqs = await storage.findProvenTxReqs({ partial: {}, txids: allTxids })
252
272
  const beef = new Beef()
253
273
  for (const req of reqs) {
@@ -273,5 +293,4 @@ describe('operations.man tests', () => {
273
293
  }
274
294
  await storage.destroy()
275
295
  })
276
-
277
296
  })
@@ -188,6 +188,7 @@ describe('createAction2 nosend transactions', () => {
188
188
  labels: ['spending transaction test'],
189
189
  description: 'Explicit check on returned change',
190
190
  options: {
191
+ knownTxids: [fundingResult.txid!],
191
192
  noSend: true,
192
193
  randomizeOutputs: false,
193
194
  noSendChange: []