@atproto-labs/fetch 0.0.1 → 0.1.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.
@@ -1 +1 @@
1
- {"version":3,"file":"fetch-response.js","sourceRoot":"","sources":["../src/fetch-response.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fetch-response.js","sourceRoot":"","sources":["../src/fetch-response.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,43 @@
1
- import { Fetch } from './fetch.js';
2
- export declare const loggedFetchWrap: ({ fetch, }?: {
3
- fetch?: Fetch | undefined;
4
- }) => Fetch;
5
- export declare const timeoutFetchWrap: ({ fetch, timeout, }?: {
6
- fetch?: Fetch | undefined;
7
- timeout?: number | undefined;
8
- }) => Fetch;
9
- export declare function fetchTimeout(this: ThisParameterType<Fetch>, request: Request, timeout?: number, fetch?: Fetch): Promise<Response>;
1
+ import { Fetch, FetchContext } from './fetch.js';
2
+ export declare function loggedFetch<C = FetchContext>(fetch?: Fetch<C>): ((this: C, input: string | URL | Request, init?: RequestInit | undefined) => Promise<Response>) & {
3
+ bind(context: C): (input: string | URL | Request, init?: RequestInit | undefined) => Promise<Response>;
4
+ };
5
+ export declare const timedFetch: <C = FetchContext>(timeout?: number, fetch?: Fetch<C>) => Fetch<C>;
6
+ /**
7
+ * Wraps a fetch function to bind it to a specific context, and wrap any thrown
8
+ * errors into a FetchRequestError.
9
+ *
10
+ * @example
11
+ *
12
+ * ```ts
13
+ * class MyClient {
14
+ * constructor(private fetch = globalThis.fetch) {}
15
+ *
16
+ * async get(url: string) {
17
+ * // This will generate an error, because the context used is not a
18
+ * // FetchContext (it's a MyClient instance).
19
+ * return this.fetch(url)
20
+ * }
21
+ * }
22
+ * ```
23
+ *
24
+ * @example
25
+ *
26
+ * ```ts
27
+ * class MyClient {
28
+ * private fetch: Fetch<unknown>
29
+ *
30
+ * constructor(fetch = globalThis.fetch) {
31
+ * this.fetch = bindFetch(fetch)
32
+ * }
33
+ *
34
+ * async get(url: string) {
35
+ * return this.fetch(url) // no more error
36
+ * }
37
+ * }
38
+ * ```
39
+ */
40
+ export declare function bindFetch<C = FetchContext>(fetch?: Fetch<C>, context?: C): ((this: unknown, input: string | URL | Request, init?: RequestInit | undefined) => Promise<Response>) & {
41
+ bind(context: unknown): (input: string | URL | Request, init?: RequestInit | undefined) => Promise<Response>;
42
+ };
10
43
  //# sourceMappingURL=fetch-wrap.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"fetch-wrap.d.ts","sourceRoot":"","sources":["../src/fetch-wrap.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAGlC,eAAO,MAAM,eAAe;;MAEnB,KAIR,CAAA;AAyCD,eAAO,MAAM,gBAAgB;;;MAGpB,KAQR,CAAA;AAED,wBAAsB,YAAY,CAChC,IAAI,EAAE,iBAAiB,CAAC,KAAK,CAAC,EAC9B,OAAO,EAAE,OAAO,EAChB,OAAO,SAAO,EACd,KAAK,GAAE,KAAwB,GAC9B,OAAO,CAAC,QAAQ,CAAC,CAgCnB"}
1
+ {"version":3,"file":"fetch-wrap.d.ts","sourceRoot":"","sources":["../src/fetch-wrap.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,YAAY,EAAwB,MAAM,YAAY,CAAA;AAItE,wBAAgB,WAAW,CAAC,CAAC,GAAG,YAAY,EAC1C,KAAK,GAAE,KAAK,CAAC,CAAC,CAAoB;;EA0BnC;AAED,eAAO,MAAM,UAAU,+CAEd,MAAM,CAAC,CAAC,KACd,MAAM,CAAC,CAqCT,CAAA;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,wBAAgB,SAAS,CAAC,CAAC,GAAG,YAAY,EACxC,KAAK,GAAE,KAAK,CAAC,CAAC,CAAoB,EAClC,OAAO,GAAE,CAAmB;;EAS7B"}
@@ -1,73 +1,104 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.fetchTimeout = exports.timeoutFetchWrap = exports.loggedFetchWrap = void 0;
3
+ exports.bindFetch = exports.timedFetch = exports.loggedFetch = void 0;
4
+ const fetch_request_js_1 = require("./fetch-request.js");
5
+ const fetch_js_1 = require("./fetch.js");
4
6
  const transformed_response_js_1 = require("./transformed-response.js");
5
- const loggedFetchWrap = ({ fetch = globalThis.fetch, } = {}) => {
6
- return async function (request) {
7
- return fetchLog.call(this, request, fetch);
8
- };
9
- };
10
- exports.loggedFetchWrap = loggedFetchWrap;
11
- async function fetchLog(request, fetch = globalThis.fetch) {
12
- console.info(`> ${request.method} ${request.url}\n` +
13
- stringifyPayload(request.headers, await request.clone().text()));
14
- try {
15
- const response = await fetch(request);
16
- console.info(`< HTTP/1.1 ${response.status} ${response.statusText}\n` +
17
- stringifyPayload(response.headers, await response.clone().text()));
18
- return response;
19
- }
20
- catch (error) {
21
- console.error(`< Error:`, error);
22
- throw error;
23
- }
7
+ const util_js_1 = require("./util.js");
8
+ function loggedFetch(fetch = globalThis.fetch) {
9
+ return (0, fetch_js_1.toRequestTransformer)(async function (request) {
10
+ const requestMessage = await (0, util_js_1.stringifyMessage)(request);
11
+ console.info(`> ${request.method} ${request.url}\n${(0, util_js_1.padLines)(requestMessage, ' ')}`);
12
+ try {
13
+ const response = await fetch.call(this, request);
14
+ const responseMessage = await (0, util_js_1.stringifyMessage)(response.clone());
15
+ console.info(`< HTTP/1.1 ${response.status} ${response.statusText}\n${(0, util_js_1.padLines)(responseMessage, ' ')}`);
16
+ return response;
17
+ }
18
+ catch (error) {
19
+ console.error(`< Error:`, error);
20
+ throw error;
21
+ }
22
+ });
24
23
  }
25
- const stringifyPayload = (headers, body) => [stringifyHeaders(headers), stringifyBody(body)]
26
- .filter(Boolean)
27
- .join('\n ') + '\n ';
28
- const stringifyHeaders = (headers) => Array.from(headers)
29
- .map(([name, value]) => ` ${name}: ${value}\n`)
30
- .join('');
31
- const stringifyBody = (body) => body ? `\n ${body.replace(/\r?\n/g, '\\n')}` : '';
32
- const timeoutFetchWrap = ({ fetch = globalThis.fetch, timeout = 60e3, } = {}) => {
24
+ exports.loggedFetch = loggedFetch;
25
+ const timedFetch = (timeout = 60e3, fetch = globalThis.fetch) => {
33
26
  if (timeout === Infinity)
34
27
  return fetch;
35
28
  if (!Number.isFinite(timeout) || timeout <= 0) {
36
29
  throw new TypeError('Timeout must be positive');
37
30
  }
38
- return async function (request) {
39
- return fetchTimeout.call(this, request, timeout, fetch);
40
- };
31
+ return (0, fetch_js_1.toRequestTransformer)(async function (request) {
32
+ const controller = new AbortController();
33
+ const signal = controller.signal;
34
+ const abort = () => {
35
+ controller.abort();
36
+ };
37
+ const cleanup = () => {
38
+ clearTimeout(timer);
39
+ request.signal?.removeEventListener('abort', abort);
40
+ };
41
+ const timer = setTimeout(abort, timeout);
42
+ if (typeof timer === 'object')
43
+ timer.unref?.(); // only on node
44
+ request.signal?.addEventListener('abort', abort);
45
+ signal.addEventListener('abort', cleanup);
46
+ const response = await fetch.call(this, request, { signal });
47
+ if (!response.body) {
48
+ cleanup();
49
+ return response;
50
+ }
51
+ else {
52
+ // Cleanup the timer & event listeners when the body stream is closed
53
+ const transform = new TransformStream({ flush: cleanup });
54
+ return new transformed_response_js_1.TransformedResponse(response, transform);
55
+ }
56
+ });
41
57
  };
42
- exports.timeoutFetchWrap = timeoutFetchWrap;
43
- async function fetchTimeout(request, timeout = 30e3, fetch = globalThis.fetch) {
44
- if (timeout === Infinity)
45
- return fetch(request);
46
- if (!Number.isFinite(timeout) || timeout <= 0) {
47
- throw new TypeError('Timeout must be positive');
48
- }
49
- const controller = new AbortController();
50
- const signal = controller.signal;
51
- const abort = () => {
52
- controller.abort();
53
- };
54
- const cleanup = () => {
55
- clearTimeout(timeoutId);
56
- request.signal?.removeEventListener('abort', abort);
57
- };
58
- const timeoutId = setTimeout(abort, timeout).unref();
59
- request.signal?.addEventListener('abort', abort);
60
- signal.addEventListener('abort', cleanup);
61
- const response = await fetch(new Request(request, { signal }));
62
- if (!response.body) {
63
- cleanup();
64
- return response;
65
- }
66
- else {
67
- // Cleanup the timer & event listeners when the body stream is closed
68
- const transform = new TransformStream({ flush: cleanup });
69
- return new transformed_response_js_1.TransformedResponse(response, transform);
70
- }
58
+ exports.timedFetch = timedFetch;
59
+ /**
60
+ * Wraps a fetch function to bind it to a specific context, and wrap any thrown
61
+ * errors into a FetchRequestError.
62
+ *
63
+ * @example
64
+ *
65
+ * ```ts
66
+ * class MyClient {
67
+ * constructor(private fetch = globalThis.fetch) {}
68
+ *
69
+ * async get(url: string) {
70
+ * // This will generate an error, because the context used is not a
71
+ * // FetchContext (it's a MyClient instance).
72
+ * return this.fetch(url)
73
+ * }
74
+ * }
75
+ * ```
76
+ *
77
+ * @example
78
+ *
79
+ * ```ts
80
+ * class MyClient {
81
+ * private fetch: Fetch<unknown>
82
+ *
83
+ * constructor(fetch = globalThis.fetch) {
84
+ * this.fetch = bindFetch(fetch)
85
+ * }
86
+ *
87
+ * async get(url: string) {
88
+ * return this.fetch(url) // no more error
89
+ * }
90
+ * }
91
+ * ```
92
+ */
93
+ function bindFetch(fetch = globalThis.fetch, context = globalThis) {
94
+ return (0, fetch_js_1.toRequestTransformer)(async (request) => {
95
+ try {
96
+ return await fetch.call(context, request);
97
+ }
98
+ catch (err) {
99
+ throw fetch_request_js_1.FetchRequestError.from(request, err);
100
+ }
101
+ });
71
102
  }
72
- exports.fetchTimeout = fetchTimeout;
103
+ exports.bindFetch = bindFetch;
73
104
  //# sourceMappingURL=fetch-wrap.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"fetch-wrap.js","sourceRoot":"","sources":["../src/fetch-wrap.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fetch-wrap.js","sourceRoot":"","sources":["../src/fetch-wrap.ts"],"names":[],"mappings":"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"}
package/dist/fetch.d.ts CHANGED
@@ -1,2 +1,9 @@
1
- export type Fetch = (this: void | null | typeof globalThis, input: Request) => Promise<Response>;
1
+ import { ThisParameterOverride } from './util.js';
2
+ export type FetchContext = void | null | typeof globalThis;
3
+ export type FetchBound = (input: string | URL | Request, init?: RequestInit) => Promise<Response>;
4
+ export type Fetch<C = FetchContext> = ThisParameterOverride<C, FetchBound>;
5
+ export type SimpleFetchBound = (input: Request) => Promise<Response>;
6
+ export type SimpleFetch<C = FetchContext> = ThisParameterOverride<C, SimpleFetchBound>;
7
+ export declare function toRequestTransformer<C, O>(requestTransformer: (this: C, input: Request) => O): ThisParameterOverride<C, (input: string | URL | Request, init?: RequestInit) => O>;
8
+ export declare function asRequest(input: string | URL | Request, init?: RequestInit): Request;
2
9
  //# sourceMappingURL=fetch.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"fetch.d.ts","sourceRoot":"","sources":["../src/fetch.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,KAAK,GAAG,CAClB,IAAI,EAAE,IAAI,GAAG,IAAI,GAAG,OAAO,UAAU,EACrC,KAAK,EAAE,OAAO,KACX,OAAO,CAAC,QAAQ,CAAC,CAAA"}
1
+ {"version":3,"file":"fetch.d.ts","sourceRoot":"","sources":["../src/fetch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAA;AAEjD,MAAM,MAAM,YAAY,GAAG,IAAI,GAAG,IAAI,GAAG,OAAO,UAAU,CAAA;AAE1D,MAAM,MAAM,UAAU,GAAG,CACvB,KAAK,EAAE,MAAM,GAAG,GAAG,GAAG,OAAO,EAC7B,IAAI,CAAC,EAAE,WAAW,KACf,OAAO,CAAC,QAAQ,CAAC,CAAA;AAMtB,MAAM,MAAM,KAAK,CAAC,CAAC,GAAG,YAAY,IAAI,qBAAqB,CAAC,CAAC,EAAE,UAAU,CAAC,CAAA;AAE1E,MAAM,MAAM,gBAAgB,GAAG,CAAC,KAAK,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAA;AACpE,MAAM,MAAM,WAAW,CAAC,CAAC,GAAG,YAAY,IAAI,qBAAqB,CAC/D,CAAC,EACD,gBAAgB,CACjB,CAAA;AAED,wBAAgB,oBAAoB,CAAC,CAAC,EAAE,CAAC,EACvC,kBAAkB,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,OAAO,KAAK,CAAC,GACjD,qBAAqB,CACtB,CAAC,EACD,CAAC,KAAK,EAAE,MAAM,GAAG,GAAG,GAAG,OAAO,EAAE,IAAI,CAAC,EAAE,WAAW,KAAK,CAAC,CACzD,CAIA;AAED,wBAAgB,SAAS,CACvB,KAAK,EAAE,MAAM,GAAG,GAAG,GAAG,OAAO,EAC7B,IAAI,CAAC,EAAE,WAAW,GACjB,OAAO,CAGT"}
package/dist/fetch.js CHANGED
@@ -1,3 +1,16 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.asRequest = exports.toRequestTransformer = void 0;
4
+ function toRequestTransformer(requestTransformer) {
5
+ return function (input, init) {
6
+ return requestTransformer.call(this, asRequest(input, init));
7
+ };
8
+ }
9
+ exports.toRequestTransformer = toRequestTransformer;
10
+ function asRequest(input, init) {
11
+ if (!init && input instanceof Request)
12
+ return input;
13
+ return new Request(input, init);
14
+ }
15
+ exports.asRequest = asRequest;
3
16
  //# sourceMappingURL=fetch.js.map
package/dist/fetch.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"fetch.js","sourceRoot":"","sources":["../src/fetch.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"fetch.js","sourceRoot":"","sources":["../src/fetch.ts"],"names":[],"mappings":";;;AAqBA,SAAgB,oBAAoB,CAClC,kBAAkD;IAKlD,OAAO,UAAmB,KAAK,EAAE,IAAI;QACnC,OAAO,kBAAkB,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAA;IAC9D,CAAC,CAAA;AACH,CAAC;AATD,oDASC;AAED,SAAgB,SAAS,CACvB,KAA6B,EAC7B,IAAkB;IAElB,IAAI,CAAC,IAAI,IAAI,KAAK,YAAY,OAAO;QAAE,OAAO,KAAK,CAAA;IACnD,OAAO,IAAI,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;AACjC,CAAC;AAND,8BAMC"}
@@ -1 +1 @@
1
- {"version":3,"file":"transformed-response.d.ts","sourceRoot":"","sources":["../src/transformed-response.ts"],"names":[],"mappings":"AAAA,qBAAa,mBAAoB,SAAQ,QAAQ;;gBAGnC,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,eAAe;IAc1D;;OAEG;IACH,IAAI,GAAG,WAEN;IACD,IAAI,UAAU,YAEb;IACD,IAAI,IAAI,iBAEP;IACD,IAAI,UAAU,WAEb;CACF"}
1
+ {"version":3,"file":"transformed-response.d.ts","sourceRoot":"","sources":["../src/transformed-response.ts"],"names":[],"mappings":"AAAA,qBAAa,mBAAoB,SAAQ,QAAQ;;gBAGnC,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,eAAe;IAiB1D;;OAEG;IACH,IAAI,GAAG,WAEN;IACD,IAAI,UAAU,YAEb;IACD,IAAI,IAAI,iBAEP;IACD,IAAI,UAAU,WAEb;CACF"}
@@ -15,10 +15,13 @@ Object.defineProperty(exports, "__esModule", { value: true });
15
15
  exports.TransformedResponse = void 0;
16
16
  class TransformedResponse extends Response {
17
17
  constructor(response, transform) {
18
- if (response.body && response.bodyUsed) {
18
+ if (!response.body) {
19
+ throw new TypeError('Response body is not available');
20
+ }
21
+ if (response.bodyUsed) {
19
22
  throw new TypeError('Response body is already used');
20
23
  }
21
- super(response.body?.pipeThrough(transform) ?? null, {
24
+ super(response.body.pipeThrough(transform), {
22
25
  status: response.status,
23
26
  statusText: response.statusText,
24
27
  headers: response.headers,
@@ -1 +1 @@
1
- {"version":3,"file":"transformed-response.js","sourceRoot":"","sources":["../src/transformed-response.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,MAAa,mBAAoB,SAAQ,QAAQ;IAG/C,YAAY,QAAkB,EAAE,SAA0B;QACxD,IAAI,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC,QAAQ,EAAE,CAAC;YACvC,MAAM,IAAI,SAAS,CAAC,+BAA+B,CAAC,CAAA;QACtD,CAAC;QAED,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC,SAAS,CAAC,IAAI,IAAI,EAAE;YACnD,MAAM,EAAE,QAAQ,CAAC,MAAM;YACvB,UAAU,EAAE,QAAQ,CAAC,UAAU;YAC/B,OAAO,EAAE,QAAQ,CAAC,OAAO;SAC1B,CAAC,CAAA;QAXJ,gDAAmB;QAajB,uBAAA,IAAI,iCAAa,QAAQ,MAAA,CAAA;IAC3B,CAAC;IAED;;OAEG;IACH,IAAI,GAAG;QACL,OAAO,uBAAA,IAAI,qCAAU,CAAC,GAAG,CAAA;IAC3B,CAAC;IACD,IAAI,UAAU;QACZ,OAAO,uBAAA,IAAI,qCAAU,CAAC,UAAU,CAAA;IAClC,CAAC;IACD,IAAI,IAAI;QACN,OAAO,uBAAA,IAAI,qCAAU,CAAC,IAAI,CAAA;IAC5B,CAAC;IACD,IAAI,UAAU;QACZ,OAAO,uBAAA,IAAI,qCAAU,CAAC,UAAU,CAAA;IAClC,CAAC;CACF;AAhCD,kDAgCC"}
1
+ {"version":3,"file":"transformed-response.js","sourceRoot":"","sources":["../src/transformed-response.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,MAAa,mBAAoB,SAAQ,QAAQ;IAG/C,YAAY,QAAkB,EAAE,SAA0B;QACxD,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;YACnB,MAAM,IAAI,SAAS,CAAC,gCAAgC,CAAC,CAAA;QACvD,CAAC;QACD,IAAI,QAAQ,CAAC,QAAQ,EAAE,CAAC;YACtB,MAAM,IAAI,SAAS,CAAC,+BAA+B,CAAC,CAAA;QACtD,CAAC;QAED,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,EAAE;YAC1C,MAAM,EAAE,QAAQ,CAAC,MAAM;YACvB,UAAU,EAAE,QAAQ,CAAC,UAAU;YAC/B,OAAO,EAAE,QAAQ,CAAC,OAAO;SAC1B,CAAC,CAAA;QAdJ,gDAAmB;QAgBjB,uBAAA,IAAI,iCAAa,QAAQ,MAAA,CAAA;IAC3B,CAAC;IAED;;OAEG;IACH,IAAI,GAAG;QACL,OAAO,uBAAA,IAAI,qCAAU,CAAC,GAAG,CAAA;IAC3B,CAAC;IACD,IAAI,UAAU;QACZ,OAAO,uBAAA,IAAI,qCAAU,CAAC,UAAU,CAAA;IAClC,CAAC;IACD,IAAI,IAAI;QACN,OAAO,uBAAA,IAAI,qCAAU,CAAC,IAAI,CAAA;IAC5B,CAAC;IACD,IAAI,UAAU;QACZ,OAAO,uBAAA,IAAI,qCAAU,CAAC,UAAU,CAAA;IAClC,CAAC;CACF;AAnCD,kDAmCC"}
package/dist/util.d.ts CHANGED
@@ -6,19 +6,50 @@ export type JsonObject = {
6
6
  [key: string]: Json;
7
7
  };
8
8
  export type JsonArray = Json[];
9
- declare global {
10
- interface JSON {
11
- parse(text: string, reviver?: (key: any, value: any) => any): Json;
12
- }
13
- }
9
+ export type ThisParameterOverride<C, Fn extends (...a: any) => any> = Fn extends (...args: infer P) => infer R ? ((this: C, ...args: P) => R) & {
10
+ bind(context: C): (...args: P) => R;
11
+ } : never;
14
12
  export declare function isIp(hostname: string): boolean;
15
- export declare const ifObject: <V>(v?: V) => (V extends symbol | Function | JsonScalar | JsonArray ? never : V extends Json ? V : {
16
- [key: string]: unknown;
17
- }) | undefined;
18
- export declare const ifArray: <V>(v?: V) => (V & any[]) | undefined;
19
- export declare const ifScalar: <V>(v?: V) => (V & string) | (V & number) | (V & boolean) | (V & null) | (V extends JsonScalar ? never : undefined);
20
- export declare const ifBoolean: <V>(v?: V) => (V & boolean) | undefined;
21
- export declare const ifString: <V>(v?: V) => (V & string) | undefined;
22
- export declare const ifNumber: <V>(v?: V) => (V & number) | undefined;
23
- export declare const ifNull: <V>(v?: V) => V | undefined;
13
+ export declare const ifObject: <V>(v: V) => (V extends symbol | Function | JsonScalar | JsonArray ? never : V extends Json ? V : Record<string, unknown>) | undefined;
14
+ export declare const ifString: <V>(v: V) => (V & string) | undefined;
15
+ export declare class MaxBytesTransformStream extends TransformStream<Uint8Array, Uint8Array> {
16
+ constructor(maxBytes: number);
17
+ }
18
+ export declare function padLines(input: string, pad: string): string;
19
+ /**
20
+ * @param [onCancellationError] - Callback that will trigger to asynchronously
21
+ * handle any error that occurs while cancelling the response body. Providing
22
+ * this will speed up the process and avoid potential deadlocks. Defaults to
23
+ * awaiting the cancellation operation. use `"log"` to log the error.
24
+ * @see {@link https://undici.nodejs.org/#/?id=garbage-collection}
25
+ * @note awaiting this function's result, when no `onCancellationError` is
26
+ * provided, might result in a dead lock. Indeed, if the response was cloned(),
27
+ * the response.body.cancel() method will not resolve until the other response's
28
+ * body is consumed/cancelled.
29
+ *
30
+ * @example
31
+ * ```ts
32
+ * // Make sure response was not cloned, or that every cloned response was
33
+ * // consumed/cancelled before awaiting this function's result.
34
+ * await cancelBody(response)
35
+ * ```
36
+ * @example
37
+ * ```ts
38
+ * await cancelBody(response, (err) => {
39
+ * // No biggie, let's just log the error
40
+ * console.warn('Failed to cancel response body', err)
41
+ * })
42
+ * ```
43
+ * @example
44
+ * ```ts
45
+ * // Will generate an "unhandledRejection" if an error occurs while cancelling
46
+ * // the response body. This will likely crash the process.
47
+ * await cancelBody(response, (err) => { throw err })
48
+ * ```
49
+ */
50
+ export declare function cancelBody(body: Body, onCancellationError?: 'log' | ((err: unknown) => void)): Promise<void>;
51
+ export declare function logCancellationError(err: unknown): void;
52
+ export declare function stringifyMessage(input: Body & {
53
+ headers: Headers;
54
+ }): Promise<string>;
24
55
  //# sourceMappingURL=util.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,CAAA;AACzD,MAAM,MAAM,IAAI,GAAG,UAAU,GAAG,IAAI,EAAE,GAAG;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAAA;CAAE,CAAA;AAC5E,MAAM,MAAM,UAAU,GAAG;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAAA;AAChD,MAAM,MAAM,SAAS,GAAG,IAAI,EAAE,CAAA;AAE9B,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,IAAI;QACZ,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,KAAK,GAAG,GAAG,IAAI,CAAA;KACnE;CACF;AAED,wBAAgB,IAAI,CAAC,QAAQ,EAAE,MAAM,WAQpC;AAKD,eAAO,MAAM,QAAQ,UAAW,CAAC;;cAehC,CAAA;AAED,eAAO,MAAM,OAAO,UAAW,CAAC,4BAAuC,CAAA;AACvE,eAAO,MAAM,QAAQ,UAAW,CAAC,0GAUhC,CAAA;AACD,eAAO,MAAM,SAAS,UAAW,CAAC,8BAA6C,CAAA;AAC/E,eAAO,MAAM,QAAQ,UAAW,CAAC,6BAA4C,CAAA;AAC7E,eAAO,MAAM,QAAQ,UAAW,CAAC,6BAA4C,CAAA;AAC7E,eAAO,MAAM,MAAM,UAAW,CAAC,kBAAiC,CAAA"}
1
+ {"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,CAAA;AACzD,MAAM,MAAM,IAAI,GAAG,UAAU,GAAG,IAAI,EAAE,GAAG;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAAA;CAAE,CAAA;AAC5E,MAAM,MAAM,UAAU,GAAG;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAAA;AAChD,MAAM,MAAM,SAAS,GAAG,IAAI,EAAE,CAAA;AAE9B,MAAM,MAAM,qBAAqB,CAC/B,CAAC,EACD,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,GAAG,KAAK,GAAG,IAC3B,EAAE,SAAS,CAAC,GAAG,IAAI,EAAE,MAAM,CAAC,KAAK,MAAM,CAAC,GACxC,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,GAAG,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG;IAC7B,IAAI,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC,KAAK,CAAC,CAAA;CACpC,GACD,KAAK,CAAA;AAET,wBAAgB,IAAI,CAAC,QAAQ,EAAE,MAAM,WAQpC;AAGD,eAAO,MAAM,QAAQ,SAAU,CAAC,8HAe/B,CAAA;AAED,eAAO,MAAM,QAAQ,SAAU,CAAC,6BAA4C,CAAA;AAE5E,qBAAa,uBAAwB,SAAQ,eAAe,CAC1D,UAAU,EACV,UAAU,CACX;gBACa,QAAQ,EAAE,MAAM;CAqB7B;AAGD,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,UAGlD;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,wBAAsB,UAAU,CAC9B,IAAI,EAAE,IAAI,EACV,mBAAmB,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,GAAG,EAAE,OAAO,KAAK,IAAI,CAAC,GACrD,OAAO,CAAC,IAAI,CAAC,CAgBf;AAED,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI,CAEvD;AAED,wBAAsB,gBAAgB,CAAC,KAAK,EAAE,IAAI,GAAG;IAAE,OAAO,EAAE,OAAO,CAAA;CAAE,mBAQxE"}
package/dist/util.js CHANGED
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
- // TODO: Move to a shared package ?
2
+ // @TODO: Move some of these to a shared package ?
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
- exports.ifNull = exports.ifNumber = exports.ifString = exports.ifBoolean = exports.ifScalar = exports.ifArray = exports.ifObject = exports.isIp = void 0;
4
+ exports.stringifyMessage = exports.logCancellationError = exports.cancelBody = exports.padLines = exports.MaxBytesTransformStream = exports.ifString = exports.ifObject = exports.isIp = void 0;
5
5
  function isIp(hostname) {
6
6
  // IPv4
7
7
  if (hostname.match(/^\d+\.\d+\.\d+\.\d+$/))
@@ -12,7 +12,6 @@ function isIp(hostname) {
12
12
  return false;
13
13
  }
14
14
  exports.isIp = isIp;
15
- // TODO: Move to a shared package ?
16
15
  const plainObjectProto = Object.prototype;
17
16
  const ifObject = (v) => {
18
17
  if (typeof v === 'object' && v != null && !Array.isArray(v)) {
@@ -25,27 +24,119 @@ const ifObject = (v) => {
25
24
  return undefined;
26
25
  };
27
26
  exports.ifObject = ifObject;
28
- const ifArray = (v) => (Array.isArray(v) ? v : undefined);
29
- exports.ifArray = ifArray;
30
- const ifScalar = (v) => {
31
- switch (typeof v) {
32
- case 'string':
33
- case 'number':
34
- case 'boolean':
35
- return v;
36
- default:
37
- if (v === null)
38
- return null;
39
- return undefined;
40
- }
41
- };
42
- exports.ifScalar = ifScalar;
43
- const ifBoolean = (v) => (typeof v === 'boolean' ? v : undefined);
44
- exports.ifBoolean = ifBoolean;
45
27
  const ifString = (v) => (typeof v === 'string' ? v : undefined);
46
28
  exports.ifString = ifString;
47
- const ifNumber = (v) => (typeof v === 'number' ? v : undefined);
48
- exports.ifNumber = ifNumber;
49
- const ifNull = (v) => (v === null ? v : undefined);
50
- exports.ifNull = ifNull;
29
+ class MaxBytesTransformStream extends TransformStream {
30
+ constructor(maxBytes) {
31
+ // Note: negation accounts for invalid value types (NaN, non numbers)
32
+ if (!(maxBytes >= 0)) {
33
+ throw new TypeError('maxBytes must be a non-negative number');
34
+ }
35
+ let bytesRead = 0;
36
+ super({
37
+ transform: (chunk, ctrl) => {
38
+ if ((bytesRead += chunk.length) <= maxBytes) {
39
+ ctrl.enqueue(chunk);
40
+ }
41
+ else {
42
+ ctrl.error(new Error('Response too large'));
43
+ }
44
+ },
45
+ });
46
+ }
47
+ }
48
+ exports.MaxBytesTransformStream = MaxBytesTransformStream;
49
+ const LINE_BREAK = /\r?\n/g;
50
+ function padLines(input, pad) {
51
+ if (!input)
52
+ return input;
53
+ return pad + input.replace(LINE_BREAK, `$&${pad}`);
54
+ }
55
+ exports.padLines = padLines;
56
+ /**
57
+ * @param [onCancellationError] - Callback that will trigger to asynchronously
58
+ * handle any error that occurs while cancelling the response body. Providing
59
+ * this will speed up the process and avoid potential deadlocks. Defaults to
60
+ * awaiting the cancellation operation. use `"log"` to log the error.
61
+ * @see {@link https://undici.nodejs.org/#/?id=garbage-collection}
62
+ * @note awaiting this function's result, when no `onCancellationError` is
63
+ * provided, might result in a dead lock. Indeed, if the response was cloned(),
64
+ * the response.body.cancel() method will not resolve until the other response's
65
+ * body is consumed/cancelled.
66
+ *
67
+ * @example
68
+ * ```ts
69
+ * // Make sure response was not cloned, or that every cloned response was
70
+ * // consumed/cancelled before awaiting this function's result.
71
+ * await cancelBody(response)
72
+ * ```
73
+ * @example
74
+ * ```ts
75
+ * await cancelBody(response, (err) => {
76
+ * // No biggie, let's just log the error
77
+ * console.warn('Failed to cancel response body', err)
78
+ * })
79
+ * ```
80
+ * @example
81
+ * ```ts
82
+ * // Will generate an "unhandledRejection" if an error occurs while cancelling
83
+ * // the response body. This will likely crash the process.
84
+ * await cancelBody(response, (err) => { throw err })
85
+ * ```
86
+ */
87
+ async function cancelBody(body, onCancellationError) {
88
+ if (body.body &&
89
+ !body.bodyUsed &&
90
+ !body.body.locked &&
91
+ // Support for alternative fetch implementations
92
+ typeof body.body.cancel === 'function') {
93
+ if (typeof onCancellationError === 'function') {
94
+ void body.body.cancel().catch(onCancellationError);
95
+ }
96
+ else if (onCancellationError === 'log') {
97
+ void body.body.cancel().catch(logCancellationError);
98
+ }
99
+ else {
100
+ await body.body.cancel();
101
+ }
102
+ }
103
+ }
104
+ exports.cancelBody = cancelBody;
105
+ function logCancellationError(err) {
106
+ console.warn('Failed to cancel response body', err);
107
+ }
108
+ exports.logCancellationError = logCancellationError;
109
+ async function stringifyMessage(input) {
110
+ try {
111
+ const headers = stringifyHeaders(input.headers);
112
+ const payload = await stringifyBody(input);
113
+ return headers && payload ? `${headers}\n${payload}` : headers || payload;
114
+ }
115
+ finally {
116
+ void cancelBody(input, 'log');
117
+ }
118
+ }
119
+ exports.stringifyMessage = stringifyMessage;
120
+ function stringifyHeaders(headers) {
121
+ return Array.from(headers)
122
+ .map(([name, value]) => `${name}: ${value}`)
123
+ .join('\n');
124
+ }
125
+ async function stringifyBody(body) {
126
+ try {
127
+ const blob = await body.blob();
128
+ if (blob.type?.startsWith('text/')) {
129
+ const text = await blob.text();
130
+ return JSON.stringify(text);
131
+ }
132
+ if (/application\/(?:\w+\+)?json/.test(blob.type)) {
133
+ const text = await blob.text();
134
+ return text.includes('\n') ? JSON.stringify(JSON.parse(text)) : text;
135
+ }
136
+ return `[Body size: ${blob.size}, type: ${JSON.stringify(blob.type)} ]`;
137
+ }
138
+ catch {
139
+ return '[Body could not be read]';
140
+ }
141
+ }
51
142
  //# sourceMappingURL=util.js.map
package/dist/util.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"util.js","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":";AAAA,mCAAmC;;;AAanC,SAAgB,IAAI,CAAC,QAAgB;IACnC,OAAO;IACP,IAAI,QAAQ,CAAC,KAAK,CAAC,sBAAsB,CAAC;QAAE,OAAO,IAAI,CAAA;IAEvD,OAAO;IACP,IAAI,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC;QAAE,OAAO,IAAI,CAAA;IAEnE,OAAO,KAAK,CAAA;AACd,CAAC;AARD,oBAQC;AAED,mCAAmC;AAEnC,MAAM,gBAAgB,GAAG,MAAM,CAAC,SAAS,CAAA;AAClC,MAAM,QAAQ,GAAG,CAAI,CAAK,EAAE,EAAE;IACnC,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;QAC5D,MAAM,KAAK,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,CAAA;QACtC,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,gBAAgB,EAAE,CAAC;YACjD,wDAAwD;YACxD,OAAO,CAKyB,CAAA;QAClC,CAAC;IACH,CAAC;IAED,OAAO,SAAS,CAAA;AAClB,CAAC,CAAA;AAfY,QAAA,QAAQ,YAepB;AAEM,MAAM,OAAO,GAAG,CAAI,CAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAA;AAA1D,QAAA,OAAO,WAAmD;AAChE,MAAM,QAAQ,GAAG,CAAI,CAAK,EAAE,EAAE;IACnC,QAAQ,OAAO,CAAC,EAAE,CAAC;QACjB,KAAK,QAAQ,CAAC;QACd,KAAK,QAAQ,CAAC;QACd,KAAK,SAAS;YACZ,OAAO,CAAC,CAAA;QACV;YACE,IAAI,CAAC,KAAK,IAAI;gBAAE,OAAO,IAAgB,CAAA;YACvC,OAAO,SAAqD,CAAA;IAChE,CAAC;AACH,CAAC,CAAA;AAVY,QAAA,QAAQ,YAUpB;AACM,MAAM,SAAS,GAAG,CAAI,CAAK,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAA;AAAlE,QAAA,SAAS,aAAyD;AACxE,MAAM,QAAQ,GAAG,CAAI,CAAK,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAA;AAAhE,QAAA,QAAQ,YAAwD;AACtE,MAAM,QAAQ,GAAG,CAAI,CAAK,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAA;AAAhE,QAAA,QAAQ,YAAwD;AACtE,MAAM,MAAM,GAAG,CAAI,CAAK,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAA;AAAnD,QAAA,MAAM,UAA6C"}
1
+ {"version":3,"file":"util.js","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"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"}