@happy-ts/fetch-t 1.0.2 → 1.0.4
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 +41 -25
- package/package.json +1 -1
- package/src/fetch/fetch.ts +52 -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 `FetchResponse<Response>`.\n * @param url\n * @param init\n */\nexport function fetchT(url: string | URL, init: FetchInit & {\n abortable: false;\n}): FetchResponse<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;;ACuFgB,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 `FetchResponse<Response>`.\n * @param url\n * @param init\n */\nexport function fetchT(url: string | URL, init: FetchInit & {\n abortable: false;\n}): FetchResponse<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;;ACuFgB,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,42 @@ 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 `FetchResponse<Response>`.
|
|
115
|
+
* @param url
|
|
116
|
+
* @param init
|
|
117
|
+
*/
|
|
118
|
+
declare function fetchT(url: string | URL, init: FetchInit & {
|
|
119
|
+
abortable: false;
|
|
120
|
+
}): FetchResponse<Response>;
|
|
121
|
+
/**
|
|
122
|
+
* Return `FetchTask<T>` or `FetchResponse<T>`.
|
|
123
|
+
* @param url
|
|
124
|
+
* @param init
|
|
125
|
+
*/
|
|
126
|
+
declare function fetchT<T = any>(url: string | URL, init: FetchInit): FetchTask<T> | FetchResponse<T>;
|
|
127
|
+
/**
|
|
128
|
+
* Return `FetchResponse<Response>`.
|
|
129
|
+
* @param url
|
|
130
|
+
* @param init
|
|
115
131
|
*/
|
|
116
|
-
declare function fetchT(url: string | URL, init?: RequestInit): FetchResponse<
|
|
132
|
+
declare function fetchT(url: string | URL, init?: RequestInit): FetchResponse<Response>;
|
|
117
133
|
|
|
118
134
|
export { type FetchInit, type FetchResponse, type FetchTask, fetchT };
|
|
119
135
|
//# 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.4",
|
|
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,107 @@ 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 `FetchResponse<Response>`.
|
|
82
|
+
* @param url
|
|
83
|
+
* @param init
|
|
84
|
+
*/
|
|
85
|
+
export function fetchT(url: string | URL, init: FetchInit & {
|
|
86
|
+
abortable: false;
|
|
87
|
+
}): FetchResponse<Response>;
|
|
88
|
+
/**
|
|
89
|
+
* Return `FetchTask<T>` or `FetchResponse<T>`.
|
|
90
|
+
* @param url
|
|
91
|
+
* @param init
|
|
92
|
+
*/
|
|
93
|
+
export function fetchT<T = any>(url: string | URL, init: FetchInit): FetchTask<T> | FetchResponse<T>;
|
|
94
|
+
/**
|
|
95
|
+
* Return `FetchResponse<Response>`.
|
|
96
|
+
* @param url
|
|
97
|
+
* @param init
|
|
82
98
|
*/
|
|
83
|
-
export function fetchT(url: string | URL, init?: RequestInit): FetchResponse<
|
|
99
|
+
export function fetchT(url: string | URL, init?: RequestInit): FetchResponse<Response>;
|
|
84
100
|
/**
|
|
85
101
|
* Request the url and return the corresponding type based on the responseType.
|
|
86
102
|
* @param url url to fetch
|
|
87
103
|
* @param init fetch init
|
|
88
|
-
* @returns {FetchTask} an abort able fetch task
|
|
104
|
+
* @returns {FetchTask<T> | FetchResponse<T>} an abort able fetch task or just response
|
|
89
105
|
*/
|
|
90
|
-
export function fetchT<T>(url: string | URL, init?: FetchInit): FetchTask<T> | FetchResponse<T> {
|
|
106
|
+
export function fetchT<T = any>(url: string | URL, init?: FetchInit): FetchTask<T> | FetchResponse<T> {
|
|
91
107
|
if (typeof url === 'string') {
|
|
92
108
|
assertUrl(url);
|
|
93
109
|
}
|
|
94
110
|
|
|
95
111
|
// default not abort able
|
|
96
|
-
|
|
97
|
-
const { abortable = false, responseType = 'text', ...rest } = init ?? {};
|
|
112
|
+
const { abortable = false, responseType, ...rest } = init ?? {};
|
|
98
113
|
|
|
99
114
|
let controller: AbortController;
|
|
100
115
|
|
|
@@ -126,7 +141,8 @@ export function fetchT<T>(url: string | URL, init?: FetchInit): FetchTask<T> | F
|
|
|
126
141
|
return Ok(await res.text() as T);
|
|
127
142
|
}
|
|
128
143
|
default: {
|
|
129
|
-
|
|
144
|
+
// default return the Response object
|
|
145
|
+
return Ok(res as T);
|
|
130
146
|
}
|
|
131
147
|
}
|
|
132
148
|
}).catch((err) => {
|