No description, website, or topics provided.
Branch: master
Clone or download
dependabot-bot and dependabot Bump eslint from 5.13.0 to 5.14.0
Bumps [eslint](https://github.com/eslint/eslint) from 5.13.0 to 5.14.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/master/CHANGELOG.md)
- [Commits](eslint/eslint@v5.13.0...v5.14.0)

Signed-off-by: dependabot[bot] <support@dependabot.com>
Latest commit 54cfc25 Feb 18, 2019
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
addon More type changes Feb 7, 2019
assets Do not include fetch polyfill if target browsers don't need it Dec 17, 2018
config sync CI scripts with ember-cli output Dec 1, 2018
fastboot/instance-initializers Fix fetch module definition for Fastboot Dec 7, 2018
public Fix fetch module definition for Fastboot Dec 7, 2018
test Streamline fetch browser target checks & tests Dec 18, 2018
tests install ember-cli-typescript, convert files to .ts Jan 27, 2019
types More type changes Feb 7, 2019
.editorconfig bump ember-cli to 2.8 Oct 17, 2016
.ember-cli Initial Commit from Ember CLI v0.2.0 Mar 15, 2015
.eslintignore Setup addon tests Dec 3, 2018
.eslintrc.js Add types and tslint Jan 29, 2019
.gitignore ESLint: Use `--cache` by default Nov 16, 2018
.npmignore Update `.npmignore` file Nov 16, 2018
.travis.yml Setup addon tests Dec 3, 2018
.watchmanconfig Upgrade dependencies Jan 31, 2016
CHANGELOG.md v6.4.0 Dec 19, 2018
LICENSE.md Update ember-cli Apr 4, 2018
README.md More type changes Feb 7, 2019
appveyor.yml sync CI scripts with ember-cli output Dec 1, 2018
ember-cli-build.js read from build config Jul 14, 2018
index.d.ts install ember-cli-typescript, convert files to .ts Jan 27, 2019
index.js Streamline fetch browser target checks & tests Dec 18, 2018
package.json Bump eslint from 5.13.0 to 5.14.0 Feb 18, 2019
testem.js Update ember-cli Apr 4, 2018
tsconfig.json Add types and tslint Jan 29, 2019
yarn.lock Bump eslint from 5.13.0 to 5.14.0 Feb 18, 2019

README.md

ember-fetch

Build Status Build status Ember Observer Score npm version

HTML5 fetch polyfill from github wrapped and bundled for ember-cli users.

Installation

  • ember install ember-fetch

Usage

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';

Use with TypeScript

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"
      ]
    }
  }
}

Use with Ember Data

To have Ember Data utilize fetch instead of jQuery.ajax to make calls to your backend, extend your project's application adapter with the adapter-fetch mixin.

// app/adapters/application.js
import DS from 'ember-data';
import AdapterFetch from 'ember-fetch/mixins/adapter-fetch';

export default DS.RESTAdapter.extend(AdapterFetch, {
  ...
});

Use with Fastboot

ajax-service

Currently, Fastboot supplies its own server-side ajax functionality, and including ember-fetch and the adapter-fetch mixin in a Fastboot app will not work without some modifications. To allow the node-fetch polyfill that is included with this addon to make your API calls, you must add an initializer to the consuming app's fastboot directory that overrides the one Fastboot utilizes to inject its own ajax.

Example:

// fastboot/initializers/ajax.js

export default {
  name: 'ajax-service',
  initialize() {
    // noop
    // This is to override Fastboot's initializer which prevents ember-fetch from working
    // https://github.com/ember-fastboot/ember-cli-fastboot/blob/master/fastboot/initializers/ajax.js
  }
}

relative url

ember-fetch uses node-fetch in Fastboot, which doesn't allow relative URL.

url should be an absolute url, such as https://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.

top-level addon

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.

Allow native fetch

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.

Browser Support

Q & A

Does it work with pretender?

Does this replace ic-ajax?

  • ideally yes, but only if you cater to IE9+
  • for basic drop-in compat import ajax from 'ember-fetch/ajax'

What about all the run-loop and promise mixing details?

  • taken care of for you

Why is this wrapper needed?

  • original emits a global
  • original requires a Promise polyfill (ember users have RSVP)
  • original isn't Ember run-loop aware

Won't this wrapper get out-of-sync?

  • we actually don't bundle github/fetch rather we merely wrap/transform what comes from node_modules, so we should be resilient to changes assuming semver from the fetch module