@bsv/wallet-toolbox 1.6.34 → 1.6.35

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 (45) hide show
  1. package/CHANGELOG.md +4 -0
  2. package/docs/client.md +86 -63
  3. package/docs/wallet.md +76 -53
  4. package/mobile/out/src/Wallet.d.ts +4 -0
  5. package/mobile/out/src/Wallet.d.ts.map +1 -1
  6. package/mobile/out/src/Wallet.js +1 -2
  7. package/mobile/out/src/Wallet.js.map +1 -1
  8. package/mobile/out/src/sdk/validationHelpers.d.ts +8 -0
  9. package/mobile/out/src/sdk/validationHelpers.d.ts.map +1 -1
  10. package/mobile/out/src/sdk/validationHelpers.js +13 -2
  11. package/mobile/out/src/sdk/validationHelpers.js.map +1 -1
  12. package/mobile/out/src/services/chaintracker/ChaintracksChainTracker.d.ts.map +1 -1
  13. package/mobile/out/src/services/chaintracker/ChaintracksChainTracker.js.map +1 -1
  14. package/mobile/out/src/signer/methods/createAction.js +1 -1
  15. package/mobile/out/src/signer/methods/createAction.js.map +1 -1
  16. package/mobile/out/src/storage/methods/createAction.d.ts.map +1 -1
  17. package/mobile/out/src/storage/methods/createAction.js +3 -0
  18. package/mobile/out/src/storage/methods/createAction.js.map +1 -1
  19. package/mobile/package-lock.json +2 -2
  20. package/mobile/package.json +1 -1
  21. package/out/src/Wallet.d.ts +4 -0
  22. package/out/src/Wallet.d.ts.map +1 -1
  23. package/out/src/Wallet.js +1 -2
  24. package/out/src/Wallet.js.map +1 -1
  25. package/out/src/sdk/validationHelpers.d.ts +8 -0
  26. package/out/src/sdk/validationHelpers.d.ts.map +1 -1
  27. package/out/src/sdk/validationHelpers.js +13 -2
  28. package/out/src/sdk/validationHelpers.js.map +1 -1
  29. package/out/src/services/chaintracker/ChaintracksChainTracker.d.ts.map +1 -1
  30. package/out/src/services/chaintracker/ChaintracksChainTracker.js.map +1 -1
  31. package/out/src/signer/methods/createAction.js +1 -1
  32. package/out/src/signer/methods/createAction.js.map +1 -1
  33. package/out/src/storage/methods/createAction.d.ts.map +1 -1
  34. package/out/src/storage/methods/createAction.js +3 -0
  35. package/out/src/storage/methods/createAction.js.map +1 -1
  36. package/out/test/WalletClient/WERR.man.test.js +9 -6
  37. package/out/test/WalletClient/WERR.man.test.js.map +1 -1
  38. package/out/tsconfig.all.tsbuildinfo +1 -1
  39. package/package.json +1 -1
  40. package/src/Wallet.ts +1 -3
  41. package/src/sdk/validationHelpers.ts +15 -3
  42. package/src/services/chaintracker/ChaintracksChainTracker.ts +1 -2
  43. package/src/signer/methods/createAction.ts +1 -1
  44. package/src/storage/methods/createAction.ts +3 -0
  45. package/test/WalletClient/WERR.man.test.ts +11 -7
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bsv/wallet-toolbox",
3
- "version": "1.6.34",
3
+ "version": "1.6.35",
4
4
  "description": "BRC100 conforming wallet, wallet storage and wallet signer components",
5
5
  "main": "./out/src/index.js",
6
6
  "types": "./out/src/index.d.ts",
