@bsv/sdk 1.7.0 → 1.7.2

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.
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bsv/sdk",
3
- "version": "1.7.0",
3
+ "version": "1.7.2",
4
4
  "type": "commonjs",
5
5
  "description": "BSV Blockchain Software Development Kit",
6
6
  "files": [
@@ -83,9 +83,17 @@ class IdentityClient {
83
83
  * Resolves displayable identity certificates, issued to a given identity key by a trusted certifier.
84
84
  *
85
85
  * @param {DiscoverByIdentityKeyArgs} args - Arguments for requesting the discovery based on the identity key.
86
+ * @param {boolean} [overrideWithContacts=true] - Whether to override the results with personal contacts if available.
86
87
  * @returns {Promise<DisplayableIdentity[]>} The promise resolves to displayable identities.
87
88
  */
88
- async resolveByIdentityKey(args) {
89
+ async resolveByIdentityKey(args, overrideWithContacts = true) {
90
+ if (overrideWithContacts) {
91
+ // Override results with personal contacts if available
92
+ const contacts = await this.contactsManager.getContacts(args.identityKey);
93
+ if (contacts.length > 0) {
94
+ return contacts;
95
+ }
96
+ }
89
97
  const { certificates } = await this.wallet.discoverByIdentityKey(args, this.originator);
90
98
  return certificates.map(cert => {
91
99
  return IdentityClient.parseIdentity(cert);
@@ -95,13 +103,21 @@ class IdentityClient {
95
103
  * Resolves displayable identity certificates by specific identity attributes, issued by a trusted entity.
96
104
  *
97
105
  * @param {DiscoverByAttributesArgs} args - Attributes and optional parameters used to discover certificates.
106
+ * @param {boolean} [overrideWithContacts=true] - Whether to override the results with personal contacts if available.
98
107
  * @returns {Promise<DisplayableIdentity[]>} The promise resolves to displayable identities.
99
108
  */
100
- async resolveByAttributes(args) {
101
- const { certificates } = await this.wallet.discoverByAttributes(args, this.originator);
102
- return certificates.map(cert => {
103
- return IdentityClient.parseIdentity(cert);
104
- });
109
+ async resolveByAttributes(args, overrideWithContacts = true) {
110
+ // Run both queries in parallel for better performance
111
+ const [contacts, certificatesResult] = await Promise.all([
112
+ overrideWithContacts ? this.contactsManager.getContacts() : Promise.resolve([]),
113
+ this.wallet.discoverByAttributes(args, this.originator)
114
+ ]);
115
+ // Fast lookup by identityKey
116
+ const contactByKey = new Map(contacts.map(contact => [contact.identityKey, contact]));
117
+ // Guard if certificates might be absent
118
+ const certs = certificatesResult?.certificates ?? [];
119
+ // Parse certificates and substitute with contacts where available
120
+ return certs.map(cert => contactByKey.get(cert.subject) ?? IdentityClient.parseIdentity(cert));
105
121
  }
106
122
  /**
107
123
  * TODO: Implement once revocation overlay is created
@@ -1 +1 @@
1
- {"version":3,"file":"IdentityClient.js","sourceRoot":"","sources":["../../../../src/identity/IdentityClient.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"IdentityClient.js","sourceRoot":"","sources":["../../../../src/identity/IdentityClient.ts"],"names":[],"mappings":"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"}
@@ -35,32 +35,39 @@ class HTTPSOverlayLookupFacilitator {
35
35
  if (!url.startsWith('https:') && !this.allowHTTP) {
36
36
  throw new Error('HTTPS facilitator can only use URLs that start with "https:"');
37
37
  }
38
- const timeoutPromise = new Promise((resolve, reject) => setTimeout(() => reject(new Error('Request timed out')), timeout));
39
- const fetchPromise = fetch(`${url}/lookup`, {
40
- method: 'POST',
41
- headers: {
42
- 'Content-Type': 'application/json'
43
- },
44
- body: JSON.stringify({
45
- service: question.service,
46
- query: question.query
47
- })
48
- });
49
- const response = (await Promise.race([
50
- fetchPromise,
51
- timeoutPromise
52
- ]));
53
- if (response.ok) {
38
+ const controller = typeof AbortController !== 'undefined' ? new AbortController() : undefined;
39
+ const timer = setTimeout(() => {
40
+ try {
41
+ controller?.abort();
42
+ }
43
+ catch { /* noop */ }
44
+ }, timeout);
45
+ try {
46
+ const fco = {
47
+ method: 'POST',
48
+ headers: { 'Content-Type': 'application/json' },
49
+ body: JSON.stringify({ service: question.service, query: question.query }),
50
+ signal: controller?.signal
51
+ };
52
+ const response = await this.fetchClient(`${url}/lookup`, fco);
53
+ if (!response.ok)
54
+ throw new Error(`Failed to facilitate lookup (HTTP ${response.status})`);
54
55
  return await response.json();
55
56
  }
56
- else {
57
- throw new Error('Failed to facilitate lookup');
57
+ catch (e) {
58
+ // Normalize timeouts to a consistent error message
59
+ if (e?.name === 'AbortError')
60
+ throw new Error('Request timed out');
61
+ throw e;
62
+ }
63
+ finally {
64
+ clearTimeout(timer);
58
65
  }
59
66
  }
60
67
  }
61
68
  exports.HTTPSOverlayLookupFacilitator = HTTPSOverlayLookupFacilitator;
62
69
  /**
63
- * Represents an SHIP transaction broadcaster.
70
+ * Represents a Lookup Resolver.
64
71
  */
65
72
  class LookupResolver {
66
73
  constructor(config = {}) {
@@ -69,6 +76,13 @@ class LookupResolver {
69
76
  this.slapTrackers = config.slapTrackers ?? (this.networkPreset === 'mainnet' ? exports.DEFAULT_SLAP_TRACKERS : exports.DEFAULT_TESTNET_SLAP_TRACKERS);
70
77
  this.hostOverrides = config.hostOverrides ?? {};
71
78
  this.additionalHosts = config.additionalHosts ?? {};
79
+ // cache tuning
80
+ this.hostsTtlMs = config.cache?.hostsTtlMs ?? 5 * 60 * 1000; // 5 min
81
+ this.hostsMaxEntries = config.cache?.hostsMaxEntries ?? 128;
82
+ this.txMemoTtlMs = config.cache?.txMemoTtlMs ?? 10 * 60 * 1000; // 10 min
83
+ this.hostsCache = new Map();
84
+ this.hostsInFlight = new Map();
85
+ this.txMemo = new Map();
72
86
  }
73
87
  /**
74
88
  * Given a LookupQuestion, returns a LookupAnswer. Aggregates across multiple services and supports resiliency.
@@ -85,53 +99,119 @@ class LookupResolver {
85
99
  competentHosts = ['http://localhost:8080'];
86
100
  }
87
101
  else {
88
- competentHosts = await this.findCompetentHosts(question.service);
102
+ competentHosts = await this.getCompetentHostsCached(question.service);
89
103
  }
90
104
  if (this.additionalHosts[question.service]?.length > 0) {
91
- competentHosts = [
92
- ...competentHosts,
93
- ...this.additionalHosts[question.service]
94
- ];
105
+ // preserve order: resolved hosts first, then additional (unique)
106
+ const extra = this.additionalHosts[question.service];
107
+ const seen = new Set(competentHosts);
108
+ for (const h of extra)
109
+ if (!seen.has(h))
110
+ competentHosts.push(h);
95
111
  }
96
112
  if (competentHosts.length < 1) {
97
113
  throw new Error(`No competent ${this.networkPreset} hosts found by the SLAP trackers for lookup service: ${question.service}`);
98
114
  }
99
- // Use Promise.allSettled to handle individual host failures
100
- const hostResponses = await Promise.allSettled(competentHosts.map(async (host) => await this.facilitator.lookup(host, question, timeout)));
101
- const successfulResponses = hostResponses
102
- .filter((result) => result.status === 'fulfilled')
103
- .map((result) => result.value);
104
- if (successfulResponses.length === 0) {
105
- throw new Error('No successful responses from any hosts');
106
- }
107
- // Process the successful responses
108
- // Aggregate outputs from all successful responses
109
- const outputs = new Map();
110
- for (const response of successfulResponses) {
111
- if (response.type !== 'output-list') {
115
+ // Fire all hosts with per-host timeout, harvest successful output-list responses
116
+ const hostResponses = await Promise.allSettled(competentHosts.map(async (host) => {
117
+ return await this.facilitator.lookup(host, question, timeout);
118
+ }));
119
+ const outputsMap = new Map();
120
+ // Memo key helper for tx parsing
121
+ const beefKey = (beef) => {
122
+ if (typeof beef !== 'object')
123
+ return ''; // The invalid BEEF has an empty key.
124
+ // A fast and deterministic key for memoization; avoids large JSON strings
125
+ // since beef is an array of integers, join is safe and compact.
126
+ return beef.join(',');
127
+ };
128
+ for (const result of hostResponses) {
129
+ if (result.status !== 'fulfilled')
112
130
  continue;
113
- }
114
- try {
115
- for (const output of response.outputs) {
131
+ const response = result.value;
132
+ if (response?.type !== 'output-list' || !Array.isArray(response.outputs))
133
+ continue;
134
+ for (const output of response.outputs) {
135
+ const keyForBeef = beefKey(output.beef);
136
+ let memo = this.txMemo.get(keyForBeef);
137
+ const now = Date.now();
138
+ if (typeof memo !== 'object' || memo === null || memo.expiresAt <= now) {
116
139
  try {
117
- const txId = index_js_1.Transaction.fromBEEF(output.beef).id('hex'); // !! This is STUPIDLY inefficient.
118
- const key = `${txId}.${output.outputIndex}`;
119
- outputs.set(key, output);
140
+ const txId = index_js_1.Transaction.fromBEEF(output.beef).id('hex');
141
+ memo = { txId, expiresAt: now + this.txMemoTtlMs };
142
+ // prune opportunistically if the map gets too large (cheap heuristic)
143
+ if (this.txMemo.size > 4096)
144
+ this.evictOldest(this.txMemo);
145
+ this.txMemo.set(keyForBeef, memo);
120
146
  }
121
147
  catch {
122
148
  continue;
123
149
  }
124
150
  }
125
- }
126
- catch (_) {
127
- // Error processing output, proceed.
151
+ const uniqKey = `${memo.txId}.${output.outputIndex}`;
152
+ // last-writer wins is fine here; outputs are identical if uniqKey matches
153
+ outputsMap.set(uniqKey, output);
128
154
  }
129
155
  }
130
156
  return {
131
157
  type: 'output-list',
132
- outputs: Array.from(outputs.values())
158
+ outputs: Array.from(outputsMap.values())
133
159
  };
134
160
  }
161
+ /**
162
+ * Cached wrapper for competent host discovery with stale-while-revalidate.
163
+ */
164
+ async getCompetentHostsCached(service) {
165
+ const now = Date.now();
166
+ const cached = this.hostsCache.get(service);
167
+ // if fresh, return immediately
168
+ if (typeof cached === 'object' && cached.expiresAt > now) {
169
+ return cached.hosts.slice();
170
+ }
171
+ // if stale but present, kick off a refresh if not already in-flight and return stale
172
+ if (typeof cached === 'object' && cached.expiresAt <= now) {
173
+ if (!this.hostsInFlight.has(service)) {
174
+ this.hostsInFlight.set(service, this.refreshHosts(service).finally(() => {
175
+ this.hostsInFlight.delete(service);
176
+ }));
177
+ }
178
+ return cached.hosts.slice();
179
+ }
180
+ // no cache: coalesce concurrent requests
181
+ if (this.hostsInFlight.has(service)) {
182
+ try {
183
+ const hosts = await this.hostsInFlight.get(service);
184
+ if (typeof hosts !== 'object') {
185
+ throw new Error('Hosts is not defined.');
186
+ }
187
+ return hosts.slice();
188
+ }
189
+ catch {
190
+ // fall through to a fresh attempt below
191
+ }
192
+ }
193
+ const promise = this.refreshHosts(service).finally(() => {
194
+ this.hostsInFlight.delete(service);
195
+ });
196
+ this.hostsInFlight.set(service, promise);
197
+ const hosts = await promise;
198
+ return hosts.slice();
199
+ }
200
+ /**
201
+ * Actually resolves competent hosts from SLAP trackers and updates cache.
202
+ */
203
+ async refreshHosts(service) {
204
+ const hosts = await this.findCompetentHosts(service);
205
+ const expiresAt = Date.now() + this.hostsTtlMs;
206
+ // bounded cache with simple FIFO eviction
207
+ if (!this.hostsCache.has(service) && this.hostsCache.size >= this.hostsMaxEntries) {
208
+ const oldestKey = this.hostsCache.keys().next().value;
209
+ if (oldestKey !== undefined)
210
+ this.hostsCache.delete(oldestKey);
211
+ }
212
+ this.hostsCache.set(service, { hosts, expiresAt });
213
+ return hosts;
214
+ }
135
215
  /**
136
216
  * Returns a list of competent hosts for a given lookup service.
137
217
  * @param service Service for which competent hosts are to be returned
@@ -140,45 +220,43 @@ class LookupResolver {
140
220
  async findCompetentHosts(service) {
141
221
  const query = {
142
222
  service: 'ls_slap',
143
- query: {
144
- service
145
- }
223
+ query: { service }
146
224
  };
147
- // Use Promise.allSettled to handle individual SLAP tracker failures
225
+ // Query all SLAP trackers; tolerate failures.
148
226
  const trackerResponses = await Promise.allSettled(this.slapTrackers.map(async (tracker) => await this.facilitator.lookup(tracker, query, MAX_TRACKER_WAIT_TIME)));
149
227
  const hosts = new Set();
150
228
  for (const result of trackerResponses) {
151
- if (result.status === 'fulfilled') {
152
- const answer = result.value;
153
- if (answer.type !== 'output-list') {
154
- // Log invalid response and continue
155
- continue;
156
- }
157
- for (const output of answer.outputs) {
158
- try {
159
- const tx = index_js_1.Transaction.fromBEEF(output.beef);
160
- const script = tx.outputs[output.outputIndex].lockingScript;
161
- const parsed = OverlayAdminTokenTemplate_js_1.default.decode(script);
162
- if (parsed.topicOrService !== service ||
163
- parsed.protocol !== 'SLAP') {
164
- // Invalid advertisement, skip
165
- continue;
166
- }
167
- hosts.add(parsed.domain);
168
- }
169
- catch {
170
- // Invalid output, skip
229
+ if (result.status !== 'fulfilled')
230
+ continue;
231
+ const answer = result.value;
232
+ if (answer.type !== 'output-list')
233
+ continue;
234
+ for (const output of answer.outputs) {
235
+ try {
236
+ const tx = index_js_1.Transaction.fromBEEF(output.beef);
237
+ const script = tx.outputs[output.outputIndex]?.lockingScript;
238
+ if (typeof script !== 'object' || script === null)
171
239
  continue;
240
+ const parsed = OverlayAdminTokenTemplate_js_1.default.decode(script);
241
+ if (parsed.topicOrService !== service || parsed.protocol !== 'SLAP')
242
+ continue;
243
+ if (typeof parsed.domain === 'string' && parsed.domain.length > 0) {
244
+ hosts.add(parsed.domain);
172
245
  }
173
246
  }
174
- }
175
- else {
176
- // Log tracker failure and continue
177
- continue;
247
+ catch {
248
+ continue;
249
+ }
178
250
  }
179
251
  }
180
252
  return [...hosts];
181
253
  }
254
+ /** Evict an arbitrary “oldest” entry from a Map (iteration order). */
255
+ evictOldest(m) {
256
+ const firstKey = m.keys().next().value;
257
+ if (firstKey !== undefined)
258
+ m.delete(firstKey);
259
+ }
182
260
  }
183
261
  exports.default = LookupResolver;
184
262
  //# sourceMappingURL=LookupResolver.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"LookupResolver.js","sourceRoot":"","sources":["../../../../src/overlay-tools/LookupResolver.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"LookupResolver.js","sourceRoot":"","sources":["../../../../src/overlay-tools/LookupResolver.ts"],"names":[],"mappings":"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"}