@bsv/wallet-toolbox-client 2.1.27 → 2.1.28

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 (28) hide show
  1. package/README.md +92 -0
  2. package/out/src/monitor/Monitor.d.ts.map +1 -1
  3. package/out/src/monitor/Monitor.js +12 -0
  4. package/out/src/monitor/Monitor.js.map +1 -1
  5. package/out/src/monitor/tasks/TaskCheckNoSends.d.ts +59 -1
  6. package/out/src/monitor/tasks/TaskCheckNoSends.d.ts.map +1 -1
  7. package/out/src/monitor/tasks/TaskCheckNoSends.js +93 -4
  8. package/out/src/monitor/tasks/TaskCheckNoSends.js.map +1 -1
  9. package/out/src/signer/methods/internalizeAction.d.ts +8 -1
  10. package/out/src/signer/methods/internalizeAction.d.ts.map +1 -1
  11. package/out/src/signer/methods/internalizeAction.js +8 -1
  12. package/out/src/signer/methods/internalizeAction.js.map +1 -1
  13. package/out/src/storage/StorageProvider.d.ts.map +1 -1
  14. package/out/src/storage/StorageProvider.js +79 -1
  15. package/out/src/storage/StorageProvider.js.map +1 -1
  16. package/out/src/storage/methods/ListActionsSpecOp.d.ts.map +1 -1
  17. package/out/src/storage/methods/ListActionsSpecOp.js +68 -5
  18. package/out/src/storage/methods/ListActionsSpecOp.js.map +1 -1
  19. package/out/src/storage/methods/createAction.js +27 -13
  20. package/out/src/storage/methods/createAction.js.map +1 -1
  21. package/out/src/storage/methods/internalizeAction.d.ts +11 -1
  22. package/out/src/storage/methods/internalizeAction.d.ts.map +1 -1
  23. package/out/src/storage/methods/internalizeAction.js +94 -26
  24. package/out/src/storage/methods/internalizeAction.js.map +1 -1
  25. package/out/src/storage/portable/index.d.ts.map +1 -1
  26. package/out/src/storage/portable/index.js +160 -114
  27. package/out/src/storage/portable/index.js.map +1 -1
  28. package/package.json +3 -3
@@ -20,7 +20,17 @@ const blockHeaderUtilities_1 = require("../../services/chaintracker/chaintracks/
20
20
  * Processing starts with simple validation and then checks for a pre-existing transaction.
21
21
  * If the transaction is already known to the user, then the outputs are reviewed against the existing outputs treatment,
22
22
  * and merge rules are added to the arguments passed to the storage layer.
23
- * The existing transaction must be in the 'unproven' or 'completed' status. Any other status is an error.
23
+ *
24
+ * The existing transaction's `status` determines what the merge path does next:
25
+ * - `'unproven'` or `'completed'`: outputs are merged into the existing record. The transaction status is left as-is.
26
+ * - `'nosend'`: an ambiguous case. The transaction was created with `noSend: true` and may have been externally
27
+ * broadcast, may be sitting in a sendWith chain, or may be stuck mid-flight. The merge path treats the
28
+ * `internalizeAction` call as explicit authorization to advance the lifecycle. Specifically: `transactions.status`
29
+ * is promoted to `'completed'` (when a BUMP is included in the BEEF) or `'unproven'` (otherwise), and the
30
+ * `proven_tx_req` is moved out of `'nosend'` so Monitor's standard proof-fetching flow can finalize it.
31
+ * This makes the `internalizeAction` semantics consistent regardless of whether the originator shares the
32
+ * same storage as the internalizer or not.
33
+ * - Any other status: an error.
24
34
  *
25
35
  * When the transaction already exists, the description is updated. The isOutgoing sense is not changed.
26
36
  *
@@ -246,8 +256,36 @@ class InternalizeActionContext {
246
256
  }
247
257
  return tr.tx;
248
258
  }
