@happy-ts/fetch-t 1.0.2 → 1.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/main.cjs +2 -2
- package/dist/main.cjs.map +1 -1
- package/dist/main.mjs +2 -2
- package/dist/main.mjs.map +1 -1
- package/dist/types.d.ts +33 -25
- package/package.json +1 -1
- package/src/fetch/fetch.ts +44 -36
package/dist/main.cjs
CHANGED
|
@@ -15,7 +15,7 @@ function fetchT(url, init) {
|
|
|
15
15
|
if (typeof url === "string") {
|
|
16
16
|
assertUrl(url);
|
|
17
17
|
}
|
|
18
|
-
const { abortable = false, responseType
|
|
18
|
+
const { abortable = false, responseType, ...rest } = init ?? {};
|
|
19
19
|
let controller;
|
|
20
20
|
if (abortable) {
|
|
21
21
|
controller = new AbortController();
|
|
@@ -43,7 +43,7 @@ function fetchT(url, init) {
|
|
|
43
43
|
return happyRusty.Ok(await res.text());
|
|
44
44
|
}
|
|
45
45
|
default: {
|
|
46
|
-
|
|
46
|
+
return happyRusty.Ok(res);
|
|
47
47
|
}
|
|
48
48
|
}
|
|
49
49
|
}).catch((err) => {
|
package/dist/main.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"main.cjs","sources":["../src/fetch/assertions.ts","../src/fetch/fetch.ts"],"sourcesContent":["/**\n * assert function\n * @param expr\n * @param createMsg return a string message to throw\n */\nfunction invariant(expr: unknown, createMsg: () => string): void {\n if (!expr) {\n throw new TypeError(createMsg());\n }\n}\n\n/**\n * assert url is a string\n *\n * @param url\n */\nexport function assertUrl(url: string): void {\n invariant(typeof url === 'string', () => `Url must be a string. Received ${ JSON.stringify(url) }`);\n}","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { Err, Ok } from '@happy-js/happy-rusty';\nimport { assertUrl } from './assertions.ts';\nimport type { FetchInit, FetchResponse, FetchTask } from './defines.ts';\n\n/**\n * Return `FetchTask<string>`.\n * @param url\n * @param init\n */\nexport function fetchT(url: string | URL, init: FetchInit & {\n abortable: true
|
|
1
|
+
{"version":3,"file":"main.cjs","sources":["../src/fetch/assertions.ts","../src/fetch/fetch.ts"],"sourcesContent":["/**\n * assert function\n * @param expr\n * @param createMsg return a string message to throw\n */\nfunction invariant(expr: unknown, createMsg: () => string): void {\n if (!expr) {\n throw new TypeError(createMsg());\n }\n}\n\n/**\n * assert url is a string\n *\n * @param url\n */\nexport function assertUrl(url: string): void {\n invariant(typeof url === 'string', () => `Url must be a string. Received ${ JSON.stringify(url) }`);\n}","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { Err, Ok } from '@happy-js/happy-rusty';\nimport { assertUrl } from './assertions.ts';\nimport type { FetchInit, FetchResponse, FetchTask } from './defines.ts';\n\n/**\n * Return `FetchTask<string>`.\n * @param url\n * @param init\n */\nexport function fetchT(url: string | URL, init: FetchInit & {\n abortable: true;\n responseType: 'text';\n}): FetchTask<string>;\n/**\n * Return `FetchTask<ArrayBuffer>`.\n * @param url\n * @param init\n */\nexport function fetchT(url: string | URL, init: FetchInit & {\n abortable: true;\n responseType: 'arraybuffer';\n}): FetchTask<ArrayBuffer>;\n/**\n * Return `FetchTask<Blob>`.\n * @param url\n * @param init\n */\nexport function fetchT(url: string | URL, init: FetchInit & {\n abortable: true;\n responseType: 'blob';\n}): FetchTask<Blob>;\n/**\n * Return `FetchTask<T>`.\n */\nexport function fetchT<T>(url: string | URL, init: FetchInit & {\n abortable: true;\n responseType: 'json';\n}): FetchTask<T>;\n/**\n * Return `FetchResponse<string>`.\n * @param url\n * @param init\n */\nexport function fetchT(url: string | URL, init: FetchInit & {\n responseType: 'text';\n}): FetchResponse<string>;\n/**\n * Return `FetchResponse<ArrayBuffer>`.\n * @param url\n * @param init\n */\nexport function fetchT(url: string | URL, init: FetchInit & {\n responseType: 'arraybuffer';\n}): FetchResponse<ArrayBuffer>;\n/**\n * Return `FetchResponse<Blob>`.\n * @param url\n * @param init\n */\nexport function fetchT(url: string | URL, init: FetchInit & {\n responseType: 'blob';\n}): FetchResponse<Blob>;\n/**\n * Return `FetchResponse<T>`.\n * @param url\n * @param init\n */\nexport function fetchT<T>(url: string | URL, init: FetchInit & {\n responseType: 'json';\n}): FetchResponse<T>;\n/**\n * Return `FetchTask<Response>`.\n * @param url\n * @param init\n */\nexport function fetchT(url: string | URL, init: FetchInit & {\n abortable: true;\n}): FetchTask<Response>;\n/**\n * Return `FetchTask<T>` or `FetchResponse<T>`.\n * @param url\n * @param init\n */\nexport function fetchT<T = any>(url: string | URL, init: FetchInit): FetchTask<T> | FetchResponse<T>;\n/**\n * Return `FetchResponse<Response>`.\n * @param url\n * @param init\n */\nexport function fetchT(url: string | URL, init?: RequestInit): FetchResponse<Response>;\n/**\n * Request the url and return the corresponding type based on the responseType.\n * @param url url to fetch\n * @param init fetch init\n * @returns {FetchTask<T> | FetchResponse<T>} an abort able fetch task or just response\n */\nexport function fetchT<T = any>(url: string | URL, init?: FetchInit): FetchTask<T> | FetchResponse<T> {\n if (typeof url === 'string') {\n assertUrl(url);\n }\n\n // default not abort able\n const { abortable = false, responseType, ...rest } = init ?? {};\n\n let controller: AbortController;\n\n if (abortable) {\n controller = new AbortController();\n rest.signal = controller.signal;\n }\n\n const response: FetchResponse<T> = fetch(url, rest).then(async (res): FetchResponse<T> => {\n if (!res.ok) {\n return Err(new Error(`fetch status: ${ res.status }`));\n }\n\n switch (responseType) {\n case 'arraybuffer': {\n return Ok(await res.arrayBuffer() as T);\n }\n case 'blob': {\n return Ok(await res.blob() as T);\n }\n case 'json': {\n try {\n return Ok(await res.json() as T);\n } catch {\n return Err(new Error('Response is invalid json while responseType is json'));\n }\n }\n case 'text': {\n return Ok(await res.text() as T);\n }\n default: {\n // default return the Response object\n return Ok(res as T);\n }\n }\n }).catch((err) => {\n return Err(err);\n });\n\n if (abortable) {\n return {\n abort(reason?: any): void {\n controller.abort(reason);\n },\n get aborted(): boolean {\n return controller.signal.aborted;\n },\n response,\n };\n } else {\n return response;\n }\n}"],"names":["Err","Ok"],"mappings":";;;;AAKA,SAAS,SAAA,CAAU,MAAe,SAA+B,EAAA;AAC7D,EAAA,IAAI,CAAC,IAAM,EAAA;AACP,IAAM,MAAA,IAAI,SAAU,CAAA,SAAA,EAAW,CAAA,CAAA;AAAA,GACnC;AACJ,CAAA;AAOO,SAAS,UAAU,GAAmB,EAAA;AACzC,EAAU,SAAA,CAAA,OAAO,QAAQ,QAAU,EAAA,MAAM,kCAAmC,IAAK,CAAA,SAAA,CAAU,GAAG,CAAE,CAAE,CAAA,CAAA,CAAA;AACtG;;AC+EgB,SAAA,MAAA,CAAgB,KAAmB,IAAmD,EAAA;AAClG,EAAI,IAAA,OAAO,QAAQ,QAAU,EAAA;AACzB,IAAA,SAAA,CAAU,GAAG,CAAA,CAAA;AAAA,GACjB;AAGA,EAAM,MAAA,EAAE,YAAY,KAAO,EAAA,YAAA,EAAc,GAAG,IAAK,EAAA,GAAI,QAAQ,EAAC,CAAA;AAE9D,EAAI,IAAA,UAAA,CAAA;AAEJ,EAAA,IAAI,SAAW,EAAA;AACX,IAAA,UAAA,GAAa,IAAI,eAAgB,EAAA,CAAA;AACjC,IAAA,IAAA,CAAK,SAAS,UAAW,CAAA,MAAA,CAAA;AAAA,GAC7B;AAEA,EAAA,MAAM,WAA6B,KAAM,CAAA,GAAA,EAAK,IAAI,CAAE,CAAA,IAAA,CAAK,OAAO,GAA0B,KAAA;AACtF,IAAI,IAAA,CAAC,IAAI,EAAI,EAAA;AACT,MAAA,OAAOA,eAAI,IAAI,KAAA,CAAM,iBAAkB,GAAI,CAAA,MAAO,EAAE,CAAC,CAAA,CAAA;AAAA,KACzD;AAEA,IAAA,QAAQ,YAAc;AAAA,MAClB,KAAK,aAAe,EAAA;AAChB,QAAA,OAAOC,aAAG,CAAA,MAAM,GAAI,CAAA,WAAA,EAAkB,CAAA,CAAA;AAAA,OAC1C;AAAA,MACA,KAAK,MAAQ,EAAA;AACT,QAAA,OAAOA,aAAG,CAAA,MAAM,GAAI,CAAA,IAAA,EAAW,CAAA,CAAA;AAAA,OACnC;AAAA,MACA,KAAK,MAAQ,EAAA;AACT,QAAI,IAAA;AACA,UAAA,OAAOA,aAAG,CAAA,MAAM,GAAI,CAAA,IAAA,EAAW,CAAA,CAAA;AAAA,SAC3B,CAAA,MAAA;AACJ,UAAA,OAAOD,cAAI,CAAA,IAAI,KAAM,CAAA,qDAAqD,CAAC,CAAA,CAAA;AAAA,SAC/E;AAAA,OACJ;AAAA,MACA,KAAK,MAAQ,EAAA;AACT,QAAA,OAAOC,aAAG,CAAA,MAAM,GAAI,CAAA,IAAA,EAAW,CAAA,CAAA;AAAA,OACnC;AAAA,MACA,SAAS;AAEL,QAAA,OAAOA,cAAG,GAAQ,CAAA,CAAA;AAAA,OACtB;AAAA,KACJ;AAAA,GACH,CAAA,CAAE,KAAM,CAAA,CAAC,GAAQ,KAAA;AACd,IAAA,OAAOD,eAAI,GAAG,CAAA,CAAA;AAAA,GACjB,CAAA,CAAA;AAED,EAAA,IAAI,SAAW,EAAA;AACX,IAAO,OAAA;AAAA,MACH,MAAM,MAAoB,EAAA;AACtB,QAAA,UAAA,CAAW,MAAM,MAAM,CAAA,CAAA;AAAA,OAC3B;AAAA,MACA,IAAI,OAAmB,GAAA;AACnB,QAAA,OAAO,WAAW,MAAO,CAAA,OAAA,CAAA;AAAA,OAC7B;AAAA,MACA,QAAA;AAAA,KACJ,CAAA;AAAA,GACG,MAAA;AACH,IAAO,OAAA,QAAA,CAAA;AAAA,GACX;AACJ;;;;"}
|
package/dist/main.mjs
CHANGED
|
@@ -13,7 +13,7 @@ function fetchT(url, init) {
|
|
|
13
13
|
if (typeof url === "string") {
|
|
14
14
|
assertUrl(url);
|
|
15
15
|
}
|
|
16
|
-
const { abortable = false, responseType
|
|
16
|
+
const { abortable = false, responseType, ...rest } = init ?? {};
|
|
17
17
|
let controller;
|
|
18
18
|
if (abortable) {
|
|
19
19
|
controller = new AbortController();
|
|
@@ -41,7 +41,7 @@ function fetchT(url, init) {
|
|
|
41
41
|
return Ok(await res.text());
|
|
42
42
|
}
|
|
43
43
|
default: {
|
|
44
|
-
|
|
44
|
+
return Ok(res);
|
|
45
45
|
}
|
|
46
46
|
}
|
|
47
47
|
}).catch((err) => {
|
package/dist/main.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"main.mjs","sources":["../src/fetch/assertions.ts","../src/fetch/fetch.ts"],"sourcesContent":["/**\n * assert function\n * @param expr\n * @param createMsg return a string message to throw\n */\nfunction invariant(expr: unknown, createMsg: () => string): void {\n if (!expr) {\n throw new TypeError(createMsg());\n }\n}\n\n/**\n * assert url is a string\n *\n * @param url\n */\nexport function assertUrl(url: string): void {\n invariant(typeof url === 'string', () => `Url must be a string. Received ${ JSON.stringify(url) }`);\n}","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { Err, Ok } from '@happy-js/happy-rusty';\nimport { assertUrl } from './assertions.ts';\nimport type { FetchInit, FetchResponse, FetchTask } from './defines.ts';\n\n/**\n * Return `FetchTask<string>`.\n * @param url\n * @param init\n */\nexport function fetchT(url: string | URL, init: FetchInit & {\n abortable: true
|
|
1
|
+
{"version":3,"file":"main.mjs","sources":["../src/fetch/assertions.ts","../src/fetch/fetch.ts"],"sourcesContent":["/**\n * assert function\n * @param expr\n * @param createMsg return a string message to throw\n */\nfunction invariant(expr: unknown, createMsg: () => string): void {\n if (!expr) {\n throw new TypeError(createMsg());\n }\n}\n\n/**\n * assert url is a string\n *\n * @param url\n */\nexport function assertUrl(url: string): void {\n invariant(typeof url === 'string', () => `Url must be a string. Received ${ JSON.stringify(url) }`);\n}","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { Err, Ok } from '@happy-js/happy-rusty';\nimport { assertUrl } from './assertions.ts';\nimport type { FetchInit, FetchResponse, FetchTask } from './defines.ts';\n\n/**\n * Return `FetchTask<string>`.\n * @param url\n * @param init\n */\nexport function fetchT(url: string | URL, init: FetchInit & {\n abortable: true;\n responseType: 'text';\n}): FetchTask<string>;\n/**\n * Return `FetchTask<ArrayBuffer>`.\n * @param url\n * @param init\n */\nexport function fetchT(url: string | URL, init: FetchInit & {\n abortable: true;\n responseType: 'arraybuffer';\n}): FetchTask<ArrayBuffer>;\n/**\n * Return `FetchTask<Blob>`.\n * @param url\n * @param init\n */\nexport function fetchT(url: string | URL, init: FetchInit & {\n abortable: true;\n responseType: 'blob';\n}): FetchTask<Blob>;\n/**\n * Return `FetchTask<T>`.\n */\nexport function fetchT<T>(url: string | URL, init: FetchInit & {\n abortable: true;\n responseType: 'json';\n}): FetchTask<T>;\n/**\n * Return `FetchResponse<string>`.\n * @param url\n * @param init\n */\nexport function fetchT(url: string | URL, init: FetchInit & {\n responseType: 'text';\n}): FetchResponse<string>;\n/**\n * Return `FetchResponse<ArrayBuffer>`.\n * @param url\n * @param init\n */\nexport function fetchT(url: string | URL, init: FetchInit & {\n responseType: 'arraybuffer';\n}): FetchResponse<ArrayBuffer>;\n/**\n * Return `FetchResponse<Blob>`.\n * @param url\n * @param init\n */\nexport function fetchT(url: string | URL, init: FetchInit & {\n responseType: 'blob';\n}): FetchResponse<Blob>;\n/**\n * Return `FetchResponse<T>`.\n * @param url\n * @param init\n */\nexport function fetchT<T>(url: string | URL, init: FetchInit & {\n responseType: 'json';\n}): FetchResponse<T>;\n/**\n * Return `FetchTask<Response>`.\n * @param url\n * @param init\n */\nexport function fetchT(url: string | URL, init: FetchInit & {\n abortable: true;\n}): FetchTask<Response>;\n/**\n * Return `FetchTask<T>` or `FetchResponse<T>`.\n * @param url\n * @param init\n */\nexport function fetchT<T = any>(url: string | URL, init: FetchInit): FetchTask<T> | FetchResponse<T>;\n/**\n * Return `FetchResponse<Response>`.\n * @param url\n * @param init\n */\nexport function fetchT(url: string | URL, init?: RequestInit): FetchResponse<Response>;\n/**\n * Request the url and return the corresponding type based on the responseType.\n * @param url url to fetch\n * @param init fetch init\n * @returns {FetchTask<T> | FetchResponse<T>} an abort able fetch task or just response\n */\nexport function fetchT<T = any>(url: string | URL, init?: FetchInit): FetchTask<T> | FetchResponse<T> {\n if (typeof url === 'string') {\n assertUrl(url);\n }\n\n // default not abort able\n const { abortable = false, responseType, ...rest } = init ?? {};\n\n let controller: AbortController;\n\n if (abortable) {\n controller = new AbortController();\n rest.signal = controller.signal;\n }\n\n const response: FetchResponse<T> = fetch(url, rest).then(async (res): FetchResponse<T> => {\n if (!res.ok) {\n return Err(new Error(`fetch status: ${ res.status }`));\n }\n\n switch (responseType) {\n case 'arraybuffer': {\n return Ok(await res.arrayBuffer() as T);\n }\n case 'blob': {\n return Ok(await res.blob() as T);\n }\n case 'json': {\n try {\n return Ok(await res.json() as T);\n } catch {\n return Err(new Error('Response is invalid json while responseType is json'));\n }\n }\n case 'text': {\n return Ok(await res.text() as T);\n }\n default: {\n // default return the Response object\n return Ok(res as T);\n }\n }\n }).catch((err) => {\n return Err(err);\n });\n\n if (abortable) {\n return {\n abort(reason?: any): void {\n controller.abort(reason);\n },\n get aborted(): boolean {\n return controller.signal.aborted;\n },\n response,\n };\n } else {\n return response;\n }\n}"],"names":[],"mappings":";;AAKA,SAAS,SAAA,CAAU,MAAe,SAA+B,EAAA;AAC7D,EAAA,IAAI,CAAC,IAAM,EAAA;AACP,IAAM,MAAA,IAAI,SAAU,CAAA,SAAA,EAAW,CAAA,CAAA;AAAA,GACnC;AACJ,CAAA;AAOO,SAAS,UAAU,GAAmB,EAAA;AACzC,EAAU,SAAA,CAAA,OAAO,QAAQ,QAAU,EAAA,MAAM,kCAAmC,IAAK,CAAA,SAAA,CAAU,GAAG,CAAE,CAAE,CAAA,CAAA,CAAA;AACtG;;AC+EgB,SAAA,MAAA,CAAgB,KAAmB,IAAmD,EAAA;AAClG,EAAI,IAAA,OAAO,QAAQ,QAAU,EAAA;AACzB,IAAA,SAAA,CAAU,GAAG,CAAA,CAAA;AAAA,GACjB;AAGA,EAAM,MAAA,EAAE,YAAY,KAAO,EAAA,YAAA,EAAc,GAAG,IAAK,EAAA,GAAI,QAAQ,EAAC,CAAA;AAE9D,EAAI,IAAA,UAAA,CAAA;AAEJ,EAAA,IAAI,SAAW,EAAA;AACX,IAAA,UAAA,GAAa,IAAI,eAAgB,EAAA,CAAA;AACjC,IAAA,IAAA,CAAK,SAAS,UAAW,CAAA,MAAA,CAAA;AAAA,GAC7B;AAEA,EAAA,MAAM,WAA6B,KAAM,CAAA,GAAA,EAAK,IAAI,CAAE,CAAA,IAAA,CAAK,OAAO,GAA0B,KAAA;AACtF,IAAI,IAAA,CAAC,IAAI,EAAI,EAAA;AACT,MAAA,OAAO,IAAI,IAAI,KAAA,CAAM,iBAAkB,GAAI,CAAA,MAAO,EAAE,CAAC,CAAA,CAAA;AAAA,KACzD;AAEA,IAAA,QAAQ,YAAc;AAAA,MAClB,KAAK,aAAe,EAAA;AAChB,QAAA,OAAO,EAAG,CAAA,MAAM,GAAI,CAAA,WAAA,EAAkB,CAAA,CAAA;AAAA,OAC1C;AAAA,MACA,KAAK,MAAQ,EAAA;AACT,QAAA,OAAO,EAAG,CAAA,MAAM,GAAI,CAAA,IAAA,EAAW,CAAA,CAAA;AAAA,OACnC;AAAA,MACA,KAAK,MAAQ,EAAA;AACT,QAAI,IAAA;AACA,UAAA,OAAO,EAAG,CAAA,MAAM,GAAI,CAAA,IAAA,EAAW,CAAA,CAAA;AAAA,SAC3B,CAAA,MAAA;AACJ,UAAA,OAAO,GAAI,CAAA,IAAI,KAAM,CAAA,qDAAqD,CAAC,CAAA,CAAA;AAAA,SAC/E;AAAA,OACJ;AAAA,MACA,KAAK,MAAQ,EAAA;AACT,QAAA,OAAO,EAAG,CAAA,MAAM,GAAI,CAAA,IAAA,EAAW,CAAA,CAAA;AAAA,OACnC;AAAA,MACA,SAAS;AAEL,QAAA,OAAO,GAAG,GAAQ,CAAA,CAAA;AAAA,OACtB;AAAA,KACJ;AAAA,GACH,CAAA,CAAE,KAAM,CAAA,CAAC,GAAQ,KAAA;AACd,IAAA,OAAO,IAAI,GAAG,CAAA,CAAA;AAAA,GACjB,CAAA,CAAA;AAED,EAAA,IAAI,SAAW,EAAA;AACX,IAAO,OAAA;AAAA,MACH,MAAM,MAAoB,EAAA;AACtB,QAAA,UAAA,CAAW,MAAM,MAAM,CAAA,CAAA;AAAA,OAC3B;AAAA,MACA,IAAI,OAAmB,GAAA;AACnB,QAAA,OAAO,WAAW,MAAO,CAAA,OAAA,CAAA;AAAA,OAC7B;AAAA,MACA,QAAA;AAAA,KACJ,CAAA;AAAA,GACG,MAAA;AACH,IAAO,OAAA,QAAA,CAAA;AAAA,GACX;AACJ;;;;"}
|
package/dist/types.d.ts
CHANGED
|
@@ -46,39 +46,46 @@ declare function fetchT(url: string | URL, init: FetchInit & {
|
|
|
46
46
|
responseType: 'text';
|
|
47
47
|
}): FetchTask<string>;
|
|
48
48
|
/**
|
|
49
|
-
* Return `
|
|
49
|
+
* Return `FetchTask<ArrayBuffer>`.
|
|
50
50
|
* @param url
|
|
51
51
|
* @param init
|
|
52
52
|
*/
|
|
53
53
|
declare function fetchT(url: string | URL, init: FetchInit & {
|
|
54
|
-
|
|
55
|
-
|
|
54
|
+
abortable: true;
|
|
55
|
+
responseType: 'arraybuffer';
|
|
56
|
+
}): FetchTask<ArrayBuffer>;
|
|
56
57
|
/**
|
|
57
|
-
* Return `FetchTask<
|
|
58
|
+
* Return `FetchTask<Blob>`.
|
|
58
59
|
* @param url
|
|
59
60
|
* @param init
|
|
60
61
|
*/
|
|
61
62
|
declare function fetchT(url: string | URL, init: FetchInit & {
|
|
62
63
|
abortable: true;
|
|
63
|
-
responseType: '
|
|
64
|
-
}): FetchTask<
|
|
64
|
+
responseType: 'blob';
|
|
65
|
+
}): FetchTask<Blob>;
|
|
65
66
|
/**
|
|
66
|
-
* Return `
|
|
67
|
+
* Return `FetchTask<T>`.
|
|
68
|
+
*/
|
|
69
|
+
declare function fetchT<T>(url: string | URL, init: FetchInit & {
|
|
70
|
+
abortable: true;
|
|
71
|
+
responseType: 'json';
|
|
72
|
+
}): FetchTask<T>;
|
|
73
|
+
/**
|
|
74
|
+
* Return `FetchResponse<string>`.
|
|
67
75
|
* @param url
|
|
68
76
|
* @param init
|
|
69
77
|
*/
|
|
70
78
|
declare function fetchT(url: string | URL, init: FetchInit & {
|
|
71
|
-
responseType: '
|
|
72
|
-
}): FetchResponse<
|
|
79
|
+
responseType: 'text';
|
|
80
|
+
}): FetchResponse<string>;
|
|
73
81
|
/**
|
|
74
|
-
* Return `
|
|
82
|
+
* Return `FetchResponse<ArrayBuffer>`.
|
|
75
83
|
* @param url
|
|
76
84
|
* @param init
|
|
77
85
|
*/
|
|
78
86
|
declare function fetchT(url: string | URL, init: FetchInit & {
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
}): FetchTask<Blob>;
|
|
87
|
+
responseType: 'arraybuffer';
|
|
88
|
+
}): FetchResponse<ArrayBuffer>;
|
|
82
89
|
/**
|
|
83
90
|
* Return `FetchResponse<Blob>`.
|
|
84
91
|
* @param url
|
|
@@ -87,33 +94,34 @@ declare function fetchT(url: string | URL, init: FetchInit & {
|
|
|
87
94
|
declare function fetchT(url: string | URL, init: FetchInit & {
|
|
88
95
|
responseType: 'blob';
|
|
89
96
|
}): FetchResponse<Blob>;
|
|
90
|
-
/**
|
|
91
|
-
* Return `FetchTask<T>`.
|
|
92
|
-
*/
|
|
93
|
-
declare function fetchT<T = any>(url: string | URL, init: FetchInit & {
|
|
94
|
-
abortable: true;
|
|
95
|
-
responseType: 'json';
|
|
96
|
-
}): FetchTask<T>;
|
|
97
97
|
/**
|
|
98
98
|
* Return `FetchResponse<T>`.
|
|
99
99
|
* @param url
|
|
100
100
|
* @param init
|
|
101
101
|
*/
|
|
102
|
-
declare function fetchT<T
|
|
102
|
+
declare function fetchT<T>(url: string | URL, init: FetchInit & {
|
|
103
103
|
responseType: 'json';
|
|
104
104
|
}): FetchResponse<T>;
|
|
105
105
|
/**
|
|
106
|
-
* Return `FetchTask<
|
|
106
|
+
* Return `FetchTask<Response>`.
|
|
107
107
|
* @param url
|
|
108
108
|
* @param init
|
|
109
109
|
*/
|
|
110
110
|
declare function fetchT(url: string | URL, init: FetchInit & {
|
|
111
111
|
abortable: true;
|
|
112
|
-
}): FetchTask<
|
|
112
|
+
}): FetchTask<Response>;
|
|
113
113
|
/**
|
|
114
|
-
* Return `FetchResponse<
|
|
114
|
+
* Return `FetchTask<T>` or `FetchResponse<T>`.
|
|
115
|
+
* @param url
|
|
116
|
+
* @param init
|
|
117
|
+
*/
|
|
118
|
+
declare function fetchT<T = any>(url: string | URL, init: FetchInit): FetchTask<T> | FetchResponse<T>;
|
|
119
|
+
/**
|
|
120
|
+
* Return `FetchResponse<Response>`.
|
|
121
|
+
* @param url
|
|
122
|
+
* @param init
|
|
115
123
|
*/
|
|
116
|
-
declare function fetchT(url: string | URL, init?: RequestInit): FetchResponse<
|
|
124
|
+
declare function fetchT(url: string | URL, init?: RequestInit): FetchResponse<Response>;
|
|
117
125
|
|
|
118
126
|
export { type FetchInit, type FetchResponse, type FetchTask, fetchT };
|
|
119
127
|
//# sourceMappingURL=types.d.ts.map
|
package/package.json
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"description": "Cancelable fetch wrapper with the ability to specify the return type.",
|
|
4
4
|
"author": "jiang115jie@gmail.com",
|
|
5
5
|
"license": "GPL-3.0",
|
|
6
|
-
"version": "1.0.
|
|
6
|
+
"version": "1.0.3",
|
|
7
7
|
"type": "module",
|
|
8
8
|
"source": "./src/mod.ts",
|
|
9
9
|
"main": "./dist/main.cjs",
|
package/src/fetch/fetch.ts
CHANGED
|
@@ -9,92 +9,99 @@ import type { FetchInit, FetchResponse, FetchTask } from './defines.ts';
|
|
|
9
9
|
* @param init
|
|
10
10
|
*/
|
|
11
11
|
export function fetchT(url: string | URL, init: FetchInit & {
|
|
12
|
-
abortable: true
|
|
13
|
-
responseType: 'text'
|
|
12
|
+
abortable: true;
|
|
13
|
+
responseType: 'text';
|
|
14
14
|
}): FetchTask<string>;
|
|
15
15
|
/**
|
|
16
|
-
* Return `
|
|
16
|
+
* Return `FetchTask<ArrayBuffer>`.
|
|
17
17
|
* @param url
|
|
18
18
|
* @param init
|
|
19
19
|
*/
|
|
20
20
|
export function fetchT(url: string | URL, init: FetchInit & {
|
|
21
|
-
|
|
22
|
-
|
|
21
|
+
abortable: true;
|
|
22
|
+
responseType: 'arraybuffer';
|
|
23
|
+
}): FetchTask<ArrayBuffer>;
|
|
23
24
|
/**
|
|
24
|
-
* Return `FetchTask<
|
|
25
|
+
* Return `FetchTask<Blob>`.
|
|
25
26
|
* @param url
|
|
26
27
|
* @param init
|
|
27
28
|
*/
|
|
28
29
|
export function fetchT(url: string | URL, init: FetchInit & {
|
|
29
|
-
abortable: true
|
|
30
|
-
responseType: '
|
|
31
|
-
}): FetchTask<
|
|
30
|
+
abortable: true;
|
|
31
|
+
responseType: 'blob';
|
|
32
|
+
}): FetchTask<Blob>;
|
|
32
33
|
/**
|
|
33
|
-
* Return `
|
|
34
|
+
* Return `FetchTask<T>`.
|
|
35
|
+
*/
|
|
36
|
+
export function fetchT<T>(url: string | URL, init: FetchInit & {
|
|
37
|
+
abortable: true;
|
|
38
|
+
responseType: 'json';
|
|
39
|
+
}): FetchTask<T>;
|
|
40
|
+
/**
|
|
41
|
+
* Return `FetchResponse<string>`.
|
|
34
42
|
* @param url
|
|
35
43
|
* @param init
|
|
36
44
|
*/
|
|
37
45
|
export function fetchT(url: string | URL, init: FetchInit & {
|
|
38
|
-
responseType: '
|
|
39
|
-
}): FetchResponse<
|
|
46
|
+
responseType: 'text';
|
|
47
|
+
}): FetchResponse<string>;
|
|
40
48
|
/**
|
|
41
|
-
* Return `
|
|
49
|
+
* Return `FetchResponse<ArrayBuffer>`.
|
|
42
50
|
* @param url
|
|
43
51
|
* @param init
|
|
44
52
|
*/
|
|
45
53
|
export function fetchT(url: string | URL, init: FetchInit & {
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
}): FetchTask<Blob>;
|
|
54
|
+
responseType: 'arraybuffer';
|
|
55
|
+
}): FetchResponse<ArrayBuffer>;
|
|
49
56
|
/**
|
|
50
57
|
* Return `FetchResponse<Blob>`.
|
|
51
58
|
* @param url
|
|
52
59
|
* @param init
|
|
53
60
|
*/
|
|
54
61
|
export function fetchT(url: string | URL, init: FetchInit & {
|
|
55
|
-
responseType: 'blob'
|
|
62
|
+
responseType: 'blob';
|
|
56
63
|
}): FetchResponse<Blob>;
|
|
57
|
-
/**
|
|
58
|
-
* Return `FetchTask<T>`.
|
|
59
|
-
*/
|
|
60
|
-
export function fetchT<T = any>(url: string | URL, init: FetchInit & {
|
|
61
|
-
abortable: true,
|
|
62
|
-
responseType: 'json',
|
|
63
|
-
}): FetchTask<T>;
|
|
64
64
|
/**
|
|
65
65
|
* Return `FetchResponse<T>`.
|
|
66
66
|
* @param url
|
|
67
67
|
* @param init
|
|
68
68
|
*/
|
|
69
|
-
export function fetchT<T
|
|
70
|
-
responseType: 'json'
|
|
69
|
+
export function fetchT<T>(url: string | URL, init: FetchInit & {
|
|
70
|
+
responseType: 'json';
|
|
71
71
|
}): FetchResponse<T>;
|
|
72
72
|
/**
|
|
73
|
-
* Return `FetchTask<
|
|
73
|
+
* Return `FetchTask<Response>`.
|
|
74
74
|
* @param url
|
|
75
75
|
* @param init
|
|
76
76
|
*/
|
|
77
77
|
export function fetchT(url: string | URL, init: FetchInit & {
|
|
78
|
-
abortable: true
|
|
79
|
-
}): FetchTask<
|
|
78
|
+
abortable: true;
|
|
79
|
+
}): FetchTask<Response>;
|
|
80
80
|
/**
|
|
81
|
-
* Return `FetchResponse<
|
|
81
|
+
* Return `FetchTask<T>` or `FetchResponse<T>`.
|
|
82
|
+
* @param url
|
|
83
|
+
* @param init
|
|
84
|
+
*/
|
|
85
|
+
export function fetchT<T = any>(url: string | URL, init: FetchInit): FetchTask<T> | FetchResponse<T>;
|
|
86
|
+
/**
|
|
87
|
+
* Return `FetchResponse<Response>`.
|
|
88
|
+
* @param url
|
|
89
|
+
* @param init
|
|
82
90
|
*/
|
|
83
|
-
export function fetchT(url: string | URL, init?: RequestInit): FetchResponse<
|
|
91
|
+
export function fetchT(url: string | URL, init?: RequestInit): FetchResponse<Response>;
|
|
84
92
|
/**
|
|
85
93
|
* Request the url and return the corresponding type based on the responseType.
|
|
86
94
|
* @param url url to fetch
|
|
87
95
|
* @param init fetch init
|
|
88
|
-
* @returns {FetchTask} an abort able fetch task
|
|
96
|
+
* @returns {FetchTask<T> | FetchResponse<T>} an abort able fetch task or just response
|
|
89
97
|
*/
|
|
90
|
-
export function fetchT<T>(url: string | URL, init?: FetchInit): FetchTask<T> | FetchResponse<T> {
|
|
98
|
+
export function fetchT<T = any>(url: string | URL, init?: FetchInit): FetchTask<T> | FetchResponse<T> {
|
|
91
99
|
if (typeof url === 'string') {
|
|
92
100
|
assertUrl(url);
|
|
93
101
|
}
|
|
94
102
|
|
|
95
103
|
// default not abort able
|
|
96
|
-
|
|
97
|
-
const { abortable = false, responseType = 'text', ...rest } = init ?? {};
|
|
104
|
+
const { abortable = false, responseType, ...rest } = init ?? {};
|
|
98
105
|
|
|
99
106
|
let controller: AbortController;
|
|
100
107
|
|
|
@@ -126,7 +133,8 @@ export function fetchT<T>(url: string | URL, init?: FetchInit): FetchTask<T> | F
|
|
|
126
133
|
return Ok(await res.text() as T);
|
|
127
134
|
}
|
|
128
135
|
default: {
|
|
129
|
-
|
|
136
|
+
// default return the Response object
|
|
137
|
+
return Ok(res as T);
|
|
130
138
|
}
|
|
131
139
|
}
|
|
132
140
|
}).catch((err) => {
|