@bsv/sdk 1.4.1 → 1.4.3

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 (39) hide show
  1. package/dist/cjs/package.json +1 -1
  2. package/dist/cjs/src/registry/RegistryClient.js +112 -89
  3. package/dist/cjs/src/registry/RegistryClient.js.map +1 -1
  4. package/dist/cjs/src/storage/StorageDownloader.js +82 -0
  5. package/dist/cjs/src/storage/StorageDownloader.js.map +1 -0
  6. package/dist/cjs/src/storage/__test/StorageDownloader.test.js +144 -0
  7. package/dist/cjs/src/storage/__test/StorageDownloader.test.js.map +1 -0
  8. package/dist/cjs/src/storage/index.js +3 -1
  9. package/dist/cjs/src/storage/index.js.map +1 -1
  10. package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -1
  11. package/dist/esm/src/registry/RegistryClient.js +110 -88
  12. package/dist/esm/src/registry/RegistryClient.js.map +1 -1
  13. package/dist/esm/src/storage/StorageDownloader.js +75 -0
  14. package/dist/esm/src/storage/StorageDownloader.js.map +1 -0
  15. package/dist/esm/src/storage/__test/StorageDownloader.test.js +139 -0
  16. package/dist/esm/src/storage/__test/StorageDownloader.test.js.map +1 -0
  17. package/dist/esm/src/storage/index.js +1 -0
  18. package/dist/esm/src/storage/index.js.map +1 -1
  19. package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
  20. package/dist/types/src/registry/RegistryClient.d.ts +24 -24
  21. package/dist/types/src/registry/RegistryClient.d.ts.map +1 -1
  22. package/dist/types/src/registry/types/index.d.ts +46 -19
  23. package/dist/types/src/registry/types/index.d.ts.map +1 -1
  24. package/dist/types/src/storage/StorageDownloader.d.ts +25 -0
  25. package/dist/types/src/storage/StorageDownloader.d.ts.map +1 -0
  26. package/dist/types/src/storage/__test/StorageDownloader.test.d.ts +2 -0
  27. package/dist/types/src/storage/__test/StorageDownloader.test.d.ts.map +1 -0
  28. package/dist/types/src/storage/index.d.ts +1 -0
  29. package/dist/types/src/storage/index.d.ts.map +1 -1
  30. package/dist/types/tsconfig.types.tsbuildinfo +1 -1
  31. package/dist/umd/bundle.js +1 -1
  32. package/docs/storage.md +51 -0
  33. package/package.json +1 -1
  34. package/src/registry/RegistryClient.ts +142 -114
  35. package/src/registry/__tests/RegistryClient.test.ts +136 -100
  36. package/src/registry/types/index.ts +50 -20
  37. package/src/storage/StorageDownloader.ts +91 -0
  38. package/src/storage/__test/StorageDownloader.test.ts +170 -0
  39. package/src/storage/index.ts +3 -0
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bsv/sdk",
3
- "version": "1.4.1",
3
+ "version": "1.4.3",
4
4
  "type": "commonjs",
5
5
  "description": "BSV Blockchain Software Development Kit",
