@reclaimprotocol/attestor-core 3.1.1 → 4.0.0

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 (88) hide show
  1. package/lib/avs/contracts/index.js +18 -8
  2. package/lib/avs/utils/tasks.d.ts +1 -1
  3. package/lib/client/create-claim.d.ts +2 -2
  4. package/lib/client/create-claim.js +89 -33
  5. package/lib/client/utils/client-socket.d.ts +3 -1
  6. package/lib/client/utils/client-socket.js +25 -8
  7. package/lib/config/index.d.ts +4 -0
  8. package/lib/config/index.js +8 -3
  9. package/lib/index.js +18 -8
  10. package/lib/proto/api.d.ts +80 -2
  11. package/lib/proto/api.js +853 -101
  12. package/lib/providers/http/index.js +180 -109
  13. package/lib/providers/http/utils.d.ts +3 -6
  14. package/lib/providers/http/utils.js +13 -11
  15. package/lib/providers/index.js +1 -3
  16. package/lib/scripts/generate-receipt.js +6 -3
  17. package/lib/scripts/generate-toprf-keys.d.ts +1 -0
  18. package/lib/scripts/generate-toprf-keys.js +23 -0
  19. package/lib/server/create-server.js +14 -7
  20. package/lib/server/handlers/claimTunnel.js +33 -10
  21. package/lib/server/handlers/createTunnel.js +44 -8
  22. package/lib/server/handlers/disconnectTunnel.js +2 -2
  23. package/lib/server/handlers/index.js +4 -2
  24. package/lib/server/handlers/init.js +17 -2
  25. package/lib/server/handlers/toprf.d.ts +2 -0
  26. package/lib/server/handlers/toprf.js +21 -0
  27. package/lib/server/socket.d.ts +5 -3
  28. package/lib/server/socket.js +25 -5
  29. package/lib/server/tunnels/make-tcp-tunnel.js +10 -24
  30. package/lib/server/utils/apm.js +1 -1
  31. package/lib/server/utils/assert-valid-claim-request.d.ts +2 -2
  32. package/lib/server/utils/assert-valid-claim-request.js +17 -9
  33. package/lib/server/utils/dns.d.ts +1 -0
  34. package/lib/server/utils/dns.js +22 -0
  35. package/lib/server/utils/generics.d.ts +1 -1
  36. package/lib/tests/describe-with-server.d.ts +0 -2
  37. package/lib/tests/describe-with-server.js +1 -4
  38. package/lib/tests/mock-provider-server.d.ts +1 -1
  39. package/lib/tests/test.auth.d.ts +1 -0
  40. package/lib/tests/test.auth.js +75 -0
  41. package/lib/tests/test.bgp-listener.d.ts +1 -0
  42. package/lib/tests/test.bgp-listener.js +169 -0
  43. package/lib/tests/test.claim-creation.js +100 -7
  44. package/lib/tests/test.http-parser.d.ts +1 -1
  45. package/lib/tests/test.http-parser.js +7 -5
  46. package/lib/tests/test.http-provider-utils.js +155 -30
  47. package/lib/tests/test.http-provider.js +50 -7
  48. package/lib/tests/test.zk.js +54 -4
  49. package/lib/tests/utils.d.ts +6 -0
  50. package/lib/tests/utils.js +16 -1
  51. package/lib/types/bgp.d.ts +11 -0
  52. package/lib/types/bgp.js +3 -0
  53. package/lib/types/claims.d.ts +14 -5
  54. package/lib/types/client.d.ts +30 -3
  55. package/lib/types/general.d.ts +12 -0
  56. package/lib/types/handlers.d.ts +4 -4
  57. package/lib/types/index.d.ts +1 -0
  58. package/lib/types/index.js +2 -1
  59. package/lib/types/providers.d.ts +9 -9
  60. package/lib/types/providers.gen.d.ts +12 -152
  61. package/lib/types/providers.gen.js +2 -6
  62. package/lib/types/zk.d.ts +11 -2
  63. package/lib/utils/auth.d.ts +7 -0
  64. package/lib/utils/auth.js +64 -0
  65. package/lib/utils/b64-json.d.ts +2 -0
  66. package/lib/utils/b64-json.js +23 -0
  67. package/lib/utils/bgp-listener.d.ts +7 -0
  68. package/lib/utils/bgp-listener.js +126 -0
  69. package/lib/utils/claims.js +3 -3
  70. package/lib/utils/generics.d.ts +5 -5
  71. package/lib/utils/generics.js +3 -3
  72. package/lib/utils/index.d.ts +2 -0
  73. package/lib/utils/index.js +3 -1
  74. package/lib/utils/redactions.d.ts +19 -6
  75. package/lib/utils/redactions.js +41 -4
  76. package/lib/utils/socket-base.d.ts +3 -2
  77. package/lib/utils/socket-base.js +7 -2
  78. package/lib/utils/ws.d.ts +5 -5
  79. package/lib/utils/ws.js +27 -10
  80. package/lib/utils/zk.d.ts +12 -7
  81. package/lib/utils/zk.js +197 -42
  82. package/lib/window-rpc/setup-window-rpc.js +29 -8
  83. package/lib/window-rpc/types.d.ts +16 -21
  84. package/lib/window-rpc/utils.d.ts +2 -1
  85. package/lib/window-rpc/utils.js +27 -1
  86. package/lib/window-rpc/window-rpc-zk.d.ts +8 -3
  87. package/lib/window-rpc/window-rpc-zk.js +58 -45
  88. package/package.json +24 -22
