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