@@ -27,6 +27,7 @@ const map = stew.map;
2727const Rollup = require ( 'broccoli-rollup' ) ;
2828const BroccoliDebug = require ( 'broccoli-debug' ) ;
2929const calculateCacheKeyForTree = require ( 'calculate-cache-key-for-tree' ) ;
30+ const VersionChecker = require ( 'ember-cli-version-checker' ) ;
3031
3132const debug = BroccoliDebug . buildDebugCallback ( 'ember-fetch' ) ;
3233
@@ -73,6 +74,9 @@ module.exports = {
7374 let hasEmberFetch = ! ! this . project . findAddonByName ( 'ember-fetch' ) ;
7475 let hasEmberCliFastboot = ! ! this . project . findAddonByName ( 'ember-cli-fastboot' ) ;
7576
77+ let emberSource = new VersionChecker ( this . project ) . for ( 'ember-source' ) ;
78+ let hasEmberSourceModules = emberSource . exists ( ) && emberSource . gte ( '3.27.0' ) ;
79+
7680 if ( isApp && hasEmberCliFastboot && ! hasEmberFetch ) {
7781 throw new Error ( `Ember fetch is not installed as top-level dependency of the application using fastboot. Add ember-fetch as dependecy in application's package.json.
7882 For details check here - https://github.com/ember-cli/ember-fetch#top-level-addon` ) ;
@@ -88,6 +92,7 @@ module.exports = {
8892 app . _fetchBuildConfig = Object . assign ( {
8993 preferNative : false ,
9094 alwaysIncludePolyfill : false ,
95+ hasEmberSourceModules,
9196 browsers : this . project . targets && this . project . targets . browsers
9297 } , app . options [ 'ember-fetch' ] ) ;
9398
@@ -216,8 +221,19 @@ module.exports = {
216221 sourceMapConfig : { enabled : false }
217222 } ) , 'after-concat' ) ;
218223
224+ const moduleHeader = options . hasEmberSourceModules ? `
225+ define('fetch', ['exports', 'ember', 'rsvp'], function(exports, Ember__module, RSVP__module) {
226+ 'use strict';
227+ var Ember = 'default' in Ember__module ? Ember__module['default'] : Ember__module;
228+ var RSVP = 'default' in RSVP__module ? RSVP__module['default'] : RSVP__module;` : `
229+ define('fetch', ['exports'], function(exports) {
230+ 'use strict';
231+ var Ember = originalGlobal.Ember;
232+ var RSVP = Ember.RSVP;`
233+
219234 return debug ( new Template ( polyfillNode , TEMPLATE_PATH , function ( content ) {
220235 return {
236+ moduleHeader,
221237 moduleBody : content
222238 } ;
223239 } ) , 'browser-fetch' ) ;
0 commit comments