@@ -32,8 +32,8 @@ const HTTP_PROVIDER = {
32
32
  }
33
33
  return defaultOptions;
34
34
  },
35
- createRequest(secretParams, params) {
36
- var _a;
35
+ createRequest(secretParams, params, logger) {
36
+ var _a, _b;
37
37
  if (!secretParams.cookieStr &&
38
38
  !secretParams.authorisationHeader &&
39
39
  !secretParams.headers) {
@@ -60,14 +60,14 @@ const HTTP_PROVIDER = {
60
60
  const url = new URL(params.url);
61
61
  const { pathname } = url;
62
62
  const searchParams = params.url.includes('?') ? params.url.split('?')[1] : '';
63
- utils_3.logger.info({ url: params.url, path: pathname, query: searchParams.toString() });
63
+ logger.info({ url: params.url, path: pathname, query: searchParams.toString() });
64
64
  const body = params.body instanceof Uint8Array
65
65
  ? params.body
66
66
  : (0, tls_1.strToUint8Array)(params.body || '');
67
67
  const contentLength = body.length;
68
68
  const reqLine = `${params.method} ${pathname}${(searchParams === null || searchParams === void 0 ? void 0 : searchParams.length) ? '?' + searchParams : ''} HTTP/1.1`;
69
69
  const secHeadersList = (0, utils_2.buildHeaders)(secHeaders);
70
- utils_3.logger.info({ requestLine: reqLine });
70
+ logger.info({ requestLine: reqLine });
71
71
  const httpReqHeaderStr = [
72
72
  reqLine,
73
73
  `Host: ${getHostHeaderString(url)}`,
@@ -100,31 +100,44 @@ const HTTP_PROVIDER = {
100
100
  }
101
101
  }
102
102
  }
103
+ if (((_b = newParams.hiddenURLParts) === null || _b === void 0 ? void 0 : _b.length) > 0) {
104
+ for (const hiddenURLPart of newParams.hiddenURLParts) {
105
+ if (hiddenURLPart.length) {
106
+ redactions.push({
107
+ fromIndex: hiddenURLPart.index,
108
+ toIndex: hiddenURLPart.index + hiddenURLPart.length,
109
+ });
110
+ }
111
+ }
112
+ }
113
+ redactions.sort((a, b) => a.toIndex - b.toIndex);
103
114
  return {
104
115
  data,
105
116
  redactions: redactions,
106
117
  };
107
118
  },
108
- getResponseRedactions(response, rawParams) {
119
+ getResponseRedactions(response, rawParams, logger) {
109
120
  var _a, _b;
110
- utils_3.logger.debug({ response: utils_1.base64.encode(response), params: rawParams });
121
+ logger.debug({ response: utils_1.base64.encode(response), params: rawParams });
111
122
  const res = (0, utils_2.parseHttpResponse)(response);
112
123
  if (!((_a = rawParams.responseRedactions) === null || _a === void 0 ? void 0 : _a.length)) {
113
124
  return [];
114
125
  }
115
126
  if (((res.statusCode / 100) >> 0) !== 2) {
116
- utils_3.logger.error({ response: utils_1.base64.encode(response), params: rawParams });
117
- throw new Error(`Provider returned ${res.statusCode} ${res.statusMessage} error`);
127
+ logger.error({ response: utils_1.base64.encode(response), params: rawParams });
128
+ throw new Error(`Expected status 2xx, got ${res.statusCode} (${res.statusMessage})`);
118
129
  }
119
130
  const newParams = substituteParamValues(rawParams, undefined, true);
120
131
  const params = newParams.newParams;
121
132
  const headerEndIndex = res.statusLineEndIndex;
122
133
  const bodyStartIdx = (_b = res.bodyStartIndex) !== null && _b !== void 0 ? _b : 0;
123
134
  if (bodyStartIdx < 4) {
124
- utils_3.logger.error({ response: (0, utils_3.uint8ArrayToBinaryStr)(response) });
135
+ logger.error({ response: (0, utils_3.uint8ArrayToBinaryStr)(response) });
125
136
  throw new Error('Failed to find response body');
126
137
  }
127
- const reveals = [{ fromIndex: 0, toIndex: headerEndIndex }];
138
+ const reveals = [
139
+ { fromIndex: 0, toIndex: headerEndIndex }
140
+ ];
128
141
  //reveal date header
129
142
  if (res.headerIndices['date']) {
130
143
  reveals.push(res.headerIndices['date']);
@@ -132,84 +145,13 @@ const HTTP_PROVIDER = {
132
145
  const body = (0, utils_3.uint8ArrayToBinaryStr)(res.body);
133
146
  const redactions = [];
134
147
  for (const rs of params.responseRedactions || []) {
135
- let element = body;
136
- let elementIdx = 0;
137
- let elementLength = -1;
138
- if (rs.xPath) {
139
- const indexes = (0, utils_2.extractHTMLElementsIndexes)(body, rs.xPath, !!rs.jsonPath);
140
- for (const { start, end } of indexes) {
141
- element = body.slice(start, end);
142
- elementIdx = start;
143
- elementLength = end - start;
144
- if (rs.jsonPath) {
145
- processJsonPath();
146
- }
147
- else if (rs.regex) {
148
- processRegexp();
149
- }
150
- else {
151
- addRedaction();
152
- }
153
- }
154
- }
155
- else if (rs.jsonPath) {
156
- processJsonPath();
157
- if (rs.regex) {
158
- processRegexp();
159
- }
160
- else {
161
- addRedaction();
162
- }
163
- }
164
- else if (rs.regex) {
165
- processRegexp();
166
- }
167
- function processJsonPath() {
168
- const jsonPathIndexes = (0, utils_2.extractJSONValueIndexes)(element, rs.jsonPath);
169
- // eslint-disable-next-line max-depth
170
- const eIndex = elementIdx;
171
- for (const ji of jsonPathIndexes) {
172
- const jStart = ji.start;
173
- const jEnd = ji.end;
174
- element = body.slice(eIndex + jStart, eIndex + jEnd);
175
- elementIdx = eIndex + jStart;
176
- elementLength = jEnd - jStart;
177
- // eslint-disable-next-line max-depth
178
- if (rs.regex) {
179
- processRegexp();
180
- }
181
- else {
182
- addRedaction();
183
- }
184
- }
185
- }
186
- function processRegexp() {
187
- const regexp = (0, utils_2.makeRegex)(rs.regex);
188
- const elem = element || body;
189
- const match = regexp.exec(elem);
190
- // eslint-disable-next-line max-depth
191
- if (!(match === null || match === void 0 ? void 0 : match[0])) {
192
- utils_3.logger.error({ response: (0, utils_3.uint8ArrayToBinaryStr)(res.body) });
193
- throw new Error(`regexp ${rs.regex} does not match found element '${elem}'`);
194
- }
195
- elementIdx += match.index;
196
- elementLength = regexp.lastIndex - match.index;
197
- element = match[0];
198
- addRedaction();
199
- }
200
- // eslint-disable-next-line unicorn/consistent-function-scoping
201
- function addRedaction() {
202
- if (elementIdx >= 0 && elementLength > 0) {
203
- const from = (0, utils_2.convertResponsePosToAbsolutePos)(elementIdx, bodyStartIdx, res.chunks);
204
- const to = (0, utils_2.convertResponsePosToAbsolutePos)(elementIdx + elementLength, bodyStartIdx, res.chunks);
205
- reveals.push({ fromIndex: from, toIndex: to });
206
- redactions.push(...(0, utils_2.getRedactionsForChunkHeaders)(from, to, res.chunks));
207
- }
148
+ const processor = processRedactionRequest(body, rs, bodyStartIdx, res.chunks);
149
+ for (const { reveal, redactions: reds } of processor) {
150
+ reveals.push(reveal);
151
+ redactions.push(...reds);
208
152
  }
209
153
  }
210
- reveals.sort((a, b) => {
211
- return a.toIndex - b.toIndex;
212
- });
154
+ reveals.sort((a, b) => a.toIndex - b.toIndex);
213
155
  if (reveals.length > 1) {
214
156
  let currentIndex = 0;
215
157
  for (const r of reveals) {
@@ -220,15 +162,21 @@ const HTTP_PROVIDER = {
220
162
  }
221
163
  redactions.push({ fromIndex: currentIndex, toIndex: response.length });
222
164
  }
223
- redactions.sort((a, b) => {
224
- return a.toIndex - b.toIndex;
225
- });
165
+ for (const r of reveals) {
166
+ if (!r.hash) {
167
+ continue;
168
+ }
169
+ redactions.push(r);
170
+ }
171
+ redactions.sort((a, b) => a.toIndex - b.toIndex);
226
172
  return redactions;
227
173
  },
228
- assertValidProviderReceipt(receipt, paramsAny) {
174
+ assertValidProviderReceipt(receipt, paramsAny, logger) {
229
175
  logTranscript();
230
176
  let extractedParams = {};
231
- const secretParams = ('secretParams' in paramsAny) ? paramsAny.secretParams : undefined;
177
+ const secretParams = ('secretParams' in paramsAny)
178
+ ? paramsAny.secretParams
179
+ : undefined;
232
180
  const newParams = substituteParamValues(paramsAny, secretParams, !secretParams);
233
181
  const params = newParams.newParams;
234
182
  extractedParams = { ...extractedParams, ...newParams.extractedValues };
@@ -239,13 +187,14 @@ const HTTP_PROVIDER = {
239
187
  const url = new URL(params.url);
240
188
  const { protocol, pathname } = url;
241
189
  if (protocol !== 'https:') {
242
- utils_3.logger.error('params URL: %s', params.url);
190
+ logger.error('params URL: %s', params.url);
243
191
  throw new Error(`Expected protocol: https, found: ${protocol}`);
244
192
  }
245
193
  const searchParams = params.url.includes('?') ? params.url.split('?')[1] : '';
246
- const expectedPath = pathname + ((searchParams === null || searchParams === void 0 ? void 0 : searchParams.length) ? '?' + searchParams : '');
247
- if (req.url !== expectedPath) {
248
- utils_3.logger.error('params URL: %s', params.url);
194
+ //brackets in URL path turn into %7B and %7D, so replace them back
195
+ const expectedPath = pathname.replaceAll('%7B', '{').replaceAll('%7D', '}') + ((searchParams === null || searchParams === void 0 ? void 0 : searchParams.length) ? '?' + searchParams : '');
196
+ if (!(0, utils_2.matchRedactedStrings)((0, tls_1.strToUint8Array)(expectedPath), (0, tls_1.strToUint8Array)(req.url))) {
197
+ logger.error('params URL: %s', params.url);
249
198
  throw new Error(`Expected path: ${expectedPath}, found: ${req.url}`);
250
199
  }
251
200
  const expectedHostStr = getHostHeaderString(url);
@@ -282,10 +231,10 @@ const HTTP_PROVIDER = {
282
231
  //validate server Date header if present
283
232
  const dateHeader = (0, utils_2.makeRegex)(dateHeaderRegex).exec(res);
284
233
  if ((dateHeader === null || dateHeader === void 0 ? void 0 : dateHeader.length) > 1) {
285
- const serverDate = Date.parse(dateHeader[1]);
286
- if ((Date.now() - serverDate) > dateDiff) {
287
- utils_3.logger.info({ dateHeader: dateHeader[0], current: Date.now() }, 'date header is off');
288
- throw new Error(`Server date is off by "${(Date.now() - serverDate) / 1000} s"`);
234
+ const serverDate = new Date(dateHeader[1]);
235
+ if ((Date.now() - serverDate.getTime()) > dateDiff) {
236
+ logger.info({ dateHeader: dateHeader[0], current: Date.now() }, 'date header is off');
237
+ throw new Error(`Server date is off by "${(Date.now() - serverDate.getTime()) / 1000} s"`);
289
238
  }
290
239
  bodyStart = dateHeader.index + dateHeader[0].length;
291
240
  }
@@ -346,12 +295,12 @@ const HTTP_PROVIDER = {
346
295
  const serverMsgs = receipt.filter(s => s.sender === 'server').map(m => m.message);
347
296
  const clientTranscript = utils_1.base64.encode((0, tls_1.concatenateUint8Arrays)(clientMsgs));
348
297
  const serverTranscript = utils_1.base64.encode((0, tls_1.concatenateUint8Arrays)(serverMsgs));
349
- utils_3.logger.debug({ request: clientTranscript, response: serverTranscript, params: paramsAny });
298
+ logger.debug({ request: clientTranscript, response: serverTranscript, params: paramsAny });
350
299
  }
351
300
  },
352
301
  };
353
- function getHostPort(params) {
354
- const { host } = new URL(getURL(params));
302
+ function getHostPort(params, secretParams) {
303
+ const { host } = new URL(getURL(params, secretParams));
355
304
  if (!host) {
356
305
  throw new Error('url is incorrect');
357
306
  }
@@ -368,20 +317,138 @@ function getHostHeaderString(url) {
368
317
  ? `${host}:${port}`
369
318
  : host;
370
319
  }
371
- const paramsRegex = /\{\{([^{}]+)}}/sgi;
372
- function substituteParamValues(currentParams, secretParams, ignoreMissingBodyParams) {
320
+ const paramsRegex = /{{([^{}]+)}}/sgi;
321
+ function* processRedactionRequest(body, rs, bodyStartIdx, resChunks) {
322
+ let element = body;
323
+ let elementIdx = 0;
324
+ let elementLength = -1;
325
+ if (rs.xPath) {
326
+ const indexes = (0, utils_2.extractHTMLElementsIndexes)(body, rs.xPath, !!rs.jsonPath);
327
+ for (const { start, end } of indexes) {
328
+ element = body.slice(start, end);
329
+ elementIdx = start;
330
+ elementLength = end - start;
331
+ if (rs.jsonPath) {
332
+ yield* processJsonPath();
333
+ }
334
+ else if (rs.regex) {
335
+ yield* processRegexp();
336
+ }
337
+ else {
338
+ yield* addRedaction();
339
+ }
340
+ }
341
+ }
342
+ else if (rs.jsonPath) {
343
+ yield* processJsonPath();
344
+ }
345
+ else if (rs.regex) {
346
+ yield* processRegexp();
347
+ }
348
+ else {
349
+ throw new Error('Expected either xPath, jsonPath or regex for redaction');
350
+ }
351
+ function* processJsonPath() {
352
+ const jsonPathIndexes = (0, utils_2.extractJSONValueIndexes)(element, rs.jsonPath);
353
+ // eslint-disable-next-line max-depth
354
+ const eIndex = elementIdx;
355
+ for (const ji of jsonPathIndexes) {
356
+ const jStart = ji.start;
357
+ const jEnd = ji.end;
358
+ element = body.slice(eIndex + jStart, eIndex + jEnd);
359
+ elementIdx = eIndex + jStart;
360
+ elementLength = jEnd - jStart;
361
+ // eslint-disable-next-line max-depth
362
+ if (rs.regex) {
363
+ yield* processRegexp();
364
+ }
365
+ else {
366
+ yield* addRedaction();
367
+ }
368
+ }
369
+ }
370
+ function* processRegexp() {
371
+ const regexp = (0, utils_2.makeRegex)(rs.regex);
372
+ const elem = element || body;
373
+ const match = regexp.exec(elem);
374
+ // eslint-disable-next-line max-depth
375
+ if (!(match === null || match === void 0 ? void 0 : match[0])) {
376
+ // logger.error({ response: uint8ArrayToBinaryStr(res.body) })
377
+ throw new Error(`regexp ${rs.regex} does not match found element '${elem}'`);
378
+ }
379
+ elementIdx += match.index;
380
+ elementLength = regexp.lastIndex - match.index;
381
+ element = match[0];
382
+ if (rs.hash && (!match.groups || Object.keys(match.groups).length > 1)) {
383
+ throw new Error('Exactly one named capture group is needed per hashed redaction');
384
+ }
385
+ // if there are groups in the regex,
386
+ // we'll only hash the group values
387
+ if (!rs.hash || !match.groups) {
388
+ yield* addRedaction();
389
+ return;
390
+ }
391
+ const fullStr = match[0];
392
+ const grp = Object.values(match.groups)[0];
393
+ const grpIdx = fullStr.indexOf(grp);
394
+ // don't hash the entire regex, we'll hash the group values
395
+ elementLength = grpIdx;
396
+ element = fullStr.slice(0, grpIdx);
397
+ yield* addRedaction(null);
398
+ elementIdx += grpIdx;
399
+ element = grp;
400
+ elementLength = grp.length;
401
+ const reveal = getReveal(elementIdx, elementLength, rs.hash);
402
+ const chunkReds = (0, utils_2.getRedactionsForChunkHeaders)(reveal.fromIndex, reveal.toIndex, resChunks);
403
+ if (chunkReds.length) {
404
+ throw new Error('Hash redactions cannot be performed if '
405
+ + 'the redacted string is split between 2'
406
+ + ' or more HTTP chunks');
407
+ }
408
+ yield { reveal, redactions: chunkReds };
409
+ elementIdx += grp.length;
410
+ element = fullStr.slice(grpIdx + grp.length);
411
+ elementLength = element.length;
412
+ yield* addRedaction(null);
413
+ }
414
+ // eslint-disable-next-line unicorn/consistent-function-scoping
415
+ function* addRedaction(hash = rs.hash, _resChunks = resChunks) {
416
+ if (elementIdx < 0 || !elementLength) {
417
+ return;
418
+ }
419
+ const reveal = getReveal(elementIdx, elementLength, hash || undefined);
420
+ yield {
421
+ reveal,
422
+ redactions: (0, utils_2.getRedactionsForChunkHeaders)(reveal.fromIndex, reveal.toIndex, _resChunks)
423
+ };
424
+ }
425
+ function getReveal(startIdx, len, hash) {
426
+ const from = (0, utils_2.convertResponsePosToAbsolutePos)(startIdx, bodyStartIdx, resChunks);
427
+ const to = (0, utils_2.convertResponsePosToAbsolutePos)(startIdx + len, bodyStartIdx, resChunks);
428
+ return { fromIndex: from, toIndex: to, hash };
429
+ }
430
+ }
431
+ function substituteParamValues(currentParams, secretParams, ignoreMissingParams) {
373
432
  const params = JSON.parse(JSON.stringify(currentParams));
374
433
  let extractedValues = {};
375
- const urlParams = extractAndReplaceTemplateValues(params.url);
434
+ const hiddenURLParts = [];
435
+ const urlParams = extractAndReplaceTemplateValues(params.url, ignoreMissingParams);
376
436
  if (urlParams) {
377
437
  params.url = urlParams.newParam;
378
438
  extractedValues = { ...urlParams.extractedValues };
439
+ if (urlParams.hiddenParts.length) {
440
+ const host = getHostHeaderString(new URL(params.url));
441
+ const offset = `https://${host}`.length - currentParams.method.length - 1; //space between method and start of the path
442
+ for (const hiddenURLPart of urlParams.hiddenParts) {
443
+ hiddenURLParts.push({ index: hiddenURLPart.index - offset, length: hiddenURLPart.length });
444
+ }
445
+ }
379
446
  }
380
447
  let bodyParams;
381
448
  let hiddenBodyParts = [];
382
449
  if (params.body) {
383
450
  const strBody = typeof params.body === 'string' ? params.body : (0, utils_3.uint8ArrayToStr)(params.body);
384
- bodyParams = extractAndReplaceTemplateValues(strBody, ignoreMissingBodyParams);
451
+ bodyParams = extractAndReplaceTemplateValues(strBody, ignoreMissingParams);
385
452
  if (bodyParams) {
386
453
  params.body = bodyParams.newParam;
387
454
  extractedValues = { ...extractedValues, ...bodyParams.extractedValues };
@@ -421,7 +488,8 @@ function substituteParamValues(currentParams, secretParams, ignoreMissingBodyPar
421
488
  return {
422
489
  newParams: params,
423
490
  extractedValues: extractedValues,
424
- hiddenBodyParts: hiddenBodyParts
491
+ hiddenBodyParts: hiddenBodyParts,
492
+ hiddenURLParts: hiddenURLParts
425
493
  };
426
494
  function extractAndReplaceTemplateValues(param, ignoreMissingParams) {
427
495
  if (!param) {
@@ -487,7 +555,7 @@ function getGeoLocation(v2Params) {
487
555
  }
488
556
  return undefined;
489
557
  }
490
- function getURL(v2Params) {
558
+ function getURL(v2Params, secretParams) {
491
559
  let hostPort = v2Params === null || v2Params === void 0 ? void 0 : v2Params.url;
492
560
  const paramNames = new Set();
493
561
  //extract param names
@@ -499,6 +567,9 @@ function getURL(v2Params) {
499
567
  if (v2Params.paramValues && pn in v2Params.paramValues) {
500
568
  hostPort = hostPort === null || hostPort === void 0 ? void 0 : hostPort.replaceAll(`{{${pn}}}`, v2Params.paramValues[pn].toString());
501
569
  }
570
+ else if ((secretParams === null || secretParams === void 0 ? void 0 : secretParams.paramValues) && pn in secretParams.paramValues) {
571
+ hostPort = hostPort === null || hostPort === void 0 ? void 0 : hostPort.replaceAll(`{{${pn}}}`, secretParams.paramValues[pn].toString());
572
+ }
502
573
  else {
503
574
  throw new Error(`parameter "${pn}" value not found in templateParams`);
504
575
  }
@@ -506,4 +577,4 @@ function getURL(v2Params) {
506
577
  return hostPort;
507
578
  }
508
579
  exports.default = HTTP_PROVIDER;
509
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcHJvdmlkZXJzL2h0dHAvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSw4Q0FBb0c7QUFDcEcsNENBQXlDO0FBQ3pDLHVDQUFtRTtBQUNuRSxvREFRaUM7QUFFakMscUNBTWtCO0FBRWxCLE1BQU0sY0FBYyxHQUFHLGNBQWMsQ0FBQTtBQUNyQyxNQUFNLGVBQWUsR0FBRyx3S0FBd0ssQ0FBQTtBQUNoTSxNQUFNLFFBQVEsR0FBRyxJQUFJLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQSxDQUFDLDBCQUEwQjtBQUcxRCxNQUFNLGFBQWEsR0FBcUI7SUFDdkMsUUFBUSxFQUFFLFdBQVc7SUFDckIsa0JBQWtCLENBQUMsTUFBTTtRQUN4QixPQUFPLENBQUMsb0JBQW9CLElBQUksTUFBTSxDQUFDO1lBQ3RDLENBQUMsQ0FBQyxNQUFNLENBQUMsa0JBQWtCO1lBQzNCLENBQUMsQ0FBQyxTQUFTLENBQUE7SUFDYixDQUFDO0lBQ0QsV0FBVyxDQUFDLE1BQU07UUFDakIsT0FBTyxDQUFDLGFBQWEsSUFBSSxNQUFNLENBQUM7WUFDL0IsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUM7WUFDeEIsQ0FBQyxDQUFDLFNBQVMsQ0FBQTtJQUNiLENBQUM7SUFDRCx1QkFBdUIsQ0FBQyxNQUFNO1FBQzdCLElBQUksY0FBYyxHQUF5QjtZQUMxQyx5QkFBeUIsRUFBRyxDQUFDLFVBQVUsQ0FBQztTQUN4QyxDQUFBO1FBQ0QsSUFBRyx5QkFBeUIsSUFBSSxNQUFNLEVBQUUsQ0FBQztZQUN4QyxjQUFjLEdBQUc7Z0JBQ2hCLEdBQUcsY0FBYztnQkFDakIsR0FBRyxNQUFNLENBQUMsdUJBQXVCO2FBQ2pDLENBQUE7UUFDRixDQUFDO1FBRUQsT0FBTyxjQUFjLENBQUE7SUFDdEIsQ0FBQztJQUNELGFBQWEsQ0FBQyxZQUFZLEVBQUUsTUFBTTs7UUFDakMsSUFDQyxDQUFD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
580
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcHJvdmlkZXJzL2h0dHAvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSw4Q0FBb0c7QUFDcEcsNENBQXlDO0FBQ3pDLHVDQUFtRTtBQUNuRSxvREFRaUM7QUFFakMscUNBTWtCO0FBRWxCLE1BQU0sY0FBYyxHQUFHLGNBQWMsQ0FBQTtBQUNyQyxNQUFNLGVBQWUsR0FBRyx3S0FBd0ssQ0FBQTtBQUNoTSxNQUFNLFFBQVEsR0FBRyxJQUFJLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQSxDQUFDLDBCQUEwQjtBQU0xRCxNQUFNLGFBQWEsR0FBcUI7SUFDdkMsUUFBUSxFQUFFLFdBQVc7SUFDckIsa0JBQWtCLENBQUMsTUFBTTtRQUN4QixPQUFPLENBQUMsb0JBQW9CLElBQUksTUFBTSxDQUFDO1lBQ3RDLENBQUMsQ0FBQyxNQUFNLENBQUMsa0JBQWtCO1lBQzNCLENBQUMsQ0FBQyxTQUFTLENBQUE7SUFDYixDQUFDO0lBQ0QsV0FBVyxDQUFDLE1BQU07UUFDakIsT0FBTyxDQUFDLGFBQWEsSUFBSSxNQUFNLENBQUM7WUFDL0IsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUM7WUFDeEIsQ0FBQyxDQUFDLFNBQVMsQ0FBQTtJQUNiLENBQUM7SUFDRCx1QkFBdUIsQ0FBQyxNQUFNO1FBQzdCLElBQUksY0FBYyxHQUF5QjtZQUMxQyx5QkFBeUIsRUFBRyxDQUFDLFVBQVUsQ0FBQztTQUN4QyxDQUFBO1FBQ0QsSUFBRyx5QkFBeUIsSUFBSSxNQUFNLEVBQUUsQ0FBQztZQUN4QyxjQUFjLEdBQUc7Z0JBQ2hCLEdBQUcsY0FBYztnQkFDakIsR0FBRyxNQUFNLENBQUMsdUJBQXVCO2FBQ2pDLENBQUE7UUFDRixDQUFDO1FBRUQsT0FBTyxjQUFjLENBQUE7SUFDdEIsQ0FBQztJQUNELGFBQWEsQ0FBQyxZQUFZLEVBQUUsTUFBTSxFQUFFLE1BQU07O1FBQ3pD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
@@ -56,13 +56,10 @@ export declare function buildHeaders(input: HTTPProviderParams['headers']): stri
56
56
  */
57
57
  export declare function convertResponsePosToAbsolutePos(pos: number, bodyStartIdx: number, chunks?: ArraySlice[]): number;
58
58
  /**
59
- * Returns parts of response which contain chunk headers and must be redacted out
60
- * of revealed response part
61
- * @param from
62
- * @param to
63
- * @param chunks
59
+ * If this reveal spans the boundary of two chunks, we'll
60
+ *
64
61
  */
65
- export declare function getRedactionsForChunkHeaders(from: any, to: number, chunks?: ArraySlice[]): ArraySlice[];
62
+ export declare function getRedactionsForChunkHeaders(from: number, to: number, chunks?: ArraySlice[]): ArraySlice[];
66
63
  export declare function parseHttpResponse(buff: Uint8Array): HttpResponse;
67
64
  export declare function makeRegex(str: string): any;
68
65
  /**