@bsv/sdk 1.9.2 → 1.9.4

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 (93) hide show
  1. package/dist/cjs/package.json +1 -1
  2. package/dist/cjs/src/kvstore/GlobalKVStore.js +116 -98
  3. package/dist/cjs/src/kvstore/GlobalKVStore.js.map +1 -1
  4. package/dist/cjs/src/kvstore/types.js.map +1 -1
  5. package/dist/cjs/src/overlay-tools/index.js +1 -0
  6. package/dist/cjs/src/overlay-tools/index.js.map +1 -1
  7. package/dist/cjs/src/overlay-tools/withDoubleSpendRetry.js +55 -0
  8. package/dist/cjs/src/overlay-tools/withDoubleSpendRetry.js.map +1 -0
  9. package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -1
  10. package/dist/esm/src/kvstore/GlobalKVStore.js +117 -99
  11. package/dist/esm/src/kvstore/GlobalKVStore.js.map +1 -1
  12. package/dist/esm/src/kvstore/types.js.map +1 -1
  13. package/dist/esm/src/overlay-tools/index.js +1 -0
  14. package/dist/esm/src/overlay-tools/index.js.map +1 -1
  15. package/dist/esm/src/overlay-tools/withDoubleSpendRetry.js +48 -0
  16. package/dist/esm/src/overlay-tools/withDoubleSpendRetry.js.map +1 -0
  17. package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
  18. package/dist/types/src/kvstore/GlobalKVStore.d.ts.map +1 -1
  19. package/dist/types/src/kvstore/types.d.ts +2 -0
  20. package/dist/types/src/kvstore/types.d.ts.map +1 -1
  21. package/dist/types/src/overlay-tools/index.d.ts +1 -0
  22. package/dist/types/src/overlay-tools/index.d.ts.map +1 -1
  23. package/dist/types/src/overlay-tools/withDoubleSpendRetry.d.ts +14 -0
  24. package/dist/types/src/overlay-tools/withDoubleSpendRetry.d.ts.map +1 -0
  25. package/dist/types/tsconfig.types.tsbuildinfo +1 -1
  26. package/dist/umd/bundle.js +2 -2
  27. package/dist/umd/bundle.js.map +1 -1
  28. package/docs/fast-docs.png +0 -0
  29. package/docs/index.md +49 -44
  30. package/docs/reference/kvstore.md +9 -0
  31. package/docs/reference/overlay-tools.md +32 -0
  32. package/docs/swagger.png +0 -0
  33. package/package.json +1 -1
  34. package/src/kvstore/GlobalKVStore.ts +134 -114
  35. package/src/kvstore/__tests/GlobalKVStore.test.ts +11 -1
  36. package/src/kvstore/types.ts +2 -0
  37. package/src/overlay-tools/index.ts +1 -0
  38. package/src/overlay-tools/withDoubleSpendRetry.ts +71 -0
  39. package/docs/MARKDOWN_VALIDATION_GUIDE.md +0 -175
  40. package/docs/concepts/beef.md +0 -92
  41. package/docs/concepts/chain-tracking.md +0 -134
  42. package/docs/concepts/decentralized-identity.md +0 -221
  43. package/docs/concepts/fees.md +0 -249
  44. package/docs/concepts/identity-certificates.md +0 -307
  45. package/docs/concepts/index.md +0 -77
  46. package/docs/concepts/key-management.md +0 -185
  47. package/docs/concepts/script-templates.md +0 -176
  48. package/docs/concepts/sdk-philosophy.md +0 -80
  49. package/docs/concepts/signatures.md +0 -194
  50. package/docs/concepts/spv-verification.md +0 -118
  51. package/docs/concepts/transaction-encoding.md +0 -167
  52. package/docs/concepts/transaction-structure.md +0 -67
  53. package/docs/concepts/trust-model.md +0 -139
  54. package/docs/concepts/verification.md +0 -250
  55. package/docs/concepts/wallet-integration.md +0 -101
  56. package/docs/guides/development-wallet-setup.md +0 -374
  57. package/docs/guides/direct-transaction-creation.md +0 -147
  58. package/docs/guides/http-client-configuration.md +0 -488
  59. package/docs/guides/index.md +0 -138
  60. package/docs/guides/large-transactions.md +0 -448
  61. package/docs/guides/multisig-transactions.md +0 -792
  62. package/docs/guides/security-best-practices.md +0 -494
  63. package/docs/guides/transaction-batching.md +0 -132
  64. package/docs/guides/transaction-signing-methods.md +0 -419
  65. package/docs/reference/arc-config.md +0 -698
  66. package/docs/reference/brc-100.md +0 -33
  67. package/docs/reference/configuration.md +0 -835
  68. package/docs/reference/debugging.md +0 -705
  69. package/docs/reference/errors.md +0 -597
  70. package/docs/reference/index.md +0 -111
  71. package/docs/reference/network-config.md +0 -914
  72. package/docs/reference/op-codes.md +0 -325
  73. package/docs/reference/transaction-signatures.md +0 -95
  74. package/docs/tutorials/advanced-transaction.md +0 -572
  75. package/docs/tutorials/aes-encryption.md +0 -949
  76. package/docs/tutorials/authfetch-tutorial.md +0 -986
  77. package/docs/tutorials/ecdh-key-exchange.md +0 -549
  78. package/docs/tutorials/elliptic-curve-fundamentals.md +0 -606
  79. package/docs/tutorials/error-handling.md +0 -1216
  80. package/docs/tutorials/first-transaction-low-level.md +0 -205
  81. package/docs/tutorials/first-transaction.md +0 -275
  82. package/docs/tutorials/hashes-and-hmacs.md +0 -788
  83. package/docs/tutorials/identity-management.md +0 -729
  84. package/docs/tutorials/index.md +0 -219
  85. package/docs/tutorials/key-management.md +0 -538
  86. package/docs/tutorials/protowallet-development.md +0 -743
  87. package/docs/tutorials/script-construction.md +0 -690
  88. package/docs/tutorials/spv-merkle-proofs.md +0 -685
  89. package/docs/tutorials/testnet-transactions-low-level.md +0 -359
  90. package/docs/tutorials/transaction-broadcasting.md +0 -538
  91. package/docs/tutorials/transaction-types.md +0 -420
  92. package/docs/tutorials/type-42.md +0 -568
  93. package/docs/tutorials/uhrp-storage.md +0 -599
