Performs the conversion of the JSON
the conversion function
the converted JSON as the correct JavaScript/TypeScript object, number or string
Performs the verification of the JSON
the verifed JSON casted to the correct TypeScript interface
Retrieves the JSON from the response, just as the native Response.json
does
the response as JSON
Extends the native body interface to have a
json
method that accepts verification and conversion functionsimport { Json, isIJsonObject } from '@ef-carbon/fetch'; import { fetcher, Verify } from '@ef-carbon/fetcher'; interface IData { name: string; } function isIData(json: Json): json is IData { return isIJsonObject(json) && typeof json.name === 'string'; } const verify: Verify<IData> = isIData; // expected payload `{ "name": "Rick Sanchez" }` const response = await fetcher('http://endpoint.com/data.json'); const data = response.json(verify); // verification console.log(data.name);
import { Json, isIJsonObject } from '@ef-carbon/fetch'; import { fetcher, Convert } from '@ef-carbon/fetcher'; interface IData { name: string; } function isIData(json: Json): json is IData { return isIJsonObject(json) && typeof json.name === 'string'; } function getName(json: Json): string { if (!isIData(json)) { throw TypeError(`Invalid JSON payload: ${JSON.stringify(json)}`); } return json.name; } const convert: Convert<string> = getName; // expected payload `{ "name": "Rick Sanchez" }` const response = await fetcher('http://endpoint.com/data.json'); const name = response.json(convert); // conversion console.log(name);
Verify
Convert