6
6
  "files": [
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.RegistryClient = void 0;
3
+ exports.deserializeWalletProtocol = exports.RegistryClient = void 0;
4
4
  const index_js_1 = require("../wallet/index.js");
5
5
  const index_js_2 = require("../primitives/index.js");
6
6
  const index_js_3 = require("../transaction/index.js");
@@ -9,18 +9,18 @@ const index_js_5 = require("../script/index.js");
9
9
  const REGISTRANT_TOKEN_AMOUNT = 1;
10
10
  /**
11
11
  * RegistryClient manages on-chain registry definitions for three types:
12
- * - BasketMap (basket-based items)
13
- * - ProtoMap (protocol-based items)
14
- * - CertMap (certificate-based items)
12
+ * - basket (basket-based items)
13
+ * - protocol (protocol-based items)
14
+ * - certificate (certificate-based items)
15
15
  *
16
16
  * It provides methods to:
17
17
  * - Register new definitions using pushdrop-based UTXOs.
18
- * - Resolve existing definitions using a overlay lookup service.
18
+ * - Resolve existing definitions using a lookup service.
19
19
  * - List registry entries associated with the operator's wallet.
20
20
  * - Revoke an existing registry entry by spending its UTXO.
21
21
  *
22
22
  * Registry operators use this client to establish and manage
23
- * canonical references for baskets, protocols, and certificates types.
23
+ * canonical references for baskets, protocols, and certificate types.
24
24
  */
25
25
  class RegistryClient {
26
26
  constructor(wallet = new index_js_1.WalletClient()) {
@@ -33,18 +33,19 @@ class RegistryClient {
33
33
  * Registry operators (i.e., identity key owners) can create these definitions
34
34
  * to establish canonical references for basket IDs, protocol specs, or certificate schemas.
35
35
  *
36
- * @param data - The structured information needed to register an item of kind 'basket', 'protocol', or 'certificate'.
36
+ * @param data - Structured information about a 'basket', 'protocol', or 'certificate'.
37
37
  * @returns A promise with the broadcast result or failure.
38
38
  */
39
39
  async registerDefinition(data) {
40
40
  var _a;
41
41
  const registryOperator = (await this.wallet.getPublicKey({ identityKey: true })).publicKey;
42
42
  const pushdrop = new index_js_5.PushDrop(this.wallet);
43
- // Build the array of fields, depending on the definition type
43
+ // Convert definition data into PushDrop fields
44
44
  const fields = this.buildPushDropFields(data, registryOperator);
45
- const protocol = this.getWalletProtocol(data.definitionType);
46
- // Lock the fields
47
- const lockingScript = await pushdrop.lock(fields, protocol, '1', 'self');
45
+ // Convert the user-friendly definitionType to the actual wallet protocol
46
+ const protocol = this.mapDefinitionTypeToWalletProtocol(data.definitionType);
47
+ // Lock the fields into a pushdrop-based UTXO
48
+ const lockingScript = await pushdrop.lock(fields, protocol, '1', 'anyone', true);
48
49
  // Create a transaction
49
50
  const { tx } = await this.wallet.createAction({
50
51
  description: `Register a new ${data.definitionType} item`,
@@ -52,16 +53,20 @@ class RegistryClient {
52
53
  {
53
54
  satoshis: REGISTRANT_TOKEN_AMOUNT,
54
55
  lockingScript: lockingScript.toHex(),
55
- outputDescription: `New ${data.definitionType} registration token`
56
+ outputDescription: `New ${data.definitionType} registration token`,
57
+ basket: this.mapDefinitionTypeToBasketName(data.definitionType)
56
58
  }
57
- ]
59
+ ],
60
+ options: {
61
+ randomizeOutputs: false
62
+ }
58
63
  });
59
64
  if (tx === undefined) {
60
65
  throw new Error(`Failed to create ${data.definitionType} registration transaction!`);
61
66
  }
62
- // Broadcast
63
- const broadcaster = new index_js_4.TopicBroadcaster([this.getBroadcastTopic(data.definitionType)], {
64
- networkPreset: (_a = this.network) !== null && _a !== void 0 ? _a : (this.network = (await (this.wallet.getNetwork({}))).network)
67
+ // Broadcast to the relevant topic
68
+ const broadcaster = new index_js_4.TopicBroadcaster([this.mapDefinitionTypeToTopic(data.definitionType)], {
69
+ networkPreset: (_a = this.network) !== null && _a !== void 0 ? _a : (this.network = (await this.wallet.getNetwork({})).network)
65
70
  });
66
71
  return await broadcaster.broadcast(index_js_3.Transaction.fromAtomicBEEF(tx));
67
72
  }
@@ -72,7 +77,7 @@ class RegistryClient {
72
77
  * - For "basket", the query is of type BasketMapQuery:
73
78
  * { basketID?: string; name?: string; registryOperators?: string[]; }
74
79
  * - For "protocol", the query is of type ProtoMapQuery:
75
- * { name?: string; registryOperators?: string[]; protocolID?: string; securityLevel?: number; }
80
+ * { name?: string; registryOperators?: string[]; protocolID?: WalletProtocol; }
76
81
  * - For "certificate", the query is of type CertMapQuery:
77
82
  * { type?: string; name?: string; registryOperators?: string[]; }
78
83
  *
@@ -82,24 +87,22 @@ class RegistryClient {
82
87
  */
83
88
  async resolve(definitionType, query) {
84
89
  const resolver = new index_js_4.LookupResolver();
85
- // The service name depends on the kind
86
- const serviceName = this.getServiceName(definitionType);
87
- const result = await resolver.query({
88
- service: serviceName,
89
- query
90
- });
90
+ const serviceName = this.mapDefinitionTypeToServiceName(definitionType);
91
+ // Make the lookup query
92
+ const result = await resolver.query({ service: serviceName, query });
91
93
  if (result.type !== 'output-list') {
92
94
  return [];
93
95
  }
94
96
  const parsedRegistryRecords = [];
95
97
  for (const output of result.outputs) {
96
98
  try {
97
- const parsedTx = index_js_3.Transaction.fromAtomicBEEF(output.beef);
98
- const record = await this.parseLockingScript(definitionType, parsedTx.outputs[output.outputIndex].lockingScript);
99
+ const parsedTx = index_js_3.Transaction.fromBEEF(output.beef);
100
+ const lockingScript = parsedTx.outputs[output.outputIndex].lockingScript;
101
+ const record = await this.parseLockingScript(definitionType, lockingScript);
99
102
  parsedRegistryRecords.push(record);
100
103
  }
101
104
  catch {
102
- // skip
105
+ // Skip invalid or non-pushdrop outputs
103
106
  }
104
107
  }
105
108
  return parsedRegistryRecords;
@@ -113,29 +116,32 @@ class RegistryClient {
113
116
  * @returns A promise that resolves to an array of RegistryRecord objects.
114
117
  */
115
118
  async listOwnRegistryEntries(definitionType) {
116
- const relevantBasketName = this.getBasketName(definitionType);
117
- const { outputs } = await this.wallet.listOutputs({
119
+ const relevantBasketName = this.mapDefinitionTypeToBasketName(definitionType);
120
+ const { outputs, BEEF } = await this.wallet.listOutputs({
118
121
  basket: relevantBasketName,
119
- include: 'locking scripts'
122
+ include: 'entire transactions'
120
123
  });
121
124
  const results = [];
122
125
  for (const output of outputs) {
123
- if (output.spendable) {
126
+ if (!output.spendable) {
124
127
  continue;
125
128
  }
126
129
  try {
127
- const record = await this.parseLockingScript(definitionType, index_js_5.LockingScript.fromHex(output.lockingScript));
128
130
  const [txid, outputIndex] = output.outpoint.split('.');
131
+ const tx = index_js_3.Transaction.fromBEEF(BEEF);
132
+ const lockingScript = tx.outputs[outputIndex].lockingScript;
133
+ const record = await this.parseLockingScript(definitionType, lockingScript);
129
134
  results.push({
130
135
  ...record,
131
136
  txid,
132
137
  outputIndex: Number(outputIndex),
133
138
  satoshis: output.satoshis,
134
- lockingScript: output.lockingScript
139
+ lockingScript: lockingScript.toHex(),
140
+ beef: BEEF
135
141
  });
136
142
  }
137
143
  catch {
138
- // ignore parse errors
144
+ // Ignore parse errors
139
145
  }
140
146
  }
141
147
  return results;
@@ -143,22 +149,15 @@ class RegistryClient {
143
149
  /**
144
150
  * Revokes a registry record by spending its associated UTXO.
145
151
  *
146
- * This function creates a transaction that spends the UTXO corresponding to the provided registry record,
147
- * revoking the registry entry. It prepares an unlocker using the appropriate wallet protocol,
148
- * builds a signable transaction, signs it, and then broadcasts the finalized transaction.
149
- *
150
- * @param registryRecord - The registry record to revoke. It must include a valid txid, outputIndex, and lockingScript.
151
- * @returns A promise that resolves with either a BroadcastResponse upon success or a BroadcastFailure on error.
152
- * @throws If required fields are missing or if transaction creation/signing fails.
152
+ * @param registryRecord - Must have valid txid, outputIndex, and lockingScript.
153
+ * @returns Broadcast success/failure.
153
154
  */
154
155
  async revokeOwnRegistryEntry(registryRecord) {
155
156
  var _a;
156
157
  if (registryRecord.txid === undefined || typeof registryRecord.outputIndex === 'undefined' || registryRecord.lockingScript === undefined) {
157
- throw new Error('Invalid record. Missing txid, outputIndex, or lockingScript.');
158
+ throw new Error('Invalid registry record. Missing txid, outputIndex, or lockingScript.');
158
159
  }
159
- // Prepare the unlocker
160
- const pushdrop = new index_js_5.PushDrop(this.wallet);
161
- const unlocker = await pushdrop.unlock(this.getWalletProtocol(registryRecord.definitionType), '1', 'anyone');
160
+ // Create a descriptive label for the item we’re revoking
162
161
  const itemIdentifier = registryRecord.definitionType === 'basket'
163
162
  ? registryRecord.basketID
164
163
  : registryRecord.definitionType === 'protocol'
@@ -166,12 +165,10 @@ class RegistryClient {
166
165
  : registryRecord.definitionType === 'certificate'
167
166
  ? (registryRecord.name !== undefined ? registryRecord.name : registryRecord.type)
168
167
  : 'unknown';
169
- const description = `Revoke ${registryRecord.definitionType} item: ${String(itemIdentifier)}`;
170
- // Create a new transaction that spends the UTXO
171
168
  const outpoint = `${registryRecord.txid}.${registryRecord.outputIndex}`;
172
169
  const { signableTransaction } = await this.wallet.createAction({
173
- // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
174
- description,
170
+ description: `Revoke ${registryRecord.definitionType} item: ${itemIdentifier}`,
171
+ inputBEEF: registryRecord.beef,
175
172
  inputs: [
176
173
  {
177
174
  outpoint,
@@ -183,30 +180,40 @@ class RegistryClient {
183
180
  if (signableTransaction === undefined) {
184
181
  throw new Error('Failed to create signable transaction.');
185
182
  }
186
- // Build a transaction object, sign with the unlock script
187
- const tx = index_js_3.Transaction.fromBEEF(signableTransaction.tx);
188
- const finalUnlockScript = await unlocker.sign(tx, registryRecord.outputIndex);
189
- // Complete the signing
183
+ const partialTx = index_js_3.Transaction.fromBEEF(signableTransaction.tx);
184
+ // Prepare the unlocker
185
+ const pushdrop = new index_js_5.PushDrop(this.wallet);
186
+ const unlocker = await pushdrop.unlock(this.mapDefinitionTypeToWalletProtocol(registryRecord.definitionType), '1', 'anyone', 'all', false, registryRecord.satoshis, index_js_5.LockingScript.fromHex(registryRecord.lockingScript));
187
+ // Convert to Transaction, apply signature
188
+ const finalUnlockScript = await unlocker.sign(partialTx, registryRecord.outputIndex);
189
+ // Complete signing with the final unlock script
190
190
  const { tx: signedTx } = await this.wallet.signAction({
191
191
  reference: signableTransaction.reference,
192
192
  spends: {
193
193
  [registryRecord.outputIndex]: {
194
194
  unlockingScript: finalUnlockScript.toHex()
195
195
  }
196
+ },
197
+ options: {
198
+ acceptDelayedBroadcast: false
196
199
  }
197
200
  });
198
201
  if (signedTx === undefined) {
199
202
  throw new Error('Failed to finalize the transaction signature.');
200
203
  }
201
204
  // Broadcast
202
- const broadcaster = new index_js_4.TopicBroadcaster([this.getBroadcastTopic(registryRecord.definitionType)], {
203
- networkPreset: (_a = this.network) !== null && _a !== void 0 ? _a : (this.network = (await (this.wallet.getNetwork({}))).network)
205
+ const broadcaster = new index_js_4.TopicBroadcaster([this.mapDefinitionTypeToTopic(registryRecord.definitionType)], {
206
+ networkPreset: (_a = this.network) !== null && _a !== void 0 ? _a : (this.network = (await this.wallet.getNetwork({})).network)
204
207
  });
205
208
  return await broadcaster.broadcast(index_js_3.Transaction.fromAtomicBEEF(signedTx));
206
209
  }
207
210
  // --------------------------------------------------------------------------
208
- // INTERNAL HELPER METHODS
211
+ // INTERNAL UTILITY METHODS
209
212
  // --------------------------------------------------------------------------
213
+ /**
214
+ * Convert definition data into an array of pushdrop fields (strings).
215
+ * Each definition type has a slightly different shape.
216
+ */
210
217
  buildPushDropFields(data, registryOperator) {
211
218
  let fields;
212
219
  switch (data.definitionType) {
@@ -221,8 +228,7 @@ class RegistryClient {
221
228
  break;
222
229
  case 'protocol':
223
230
  fields = [
224
- data.securityLevel.toString(),
225
- data.protocolID,
231
+ JSON.stringify(data.protocolID),
226
232
  data.name,
227
233
  data.iconURL,
228
234
  data.description,
@@ -240,14 +246,14 @@ class RegistryClient {
240
246
  ];
241
247
  break;
242
248
  default:
243
- throw new Error('Invalid registry kind specified');
249
+ throw new Error('Unsupported definition type');
244
250
  }
245
- // Append the registry operator to all cases.
251
+ // Append the operator's public identity key last
246
252
  fields.push(registryOperator);
247
253
  return fields.map(field => index_js_2.Utils.toArray(field));
248
254
  }
249
255
  /**
250
- * Decodes a pushdrop locking script for a given registry kind,
256
+ * Decodes a pushdrop locking script for a given definition type,
251
257
  * returning a typed record with the appropriate fields.
252
258
  */
253
259
  async parseLockingScript(definitionType, lockingScript) {
@@ -256,15 +262,15 @@ class RegistryClient {
256
262
  throw new Error('Not a valid registry pushdrop script.');
257
263
  }
258
264
  let registryOperator;
259
- let data;
265
+ let parsedData;
260
266
  switch (definitionType) {
261
267
  case 'basket': {
262
- if (decoded.fields.length !== 6) {
268
+ if (decoded.fields.length !== 7) {
263
269
  throw new Error('Unexpected field count for basket type.');
264
270
  }
265
271
  const [basketID, name, iconURL, description, docURL, operator] = decoded.fields;
266
272
  registryOperator = index_js_2.Utils.toUTF8(operator);
267
- data = {
273
+ parsedData = {
268
274
  definitionType: 'basket',
269
275
  basketID: index_js_2.Utils.toUTF8(basketID),
270
276
  name: index_js_2.Utils.toUTF8(name),
@@ -276,14 +282,13 @@ class RegistryClient {
276
282
  }
277
283
  case 'protocol': {
278
284
  if (decoded.fields.length !== 7) {
279
- throw new Error('Unexpected field count for proto type.');
285
+ throw new Error('Unexpected field count for protocol type.');
280
286
  }
281
- const [securityLevel, protocolID, name, iconURL, description, docURL, operator] = decoded.fields;
287
+ const [protocolID, name, iconURL, description, docURL, operator] = decoded.fields;
282
288
  registryOperator = index_js_2.Utils.toUTF8(operator);
283
- data = {
289
+ parsedData = {
284
290
  definitionType: 'protocol',
285
- securityLevel: parseInt(index_js_2.Utils.toUTF8(securityLevel), 10),
286
- protocolID: index_js_2.Utils.toUTF8(protocolID),
291
+ protocolID: deserializeWalletProtocol(index_js_2.Utils.toUTF8(protocolID)),
287
292
  name: index_js_2.Utils.toUTF8(name),
288
293
  iconURL: index_js_2.Utils.toUTF8(iconURL),
289
294
  description: index_js_2.Utils.toUTF8(description),
@@ -292,19 +297,19 @@ class RegistryClient {
292
297
  break;
293
298
  }
294
299
  case 'certificate': {
295
- if (decoded.fields.length !== 7) {
300
+ if (decoded.fields.length !== 8) {
296
301
  throw new Error('Unexpected field count for certificate type.');
297
302
  }
298
303
  const [certType, name, iconURL, description, docURL, fieldsJSON, operator] = decoded.fields;
299
304
  registryOperator = index_js_2.Utils.toUTF8(operator);
300
- let parsedFields;
305
+ let parsedFields = {};
301
306
  try {
302
307
  parsedFields = JSON.parse(index_js_2.Utils.toUTF8(fieldsJSON));
303
308
  }
304
309
  catch {
305
- parsedFields = {};
310
+ // If there's a JSON parse error, assume empty
306
311
  }
307
- data = {
312
+ parsedData = {
308
313
  definitionType: 'certificate',
309
314
  type: index_js_2.Utils.toUTF8(certType),
310
315
  name: index_js_2.Utils.toUTF8(name),
@@ -316,21 +321,20 @@ class RegistryClient {
316
321
  break;
317
322
  }
318
323
  default:
319
- throw new Error('Invalid registry kind for parsing.');
324
+ throw new Error(`Unsupported definition type: ${definitionType}`);
320
325
  }
326
+ // Enforce that the pushdrop belongs to the CURRENT identity key
321
327
  const currentIdentityKey = (await this.wallet.getPublicKey({ identityKey: true })).publicKey;
322
328
  if (registryOperator !== currentIdentityKey) {
323
329
  throw new Error('This registry token does not belong to the current wallet.');
324
330
  }
325
- return {
326
- ...data,
327
- registryOperator
328
- };
331
+ // Return the typed data plus the operator key
332
+ return { ...parsedData, registryOperator };
329
333
  }
330
334
  /**
331
- * Returns the (protocolID, keyID) used for pushdrop based on the registry kind.
335
+ * Convert our definitionType to the wallet protocol format ([protocolID, keyID]).
332
336
  */
333
- getWalletProtocol(definitionType) {
337
+ mapDefinitionTypeToWalletProtocol(definitionType) {
334
338
  switch (definitionType) {
335
339
  case 'basket':
336
340
  return [1, 'basketmap'];
@@ -339,13 +343,13 @@ class RegistryClient {
339
343
  case 'certificate':
340
344
  return [1, 'certmap'];
341
345
  default:
342
- throw new Error(`Unknown registry type: ${definitionType}`);
346
+ throw new Error(`Unknown definition type: ${definitionType}`);
343
347
  }
344
348
  }
345
349
  /**
346
- * Returns the name of the basket used by the wallet
350
+ * Convert 'basket'|'protocol'|'certificate' to the basket name used by the wallet.
347
351
  */
348
- getBasketName(definitionType) {
352
+ mapDefinitionTypeToBasketName(definitionType) {
349
353
  switch (definitionType) {
350
354
  case 'basket':
351
355
  return 'basketmap';
@@ -354,13 +358,13 @@ class RegistryClient {
354
358
  case 'certificate':
355
359
  return 'certmap';
356
360
  default:
357
- throw new Error(`Unknown basket type: ${definitionType}`);
361
+ throw new Error(`Unknown definition type: ${definitionType}`);
358
362
  }
359
363
  }
360
364
  /**
361
- * Returns the broadcast topic to be used with SHIPBroadcaster.
365
+ * Convert 'basket'|'protocol'|'certificate' to the broadcast topic name.
362
366
  */
363
- getBroadcastTopic(definitionType) {
367
+ mapDefinitionTypeToTopic(definitionType) {
364
368
  switch (definitionType) {
365
369
  case 'basket':
366
370
  return 'tm_basketmap';
@@ -369,13 +373,13 @@ class RegistryClient {
369
373
  case 'certificate':
370
374
  return 'tm_certmap';
371
375
  default:
372
- throw new Error(`Unknown topic type: ${definitionType}`);
376
+ throw new Error(`Unknown definition type: ${definitionType}`);
373
377
  }
374
378
  }
375
379
  /**
376
- * Returns the lookup service name to use.
380
+ * Convert 'basket'|'protocol'|'certificate' to the lookup service name.
377
381
  */
378
- getServiceName(definitionType) {
382
+ mapDefinitionTypeToServiceName(definitionType) {
379
383
  switch (definitionType) {
380
384
  case 'basket':
381
385
  return 'ls_basketmap';
@@ -384,9 +388,28 @@ class RegistryClient {
384
388
  case 'certificate':
385
389
  return 'ls_certmap';
386
390
  default:
387
- throw new Error(`Unknown service type: ${definitionType}`);
391
+ throw new Error(`Unknown definition type: ${definitionType}`);
388
392
  }
389
393
  }
390
394
  }
391
395
  exports.RegistryClient = RegistryClient;
396
+ function deserializeWalletProtocol(str) {
397
+ // Parse the JSON string back into a JavaScript value.
398
+ const parsed = JSON.parse(str);
399
+ // Validate that the parsed value is an array with exactly two elements.
400
+ if (!Array.isArray(parsed) || parsed.length !== 2) {
401
+ throw new Error('Invalid wallet protocol format.');
402
+ }
403
+ const [security, protocolString] = parsed;
404
+ // Validate that the security level is one of the allowed numbers.
405
+ if (![0, 1, 2].includes(security)) {
406
+ throw new Error('Invalid security level.');
407
+ }
408
+ // Validate that the protocol string is a string and its length is within the allowed bounds.
409
+ if (typeof protocolString !== 'string') {
410
+ throw new Error('Invalid protocolID');
411
+ }
412
+ return [security, protocolString];
413
+ }
414
+ exports.deserializeWalletProtocol = deserializeWalletProtocol;
392
415
  //# sourceMappingURL=RegistryClient.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"RegistryClient.js","sourceRoot":"","sources":["../../../../src/registry/RegistryClient.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"RegistryClient.js","sourceRoot":"","sources":["../../../../src/registry/RegistryClient.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,82 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.StorageDownloader = void 0;
7
+ const index_js_1 = require("../overlay-tools/index.js");
8
+ const index_js_2 = require("./index.js");
9
+ const PushDrop_js_1 = __importDefault(require("../script/templates/PushDrop.js"));
10
+ const Transaction_js_1 = __importDefault(require("../transaction/Transaction.js"));
11
+ const index_js_3 = require("../primitives/index.js");
12
+ /**
13
+ * Locates HTTP URLs where content can be downloaded. It uses the passed or the default one.
14
+ *
15
+ * @param {Object} obj All parameters are passed in an object.
16
+ * @param {String} obj.uhrpUrl The UHRP url to resolve.
17
+ * @param {string} obj.confederacyHost HTTPS URL for for the with default setting.
18
+ *
19
+ * @return {Array<String>} An array of HTTP URLs where content can be downloaded.
20
+ * @throws {Error} If UHRP url parameter invalid or is not an array
21
+ * or there is an error retrieving url(s) stored in the UHRP token.
22
+ */
23
+ class StorageDownloader {
24
+ constructor(config) {
25
+ this.networkPreset = 'mainnet';
26
+ this.networkPreset = config === null || config === void 0 ? void 0 : config.networkPreset;
27
+ }
28
+ async resolve(uhrpUrl) {
29
+ // Use UHRP lookup service
30
+ const lookupResolver = new index_js_1.LookupResolver({ networkPreset: this.networkPreset });
31
+ const response = await lookupResolver.query({ service: 'ls_uhrp', query: { uhrpUrl } });
32
+ if (response.type !== 'output-list') {
33
+ throw new Error('Lookup answer must be an output list');
34
+ }
35
+ const decodedResults = [];
36
+ for (let i = 0; i < response.outputs.length; i++) {
37
+ const tx = Transaction_js_1.default.fromBEEF(response.outputs[i].beef);
38
+ const { fields } = PushDrop_js_1.default.decode(tx.outputs[response.outputs[i].outputIndex].lockingScript);
39
+ decodedResults.push(index_js_3.Utils.toUTF8(fields[2]));
40
+ }
41
+ return decodedResults;
42
+ }
43
+ async download(uhrpUrl) {
44
+ if (!index_js_2.StorageUtils.isValidURL(uhrpUrl)) {
45
+ throw new Error('Invalid parameter UHRP url');
46
+ }
47
+ const hash = index_js_2.StorageUtils.getHashFromURL(uhrpUrl);
48
+ const downloadURLs = await this.resolve(uhrpUrl);
49
+ if (!Array.isArray(downloadURLs) || downloadURLs.length === 0) {
50
+ throw new Error('No one currently hosts this file!');
51
+ }
52
+ for (let i = 0; i < downloadURLs.length; i++) {
53
+ try {
54
+ // The url is fetched
55
+ const result = await fetch(downloadURLs[i], { method: 'GET' });
56
+ // If the request fails, continue to the next url
57
+ if (!result.ok || result.status >= 400) {
58
+ continue;
59
+ }
60
+ const body = await result.arrayBuffer();
61
+ // The body is loaded into a number array
62
+ const content = [...new Uint8Array(body)];
63
+ const contentHash = index_js_3.Hash.sha256(content);
64
+ for (let i = 0; i < contentHash.length; ++i) {
65
+ if (contentHash[i] !== hash[i]) {
66
+ throw new Error('Value of content does not match hash of the url given');
67
+ }
68
+ }
69
+ return {
70
+ data: content,
71
+ mimeType: result.headers.get('Content-Type')
72
+ };
73
+ }
74
+ catch (error) {
75
+ continue;
76
+ }
77
+ }
78
+ throw new Error(`Unable to download content from ${uhrpUrl}`);
79
+ }
80
+ }
81
+ exports.StorageDownloader = StorageDownloader;
82
+ //# sourceMappingURL=StorageDownloader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StorageDownloader.js","sourceRoot":"","sources":["../../../../src/storage/StorageDownloader.ts"],"names":[],"mappings":"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"}