259
+ async findOrInsertProvenTxFromBump(bump, btx) {
260
+ const now = new Date();
261
+ const merkleRoot = bump.computeRoot(this.txid);
262
+ const indexEntry = bump.path[0].find(p => p.hash === this.txid);
263
+ if (indexEntry == null) {
264
+ throw new WERR_errors_1.WERR_INTERNAL(`Could not determine transaction index for txid ${this.txid} in bump path. Expected to find txid in bump.path[0]: ${JSON.stringify(bump.path[0])}`);
265
+ }
266
+ const index = indexEntry.offset;
267
+ const header = await this.storage.getServices().getHeaderForHeight(bump.blockHeight);
268
+ if (!header) {
269
+ throw new WERR_errors_1.WERR_INTERNAL(`Block header not found for height ${bump.blockHeight}`);
270
+ }
271
+ const hash = (0, blockHeaderUtilities_1.blockHash)(header);
272
+ const provenTxR = await this.storage.findOrInsertProvenTx({
273
+ created_at: now,
274
+ updated_at: now,
275
+ provenTxId: 0,
276
+ txid: this.txid,
277
+ height: bump.blockHeight,
278
+ index,
279
+ merklePath: bump.toBinary(),
280
+ rawTx: btx.rawTx,
281
+ blockHash: hash,
282
+ merkleRoot
283
+ });
284
+ return provenTxR.proven;
285
+ }
249
286
  async mergedInternalize() {
250
287
  const transactionId = this.etx.transactionId;
288
+ const wasNoSend = this.etx.status === 'nosend';
251
289
  await this.addLabels(transactionId);
252
290
  for (const payment of this.walletPayments) {
253
291
  if ((payment.eo != null) && !payment.ignore)
@@ -261,6 +299,60 @@ class InternalizeActionContext {
261
299
  else
262
300
  await this.storeNewBasketInsertionForOutput(transactionId, basket);
263
301
  }
302
+ // Lifecycle advance when merging into a tx that was 'nosend'.
303
+ //
304
+ // Background: an internalizeAction call against an existing tx in
305
+ // 'nosend' status is the caller asserting the tx has now been
306
+ // externally broadcast (and potentially mined if the BEEF includes
307
+ // a BUMP). Before this advance, mergedInternalize only updated
308
+ // labels + per-output ownership records and left transactions.status
309
+ // and proven_tx_reqs.status unchanged. The nosend state then had no
310
+ // reliable retirement path: TaskCheckNoSends's default daily cadence
311
+ // combined with intermittent wallet uptime meant the req could sit
312
+ // in 'nosend' indefinitely, and a subsequent abortAction call would
313
+ // unconditionally invalidate the on-chain tx — orphaning every
314
+ // output the tx produced.
315
+ //
316
+ // BUMP-present path: mirror newInternalize's findOrInsertProvenTx
317
+ // path, then promote the existing transaction record to 'completed'
318
+ // with the new provenTxId and retire the proven_tx_req to
319
+ // 'completed' too.
320
+ //
321
+ // BUMP-absent path: promote transactions.status to 'unproven' (so
322
+ // listOutputs filters the tx's outputs into the spendable set
323
+ // immediately) and transition the proven_tx_req to 'unmined' so
324
+ // TaskCheckForProofs picks it up on its next nudge cycle. This
325
+ // hands off to Monitor's standard proof-fetching flow.
326
+ if (wasNoSend) {
327
+ const bump = this.ab.findBump(this.txid);
328
+ if (bump != null) {
329
+ const btx = this.ab.findTxid(this.txid);
330
+ if (btx == null) {
331
+ throw new WERR_errors_1.WERR_INTERNAL(`Could not find transaction ${this.txid} in AtomicBEEF`);
332
+ }
333
+ const proven = await this.findOrInsertProvenTxFromBump(bump, btx);
334
+ await this.storage.updateTransaction(transactionId, {
335
+ provenTxId: proven.provenTxId,
336
+ status: 'completed'
337
+ });
338
+ const req = await EntityProvenTxReq_1.EntityProvenTxReq.fromStorageTxid(this.storage, this.txid);
339
+ if (req != null && req.status === 'nosend') {
340
+ req.addHistoryNote({ what: 'internalizeAction-bumpRetire', userId: this.userId });
341
+ req.provenTxId = proven.provenTxId;
342
+ req.status = 'completed';
343
+ await req.updateStorageDynamicProperties(this.storage);
344
+ }
345
+ }
346
+ else {
347
+ await this.storage.updateTransaction(transactionId, { status: 'unproven' });
348
+ const req = await EntityProvenTxReq_1.EntityProvenTxReq.fromStorageTxid(this.storage, this.txid);
349
+ if (req != null && req.status === 'nosend') {
350
+ req.addHistoryNote({ what: 'internalizeAction-nosendRetire', userId: this.userId });
351
+ req.status = 'unmined';
352
+ await req.updateStorageDynamicProperties(this.storage);
353
+ }
354
+ }
355
+ }
264
356
  }
265
357
  /**
266
358
  * internalize output(s) from a transaction with txid unknown to storage.
@@ -276,31 +368,7 @@ class InternalizeActionContext {
276
368
  // The presence bump indicates the transaction has already been mined.
277
369
  // Verify a provenTx record exist before creating a new transaction with completed status...
278
370
  // Which normally means creating a new provenTx record.
279
- const now = new Date();
280
- const merkleRoot = bump.computeRoot(this.txid);
281
- const indexEntry = bump.path[0].find(p => p.hash === this.txid);
282
- if (indexEntry == null) {
283
- throw new WERR_errors_1.WERR_INTERNAL(`Could not determine transaction index for txid ${this.txid} in bump path. Expected to find txid in bump.path[0]: ${JSON.stringify(bump.path[0])}`);
284
- }
285
- const index = indexEntry.offset;
286
- const header = await this.storage.getServices().getHeaderForHeight(bump.blockHeight);
287
- if (!header) {
288
- throw new WERR_errors_1.WERR_INTERNAL(`Block header not found for height ${bump.blockHeight}`);
289
- }
290
- const hash = (0, blockHeaderUtilities_1.blockHash)(header);
291
- const provenTxR = await this.storage.findOrInsertProvenTx({
292
- created_at: now,
293
- updated_at: now,
294
- provenTxId: 0,
295
- txid: this.txid,
296
- height: bump.blockHeight,
297
- index,
298
- merklePath: bump.toBinary(),
299
- rawTx: btx.rawTx,
300
- blockHash: hash,
301
- merkleRoot
302
- });
303
- pr.proven = provenTxR.proven;
371
+ pr.proven = await this.findOrInsertProvenTxFromBump(bump, btx);
304
372
  }
305
373
  this.etx = await this.findOrInsertTargetTransaction(this.satoshis, pr.proven);
306
374
  const transactionId = this.etx.transactionId;
@@ -1 +1 @@
1
- {"version":3,"file":"internalizeAction.js","sourceRoot":"","sources":["../../../../../src/storage/methods/internalizeAction.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"internalizeAction.js","sourceRoot":"","sources":["../../../../../src/storage/methods/internalizeAction.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/storage/portable/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/storage/portable/index.ts"],"names":[],"mappings":"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"}
@@ -209,14 +209,32 @@ async function encryptBRC39(documentOrJson, password, options) {
209
209
  header.set(nonce, BRC39_HEADER_LENGTH + salt.length);
210
210
  return Array.from(concatBytes(header, result, authenticationTag));
211
211
  }
212
- async function decryptBRC39(bytes, password) {
213
- const file = new Uint8Array(bytes);
212
+ function parseBRC39Header(file) {
214
213
  if (file.length < BRC39_HEADER_LENGTH + BRC39_TAG_LENGTH + 2)
215
214
  throw new Error('Invalid BRC-39 file: too short');
216
215
  for (let i = 0; i < BRC39_MAGIC.length; i++) {
217
216
  if (file[i] !== BRC39_MAGIC[i])
218
217
  throw new Error('Invalid BRC-39 file: bad magic');
219
218
  }
219
+ assertHeaderConstants(file);
220
+ for (let i = 21; i < BRC39_HEADER_LENGTH; i++) {
221
+ if (file[i] !== 0)
222
+ throw new Error('Invalid BRC-39 reserved bytes');
223
+ }
224
+ const saltLength = file[9];
225
+ const nonceLength = file[10];
226
+ if (saltLength === 0)
227
+ throw new Error('Invalid BRC-39 salt length');
228
+ if (nonceLength === 0)
229
+ throw new Error('Invalid BRC-39 nonce length');
230
+ const iterations = readUInt32BE(file, 11);
231
+ const memoryKiB = readUInt32BE(file, 15);
232
+ const parallelism = file[19];
233
+ const hashLength = file[20];
234
+ validateKdfParams(iterations, memoryKiB, parallelism, hashLength);
235
+ return { saltLength, nonceLength, iterations, memoryKiB, parallelism, hashLength };
236
+ }
237
+ function assertHeaderConstants(file) {
220
238
  if (file[4] !== 1)
221
239
  throw new Error('Unsupported BRC-39 format version');
222
240
  if (file[5] !== 1)
@@ -227,29 +245,18 @@ async function decryptBRC39(bytes, password) {
227
245
  throw new Error('Unsupported BRC-39 KDF type');
228
246
  if (file[8] !== 0)
229
247
  throw new Error('Invalid BRC-39 flags');
230
- const saltLength = file[9];
231
- const nonceLength = file[10];
232
- const iterations = readUInt32BE(file, 11);
233
- const memoryKiB = readUInt32BE(file, 15);
234
- const parallelism = file[19];
235
- const hashLength = file[20];
236
- for (let i = 21; i < BRC39_HEADER_LENGTH; i++) {
237
- if (file[i] !== 0)
238
- throw new Error('Invalid BRC-39 reserved bytes');
239
- }
240
- if (saltLength === 0)
241
- throw new Error('Invalid BRC-39 salt length');
242
- if (nonceLength === 0)
243
- throw new Error('Invalid BRC-39 nonce length');
244
- validateKdfParams(iterations, memoryKiB, parallelism, hashLength);
245
- const payloadStart = BRC39_HEADER_LENGTH + saltLength + nonceLength;
248
+ }
249
+ async function decryptBRC39(bytes, password) {
250
+ const file = new Uint8Array(bytes);
251
+ const header = parseBRC39Header(file);
252
+ const payloadStart = BRC39_HEADER_LENGTH + header.saltLength + header.nonceLength;
246
253
  if (file.length <= payloadStart + BRC39_TAG_LENGTH)
247
254
  throw new Error('Invalid BRC-39 ciphertext');
248
- const salt = file.slice(BRC39_HEADER_LENGTH, BRC39_HEADER_LENGTH + saltLength);
249
- const nonce = file.slice(BRC39_HEADER_LENGTH + saltLength, payloadStart);
255
+ const salt = file.slice(BRC39_HEADER_LENGTH, BRC39_HEADER_LENGTH + header.saltLength);
256
+ const nonce = file.slice(BRC39_HEADER_LENGTH + header.saltLength, payloadStart);
250
257
  const ciphertext = file.slice(payloadStart, file.length - BRC39_TAG_LENGTH);
251
258
  const tag = file.slice(file.length - BRC39_TAG_LENGTH);
252
- const key = await deriveBRC39Key(password, salt, iterations, memoryKiB, parallelism);
259
+ const key = await deriveBRC39Key(password, salt, header.iterations, header.memoryKiB, header.parallelism);
253
260
  const plaintext = (0, AESGCM_1.AESGCMDecrypt)(ciphertext, nonce, tag, key);
254
261
  if (plaintext == null)
255
262
  throw new Error('BRC-39 authentication failed');
@@ -469,33 +476,40 @@ function normalizeSyncMap(source) {
469
476
  return normalized;
470
477
  for (const key of Object.keys(normalized)) {
471
478
  const incoming = source[key];
472
- if (!isObject(incoming))
473
- continue;
474
- const target = normalized[key];
475
- if (typeof incoming.entityName === 'string')
476
- target.entityName = incoming.entityName;
477
- if (Number.isInteger(incoming.count))
478
- target.count = incoming.count;
479
- if (isObject(incoming.idMap)) {
480
- target.idMap = {};
481
- for (const [remoteId, localId] of Object.entries(incoming.idMap)) {
482
- const parsedRemoteId = Number(remoteId);
483
- if (Number.isInteger(parsedRemoteId) && Number.isInteger(localId)) {
484
- target.idMap[parsedRemoteId] = localId;
485
- }
486
- }
487
- }
488
- if (typeof incoming.maxUpdated_at === 'string') {
489
- const maxUpdatedAt = new Date(incoming.maxUpdated_at);
490
- if (!Number.isNaN(maxUpdatedAt.getTime()))
491
- target.maxUpdated_at = maxUpdatedAt;
492
- }
493
- else if (incoming.maxUpdated_at instanceof Date) {
494
- target.maxUpdated_at = incoming.maxUpdated_at;
495
- }
479
+ if (isObject(incoming))
480
+ mergeSyncMapEntry(normalized[key], incoming);
496
481
  }
497
482
  return normalized;
498
483
  }
484
+ function mergeSyncMapEntry(target, incoming) {
485
+ if (typeof incoming.entityName === 'string')
486
+ target.entityName = incoming.entityName;
487
+ if (Number.isInteger(incoming.count))
488
+ target.count = incoming.count;
489
+ if (isObject(incoming.idMap))
490
+ target.idMap = parseIdMap(incoming.idMap);
491
+ applyMaxUpdatedAt(target, incoming.maxUpdated_at);
492
+ }
493
+ function parseIdMap(incoming) {
494
+ const idMap = {};
495
+ for (const [remoteId, localId] of Object.entries(incoming)) {
496
+ const parsedRemoteId = Number(remoteId);
497
+ if (Number.isInteger(parsedRemoteId) && Number.isInteger(localId)) {
498
+ idMap[parsedRemoteId] = localId;
499
+ }
500
+ }
501
+ return idMap;
502
+ }
503
+ function applyMaxUpdatedAt(target, value) {
504
+ if (typeof value === 'string') {
505
+ const maxUpdatedAt = new Date(value);
506
+ if (!Number.isNaN(maxUpdatedAt.getTime()))
507
+ target.maxUpdated_at = maxUpdatedAt;
508
+ }
509
+ else if (value instanceof Date) {
510
+ target.maxUpdated_at = value;
511
+ }
512
+ }
499
513
  function remapEntityIdMap(idMap, importIdMap) {
500
514
  for (const key of Object.keys(idMap)) {
501
515
  const targetId = importIdMap[idMap[Number(key)]];
@@ -530,101 +544,120 @@ function countDecodedRows(data) {
530
544
  data.txLabels.length + data.txLabelMaps.length + data.certificates.length + data.certificateFields.length +
531
545
  data.syncStates.length;
532
546
  }
533
- function validateRelationships(data) {
534
- const userId = requireNumber(data.user.userId, 'user.userId');
535
- const txIds = ids(data.tables.transactions, 'transactionId', 'transactions');
536
- const txidValues = new Set(data.tables.transactions.map(t => t.txid).filter((v) => typeof v === 'string'));
537
- const provenTxIds = ids(data.tables.provenTxs, 'provenTxId', 'provenTxs');
538
- const basketIds = ids(data.tables.outputBaskets, 'basketId', 'outputBaskets');
539
- const outputIds = ids(data.tables.outputs, 'outputId', 'outputs');
540
- const outputTagIds = ids(data.tables.outputTags, 'outputTagId', 'outputTags');
541
- const txLabelIds = ids(data.tables.txLabels, 'txLabelId', 'txLabels');
542
- const certificateIds = ids(data.tables.certificates, 'certificateId', 'certificates');
547
+ function buildRelationshipIndex(data) {
548
+ return {
549
+ userId: requireNumber(data.user.userId, 'user.userId'),
550
+ txIds: ids(data.tables.transactions, 'transactionId', 'transactions'),
551
+ txidValues: new Set(data.tables.transactions.map(t => t.txid).filter((v) => typeof v === 'string')),
552
+ provenTxIds: ids(data.tables.provenTxs, 'provenTxId', 'provenTxs'),
553
+ basketIds: ids(data.tables.outputBaskets, 'basketId', 'outputBaskets'),
554
+ outputIds: ids(data.tables.outputs, 'outputId', 'outputs'),
555
+ outputTagIds: ids(data.tables.outputTags, 'outputTagId', 'outputTags'),
556
+ txLabelIds: ids(data.tables.txLabels, 'txLabelId', 'txLabels'),
557
+ certificateIds: ids(data.tables.certificates, 'certificateId', 'certificates')
558
+ };
559
+ }
560
+ function requireRef(set, value, path, message) {
561
+ if (!set.has(requireNumber(value, path)))
562
+ throw new Error(message);
563
+ }
564
+ function validateTransactions(data, idx) {
543
565
  for (const row of data.tables.transactions) {
544
- requireUserId(row, userId, 'transactions');
545
- if (row.provenTxId != null && !provenTxIds.has(requireNumber(row.provenTxId, 'transaction.provenTxId'))) {
546
- throw new Error('BRC-38 transaction.provenTxId does not reference an exported provenTx');
566
+ requireUserId(row, idx.userId, 'transactions');
567
+ if (row.provenTxId != null) {
568
+ requireRef(idx.provenTxIds, row.provenTxId, 'transaction.provenTxId', 'BRC-38 transaction.provenTxId does not reference an exported provenTx');
547
569
  }
548
570
  }
549
- for (const row of data.tables.outputBaskets)
550
- requireUserId(row, userId, 'outputBaskets');
551
- for (const row of data.tables.outputTags)
552
- requireUserId(row, userId, 'outputTags');
553
- for (const row of data.tables.txLabels)
554
- requireUserId(row, userId, 'txLabels');
555
- for (const row of data.tables.certificates)
556
- requireUserId(row, userId, 'certificates');
557
- for (const row of data.tables.syncStates)
558
- requireUserId(row, userId, 'syncStates');
571
+ }
572
+ function validateOutputs(data, idx) {
559
573
  for (const row of data.tables.outputs) {
560
- requireUserId(row, userId, 'outputs');
561
- if (!txIds.has(requireNumber(row.transactionId, 'output.transactionId'))) {
562
- throw new Error('BRC-38 output.transactionId does not reference an exported transaction');
563
- }
564
- if (row.basketId != null && !basketIds.has(requireNumber(row.basketId, 'output.basketId'))) {
565
- throw new Error('BRC-38 output.basketId does not reference an exported output basket');
574
+ requireUserId(row, idx.userId, 'outputs');
575
+ requireRef(idx.txIds, row.transactionId, 'output.transactionId', 'BRC-38 output.transactionId does not reference an exported transaction');
576
+ if (row.basketId != null) {
577
+ requireRef(idx.basketIds, row.basketId, 'output.basketId', 'BRC-38 output.basketId does not reference an exported output basket');
566
578
  }
567
- if (row.spentBy != null && !txIds.has(requireNumber(row.spentBy, 'output.spentBy'))) {
568
- throw new Error('BRC-38 output.spentBy does not reference an exported transaction');
579
+ if (row.spentBy != null) {
580
+ requireRef(idx.txIds, row.spentBy, 'output.spentBy', 'BRC-38 output.spentBy does not reference an exported transaction');
569
581
  }
570
582
  }
583
+ }
584
+ function validateCommissions(data, idx) {
571
585
  for (const row of data.tables.commissions) {
572
- requireUserId(row, userId, 'commissions');
573
- if (!txIds.has(requireNumber(row.transactionId, 'commission.transactionId'))) {
574
- throw new Error('BRC-38 commission.transactionId does not reference an exported transaction');
575
- }
586
+ requireUserId(row, idx.userId, 'commissions');
587
+ requireRef(idx.txIds, row.transactionId, 'commission.transactionId', 'BRC-38 commission.transactionId does not reference an exported transaction');
576
588
  }
589
+ }
590
+ function validateTxLabelMaps(data, idx) {
577
591
  for (const row of data.tables.txLabelMaps) {
578
- if (!txIds.has(requireNumber(row.transactionId, 'txLabelMap.transactionId'))) {
579
- throw new Error('BRC-38 txLabelMap.transactionId does not reference an exported transaction');
580
- }
581
- if (!txLabelIds.has(requireNumber(row.txLabelId, 'txLabelMap.txLabelId'))) {
582
- throw new Error('BRC-38 txLabelMap.txLabelId does not reference an exported transaction label');
583
- }
592
+ requireRef(idx.txIds, row.transactionId, 'txLabelMap.transactionId', 'BRC-38 txLabelMap.transactionId does not reference an exported transaction');
593
+ requireRef(idx.txLabelIds, row.txLabelId, 'txLabelMap.txLabelId', 'BRC-38 txLabelMap.txLabelId does not reference an exported transaction label');
584
594
  }
595
+ }
596
+ function validateOutputTagMaps(data, idx) {
585
597
  for (const row of data.tables.outputTagMaps) {
586
- if (!outputIds.has(requireNumber(row.outputId, 'outputTagMap.outputId'))) {
587
- throw new Error('BRC-38 outputTagMap.outputId does not reference an exported output');
588
- }
589
- if (!outputTagIds.has(requireNumber(row.outputTagId, 'outputTagMap.outputTagId'))) {
590
- throw new Error('BRC-38 outputTagMap.outputTagId does not reference an exported output tag');
591
- }
598
+ requireRef(idx.outputIds, row.outputId, 'outputTagMap.outputId', 'BRC-38 outputTagMap.outputId does not reference an exported output');
599
+ requireRef(idx.outputTagIds, row.outputTagId, 'outputTagMap.outputTagId', 'BRC-38 outputTagMap.outputTagId does not reference an exported output tag');
592
600
  }
601
+ }
602
+ function validateCertificateFields(data, idx) {
593
603
  for (const row of data.tables.certificateFields) {
594
- requireUserId(row, userId, 'certificateFields');
595
- if (!certificateIds.has(requireNumber(row.certificateId, 'certificateField.certificateId'))) {
596
- throw new Error('BRC-38 certificateField.certificateId does not reference an exported certificate');
597
- }
604
+ requireUserId(row, idx.userId, 'certificateFields');
605
+ requireRef(idx.certificateIds, row.certificateId, 'certificateField.certificateId', 'BRC-38 certificateField.certificateId does not reference an exported certificate');
598
606
  }
607
+ }
608
+ function validateProvenTxReqs(data, idx) {
599
609
  for (const row of data.tables.provenTxReqs) {
600
- if (!txidValues.has(requireString(row.txid, 'provenTxReq.txid'))) {
610
+ if (!idx.txidValues.has(requireString(row.txid, 'provenTxReq.txid'))) {
601
611
  throw new Error('BRC-38 provenTxReq.txid does not match an exported transaction');
602
612
  }
603
- if (row.provenTxId != null && !provenTxIds.has(requireNumber(row.provenTxId, 'provenTxReq.provenTxId'))) {
604
- throw new Error('BRC-38 provenTxReq.provenTxId does not reference an exported provenTx');
613
+ if (row.provenTxId != null) {
614
+ requireRef(idx.provenTxIds, row.provenTxId, 'provenTxReq.provenTxId', 'BRC-38 provenTxReq.provenTxId does not reference an exported provenTx');
605
615
  }
606
616
  }
607
617
  }
618
+ function validateRelationships(data) {
619
+ const idx = buildRelationshipIndex(data);
620
+ validateTransactions(data, idx);
621
+ for (const row of data.tables.outputBaskets)
622
+ requireUserId(row, idx.userId, 'outputBaskets');
623
+ for (const row of data.tables.outputTags)
624
+ requireUserId(row, idx.userId, 'outputTags');
625
+ for (const row of data.tables.txLabels)
626
+ requireUserId(row, idx.userId, 'txLabels');
627
+ for (const row of data.tables.certificates)
628
+ requireUserId(row, idx.userId, 'certificates');
629
+ for (const row of data.tables.syncStates)
630
+ requireUserId(row, idx.userId, 'syncStates');
631
+ validateOutputs(data, idx);
632
+ validateCommissions(data, idx);
633
+ validateTxLabelMaps(data, idx);
634
+ validateOutputTagMaps(data, idx);
635
+ validateCertificateFields(data, idx);
636
+ validateProvenTxReqs(data, idx);
637
+ }
608
638
  function validatePortableRows(kind, rows, path) {
609
639
  var _a, _b, _c;
610
640
  const dateFields = new Set((_a = dateFieldsByKind[kind]) !== null && _a !== void 0 ? _a : []);
611
641
  const binaryFields = new Set((_b = binaryFieldsByKind[kind]) !== null && _b !== void 0 ? _b : []);
612
642
  const jsonFields = new Set((_c = jsonFieldsByKind[kind]) !== null && _c !== void 0 ? _c : []);
613
643
  for (const [index, row] of rows.entries()) {
614
- if (!isObject(row))
615
- throw new Error(`BRC-38 ${path}[${index}] must be an object`);
616
- for (const field of dateFields) {
617
- if (field in row)
618
- assertIsoDate(row[field], `${path}[${index}].${field}`);
619
- }
620
- for (const field of binaryFields) {
621
- if (field in row)
622
- assertBase64(row[field], `${path}[${index}].${field}`);
623
- }
624
- for (const field of jsonFields) {
625
- if (field in row && !isObject(row[field]))
626
- throw new Error(`BRC-38 ${path}[${index}].${field} must be an object`);
627
- }
644
+ validatePortableRow(row, `${path}[${index}]`, dateFields, binaryFields, jsonFields);
645
+ }
646
+ }
647
+ function validatePortableRow(row, rowPath, dateFields, binaryFields, jsonFields) {
648
+ if (!isObject(row))
649
+ throw new Error(`BRC-38 ${rowPath} must be an object`);
650
+ for (const field of dateFields) {
651
+ if (field in row)
652
+ assertIsoDate(row[field], `${rowPath}.${field}`);
653
+ }
654
+ for (const field of binaryFields) {
655
+ if (field in row)
656
+ assertBase64(row[field], `${rowPath}.${field}`);
657
+ }
658
+ for (const field of jsonFields) {
659
+ if (field in row && !isObject(row[field]))
660
+ throw new Error(`BRC-38 ${rowPath}.${field} must be an object`);
628
661
  }
629
662
  }
630
663
  function portableRow(kind, row) {
@@ -762,10 +795,23 @@ function canonicalize(value) {
762
795
  if (Array.isArray(value))
763
796
  return `[${value.map(canonicalize).join(',')}]`;
764
797
  if (isObject(value)) {
765
- return `{${Object.keys(value).sort().map(key => `${JSON.stringify(key)}:${canonicalize(value[key])}`).join(',')}}`;
798
+ const entries = Object.keys(value)
799
+ .sort(compareCodepoints)
800
+ .map(key => canonicalizeEntry(key, value[key]));
801
+ return `{${entries.join(',')}}`;
766
802
  }
767
803
  throw new Error(`Unsupported JSON value type: ${typeof value}`);
768
804
  }
805
+ function canonicalizeEntry(key, value) {
806
+ return `${JSON.stringify(key)}:${canonicalize(value)}`;
807
+ }
808
+ function compareCodepoints(a, b) {
809
+ if (a < b)
810
+ return -1;
811
+ if (a > b)
812
+ return 1;
813
+ return 0;
814
+ }
769
815
  function isoDate(date) {
770
816
  return date.toISOString();
771
817
  }