@driveflux/fetch 6.2.1 → 6.2.2
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/cjs/index.js.map +7 -0
- package/dist/cjs/package.json +3 -0
- package/dist/index.js +1 -1
- package/dist/index.js.map +7 -0
- package/package.json +7 -7
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/index.ts"],
|
|
4
|
+
"sourcesContent": ["import { makeProblem, Problem, PROBLEM_INVALID_DATA, PROBLEM_NETWORK_ERROR } from '@driveflux/problem'\nimport { Err, Ok, Result } from '@driveflux/result'\n\ntype EnhancedRequestInit = Omit<RequestInit, 'body'> & {\n body?: RequestInit['body'] | object\n}\n\ntype FetchMetadata = {\n headers: Response['headers']\n status: Response['status']\n}\n\nexport type EnhandedFetchResult<S, E = Problem> = Result<S, E | Problem, FetchMetadata>\n\n/**\n * Checks if a network request came back fine, and throws an error if not\n *\n * @param response A response from a network request\n *\n * @return Returns either the response, or throws an error\n */\nconst isSuccessful = (response: Response) => {\n return response.status >= 200 && response.status < 300\n}\n\n/**\n * Requests a URL, returning a promise\n *\n * @param url The URL we want to request\n * @param [options] The options we want to pass to \"fetch\"\n *\n * @return The response data\n */\nexport const enhancedFetch = async <S = object, E = Problem>(\n url: string,\n providedOptions?: EnhancedRequestInit\n): Promise<EnhandedFetchResult<S, E | Problem>> => {\n const { body, ...rest } = providedOptions || {}\n const options: RequestInit = {\n credentials: 'include',\n ...rest,\n headers: {\n 'Content-Type': 'application/json; charset=utf-8',\n Accept: 'application/json',\n ...rest?.headers\n }\n }\n let finalBody = body\n if (finalBody && typeof finalBody !== 'string') {\n if (finalBody instanceof FormData) {\n options.headers = {\n ...options.headers,\n 'Content-Type': 'application/x-www-form-urlencoded'\n }\n } else {\n finalBody = JSON.stringify(finalBody)\n }\n }\n options.body = finalBody\n\n let response: Response\n try {\n response = await fetch(url, options as any)\n } catch (e: any) {\n return new Err(\n makeProblem({\n code: PROBLEM_NETWORK_ERROR,\n message: e.message,\n privateMetadata: {\n error: e\n }\n })\n )\n }\n\n const metadata: FetchMetadata = {\n headers: response.headers,\n status: response.status\n }\n\n let responseBody: S | E | null\n\n // Will parse JSON body regardless of the response status\n const textBody = await response.text()\n\n try {\n responseBody = await JSON.parse(textBody)\n } catch (e: any) {\n if (response.status > 200 && response.status < 206) {\n responseBody = null\n } else {\n return new Err(\n makeProblem({\n code: PROBLEM_INVALID_DATA,\n message: `Unable to parse json`,\n statusCode: response.status,\n metadata: {\n response: {\n status: response.status,\n statusTest: response.statusText,\n body: textBody\n }\n }\n }),\n metadata\n )\n }\n }\n\n // We return the body as E if the fetch is not successful\n if (!isSuccessful(response)) {\n return new Err(responseBody as E, metadata)\n }\n\n // We return the body as S if the fetch is successful\n return new Ok(responseBody as S, metadata)\n}\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,qBAAkF;AAClF,oBAAgC;AAoBhC,IAAM,eAAe,CAAC,aAAuB;AAC3C,SAAO,SAAS,UAAU,OAAO,SAAS,SAAS;AACrD;AAUO,IAAM,gBAAgB,OAC3B,KACA,oBACiD;AACjD,QAAM,EAAE,MAAM,GAAG,KAAK,IAAI,mBAAmB,CAAC;AAC9C,QAAM,UAAuB;AAAA,IAC3B,aAAa;AAAA,IACb,GAAG;AAAA,IACH,SAAS;AAAA,MACP,gBAAgB;AAAA,MAChB,QAAQ;AAAA,MACR,GAAG,MAAM;AAAA,IACX;AAAA,EACF;AACA,MAAI,YAAY;AAChB,MAAI,aAAa,OAAO,cAAc,UAAU;AAC9C,QAAI,qBAAqB,UAAU;AACjC,cAAQ,UAAU;AAAA,QAChB,GAAG,QAAQ;AAAA,QACX,gBAAgB;AAAA,MAClB;AAAA,IACF,OAAO;AACL,kBAAY,KAAK,UAAU,SAAS;AAAA,IACtC;AAAA,EACF;AACA,UAAQ,OAAO;AAEf,MAAI;AACJ,MAAI;AACF,eAAW,MAAM,MAAM,KAAK,OAAc;AAAA,EAC5C,SAAS,GAAQ;AACf,WAAO,IAAI;AAAA,UACT,4BAAY;AAAA,QACV,MAAM;AAAA,QACN,SAAS,EAAE;AAAA,QACX,iBAAiB;AAAA,UACf,OAAO;AAAA,QACT;AAAA,MACF,CAAC;AAAA,IACH;AAAA,EACF;AAEA,QAAM,WAA0B;AAAA,IAC9B,SAAS,SAAS;AAAA,IAClB,QAAQ,SAAS;AAAA,EACnB;AAEA,MAAI;AAGJ,QAAM,WAAW,MAAM,SAAS,KAAK;AAErC,MAAI;AACF,mBAAe,MAAM,KAAK,MAAM,QAAQ;AAAA,EAC1C,SAAS,GAAQ;AACf,QAAI,SAAS,SAAS,OAAO,SAAS,SAAS,KAAK;AAClD,qBAAe;AAAA,IACjB,OAAO;AACL,aAAO,IAAI;AAAA,YACT,4BAAY;AAAA,UACV,MAAM;AAAA,UACN,SAAS;AAAA,UACT,YAAY,SAAS;AAAA,UACrB,UAAU;AAAA,YACR,UAAU;AAAA,cACR,QAAQ,SAAS;AAAA,cACjB,YAAY,SAAS;AAAA,cACrB,MAAM;AAAA,YACR;AAAA,UACF;AAAA,QACF,CAAC;AAAA,QACD;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAGA,MAAI,CAAC,aAAa,QAAQ,GAAG;AAC3B,WAAO,IAAI,kBAAI,cAAmB,QAAQ;AAAA,EAC5C;AAGA,SAAO,IAAI,iBAAG,cAAmB,QAAQ;AAC3C;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
package/dist/index.js
CHANGED
|
@@ -226,7 +226,7 @@ import { Err, Ok } from '@driveflux/result';
|
|
|
226
226
|
* @param [options] The options we want to pass to "fetch"
|
|
227
227
|
*
|
|
228
228
|
* @return The response data
|
|
229
|
-
*/ export var enhancedFetch = function() {
|
|
229
|
+
*/ export var enhancedFetch = /*#__PURE__*/ function() {
|
|
230
230
|
var _ref = _async_to_generator(function(url, providedOptions) {
|
|
231
231
|
var _ref, body, rest, options, finalBody, response, e, metadata, responseBody, textBody, e1;
|
|
232
232
|
return _ts_generator(this, function(_state) {
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/index.ts"],
|
|
4
|
+
"sourcesContent": ["import { makeProblem, Problem, PROBLEM_INVALID_DATA, PROBLEM_NETWORK_ERROR } from '@driveflux/problem'\nimport { Err, Ok, Result } from '@driveflux/result'\n\ntype EnhancedRequestInit = Omit<RequestInit, 'body'> & {\n body?: RequestInit['body'] | object\n}\n\ntype FetchMetadata = {\n headers: Response['headers']\n status: Response['status']\n}\n\nexport type EnhandedFetchResult<S, E = Problem> = Result<S, E | Problem, FetchMetadata>\n\n/**\n * Checks if a network request came back fine, and throws an error if not\n *\n * @param response A response from a network request\n *\n * @return Returns either the response, or throws an error\n */\nconst isSuccessful = (response: Response) => {\n return response.status >= 200 && response.status < 300\n}\n\n/**\n * Requests a URL, returning a promise\n *\n * @param url The URL we want to request\n * @param [options] The options we want to pass to \"fetch\"\n *\n * @return The response data\n */\nexport const enhancedFetch = async <S = object, E = Problem>(\n url: string,\n providedOptions?: EnhancedRequestInit\n): Promise<EnhandedFetchResult<S, E | Problem>> => {\n const { body, ...rest } = providedOptions || {}\n const options: RequestInit = {\n credentials: 'include',\n ...rest,\n headers: {\n 'Content-Type': 'application/json; charset=utf-8',\n Accept: 'application/json',\n ...rest?.headers\n }\n }\n let finalBody = body\n if (finalBody && typeof finalBody !== 'string') {\n if (finalBody instanceof FormData) {\n options.headers = {\n ...options.headers,\n 'Content-Type': 'application/x-www-form-urlencoded'\n }\n } else {\n finalBody = JSON.stringify(finalBody)\n }\n }\n options.body = finalBody\n\n let response: Response\n try {\n response = await fetch(url, options as any)\n } catch (e: any) {\n return new Err(\n makeProblem({\n code: PROBLEM_NETWORK_ERROR,\n message: e.message,\n privateMetadata: {\n error: e\n }\n })\n )\n }\n\n const metadata: FetchMetadata = {\n headers: response.headers,\n status: response.status\n }\n\n let responseBody: S | E | null\n\n // Will parse JSON body regardless of the response status\n const textBody = await response.text()\n\n try {\n responseBody = await JSON.parse(textBody)\n } catch (e: any) {\n if (response.status > 200 && response.status < 206) {\n responseBody = null\n } else {\n return new Err(\n makeProblem({\n code: PROBLEM_INVALID_DATA,\n message: `Unable to parse json`,\n statusCode: response.status,\n metadata: {\n response: {\n status: response.status,\n statusTest: response.statusText,\n body: textBody\n }\n }\n }),\n metadata\n )\n }\n }\n\n // We return the body as E if the fetch is not successful\n if (!isSuccessful(response)) {\n return new Err(responseBody as E, metadata)\n }\n\n // We return the body as S if the fetch is successful\n return new Ok(responseBody as S, metadata)\n}\n"],
|
|
5
|
+
"mappings": ";AAAA,SAAS,aAAsB,sBAAsB,6BAA6B;AAClF,SAAS,KAAK,UAAkB;AAoBhC,IAAM,eAAe,CAAC,aAAuB;AAC3C,SAAO,SAAS,UAAU,OAAO,SAAS,SAAS;AACrD;AAUO,IAAM,gBAAgB,OAC3B,KACA,oBACiD;AACjD,QAAM,EAAE,MAAM,GAAG,KAAK,IAAI,mBAAmB,CAAC;AAC9C,QAAM,UAAuB;AAAA,IAC3B,aAAa;AAAA,IACb,GAAG;AAAA,IACH,SAAS;AAAA,MACP,gBAAgB;AAAA,MAChB,QAAQ;AAAA,MACR,GAAG,MAAM;AAAA,IACX;AAAA,EACF;AACA,MAAI,YAAY;AAChB,MAAI,aAAa,OAAO,cAAc,UAAU;AAC9C,QAAI,qBAAqB,UAAU;AACjC,cAAQ,UAAU;AAAA,QAChB,GAAG,QAAQ;AAAA,QACX,gBAAgB;AAAA,MAClB;AAAA,IACF,OAAO;AACL,kBAAY,KAAK,UAAU,SAAS;AAAA,IACtC;AAAA,EACF;AACA,UAAQ,OAAO;AAEf,MAAI;AACJ,MAAI;AACF,eAAW,MAAM,MAAM,KAAK,OAAc;AAAA,EAC5C,SAAS,GAAQ;AACf,WAAO,IAAI;AAAA,MACT,YAAY;AAAA,QACV,MAAM;AAAA,QACN,SAAS,EAAE;AAAA,QACX,iBAAiB;AAAA,UACf,OAAO;AAAA,QACT;AAAA,MACF,CAAC;AAAA,IACH;AAAA,EACF;AAEA,QAAM,WAA0B;AAAA,IAC9B,SAAS,SAAS;AAAA,IAClB,QAAQ,SAAS;AAAA,EACnB;AAEA,MAAI;AAGJ,QAAM,WAAW,MAAM,SAAS,KAAK;AAErC,MAAI;AACF,mBAAe,MAAM,KAAK,MAAM,QAAQ;AAAA,EAC1C,SAAS,GAAQ;AACf,QAAI,SAAS,SAAS,OAAO,SAAS,SAAS,KAAK;AAClD,qBAAe;AAAA,IACjB,OAAO;AACL,aAAO,IAAI;AAAA,QACT,YAAY;AAAA,UACV,MAAM;AAAA,UACN,SAAS;AAAA,UACT,YAAY,SAAS;AAAA,UACrB,UAAU;AAAA,YACR,UAAU;AAAA,cACR,QAAQ,SAAS;AAAA,cACjB,YAAY,SAAS;AAAA,cACrB,MAAM;AAAA,YACR;AAAA,UACF;AAAA,QACF,CAAC;AAAA,QACD;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAGA,MAAI,CAAC,aAAa,QAAQ,GAAG;AAC3B,WAAO,IAAI,IAAI,cAAmB,QAAQ;AAAA,EAC5C;AAGA,SAAO,IAAI,GAAG,cAAmB,QAAQ;AAC3C;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@driveflux/fetch",
|
|
3
|
-
"version": "6.2.
|
|
3
|
+
"version": "6.2.2",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"exports": {
|
|
6
6
|
"./package.json": "./package.json",
|
|
@@ -13,15 +13,15 @@
|
|
|
13
13
|
"dist"
|
|
14
14
|
],
|
|
15
15
|
"dependencies": {
|
|
16
|
-
"@driveflux/problem": "4.2.
|
|
17
|
-
"@driveflux/result": "4.2.
|
|
16
|
+
"@driveflux/problem": "4.2.1",
|
|
17
|
+
"@driveflux/result": "4.2.2"
|
|
18
18
|
},
|
|
19
19
|
"devDependencies": {
|
|
20
|
-
"@driveflux/fab": "2.2.
|
|
21
|
-
"@driveflux/tsconfig": "1.2.
|
|
22
|
-
"@types/node": "^
|
|
20
|
+
"@driveflux/fab": "2.2.1",
|
|
21
|
+
"@driveflux/tsconfig": "1.2.1",
|
|
22
|
+
"@types/node": "^22.5.5",
|
|
23
23
|
"del-cli": "^5.1.0",
|
|
24
|
-
"typescript": "^5.
|
|
24
|
+
"typescript": "^5.6.2"
|
|
25
25
|
},
|
|
26
26
|
"scripts": {
|
|
27
27
|
"build": "fab",
|