https://github.com/technion/fetch_with_checks
https://github.com/technion/fetch_with_checks
Last synced: over 1 year ago
JSON representation
- Host: GitHub
- URL: https://github.com/technion/fetch_with_checks
- Owner: technion
- Created: 2021-11-25T10:03:20.000Z (over 4 years ago)
- Default Branch: main
- Last Pushed: 2021-12-18T08:16:54.000Z (over 4 years ago)
- Last Synced: 2025-01-24T09:29:25.793Z (over 1 year ago)
- Language: TypeScript
- Size: 81.1 KB
- Stars: 1
- Watchers: 3
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# fetch_with_checks
Status: Works
The fetch spec: https://developer.mozilla.org/en-US/docs/Web/API/fetch describes ten different error modes that all throw "TypeError". Nine of these are coding errors and only one is "throws a network error". There is no defined way of telling the difference.
This function provides a wrapper to aim to detect known coding errors in advance.
# Example
An example can be found in [myfetch.tsx](myfetch.tsx). This is an example module containing a React element to implement a cat facts lookup. When supplying a valid URL, the expected result is given. When a URL is invalid, the output will clearly explain why.
# Error Types
## URLError
- URL Fails to parse as a `new URL()`, eg `fetch_with_checks("\x00")`
- URL Contains a credentials, eg `fetch_with_checks("https://user:password@example.com/")`
- URL Contains invalid scheme, eg `fetch_with_checks("hxxp://example.com")`
## HeaderError
All variations of invalid headers will throw this error, examples from the API guide:
```
// space in "C ontent-Type"
const headers = {
"C ontent-Type": "text/xml",
"Breaking-Bad": "<3"
};
const headers = [
["Content-Type", "text/html", "extra"],
["Accept"],
];
```
## ModeError
- Provided mode is not from a valid list, eg `fetch_with_checks("https://example.com/", { mode: "not a mode" })`
- Mode is no-cors but method is not a cors-safe method, eg `fetch_with_checks("https://example.com/", { mode: "no-cors", method: 'CONNECT' })`