
Security News
NVD Quietly Sweeps 100K+ CVEs Into a “Deferred” Black Hole
NVD now marks all pre-2018 CVEs as "Deferred," signaling it will no longer enrich older vulnerabilities, further eroding trust in its data.
ember-fetch
Advanced tools
HTML5 fetch polyfill from github wrapped and bundled for ember-cli users.
ember install ember-fetch
ember-fetch requries ember-cli 2.13 or above.
import Route from '@ember/routing/route';
import fetch from 'fetch';
export default Route.extend({
model() {
return fetch('/my-cool-end-point.json').then(function(response) {
return response.json();
});
}
});
Available imports:
import fetch, { Headers, Request, Response, AbortController } from 'fetch';
To use ember-fetch
with TypeScript or enable editor's type support, You can add "fetch": ["node_modules/ember-fetch"]
to your tsconfig.json
.
{
"compilerOptions": {
"paths": {
"fetch": [
"node_modules/ember-fetch"
]
}
}
}
ember-data@3.9.2 was released with built-in fetch support, if your ember-data is below 3.9.2, please checkout ember-fetch v7.x.
ember-fetch
uses node-fetch
in Fastboot, which doesn't allow relative URL.
url
should be an absolute url, such ashttps://example.com/
. A path-relative URL (/file/under/root
) or protocol-relative URL (//can-be-http-or-https.com/
) will result in a rejected promise.
However, ember-fetch
grabs the protocol
and host
info from fastboot request after the instance-initializes
.
This allows you to make a relative URL request unless the app is not initialized, e.g. initializers
and app.js
.
For addon authors, if the addon supports Fastboot mode, ember-fetch
should also be listed as a peer dependency.
This is because Fastboot only invokes top-level addon's updateFastBootManifest
(detail), thus ember-fetch
has to be a top-level addon installed by the host app.
ember-fetch
allows access to native fetch in browser through a build config flag:
// ember-cli-build.js
let app = new EmberAddon(defaults, {
// Add options here
'ember-fetch': {
preferNative: true
}
});
If set to true
, the fetch polyfill will be skipped if native fetch
is available,
otherwise the polyfilled fetch
will be installed during the first pass of the vendor js file.
If set to false
, the polyfilled fetch
will replace native fetch
be there or not.
If all your browser targets support native fetch
, and preferNative: true
, the polyfill will not be included in the output build. If, for some reason, you still need the polyfill to be included in the bundle, you can set alwaysIncludePolyfill: true
.
The way you do import remains same.
If you do not want to use RSVP, but native Promises, you can specify this build config flag:
// ember-cli-build.js
let app = new EmberAddon(defaults, {
// Add options here
'ember-fetch': {
nativePromise: true
}
});
A fetch
response is successful if response.ok
is true,
otherwise you can read the status code to determine the bad response type.
fetch
will only reject with network errors.
ember-fetch
provides some utility functions:
isBadRequestResponse
(400)isUnauthorizedResponse
(401)isForbiddenResponse
(403)isNotFoundResponse
(404)isConflictResponse
(409)isGoneResponse
(410)isInvalidResponse
(422)isServerErrorResponse
(5XX)isAbortError
Aborted network errorimport Route from '@ember/routing/route';
import fetch from 'fetch';
import {
isAbortError,
isServerErrorResponse,
isUnauthorizedResponse
} from 'ember-fetch/errors';
export default Route.extend({
model() {
return fetch('/omg.json')
.then(function(response) {
if (response.ok) {
return response.json();
} else if (isUnauthorizedResponse(response)) {
// handle 401 response
} else if (isServerErrorResponse(response)) {
// handle 5xx respones
}
})
.catch(function(error) {
if (isAbortError(error)) {
// handle aborted network error
}
// handle network error
});
}
});
fetch
support.node_modules
, so we should be resilient to changes assuming
semver from the fetch moduleFAQs
HTML5 Fetch polyfill (as an ember-addon)
We found that ember-fetch demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 8 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
NVD now marks all pre-2018 CVEs as "Deferred," signaling it will no longer enrich older vulnerabilities, further eroding trust in its data.
Research
Security News
Lazarus-linked threat actors expand their npm malware campaign with new RAT loaders, hex obfuscation, and over 5,600 downloads across 11 packages.
Security News
Safari 18.4 adds support for Iterator Helpers and two other TC39 JavaScript features, bringing full cross-browser coverage to key parts of the ECMAScript spec.