@adviser/cement 0.2.34 → 0.2.36

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.
@@ -224,22 +224,22 @@ var ConsoleWriterStreamDefaultWriter = class {
224
224
  this.closed = Promise.resolve(void 0);
225
225
  }
226
226
  async write(chunk) {
227
- const str = this.decoder.decode(chunk).trimEnd();
227
+ let strObj = this.decoder.decode(chunk).trimEnd();
228
228
  let output = "log";
229
229
  try {
230
- const decode = JSON.parse(str);
231
- output = decode.level;
230
+ strObj = JSON.parse(strObj);
231
+ output = strObj.level;
232
232
  } catch (e) {
233
233
  }
234
234
  switch (output) {
235
235
  case "error":
236
- console.error(str);
236
+ console.error(strObj);
237
237
  break;
238
238
  case "warn":
239
- console.warn(str);
239
+ console.warn(strObj);
240
240
  break;
241
241
  default:
242
- console.log(str);
242
+ console.log(strObj);
243
243
  }
244
244
  }
245
245
  };
@@ -308,4 +308,4 @@ export {
308
308
  uint8array2stream,
309
309
  utils_exports
310
310
  };
311
- //# sourceMappingURL=chunk-7KFVMTOS.js.map
311
+ //# sourceMappingURL=chunk-USQXEZHL.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/utils/index.ts","../../src/utils/stream-map.ts","../../src/utils/rebuffer.ts","../../src/utils/stream2string.ts","../../src/utils/string2stream.ts","../../src/utils/console-write-stream.ts","../../src/utils/fanout-write-stream.ts"],"sourcesContent":["export * from \"./rebuffer.js\";\nexport * from \"./stream-map.js\";\nexport * from \"./stream2string.js\";\nexport * from \"./string2stream.js\";\nexport * from \"./console-write-stream.js\";\nexport * from \"./fanout-write-stream.js\";\n","export interface StreamMap<T, U> {\n Map(s: T, idx: number): U | Promise<U>;\n readonly Close?: () => void;\n}\nexport function streamMap<T, U>(s: ReadableStream<T>, sm: StreamMap<T, U>): ReadableStream<U> {\n const state = { reader: s.getReader(), streamMap: sm, idx: 0 };\n return new ReadableStream<U>({\n async pull(controller): Promise<void> {\n const { done, value } = await state.reader.read();\n if (done) {\n if (state.streamMap.Close) {\n state.streamMap.Close();\n }\n controller.close();\n return;\n }\n const promiseOrU = state.streamMap.Map(value, state.idx++);\n let mapped: U;\n if (promiseOrU instanceof Promise || typeof (promiseOrU as { then: () => void }).then === \"function\") {\n mapped = await promiseOrU;\n } else {\n mapped = promiseOrU;\n }\n controller.enqueue(mapped);\n },\n });\n}\n\nexport async function devnull<T>(a: ReadableStream<T>): Promise<number> {\n const reader = a.getReader();\n let cnt = 0;\n while (true) {\n const { done } = await reader.read();\n if (done) {\n break;\n }\n cnt++;\n }\n return cnt;\n}\n\nexport function array2stream<T>(a: T[]): ReadableStream<T> {\n let i = 0;\n return new ReadableStream<T>({\n pull(controller): void {\n if (i >= a.length) {\n controller.close();\n return;\n }\n controller.enqueue(a[i]);\n i++;\n },\n });\n}\n\nexport async function stream2array<T>(a: ReadableStream<T>): Promise<T[]> {\n const ret: T[] = [];\n const reader = a.getReader();\n while (true) {\n const { done, value } = await reader.read();\n if (done) {\n break;\n }\n ret.push(value);\n }\n return ret;\n}\n","import { array2stream, stream2array } from \"./stream-map.js\";\n\ninterface ReChunkResult {\n readonly rest: Uint8Array;\n readonly chunk: Uint8Array;\n}\n\nexport async function rebufferArray(a: Uint8Array[], chunkSize: number): Promise<Uint8Array[]> {\n return stream2array(rebuffer(array2stream(a), chunkSize));\n}\n\nfunction reChunk(cs: Uint8Array[], chunkSize: number): ReChunkResult {\n const len = cs.reduce((acc, v) => acc + v.length, 0);\n const last = cs[cs.length - 1];\n const lastOfs = len - last.length;\n // console.log(\"reChunk\", len, lastOfs, last.length, chunkSize, chunkSize - lastOfs)\n const rest = last.subarray(chunkSize - lastOfs);\n cs[cs.length - 1] = last.subarray(0, chunkSize - lastOfs);\n const chunk = new Uint8Array(chunkSize);\n let ofs = 0;\n for (const c of cs) {\n chunk.set(c, ofs);\n ofs += c.length;\n }\n return { rest, chunk };\n}\n\ninterface pumpState {\n readonly reader: ReadableStreamDefaultReader<Uint8Array>;\n tmp: Uint8Array[];\n tmpLen: number;\n readonly chunkSize: number;\n}\n\nfunction pump(ps: pumpState, controller: ReadableStreamDefaultController<Uint8Array>, next: () => void): void {\n ps.reader.read().then(({ done, value }) => {\n if (done) {\n if (ps.tmpLen > 0) {\n controller.enqueue(reChunk(ps.tmp, ps.tmpLen).chunk);\n }\n controller.close();\n next();\n return;\n }\n if (ps.tmpLen + value.length > ps.chunkSize) {\n ps.tmp.push(value);\n const res = reChunk(ps.tmp, ps.chunkSize);\n controller.enqueue(res.chunk);\n ps.tmp = [res.rest];\n ps.tmpLen = res.rest.length;\n next();\n return;\n } else if (value.length) {\n ps.tmp.push(value);\n ps.tmpLen += value.length;\n }\n pump(ps, controller, next);\n });\n}\n\nexport function rebuffer(a: ReadableStream<Uint8Array>, chunkSize: number): ReadableStream<Uint8Array> {\n const state: pumpState = {\n reader: a.getReader(),\n tmp: [],\n tmpLen: 0,\n chunkSize,\n };\n return new ReadableStream<Uint8Array>({\n async pull(controller): Promise<void> {\n return new Promise<void>((resolve) => {\n pump(state, controller, resolve);\n });\n },\n });\n}\n","export async function stream2string(stream?: ReadableStream<Uint8Array> | null, maxSize?: number): Promise<string> {\n if (!stream) {\n return Promise.resolve(\"\");\n }\n const reader = stream.getReader();\n let res = \"\";\n const decoder = new TextDecoder();\n let rSize = 0;\n while (typeof maxSize === \"undefined\" || rSize < maxSize) {\n try {\n const read = await reader.read();\n if (read.done) {\n break;\n }\n if (maxSize && rSize + read.value.length > maxSize) {\n read.value = read.value.slice(0, maxSize - rSize);\n }\n const block = decoder.decode(read.value, { stream: true });\n rSize += read.value.length;\n res += block;\n } catch (err) {\n return Promise.reject(err);\n }\n }\n return Promise.resolve(res);\n}\n\nexport async function stream2uint8array(stream?: ReadableStream<Uint8Array> | null): Promise<Uint8Array> {\n if (!stream) {\n return Promise.resolve(new Uint8Array());\n }\n const reader = stream.getReader();\n let res = new Uint8Array();\n // eslint-disable-next-line no-constant-condition\n while (1) {\n try {\n const { done, value } = await reader.read();\n if (done) {\n break;\n }\n res = new Uint8Array([...res, ...value]);\n } catch (err) {\n return Promise.reject(err);\n }\n }\n return Promise.resolve(res);\n}\n","import { TxtEnDecoder, Utf8EnDecoderSingleton } from \"../txt-en-decoder.js\";\n\nexport function string2stream(str: string, ende: TxtEnDecoder = Utf8EnDecoderSingleton()): ReadableStream<Uint8Array> {\n return uint8array2stream(ende.encode(str));\n}\n\nexport function uint8array2stream(str: Uint8Array): ReadableStream<Uint8Array> {\n return new ReadableStream<Uint8Array>({\n start(controller): void {\n controller.enqueue(str);\n controller.close();\n },\n });\n}\n","export class ConsoleWriterStreamDefaultWriter implements WritableStreamDefaultWriter<Uint8Array> {\n readonly desiredSize: number | null = null;\n readonly decoder: TextDecoder = new TextDecoder();\n\n closed: Promise<undefined>;\n ready: Promise<undefined>;\n readonly _stream: ConsoleWriterStream;\n\n constructor(private stream: ConsoleWriterStream) {\n this._stream = stream;\n this.ready = Promise.resolve(undefined);\n this.closed = Promise.resolve(undefined);\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any\n abort(reason?: any): Promise<void> {\n throw new Error(\"Method not implemented.\");\n }\n async close(): Promise<void> {\n // noop\n }\n releaseLock(): void {\n this._stream.locked = false;\n this.ready = Promise.resolve(undefined);\n this.closed = Promise.resolve(undefined);\n }\n async write(chunk?: Uint8Array | undefined): Promise<void> {\n let strObj: string | { level: string } = this.decoder.decode(chunk).trimEnd();\n let output = \"log\";\n try {\n strObj = JSON.parse(strObj) as { level: string };\n output = strObj.level;\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n } catch (e) {\n /* noop */\n }\n switch (output) {\n case \"error\":\n // eslint-disable-next-line no-console\n console.error(strObj);\n break;\n case \"warn\":\n // eslint-disable-next-line no-console\n console.warn(strObj);\n break;\n default:\n // eslint-disable-next-line no-console\n console.log(strObj);\n }\n }\n}\n\nexport class ConsoleWriterStream implements WritableStream<Uint8Array> {\n locked = false;\n _writer?: WritableStreamDefaultWriter<Uint8Array>;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unused-vars\n abort(reason?: any): Promise<void> {\n throw new Error(\"Method not implemented.\");\n }\n async close(): Promise<void> {\n return;\n }\n getWriter(): WritableStreamDefaultWriter<Uint8Array> {\n if (this.locked) {\n throw new Error(\"Stream is locked\");\n }\n this.locked = true;\n if (!this._writer) {\n this._writer = new ConsoleWriterStreamDefaultWriter(this);\n }\n return this._writer;\n }\n}\n","export class FanoutWriteStream implements WritableStreamDefaultWriter<Uint8Array> {\n readonly _writers: WritableStreamDefaultWriter<Uint8Array>[];\n readonly ready: Promise<undefined>;\n readonly closed: Promise<undefined>;\n readonly desiredSize: number | null = null;\n constructor(writers: WritableStreamDefaultWriter<Uint8Array>[]) {\n this._writers = writers;\n this.ready = Promise.all(this._writers.map((w) => w.ready)).then(() => undefined);\n this.closed = Promise.all(this._writers.map((w) => w.closed)).then(() => undefined);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n abort(reason?: any): Promise<void> {\n return Promise.all(this._writers.map((w) => w.abort(reason))).then(() => {\n /* do nothing */\n });\n }\n close(): Promise<void> {\n return Promise.all(this._writers.map((w) => w.close())).then(() => {\n /* do nothing */\n });\n }\n releaseLock(): void {\n this._writers.map((w) => w.releaseLock());\n }\n\n write(chunk?: Uint8Array | undefined): Promise<void> {\n return Promise.all(this._writers.map((w) => w.write(chunk))).then(() => {\n /* do nothing */\n });\n }\n}\n"],"mappings":"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","names":[]}
package/index.cjs CHANGED
@@ -143,7 +143,6 @@ __export(src_exports, {
143
143
  hasHostPartProtocols: () => hasHostPartProtocols,
144
144
  isURL: () => isURL,
145
145
  logValue: () => logValue,
146
- removeSelfRef: () => removeSelfRef,
147
146
  runtimeFn: () => runtimeFn,
148
147
  toCryptoRuntime: () => toCryptoRuntime,
149
148
  utils: () => utils_exports
@@ -212,22 +211,16 @@ var LogValue = class {
212
211
  this.fn = fn;
213
212
  }
214
213
  value() {
215
- return this.fn();
214
+ try {
215
+ return this.fn();
216
+ } catch (e) {
217
+ return `LogValue:${e.message}`;
218
+ }
216
219
  }
217
220
  toJSON() {
218
221
  return this.value();
219
222
  }
220
223
  };
221
- function removeSelfRef(lineEnd) {
222
- const cache = /* @__PURE__ */ new Set();
223
- return function(key, value) {
224
- if (typeof value === "object" && value !== null) {
225
- if (cache.has(value)) return "...";
226
- cache.add(value);
227
- }
228
- return lineEnd ? value + lineEnd : value;
229
- };
230
- }
231
224
  function asyncLogValue(val) {
232
225
  throw new Error("Not implemented");
233
226
  }
@@ -254,19 +247,31 @@ function logValue(val, state = /* @__PURE__ */ new Set([Math.random()])) {
254
247
  case "boolean":
255
248
  return new LogValue(() => val);
256
249
  case "object": {
250
+ if (val === null) {
251
+ return new LogValue(() => "null");
252
+ }
257
253
  if (ArrayBuffer.isView(val)) {
258
254
  return logValue(bin2string(val, 512));
259
255
  }
260
256
  if (Array.isArray(val)) {
261
257
  return new LogValue(() => val.map((v) => logValue(v).value()));
262
258
  }
263
- if (val === null) {
264
- return new LogValue(() => "null");
259
+ if (val instanceof Headers) {
260
+ return new LogValue(() => Object.fromEntries(val.entries()));
261
+ }
262
+ if (val instanceof ReadableStream) {
263
+ return new LogValue(() => ">Stream<");
264
+ }
265
+ if (val instanceof Promise) {
266
+ return new LogValue(() => ">Promise<");
265
267
  }
266
268
  if (state.has(val)) {
267
269
  return new LogValue(() => "...");
268
270
  }
269
271
  state.add(val);
272
+ if (typeof val.toJSON === "function") {
273
+ return new LogValue(() => val.toJSON());
274
+ }
270
275
  const res = {};
271
276
  const typedVal = val;
272
277
  for (const key in typedVal) {
@@ -274,7 +279,9 @@ function logValue(val, state = /* @__PURE__ */ new Set([Math.random()])) {
274
279
  if (element instanceof LogValue) {
275
280
  res[key] = element;
276
281
  } else {
277
- res[key] = logValue(element, state);
282
+ if (typeof element !== "function") {
283
+ res[key] = logValue(element, state);
284
+ }
278
285
  }
279
286
  }
280
287
  return new LogValue(() => res);
@@ -1067,6 +1074,9 @@ function localStripper(path, restrips, obj) {
1067
1074
  if (typeof obj !== "object" || obj === null) {
1068
1075
  return obj;
1069
1076
  }
1077
+ if (Array.isArray(obj)) {
1078
+ return obj.map((i) => localStripper(path, restrips, i));
1079
+ }
1070
1080
  const ret = __spreadValues({}, obj);
1071
1081
  const matcher = (key, nextPath) => {
1072
1082
  for (const re of restrips) {
@@ -1107,6 +1117,16 @@ function localStripper(path, restrips, obj) {
1107
1117
  }
1108
1118
 
1109
1119
  // src/uri.ts
1120
+ function coerceKey(key, def) {
1121
+ if (typeof key === "object") {
1122
+ const keys = Object.keys(key);
1123
+ if (keys.length !== 1) {
1124
+ throw new Error(`Invalid key: ${JSON.stringify(key)}`);
1125
+ }
1126
+ return { key: keys[0], def: key[keys[0]] };
1127
+ }
1128
+ return { key, def };
1129
+ }
1110
1130
  function falsy2undef(value) {
1111
1131
  return value === void 0 || value === null ? void 0 : value;
1112
1132
  }
@@ -1253,19 +1273,33 @@ function getParamResult(key, val, msgFn = (key2) => {
1253
1273
  return Result.Ok(val);
1254
1274
  }
1255
1275
  function getParamsResult(keys, getParam) {
1256
- const keyStrs = keys.flat().filter((k) => typeof k === "string");
1276
+ const keyDef = keys.flat().reduce(
1277
+ (acc, i) => {
1278
+ if (typeof i === "string") {
1279
+ acc.push({ key: i });
1280
+ } else if (typeof i === "object") {
1281
+ acc.push(...Object.keys(i).map((k) => ({ key: k, def: i[k] })));
1282
+ }
1283
+ return acc;
1284
+ },
1285
+ []
1286
+ );
1257
1287
  const msgFn = keys.find((k) => typeof k === "function") || ((...keys2) => {
1258
1288
  const msg = keys2.join(",");
1259
1289
  return `missing parameters: ${msg}`;
1260
1290
  });
1261
1291
  const errors = [];
1262
1292
  const result = {};
1263
- for (const key of keyStrs) {
1264
- const val = getParam.getParam(key);
1293
+ for (const kd of keyDef) {
1294
+ const val = getParam.getParam(kd.key);
1265
1295
  if (val === void 0) {
1266
- errors.push(key);
1296
+ if (kd.def) {
1297
+ result[kd.key] = kd.def;
1298
+ } else {
1299
+ errors.push(kd.key);
1300
+ }
1267
1301
  } else {
1268
- result[key] = val;
1302
+ result[kd.key] = val;
1269
1303
  }
1270
1304
  }
1271
1305
  if (errors.length) {
@@ -1357,8 +1391,16 @@ var BuildURI = class _BuildURI {
1357
1391
  hasParam(key) {
1358
1392
  return this._url.searchParams.has(key);
1359
1393
  }
1360
- getParam(key) {
1361
- return falsy2undef(this._url.searchParams.get(key));
1394
+ get getParams() {
1395
+ return this._url.searchParams.entries();
1396
+ }
1397
+ getParam(key, def) {
1398
+ const { key: k, def: d } = coerceKey(key, def);
1399
+ let val = this._url.searchParams.get(k);
1400
+ if (!falsy2undef(val) && d) {
1401
+ val = d;
1402
+ }
1403
+ return falsy2undef(val);
1362
1404
  }
1363
1405
  getParamResult(key, msgFn) {
1364
1406
  return getParamResult(key, this.getParam(key), msgFn);
@@ -1379,6 +1421,9 @@ var BuildURI = class _BuildURI {
1379
1421
  asObj(...strips) {
1380
1422
  return this.URI().asObj(...strips);
1381
1423
  }
1424
+ clone() {
1425
+ return _BuildURI.from(this.toString());
1426
+ }
1382
1427
  URI() {
1383
1428
  return URI.from(this._url);
1384
1429
  }
@@ -1458,8 +1503,13 @@ var URI = class _URI {
1458
1503
  hasParam(key) {
1459
1504
  return this._url.searchParams.has(key);
1460
1505
  }
1461
- getParam(key) {
1462
- return falsy2undef(this._url.searchParams.get(key));
1506
+ getParam(key, def) {
1507
+ const { key: k, def: d } = coerceKey(key, def);
1508
+ let val = this._url.searchParams.get(k);
1509
+ if (!falsy2undef(val) && d) {
1510
+ val = d;
1511
+ }
1512
+ return falsy2undef(val);
1463
1513
  }
1464
1514
  getParamResult(key, msgFn) {
1465
1515
  return getParamResult(key, this.getParam(key), msgFn);
@@ -1546,22 +1596,22 @@ var ConsoleWriterStreamDefaultWriter = class {
1546
1596
  this.closed = Promise.resolve(void 0);
1547
1597
  }
1548
1598
  async write(chunk) {
1549
- const str = this.decoder.decode(chunk).trimEnd();
1599
+ let strObj = this.decoder.decode(chunk).trimEnd();
1550
1600
  let output = "log";
1551
1601
  try {
1552
- const decode = JSON.parse(str);
1553
- output = decode.level;
1602
+ strObj = JSON.parse(strObj);
1603
+ output = strObj.level;
1554
1604
  } catch (e) {
1555
1605
  }
1556
1606
  switch (output) {
1557
1607
  case "error":
1558
- console.error(str);
1608
+ console.error(strObj);
1559
1609
  break;
1560
1610
  case "warn":
1561
- console.warn(str);
1611
+ console.warn(strObj);
1562
1612
  break;
1563
1613
  default:
1564
- console.log(str);
1614
+ console.log(strObj);
1565
1615
  }
1566
1616
  }
1567
1617
  };
@@ -1744,7 +1794,13 @@ var JSONFormatter = class {
1744
1794
  this._space = space;
1745
1795
  }
1746
1796
  format(attr) {
1747
- return this._txtEnDe.encode(JSON.stringify(attr, removeSelfRef(), this._space) + "\n");
1797
+ let ret;
1798
+ try {
1799
+ ret = JSON.stringify(attr, null, this._space);
1800
+ } catch (e) {
1801
+ ret = JSON.stringify({ internal: { message: e.message, stack: e.stack } });
1802
+ }
1803
+ return this._txtEnDe.encode(ret + "\n");
1748
1804
  }
1749
1805
  };
1750
1806
  var YAMLFormatter = class {
@@ -1753,7 +1809,7 @@ var YAMLFormatter = class {
1753
1809
  this._space = space;
1754
1810
  }
1755
1811
  format(attr) {
1756
- return this._txtEnDe.encode("---\n" + import_yaml.default.stringify(attr, removeSelfRef(), this._space) + "\n");
1812
+ return this._txtEnDe.encode("---\n" + import_yaml.default.stringify(attr, null, this._space) + "\n");
1757
1813
  }
1758
1814
  };
1759
1815
  var LoggerImpl = class _LoggerImpl {
@@ -1814,7 +1870,7 @@ var LoggerImpl = class _LoggerImpl {
1814
1870
  return this._txtEnDe;
1815
1871
  }
1816
1872
  Attributes() {
1817
- return JSON.parse(JSON.stringify(this._attributes, removeSelfRef()));
1873
+ return JSON.parse(JSON.stringify(this._attributes, null));
1818
1874
  }
1819
1875
  SetExposeStack(enable) {
1820
1876
  this._levelHandler.setExposeStack(enable);
@@ -1898,7 +1954,37 @@ var LoggerImpl = class _LoggerImpl {
1898
1954
  return this;
1899
1955
  }
1900
1956
  Bool(key, value) {
1901
- this._attributes[key] = logValue(!!value);
1957
+ this.coerceKey(key, !!value);
1958
+ return this;
1959
+ }
1960
+ Http(res, req, key) {
1961
+ if (Result.Is(res)) {
1962
+ if (res.isErr()) {
1963
+ this.Err(res.Err());
1964
+ return this;
1965
+ }
1966
+ res = res.Ok();
1967
+ }
1968
+ let reqRes = res;
1969
+ if (req) {
1970
+ reqRes = { res, req };
1971
+ }
1972
+ this.Any(key || "Http", reqRes);
1973
+ return this;
1974
+ }
1975
+ Pair(x) {
1976
+ for (const key of Object.keys(x)) {
1977
+ const value = x[key];
1978
+ if (value instanceof LogValue) {
1979
+ this._attributes[key] = value;
1980
+ continue;
1981
+ }
1982
+ if (Result.Is(value)) {
1983
+ this.Result(key, value);
1984
+ continue;
1985
+ }
1986
+ this.Any(key, value);
1987
+ }
1902
1988
  return this;
1903
1989
  }
1904
1990
  Result(key, res) {
@@ -1921,12 +2007,19 @@ var LoggerImpl = class _LoggerImpl {
1921
2007
  this.Ref(key, () => URI.from(url).toString());
1922
2008
  return this;
1923
2009
  }
2010
+ coerceKey(key, value) {
2011
+ if (typeof key === "string") {
2012
+ this._attributes[key] = logValue(value);
2013
+ } else {
2014
+ this.Pair(key);
2015
+ }
2016
+ }
1924
2017
  Str(key, value) {
1925
- this._attributes[key] = logValue(value);
2018
+ this.coerceKey(key, value);
1926
2019
  return this;
1927
2020
  }
1928
2021
  Any(key, value) {
1929
- this._attributes[key] = logValue(value);
2022
+ this.coerceKey(key, value);
1930
2023
  return this;
1931
2024
  }
1932
2025
  Dur(key, nsec) {
@@ -1934,7 +2027,7 @@ var LoggerImpl = class _LoggerImpl {
1934
2027
  return this;
1935
2028
  }
1936
2029
  Uint64(key, value) {
1937
- this._attributes[key] = logValue(value);
2030
+ this.coerceKey(key, value);
1938
2031
  return this;
1939
2032
  }
1940
2033
  Int(key, value) {
@@ -2031,6 +2124,14 @@ var WithLoggerBuilder = class {
2031
2124
  this._li.SetDebug(...modules);
2032
2125
  return this;
2033
2126
  }
2127
+ Http(res, req, key) {
2128
+ this._li.Http(res, req, key);
2129
+ return this;
2130
+ }
2131
+ Pair(x) {
2132
+ this._li.Pair(x);
2133
+ return this;
2134
+ }
2034
2135
  Str(key, value) {
2035
2136
  this._li.Str(key, value);
2036
2137
  return this;
@@ -2721,7 +2822,6 @@ function uint8array2stream(str) {
2721
2822
  hasHostPartProtocols,
2722
2823
  isURL,
2723
2824
  logValue,
2724
- removeSelfRef,
2725
2825
  runtimeFn,
2726
2826
  toCryptoRuntime,
2727
2827
  utils