package/src/Wallet.ts CHANGED
@@ -770,8 +770,6 @@ export class Wallet implements WalletInterface, ProtoWallet {
770
770
 
771
771
  const { auth, vargs } = this.validateAuthAndArgs(args, validateCreateActionArgs)
772
772
 
773
- if (vargs.labels.indexOf(specOpThrowReviewActions) >= 0) throwDummyReviewActions()
774
-
775
773
  vargs.includeAllSourceTransactions = this.includeAllSourceTransactions
776
774
  if (this.randomVals && this.randomVals.length > 1) {
777
775
  vargs.randomVals = [...this.randomVals]
@@ -1105,7 +1103,7 @@ function throwIfUnsuccessfulInternalizeAction(r: StorageInternalizeActionResult)
1105
1103
  /**
1106
1104
  * Throws a WERR_REVIEW_ACTIONS with a full set of properties to test data formats and propagation.
1107
1105
  */
1108
- function throwDummyReviewActions() {
1106
+ export function throwDummyReviewActions() {
1109
1107
  const b58Beef =
1110
1108
  'gno9MC7VXii1KoCkc2nsVyYJpqzN3dhBzYATETJcys62emMKfpBof4R7GozwYEaSapUtnNvqQ57aaYYjm3U2dv9eUJ1sV46boHkQgppYmAz9YH8FdZduV8aJayPViaKcyPmbDhEw6UW8TM5iFZLXNs7HBnJHUKCeTdNK4FUEL7vAugxAV9WUUZ43BZjJk2SmSeps9TCXjt1Ci9fKWp3d9QSoYvTpxwzyUFHjRKtbUgwq55ZfkBp5bV2Bpz9qSuKywKewW7Hh4S1nCUScwwzpKDozb3zic1V9p2k8rQxoPsRxjUJ8bjhNDdsN8d7KukFuc3n47fXzdWttvnxwsujLJRGnQbgJuknQqx3KLf5kJXHzwjG6TzigZk2t24qeB6d3hbYiaDr2fFkUJBL3tukTHhfNkQYRXuz3kucVDzvejHyqJaF51mXG8BjMN5aQj91ZJXCaPVqkMWCzmvyaqmXMdRiJdSAynhXbQK91xf6RwdNhz1tg5f9B6oJJMhsi9UYSVymmax8VLKD9AKzBCBDcfyD83m3jyS1VgKGZn3SkQmr6bsoWq88L3GsMnnmYUGogvdAYarTqg3pzkjCMxHzmJBMN6ofnUk8c1sRTXQue7BbyUaN5uZu3KW6CmFsEfpuqVvnqFW93TU1jrPP2S8yz8AexAnARPCKE8Yz7RfVaT6RCavwQKL3u5iookwRWEZXW1QWmM37yJWHD87SjVynyg327a1CLwcBxmE2CB48QeNVGyQki4CTQMqw2o8TMhDPJej1g68oniAjBcxBLSCs7KGvK3k7AfrHbCMULX9CTibYhCjdFjbsbBoocqJpxxcvkMo1fEEiAzZuiBVZQDYktDdTVbhKHvYkW25HcYX75NJrpNAhm7AjFeKLzEVxqAQkMfvTufpESNRZF4kQqg2Rg8h2ajcKTd5cpEPwXCrZLHm4EaZEmZVbg3QNfGhn7BJu1bHMtLqPD4y8eJxm2uGrW6saf6qKYmmu64F8A667NbD4yskPRQ1S863VzwGpxxmgLc1Ta3R46jEqsAoRDoZVUaCgBBZG3Yg1CTgi1EVBMXU7qvY4n3h8o2FLCEMWY4KadnV3iD4FbcdCmg4yxBosNAZgbPjhgGjCimjh4YsLd9zymGLmivmz2ZBg5m3xaiXT9NN81X9C1JUujd'
1111
1109
  const beef = Beef.fromBinary(Utils.fromBase58(b58Beef))
@@ -44,7 +44,7 @@ import {
44
44
  Utils,
45
45
  WalletPayment
46
46
  } from '@bsv/sdk'
47
- import { OutPoint } from './types'
47
+ import { OutPoint, specOpThrowReviewActions } from './types'
48
48
  import { WERR_INTERNAL, WERR_INVALID_PARAMETER } from './WERR_errors'
49
49
 
50
50
  export function parseWalletOutpoint(outpoint: string): {
@@ -327,6 +327,8 @@ export interface ValidProcessActionArgs extends ValidWalletSignerArgs {
327
327
  isNoSend: boolean
328
328
  // true if options.acceptDelayedBroadcast is true
329
329
  isDelayed: boolean
330
+ // true if WERR_REVIEW_ACTIONS should be thrown to test review actions handling
331
+ isTestWerrReviewActions: boolean
330
332
  }
331
333
 
332
334
  export interface ValidCreateActionArgs extends ValidProcessActionArgs {
@@ -357,6 +359,13 @@ export interface ValidSignActionArgs extends ValidProcessActionArgs {
357
359
  options: ValidSignActionOptions
358
360
  }
359
361
 
362
+ /**
363
+ * Validate the arguments for creating a new action.
364
+ *
365
+ * @param args
366
+ * @returns validated arguments
367
+ * @throws primarily WERR_INVALID_PARAMETER if args are invalid.
368
+ */
360
369
  export function validateCreateActionArgs(args: CreateActionArgs): ValidCreateActionArgs {
361
370
  const vargs: ValidCreateActionArgs = {
362
371
  description: validateStringLength(args.description, 'description', 5, 2000),
@@ -374,8 +383,10 @@ export function validateCreateActionArgs(args: CreateActionArgs): ValidCreateAct
374
383
  isRemixChange: false,
375
384
  isSignAction: false,
376
385
  randomVals: undefined,
377
- includeAllSourceTransactions: false
386
+ includeAllSourceTransactions: false,
387
+ isTestWerrReviewActions: false
378
388
  }
389
+ vargs.isTestWerrReviewActions = vargs.labels.indexOf(specOpThrowReviewActions) >= 0
379
390
  vargs.isSendWith = vargs.options.sendWith.length > 0
380
391
  vargs.isRemixChange = !vargs.isSendWith && vargs.inputs.length === 0 && vargs.outputs.length === 0
381
392
  vargs.isNewTx = vargs.isRemixChange || vargs.inputs.length > 0 || vargs.outputs.length > 0
@@ -413,7 +424,8 @@ export function validateSignActionArgs(args: SignActionArgs): ValidSignActionArg
413
424
  isDelayed: false,
414
425
  isNoSend: false,
415
426
  isNewTx: true,
416
- isRemixChange: false
427
+ isRemixChange: false,
428
+ isTestWerrReviewActions: false
417
429
  }
418
430
  vargs.isSendWith = vargs.options.sendWith.length > 0
419
431
  vargs.isDelayed = vargs.options.acceptDelayedBroadcast
@@ -19,8 +19,7 @@ export class ChaintracksChainTracker implements ChainTracker {
19
19
  constructor(chain?: Chain, chaintracks?: ChaintracksClientApi, options?: ChaintracksChainTrackerOptions) {
20
20
  chain ||= 'main'
21
21
  this.chaintracks =
22
- chaintracks ??
23
- new ChaintracksServiceClient(chain, `https://${chain}net-chaintracks.babbage.systems`)
22
+ chaintracks ?? new ChaintracksServiceClient(chain, `https://${chain}net-chaintracks.babbage.systems`)
24
23
  this.cache = {}
25
24
  this.options = options || {}
26
25
  }
@@ -44,7 +44,7 @@ export async function createAction(
44
44
 
45
45
  let prior: PendingSignAction | undefined = undefined
46
46
 
47
- if (vargs.isNewTx) {
47
+ if (vargs.isNewTx || vargs.isTestWerrReviewActions) {
48
48
  prior = await createNewTx(wallet, vargs)
49
49
 
50
50
  if (vargs.isSignAction) {
@@ -52,6 +52,7 @@ import { asArray, asString } from '../../utility/utilityHelpers.noBuffer'
52
52
  import { TableOutputTag } from '../schema/tables/TableOutputTag'
53
53
  import { TableTransaction } from '../schema/tables/TableTransaction'
54
54
  import { EntityProvenTx } from '../schema/entities/EntityProvenTx'
55
+ import { throwDummyReviewActions } from '../../Wallet'
55
56
 
56
57
  let disableDoubleSpendCheckForTest = true
57
58
  export function setDisableDoubleSpendCheckForTest(v: boolean) {
@@ -66,6 +67,8 @@ export async function createAction(
66
67
  ): Promise<StorageCreateActionResult> {
67
68
  //stampLog(vargs, `start storage createTransactionSdk`)
68
69
 
70
+ if (vargs.isTestWerrReviewActions) throwDummyReviewActions()
71
+
69
72
  if (!vargs.isNewTx)
70
73
  // The purpose of this function is to create the initial storage records associated
71
74
  // with a new transaction. It's an error if we have no new inputs or outputs...
@@ -1,16 +1,20 @@
1
- import { WalletClient } from '@bsv/sdk'
1
+ import { CreateActionArgs, WalletClient } from '@bsv/sdk'
2
2
  import { specOpThrowReviewActions } from '../../src/sdk/types'
3
3
  import { WalletError } from '../../src/sdk/WalletError'
4
4
  import { WERR_REVIEW_ACTIONS } from '../../src/sdk/WERR_errors'
5
+ import { validateCreateActionArgs } from '../../src/sdk'
5
6
 
6
- test('0 WERR_REVIEW_ACTIONS', async () => {
7
- const wallet = new WalletClient(undefined, '0.WERR.man.test')
7
+ test('0 WERR_REVIEW_ACTIONS via WalletClient', async () => {
8
+ const wallet = new WalletClient('auto', '0.WERR.man.test')
9
+
10
+ const args: CreateActionArgs = {
11
+ labels: [specOpThrowReviewActions],
12
+ description: 'must throw'
13
+ }
14
+ const vargs = validateCreateActionArgs(args)
8
15
 
9
16
  try {
10
- const r = await wallet.createAction({
11
- labels: [specOpThrowReviewActions],
12
- description: 'must throw'
13
- })
17
+ const r = await wallet.createAction(args)
14
18
  expect(true).toBe(false)
15
19
  } catch (eu: unknown) {
16
20
  const e = WalletError.fromUnknown(eu) as WERR_REVIEW_ACTIONS