@@ -1,6 +1,6 @@
1
1
  import Transaction from '../transaction/Transaction.js';
2
2
  import * as Utils from '../primitives/utils.js';
3
- import { TopicBroadcaster, LookupResolver } from '../overlay-tools/index.js';
3
+ import { TopicBroadcaster, LookupResolver, withDoubleSpendRetry } from '../overlay-tools/index.js';
4
4
  import { PushDrop } from '../script/index.js';
5
5
  import WalletClient from '../wallet/WalletClient.js';
6
6
  import { Beef } from '../transaction/Beef.js';
@@ -19,6 +19,7 @@ const DEFAULT_CONFIG = {
19
19
  topics: ['tm_kvstore'],
20
20
  networkPreset: 'mainnet',
21
21
  acceptDelayedBroadcast: false,
22
+ overlayBroadcast: false,
22
23
  tokenSetDescription: '',
23
24
  tokenUpdateDescription: '',
24
25
  tokenRemovalDescription: '' // Will be set dynamically
@@ -126,10 +127,7 @@ export class GlobalKVStore {
126
127
  const tokenAmount = options.tokenAmount ?? this.config.tokenAmount;
127
128
  const tags = options.tags ?? [];
128
129
  try {
129
- // Check for existing token to spend
130
- const existingEntries = await this.queryOverlay({ key, controller }, { includeToken: true });
131
- const existingToken = existingEntries.length > 0 ? existingEntries[0].token : undefined;
132
- // Create PushDrop locking script
130
+ // Create PushDrop locking script (reusable across retries)
133
131
  const pushdrop = new PushDrop(this.wallet, this.config.originator);
134
132
  const lockingScriptFields = [
135
133
  Utils.toArray(JSON.stringify(protocolID), 'utf8'),
@@ -142,70 +140,79 @@ export class GlobalKVStore {
142
140
  lockingScriptFields.push(Utils.toArray(JSON.stringify(tags), 'utf8'));
143
141
  }
144
142
  const lockingScript = await pushdrop.lock(lockingScriptFields, protocolID ?? this.config.protocolID, Utils.toUTF8(Utils.toArray(key, 'utf8')), 'anyone', true);
145
- let inputs = [];
146
- let inputBEEF;
147
- if (existingToken != null) {
148
- inputs = [{
149
- outpoint: `${existingToken.txid}.${existingToken.outputIndex}`,
150
- unlockingScriptLength: 74,
151
- inputDescription: 'Previous KVStore token'
152
- }];
153
- inputBEEF = existingToken.beef;
154
- }
155
- if (inputs.length > 0) {
156
- // Update existing token
157
- const { signableTransaction } = await this.wallet.createAction({
158
- description: tokenUpdateDescription,
159
- inputBEEF: inputBEEF?.toBinary(),
160
- inputs,
161
- outputs: [{
162
- satoshis: tokenAmount ?? this.config.tokenAmount,
163
- lockingScript: lockingScript.toHex(),
164
- outputDescription: 'KVStore token'
165
- }],
166
- options: {
167
- acceptDelayedBroadcast: this.config.acceptDelayedBroadcast,
168
- randomizeOutputs: false
143
+ // Wrap entire operation in double-spend retry, including overlay query
144
+ const outpoint = await withDoubleSpendRetry(async () => {
145
+ // Re-query overlay on each attempt to get fresh token state
146
+ const existingEntries = await this.queryOverlay({ key, controller }, { includeToken: true });
147
+ const existingToken = existingEntries.length > 0 ? existingEntries[0].token : undefined;
148
+ if (existingToken != null) {
149
+ // Update existing token
150
+ const inputs = [{
151
+ outpoint: `${existingToken.txid}.${existingToken.outputIndex}`,
152
+ unlockingScriptLength: 74,
153
+ inputDescription: 'Previous KVStore token'
154
+ }];
155
+ const inputBEEF = existingToken.beef;
156
+ const { signableTransaction } = await this.wallet.createAction({
157
+ description: tokenUpdateDescription,
158
+ inputBEEF: inputBEEF.toBinary(),
159
+ inputs,
160
+ outputs: [{
161
+ satoshis: tokenAmount ?? this.config.tokenAmount,
162
+ lockingScript: lockingScript.toHex(),
163
+ outputDescription: 'KVStore token'
164
+ }],
165
+ options: {
166
+ acceptDelayedBroadcast: this.config.acceptDelayedBroadcast,
167
+ noSend: this.config.overlayBroadcast,
168
+ randomizeOutputs: false
169
+ }
170
+ }, this.config.originator);
171
+ if (signableTransaction == null) {
172
+ throw new Error('Unable to create update transaction');
169
173
  }
170
- }, this.config.originator);
171
- if (signableTransaction == null) {
172
- throw new Error('Unable to create update transaction');
173
- }
174
- const tx = Transaction.fromAtomicBEEF(signableTransaction.tx);
175
- const unlocker = pushdrop.unlock(this.config.protocolID, key, 'anyone');
176
- const unlockingScript = await unlocker.sign(tx, 0);
177
- const { tx: finalTx } = await this.wallet.signAction({
178
- reference: signableTransaction.reference,
179
- spends: { 0: { unlockingScript: unlockingScript.toHex() } }
180
- }, this.config.originator);
181
- if (finalTx == null) {
182
- throw new Error('Unable to finalize update transaction');
174
+ const tx = Transaction.fromAtomicBEEF(signableTransaction.tx);
175
+ const unlocker = pushdrop.unlock(this.config.protocolID, key, 'anyone');
176
+ const unlockingScript = await unlocker.sign(tx, 0);
177
+ const { tx: finalTx } = await this.wallet.signAction({
178
+ reference: signableTransaction.reference,
179
+ spends: { 0: { unlockingScript: unlockingScript.toHex() } },
180
+ options: {
181
+ acceptDelayedBroadcast: this.config.acceptDelayedBroadcast,
182
+ noSend: this.config.overlayBroadcast
183
+ }
184
+ }, this.config.originator);
185
+ if (finalTx == null) {
186
+ throw new Error('Unable to finalize update transaction');
187
+ }
188
+ const transaction = Transaction.fromAtomicBEEF(finalTx);
189
+ await this.submitToOverlay(transaction);
190
+ return `${transaction.id('hex')}.0`;
183
191
  }
184
- const transaction = Transaction.fromAtomicBEEF(finalTx);
185
- await this.submitToOverlay(transaction);
186
- return `${transaction.id('hex')}.0`;
187
- }
188
- else {
189
- // Create new token
190
- const { tx } = await this.wallet.createAction({
191
- description: tokenSetDescription,
192
- outputs: [{
193
- satoshis: tokenAmount ?? this.config.tokenAmount,
194
- lockingScript: lockingScript.toHex(),
195
- outputDescription: 'KVStore token'
196
- }],
197
- options: {
198
- acceptDelayedBroadcast: this.config.acceptDelayedBroadcast,
199
- randomizeOutputs: false
192
+ else {
193
+ // Create new token
194
+ const { tx } = await this.wallet.createAction({
195
+ description: tokenSetDescription,
196
+ outputs: [{
197
+ satoshis: tokenAmount ?? this.config.tokenAmount,
198
+ lockingScript: lockingScript.toHex(),
199
+ outputDescription: 'KVStore token'
200
+ }],
201
+ options: {
202
+ acceptDelayedBroadcast: this.config.acceptDelayedBroadcast,
203
+ noSend: this.config.overlayBroadcast,
204
+ randomizeOutputs: false
205
+ }
206
+ }, this.config.originator);
207
+ if (tx == null) {
208
+ throw new Error('Failed to create transaction');
200
209
  }
201
- }, this.config.originator);
202
- if (tx == null) {
203
- throw new Error('Failed to create transaction');
210
+ const transaction = Transaction.fromAtomicBEEF(tx);
211
+ await this.submitToOverlay(transaction);
212
+ return `${transaction.id('hex')}.0`;
204
213
  }
205
- const transaction = Transaction.fromAtomicBEEF(tx);
206
- await this.submitToOverlay(transaction);
207
- return `${transaction.id('hex')}.0`;
208
- }
214
+ }, this.topicBroadcaster);
215
+ return outpoint;
209
216
  }
210
217
  finally {
211
218
  if (lockQueue.length > 0) {
@@ -234,42 +241,53 @@ export class GlobalKVStore {
234
241
  const protocolID = options.protocolID ?? this.config.protocolID;
235
242
  const tokenRemovalDescription = (options.tokenRemovalDescription != null && options.tokenRemovalDescription !== '') ? options.tokenRemovalDescription : `Remove KVStore value for ${key}`;
236
243
  try {
237
- const existingEntries = await this.queryOverlay({ key, controller }, { includeToken: true });
238
- if (existingEntries.length === 0 || existingEntries[0].token == null) {
239
- throw new Error('The item did not exist, no item was deleted.');
240
- }
241
- const existingToken = existingEntries[0].token;
242
- const inputs = [{
243
- outpoint: `${existingToken.txid}.${existingToken.outputIndex}`,
244
- unlockingScriptLength: 74,
245
- inputDescription: 'KVStore token to remove'
246
- }];
247
244
  const pushdrop = new PushDrop(this.wallet, this.config.originator);
248
- const { signableTransaction } = await this.wallet.createAction({
249
- description: tokenRemovalDescription,
250
- inputBEEF: existingToken.beef.toBinary(),
251
- inputs,
252
- outputs,
253
- options: {
254
- acceptDelayedBroadcast: this.config.acceptDelayedBroadcast
245
+ // Remove token with double-spend retry
246
+ const txid = await withDoubleSpendRetry(async () => {
247
+ // Re-query overlay on each attempt to get fresh token state
248
+ const existingEntries = await this.queryOverlay({ key, controller }, { includeToken: true });
249
+ if (existingEntries.length === 0 || existingEntries[0].token == null) {
250
+ throw new Error('The item did not exist, no item was deleted.');
255
251
  }
256
- }, this.config.originator);
257
- if (signableTransaction == null) {
258
- throw new Error('Unable to create removal transaction');
259
- }
260
- const tx = Transaction.fromAtomicBEEF(signableTransaction.tx);
261
- const unlocker = pushdrop.unlock(protocolID ?? this.config.protocolID, key, 'anyone');
262
- const unlockingScript = await unlocker.sign(tx, 0);
263
- const { tx: finalTx } = await this.wallet.signAction({
264
- reference: signableTransaction.reference,
265
- spends: { 0: { unlockingScript: unlockingScript.toHex() } }
266
- }, this.config.originator);
267
- if (finalTx == null) {
268
- throw new Error('Unable to finalize removal transaction');
269
- }
270
- const transaction = Transaction.fromAtomicBEEF(finalTx);
271
- await this.submitToOverlay(transaction);
272
- return transaction.id('hex');
252
+ const existingToken = existingEntries[0].token;
253
+ const inputs = [{
254
+ outpoint: `${existingToken.txid}.${existingToken.outputIndex}`,
255
+ unlockingScriptLength: 74,
256
+ inputDescription: 'KVStore token to remove'
257
+ }];
258
+ const { signableTransaction } = await this.wallet.createAction({
259
+ description: tokenRemovalDescription,
260
+ inputBEEF: existingToken.beef.toBinary(),
261
+ inputs,
262
+ outputs,
263
+ options: {
264
+ acceptDelayedBroadcast: this.config.acceptDelayedBroadcast,
265
+ randomizeOutputs: false,
266
+ noSend: this.config.overlayBroadcast
267
+ }
268
+ }, this.config.originator);
269
+ if (signableTransaction == null) {
270
+ throw new Error('Unable to create removal transaction');
271
+ }
272
+ const tx = Transaction.fromAtomicBEEF(signableTransaction.tx);
273
+ const unlocker = pushdrop.unlock(protocolID ?? this.config.protocolID, key, 'anyone');
274
+ const unlockingScript = await unlocker.sign(tx, 0);
275
+ const { tx: finalTx } = await this.wallet.signAction({
276
+ reference: signableTransaction.reference,
277
+ spends: { 0: { unlockingScript: unlockingScript.toHex() } },
278
+ options: {
279
+ acceptDelayedBroadcast: this.config.acceptDelayedBroadcast,
280
+ noSend: this.config.overlayBroadcast
281
+ }
282
+ }, this.config.originator);
283
+ if (finalTx == null) {
284
+ throw new Error('Unable to finalize removal transaction');
285
+ }
286
+ const transaction = Transaction.fromAtomicBEEF(finalTx);
287
+ await this.submitToOverlay(transaction);
288
+ return transaction.id('hex');
289
+ }, this.topicBroadcaster);
290
+ return txid;
273
291
  }
274
292
  finally {
275
293
  if (lockQueue.length > 0) {
@@ -1 +1 @@
1
- {"version":3,"file":"GlobalKVStore.js","sourceRoot":"","sources":["../../../../src/kvstore/GlobalKVStore.ts"],"names":[],"mappings":"AAAA,OAAO,WAAW,MAAM,+BAA+B,CAAA;AACvD,OAAO,KAAK,KAAK,MAAM,wBAAwB,CAAA;AAC/C,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAG5E,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAC7C,OAAO,YAAY,MAAM,2BAA2B,CAAA;AACpD,OAAO,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAA;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAA;AACzD,OAAO,EAAa,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;AACvE,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAA;AACtD,OAAO,EAAE,UAAU,EAAyG,MAAM,YAAY,CAAA;AAE9I;;;GAGG;AACH,MAAM,cAAc,GAAkB;IACpC,UAAU,EAAE,CAAC,CAAC,EAAE,SAAS,CAAC;IAC1B,WAAW,EAAE,YAAY;IACzB,WAAW,EAAE,CAAC;IACd,MAAM,EAAE,CAAC,YAAY,CAAC;IACtB,aAAa,EAAE,SAAS;IACxB,sBAAsB,EAAE,KAAK;IAC7B,mBAAmB,EAAE,EAAE;IACvB,sBAAsB,EAAE,EAAE;IAC1B,uBAAuB,EAAE,EAAE,CAAC,0BAA0B;CACvD,CAAA;AAED;;;;GAIG;AACH,MAAM,OAAO,aAAa;IACxB;;;OAGG;IACc,MAAM,CAAiB;IAExC;;;;OAIG;IACc,MAAM,CAAe;IAEtC;;;OAGG;IACc,SAAS,CAA8B;IAExD;;;OAGG;IACc,cAAc,CAAgB;IAE/C;;;OAGG;IACc,gBAAgB,CAAkB;IAEnD;;;OAGG;IACc,QAAQ,GAAkE,IAAI,GAAG,EAAE,CAAA;IAEpG;;;OAGG;IACK,iBAAiB,GAAqB,IAAI,CAAA;IAElD;;;;;;OAMG;IACH,YAAa,SAAwB,EAAE;QACrC,wDAAwD;QACxD,IAAI,CAAC,MAAM,GAAG,EAAE,GAAG,cAAc,EAAE,GAAG,MAAM,EAAE,CAAA;QAC9C,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,IAAI,YAAY,EAAE,CAAA;QACjD,IAAI,CAAC,SAAS,GAAG,IAAI,SAAS,CAAoB,kBAAkB,CAAC,CAAA;QACrE,IAAI,CAAC,cAAc,GAAG,IAAI,cAAc,CAAC;YACvC,aAAa,EAAE,IAAI,CAAC,MAAM,CAAC,aAAa;SACzC,CAAC,CAAA;QACF,IAAI,CAAC,gBAAgB,GAAG,IAAI,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,MAAkB,EAAE;YAC3E,aAAa,EAAE,IAAI,CAAC,MAAM,CAAC,aAAa;SACzC,CAAC,CAAA;IACJ,CAAC;IAED;;;;;;;OAOG;IACH,KAAK,CAAC,GAAG,CAAE,KAAmB,EAAE,UAA6B,EAAE;QAC7D,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE;YACnC,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAA;SACtE;QACD,IAAI,KAAK,CAAC,GAAG,IAAI,IAAI,IAAI,KAAK,CAAC,UAAU,IAAI,IAAI,EAAE;YACjD,sDAAsD;YACtD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;YACvD,OAAO,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;SACnD;QACD,OAAO,MAAM,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;IAChD,CAAC;IAED;;;;;;;OAOG;IACH,KAAK,CAAC,GAAG,CAAE,GAAW,EAAE,KAAa,EAAE,UAA6B,EAAE;QACpE,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE;YAC/C,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAA;SACnD;QACD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;YAC7B,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAA;SAC3C;QAED,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,cAAc,EAAE,CAAA;QAC9C,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAA;QACrD,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,CAAA;QAC/D,MAAM,mBAAmB,GAAG,CAAC,OAAO,CAAC,mBAAmB,IAAI,IAAI,IAAI,OAAO,CAAC,mBAAmB,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC,CAAC,4BAA4B,GAAG,EAAE,CAAA;QACzK,MAAM,sBAAsB,GAAG,CAAC,OAAO,CAAC,sBAAsB,IAAI,IAAI,IAAI,OAAO,CAAC,sBAAsB,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC,CAAC,4BAA4B,GAAG,EAAE,CAAA;QACrL,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW,CAAA;QAClE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,EAAE,CAAA;QAE/B,IAAI;YACF,oCAAoC;YACpC,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,EAAE,GAAG,EAAE,UAAU,EAAE,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAA;YAC5F,MAAM,aAAa,GAAG,eAAe,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAA;YAEvF,iCAAiC;YACjC,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAA;YAClE,MAAM,mBAAmB,GAAG;gBAC1B,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;gBACjD,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC;gBAC1B,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC;gBAC5B,KAAK,CAAC,OAAO,CAAC,UAAU,EAAE,KAAK,CAAC;aACjC,CAAA;YAED,6DAA6D;YAC7D,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;gBACnB,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,CAAC,CAAA;aACtE;YAED,MAAM,aAAa,GAAG,MAAM,QAAQ,CAAC,IAAI,CACvC,mBAAmB,EACnB,UAAU,IAAI,IAAI,CAAC,MAAM,CAAC,UAA4B,EACtD,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,EACxC,QAAQ,EACR,IAAI,CACL,CAAA;YAED,IAAI,MAAM,GAAwB,EAAE,CAAA;YACpC,IAAI,SAA2B,CAAA;YAE/B,IAAI,aAAa,IAAI,IAAI,EAAE;gBACzB,MAAM,GAAG,CAAC;wBACR,QAAQ,EAAE,GAAG,aAAa,CAAC,IAAI,IAAI,aAAa,CAAC,WAAW,EAAE;wBAC9D,qBAAqB,EAAE,EAAE;wBACzB,gBAAgB,EAAE,wBAAwB;qBAC3C,CAAC,CAAA;gBACF,SAAS,GAAG,aAAa,CAAC,IAAI,CAAA;aAC/B;YAED,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;gBACrB,wBAAwB;gBACxB,MAAM,EAAE,mBAAmB,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC;oBAC7D,WAAW,EAAE,sBAAsB;oBACnC,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE;oBAChC,MAAM;oBACN,OAAO,EAAE,CAAC;4BACR,QAAQ,EAAE,WAAW,IAAI,IAAI,CAAC,MAAM,CAAC,WAAqB;4BAC1D,aAAa,EAAE,aAAa,CAAC,KAAK,EAAE;4BACpC,iBAAiB,EAAE,eAAe;yBACnC,CAAC;oBACF,OAAO,EAAE;wBACP,sBAAsB,EAAE,IAAI,CAAC,MAAM,CAAC,sBAAsB;wBAC1D,gBAAgB,EAAE,KAAK;qBACxB;iBACF,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAA;gBAE1B,IAAI,mBAAmB,IAAI,IAAI,EAAE;oBAC/B,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAA;iBACvD;gBAED,MAAM,EAAE,GAAG,WAAW,CAAC,cAAc,CAAC,mBAAmB,CAAC,EAAE,CAAC,CAAA;gBAC7D,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAC9B,IAAI,CAAC,MAAM,CAAC,UAA4B,EACxC,GAAG,EACH,QAAQ,CACT,CAAA;gBACD,MAAM,eAAe,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,CAAA;gBAElD,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC;oBACnD,SAAS,EAAE,mBAAmB,CAAC,SAAS;oBACxC,MAAM,EAAE,EAAE,CAAC,EAAE,EAAE,eAAe,EAAE,eAAe,CAAC,KAAK,EAAE,EAAE,EAAE;iBAC5D,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAA;gBAE1B,IAAI,OAAO,IAAI,IAAI,EAAE;oBACnB,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAA;iBACzD;gBAED,MAAM,WAAW,GAAG,WAAW,CAAC,cAAc,CAAC,OAAO,CAAC,CAAA;gBACvD,MAAM,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,CAAA;gBACvC,OAAO,GAAG,WAAW,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAA;aACpC;iBAAM;gBACL,mBAAmB;gBACnB,MAAM,EAAE,EAAE,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC;oBAC5C,WAAW,EAAE,mBAAmB;oBAChC,OAAO,EAAE,CAAC;4BACR,QAAQ,EAAE,WAAW,IAAI,IAAI,CAAC,MAAM,CAAC,WAAqB;4BAC1D,aAAa,EAAE,aAAa,CAAC,KAAK,EAAE;4BACpC,iBAAiB,EAAE,eAAe;yBACnC,CAAC;oBACF,OAAO,EAAE;wBACP,sBAAsB,EAAE,IAAI,CAAC,MAAM,CAAC,sBAAsB;wBAC1D,gBAAgB,EAAE,KAAK;qBACxB;iBACF,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAA;gBAE1B,IAAI,EAAE,IAAI,IAAI,EAAE;oBACd,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAA;iBAChD;gBAED,MAAM,WAAW,GAAG,WAAW,CAAC,cAAc,CAAC,EAAE,CAAC,CAAA;gBAClD,MAAM,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,CAAA;gBACvC,OAAO,GAAG,WAAW,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAA;aACpC;SACF;gBAAS;YACR,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;gBACxB,IAAI,CAAC,oBAAoB,CAAC,GAAG,EAAE,SAAS,CAAC,CAAA;aAC1C;SACF;IACH,CAAC;IAED;;;;;;;;;;;OAWG;IACH,KAAK,CAAC,MAAM,CAAE,GAAW,EAAE,OAA8B,EAAE,UAAgC,EAAE;QAC3F,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE;YAC/C,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAA;SACnD;QAED,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,cAAc,EAAE,CAAA;QAC9C,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAA;QAErD,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,CAAA;QAC/D,MAAM,uBAAuB,GAAG,CAAC,OAAO,CAAC,uBAAuB,IAAI,IAAI,IAAI,OAAO,CAAC,uBAAuB,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,uBAAuB,CAAC,CAAC,CAAC,4BAA4B,GAAG,EAAE,CAAA;QAEzL,IAAI;YACF,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,EAAE,GAAG,EAAE,UAAU,EAAE,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAA;YAE5F,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC,IAAI,eAAe,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,EAAE;gBACpE,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAA;aAChE;YAED,MAAM,aAAa,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC,KAAK,CAAA;YAC9C,MAAM,MAAM,GAAwB,CAAC;oBACnC,QAAQ,EAAE,GAAG,aAAa,CAAC,IAAI,IAAI,aAAa,CAAC,WAAW,EAAE;oBAC9D,qBAAqB,EAAE,EAAE;oBACzB,gBAAgB,EAAE,yBAAyB;iBAC5C,CAAC,CAAA;YAEF,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAA;YAClE,MAAM,EAAE,mBAAmB,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC;gBAC7D,WAAW,EAAE,uBAAuB;gBACpC,SAAS,EAAE,aAAa,CAAC,IAAI,CAAC,QAAQ,EAAE;gBACxC,MAAM;gBACN,OAAO;gBACP,OAAO,EAAE;oBACP,sBAAsB,EAAE,IAAI,CAAC,MAAM,CAAC,sBAAsB;iBAC3D;aACF,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAA;YAE1B,IAAI,mBAAmB,IAAI,IAAI,EAAE;gBAC/B,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAA;aACxD;YAED,MAAM,EAAE,GAAG,WAAW,CAAC,cAAc,CAAC,mBAAmB,CAAC,EAAE,CAAC,CAAA;YAC7D,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAC9B,UAAU,IAAI,IAAI,CAAC,MAAM,CAAC,UAA4B,EACtD,GAAG,EACH,QAAQ,CACT,CAAA;YACD,MAAM,eAAe,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,CAAA;YAElD,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC;gBACnD,SAAS,EAAE,mBAAmB,CAAC,SAAS;gBACxC,MAAM,EAAE,EAAE,CAAC,EAAE,EAAE,eAAe,EAAE,eAAe,CAAC,KAAK,EAAE,EAAE,EAAE;aAC5D,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAA;YAE1B,IAAI,OAAO,IAAI,IAAI,EAAE;gBACnB,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAA;aAC1D;YAED,MAAM,WAAW,GAAG,WAAW,CAAC,cAAc,CAAC,OAAO,CAAC,CAAA;YACvD,MAAM,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,CAAA;YACvC,OAAO,WAAW,CAAC,EAAE,CAAC,KAAK,CAAC,CAAA;SAC7B;gBAAS;YACR,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;gBACxB,IAAI,CAAC,oBAAoB,CAAC,GAAG,EAAE,SAAS,CAAC,CAAA;aAC1C;SACF;IACH,CAAC;IAED;;;;;;;OAOG;IACK,KAAK,CAAC,mBAAmB,CAAE,GAAW;QAC5C,iEAAiE;QACjE,IAAI,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QACtC,IAAI,SAAS,IAAI,IAAI,EAAE;YACrB,SAAS,GAAG,EAAE,CAAA;YACd,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,SAAS,CAAC,CAAA;SAClC;QAED,IAAI,cAAc,GAAe,GAAG,EAAE,GAAG,CAAC,CAAA;QAC1C,MAAM,OAAO,GAAG,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;YAC5C,cAAc,GAAG,OAAO,CAAA;YACxB,IAAI,SAAS,IAAI,IAAI,EAAE;gBAAE,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;aAAE;QACpD,CAAC,CAAC,CAAA;QAEF,wGAAwG;QACxG,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE;YAC1B,cAAc,EAAE,CAAA;SACjB;QAED,MAAM,OAAO,CAAA;QACb,OAAO,SAAS,CAAA;IAClB,CAAC;IAED;;;;;;OAMG;IACK,oBAAoB,CAAE,GAAW,EAAE,SAA2D;QACpG,SAAS,CAAC,KAAK,EAAE,CAAA,CAAC,yCAAyC;QAC3D,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;YACxB,wDAAwD;YACxD,SAAS,CAAC,CAAC,CAAC,EAAE,CAAA;SACf;aAAM;YACL,8CAA8C;YAC9C,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;SAC1B;IACH,CAAC;IAED;;;;;OAKG;IACK,KAAK,CAAC,cAAc;QAC1B,IAAI,IAAI,CAAC,iBAAiB,IAAI,IAAI,EAAE;YAClC,IAAI,CAAC,iBAAiB,GAAG,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAA;SACnH;QACD,OAAO,IAAI,CAAC,iBAAiB,CAAA;IAC/B,CAAC;IAED;;;;;;;OAOG;IACK,KAAK,CAAC,YAAY,CAAE,KAAmB,EAAE,UAA6B,EAAE;QAC9E,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC;YAC7C,OAAO,EAAE,OAAO,CAAC,WAAW,IAAI,IAAI,CAAC,MAAM,CAAC,WAAqB;YACjE,KAAK;SACN,CAAC,CAAA;QAEF,IAAI,MAAM,CAAC,IAAI,KAAK,aAAa,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;YAChE,OAAO,EAAE,CAAA;SACV;QAED,MAAM,OAAO,GAAmB,EAAE,CAAA;QAElC,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,OAAO,EAAE;YACnC,IAAI;gBACF,MAAM,EAAE,GAAG,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;gBAC5C,MAAM,MAAM,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,CAAA;gBAC7C,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,CAAA;gBAErD,iFAAiF;gBACjF,MAAM,kBAAkB,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,CAAA;gBACzD,MAAM,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,KAAK,kBAAkB,CAAA;gBACjE,MAAM,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,KAAK,kBAAkB,GAAG,CAAC,CAAA;gBAEpE,IAAI,CAAC,WAAW,IAAI,CAAC,YAAY,EAAE;oBACjC,SAAQ;iBACT;gBAED,mBAAmB;gBACnB,MAAM,YAAY,GAAG,IAAI,WAAW,CAAC,QAAQ,CAAC,CAAA;gBAC9C,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,EAAc,CAAA;gBAClD,IAAI;oBACF,MAAM,YAAY,CAAC,eAAe,CAAC;wBACjC,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC;wBACvD,SAAS;wBACT,YAAY,EAAE,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;wBAChE,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC;wBAC3E,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;qBACpD,CAAC,CAAA;iBACH;gBAAC,OAAO,KAAK,EAAE;oBACd,oDAAoD;oBACpD,SAAQ;iBACT;gBAED,iDAAiD;gBACjD,IAAI,IAA0B,CAAA;gBAC9B,IAAI,YAAY,IAAI,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE;oBAC3D,IAAI;wBACF,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;qBACjE;oBAAC,OAAO,CAAC,EAAE;wBACV,+CAA+C;wBAC/C,IAAI,GAAG,SAAS,CAAA;qBACjB;iBACF;gBAED,MAAM,KAAK,GAAiB;oBAC1B,GAAG,EAAE,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;oBACjD,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;oBACrD,UAAU,EAAE,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;oBAC9D,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC;oBAC3E,IAAI;iBACL,CAAA;gBAED,IAAI,OAAO,CAAC,YAAY,KAAK,IAAI,EAAE;oBACjC,KAAK,CAAC,KAAK,GAAG;wBACZ,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;wBAClB,WAAW,EAAE,MAAM,CAAC,WAAW;wBAC/B,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC;wBAClC,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,CAAC;qBAC/B,CAAA;iBACF;gBAED,IAAI,OAAO,CAAC,OAAO,KAAK,IAAI,EAAE;oBAC5B,KAAK,CAAC,OAAO,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,EAAE,EAAE;wBACpD,GAAG,EAAE,KAAK,CAAC,GAAG;wBACd,UAAU,EAAE,KAAK,CAAC,UAAU;qBAC7B,CAAC,CAAA;iBACH;gBAED,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;aACpB;YAAC,OAAO,KAAK,EAAE;gBACd,SAAQ;aACT;SACF;QAED,OAAO,OAAO,CAAA;IAChB,CAAC;IAED;;;;;;;;OAQG;IACK,KAAK,CAAC,eAAe,CAAE,WAAwB;QACrD,OAAO,MAAM,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,WAAW,CAAC,CAAA;IAC3D,CAAC;CACF;AAED,eAAe,aAAa,CAAA"}
1
+ {"version":3,"file":"GlobalKVStore.js","sourceRoot":"","sources":["../../../../src/kvstore/GlobalKVStore.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/kvstore/types.ts"],"names":[],"mappings":"AAoHA,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,UAAU,EAAE,CAAC;IACb,GAAG,EAAE,CAAC;IACN,KAAK,EAAE,CAAC;IACR,UAAU,EAAE,CAAC;IACb,IAAI,EAAE,CAAC;IACP,SAAS,EAAE,CAAC,CAAC,4DAA4D;CAC1E,CAAA"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/kvstore/types.ts"],"names":[],"mappings":"AAsHA,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,UAAU,EAAE,CAAC;IACb,GAAG,EAAE,CAAC;IACN,KAAK,EAAE,CAAC;IACR,UAAU,EAAE,CAAC;IACb,IAAI,EAAE,CAAC;IACP,SAAS,EAAE,CAAC,CAAC,4DAA4D;CAC1E,CAAA"}
@@ -1,5 +1,6 @@
1
1
  export * from './LookupResolver.js';
2
2
  export * from './SHIPBroadcaster.js';
3
+ export * from './withDoubleSpendRetry.js';
3
4
  export { default as OverlayAdminTokenTemplate } from './OverlayAdminTokenTemplate.js';
4
5
  export { default as LookupResolver } from './LookupResolver.js';
5
6
  // For intuitive clarity, we name this the Topic Broadcaster.
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/overlay-tools/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAA;AACnC,cAAc,sBAAsB,CAAA;AACpC,OAAO,EAAE,OAAO,IAAI,yBAAyB,EAAE,MAAM,gCAAgC,CAAA;AACrF,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAE/D,6DAA6D;AAC7D,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AAClE,sDAAsD;AACtD,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,sBAAsB,CAAA;AACjE,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,sBAAsB,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/overlay-tools/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAA;AACnC,cAAc,sBAAsB,CAAA;AACpC,cAAc,2BAA2B,CAAA;AACzC,OAAO,EAAE,OAAO,IAAI,yBAAyB,EAAE,MAAM,gCAAgC,CAAA;AACrF,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAE/D,6DAA6D;AAC7D,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AAClE,sDAAsD;AACtD,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,sBAAsB,CAAA;AACjE,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,sBAAsB,CAAA"}
@@ -0,0 +1,48 @@
1
+ import Transaction from '../transaction/Transaction.js';
2
+ /**
3
+ * Maximum number of retry attempts for double-spend resolution
4
+ */
5
+ const MAX_DOUBLE_SPEND_RETRIES = 5;
6
+ /**
7
+ * Executes an operation with automatic retry logic for double-spend errors.
8
+ * When a double-spend is detected, broadcasts the competing transaction to
9
+ * update the overlay with missing state, then retries the operation.
10
+ *
11
+ * @param operation - The async operation to execute (e.g., createAction + signAction)
12
+ * @param broadcaster - The TopicBroadcaster to use for syncing missing state
13
+ * @param maxRetries - Maximum number of retry attempts (default: MAX_DOUBLE_SPEND_RETRIES)
14
+ * @returns The result of the successful operation
15
+ * @throws If max retries exceeded or non-double-spend error occurs
16
+ */
17
+ export async function withDoubleSpendRetry(operation, broadcaster, maxRetries = MAX_DOUBLE_SPEND_RETRIES) {
18
+ let attempts = 0;
19
+ while (attempts < maxRetries) {
20
+ attempts++;
21
+ try {
22
+ return await operation();
23
+ }
24
+ catch (error) {
25
+ // Only handle double-spend errors on non-final attempts
26
+ if (attempts < maxRetries && error.name === 'WERR_REVIEW_ACTIONS') {
27
+ const reviewError = error;
28
+ // Check if any action in the batch has a double-spend
29
+ const doubleSpendResult = reviewError.reviewActionResults.find((result) => result.status === 'doubleSpend');
30
+ if (doubleSpendResult?.competingBeef != null &&
31
+ doubleSpendResult?.competingTxs != null &&
32
+ doubleSpendResult?.competingTxs.length > 0) {
33
+ const competingTx = Transaction.fromBEEF(doubleSpendResult.competingBeef, doubleSpendResult.competingTxs[0]);
34
+ // Recursively handle double-spend errors during broadcast
35
+ // The broadcast itself might fail if the competing tx depends on another missing tx
36
+ await withDoubleSpendRetry(async () => await broadcaster.broadcast(competingTx), broadcaster, maxRetries - attempts // Reduce max retries based on attempts already used
37
+ );
38
+ continue;
39
+ }
40
+ }
41
+ // Non-double-spend error or max retries exceeded - rethrow
42
+ throw error;
43
+ }
44
+ }
45
+ // This should never be reached, but TypeScript requires it
46
+ throw new Error('Unexpected end of retry loop');
47
+ }
48
+ //# sourceMappingURL=withDoubleSpendRetry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"withDoubleSpendRetry.js","sourceRoot":"","sources":["../../../../src/overlay-tools/withDoubleSpendRetry.ts"],"names":[],"mappings":"AAAA,OAAO,WAAW,MAAM,+BAA+B,CAAA;AAKvD;;GAEG;AACH,MAAM,wBAAwB,GAAG,CAAC,CAAA;AAElC;;;;;;;;;;GAUG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,SAA2B,EAC3B,WAA6B,EAC7B,aAAqB,wBAAwB;IAE7C,IAAI,QAAQ,GAAG,CAAC,CAAA;IAEhB,OAAO,QAAQ,GAAG,UAAU,EAAE;QAC5B,QAAQ,EAAE,CAAA;QAEV,IAAI;YACF,OAAO,MAAM,SAAS,EAAE,CAAA;SACzB;QAAC,OAAO,KAAK,EAAE;YACd,wDAAwD;YACxD,IAAI,QAAQ,GAAG,UAAU,IAAI,KAAK,CAAC,IAAI,KAAK,qBAAqB,EAAE;gBACjE,MAAM,WAAW,GAAG,KAA4B,CAAA;gBAEhD,sDAAsD;gBACtD,MAAM,iBAAiB,GAAG,WAAW,CAAC,mBAAmB,CAAC,IAAI,CAC5D,CAAC,MAA0B,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,KAAK,aAAa,CAChE,CAAA;gBAED,IAAI,iBAAiB,EAAE,aAAa,IAAI,IAAI;oBAC1C,iBAAiB,EAAE,YAAY,IAAI,IAAI;oBACvC,iBAAiB,EAAE,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE;oBAC5C,MAAM,WAAW,GAAG,WAAW,CAAC,QAAQ,CACtC,iBAAiB,CAAC,aAAa,EAC/B,iBAAiB,CAAC,YAAY,CAAC,CAAC,CAAC,CAClC,CAAA;oBAED,0DAA0D;oBAC1D,oFAAoF;oBACpF,MAAM,oBAAoB,CACxB,KAAK,IAAI,EAAE,CAAC,MAAM,WAAW,CAAC,SAAS,CAAC,WAAW,CAAC,EACpD,WAAW,EACX,UAAU,GAAG,QAAQ,CAAC,oDAAoD;qBAC3E,CAAA;oBAED,SAAQ;iBACT;aACF;YAED,2DAA2D;YAC3D,MAAM,KAAK,CAAA;SACZ;KACF;IAED,2DAA2D;IAC3D,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAA;AACjD,CAAC"}