@driveflux/fetch 6.2.2 → 6.2.3-next.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.
- package/package.json +8 -8
- package/dist/cjs/index.js.map +0 -7
- package/dist/cjs/package.json +0 -3
- package/dist/index.js.map +0 -7
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@driveflux/fetch",
|
|
3
|
-
"version": "6.2.
|
|
3
|
+
"version": "6.2.3-next.0",
|
|
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.2-next.0",
|
|
17
|
+
"@driveflux/result": "4.2.3-next.0"
|
|
18
18
|
},
|
|
19
19
|
"devDependencies": {
|
|
20
|
-
"@driveflux/fab": "2.2.
|
|
21
|
-
"@driveflux/tsconfig": "1.2.
|
|
22
|
-
"@types/node": "^22.
|
|
23
|
-
"del-cli": "^
|
|
24
|
-
"typescript": "^5.6.
|
|
20
|
+
"@driveflux/fab": "2.2.2-next.0",
|
|
21
|
+
"@driveflux/tsconfig": "1.2.2-next.0",
|
|
22
|
+
"@types/node": "^22.7.7",
|
|
23
|
+
"del-cli": "^6.0.0",
|
|
24
|
+
"typescript": "^5.6.3"
|
|
25
25
|
},
|
|
26
26
|
"scripts": {
|
|
27
27
|
"build": "fab",
|
package/dist/cjs/index.js.map
DELETED
|
@@ -1,7 +0,0 @@
|
|
|
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/cjs/package.json
DELETED
package/dist/index.js.map
DELETED
|
@@ -1,7 +0,0 @@
|
|
|
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
|
-
}
|