diff --git a/addon/adapter.js b/addon/adapter.js new file mode 100644 index 00000000000..7eebb9ff9f7 --- /dev/null +++ b/addon/adapter.js @@ -0,0 +1 @@ +export { default } from "ember-data/-private/system/adapter"; diff --git a/addon/adapters/json-api.js b/addon/adapters/json-api.js new file mode 100644 index 00000000000..da06897728e --- /dev/null +++ b/addon/adapters/json-api.js @@ -0,0 +1 @@ +export { default } from "ember-data/-private/adapters/json-api-adapter"; diff --git a/addon/adapters/rest.js b/addon/adapters/rest.js new file mode 100644 index 00000000000..add0345f012 --- /dev/null +++ b/addon/adapters/rest.js @@ -0,0 +1 @@ +export { default } from "ember-data/-private/adapters/rest-adapter"; diff --git a/addon/attr.js b/addon/attr.js new file mode 100644 index 00000000000..803920b23cf --- /dev/null +++ b/addon/attr.js @@ -0,0 +1 @@ +export { default } from "ember-data/-private/system/model/attributes"; diff --git a/addon/model.js b/addon/model.js new file mode 100644 index 00000000000..837dc55c6a0 --- /dev/null +++ b/addon/model.js @@ -0,0 +1 @@ +export { default } from "ember-data/-private/system/model"; diff --git a/addon/relationships.js b/addon/relationships.js new file mode 100644 index 00000000000..2d67cbb92c9 --- /dev/null +++ b/addon/relationships.js @@ -0,0 +1 @@ +export * from 'ember-data/-private/system/relationships'; diff --git a/addon/serializers/json-api.js b/addon/serializers/json-api.js new file mode 100644 index 00000000000..8173a37dd53 --- /dev/null +++ b/addon/serializers/json-api.js @@ -0,0 +1 @@ +export { default } from "ember-data/-private/serializers/json-api-serializer"; diff --git a/addon/serializers/json.js b/addon/serializers/json.js new file mode 100644 index 00000000000..39a167ec9a2 --- /dev/null +++ b/addon/serializers/json.js @@ -0,0 +1 @@ +export { default } from "ember-data/-private/serializers/json-serializer"; diff --git a/addon/serializers/rest.js b/addon/serializers/rest.js new file mode 100644 index 00000000000..3815008bb4c --- /dev/null +++ b/addon/serializers/rest.js @@ -0,0 +1 @@ +export { default } from "ember-data/-private/serializers/rest-serializer"; diff --git a/addon/store.js b/addon/store.js new file mode 100644 index 00000000000..011380454f5 --- /dev/null +++ b/addon/store.js @@ -0,0 +1 @@ +export { default } from "ember-data/-private/system/store"; diff --git a/addon/transform.js b/addon/transform.js new file mode 100644 index 00000000000..ac58081c856 --- /dev/null +++ b/addon/transform.js @@ -0,0 +1 @@ +export { default } from "ember-data/-private/transforms/base"; diff --git a/config/environment.js b/config/environment.js deleted file mode 100644 index c7058a3411c..00000000000 --- a/config/environment.js +++ /dev/null @@ -1,24 +0,0 @@ -'use strict'; - -var fs = require('fs'); -var featuresJson = fs.readFileSync('config/features.json', { encoding: 'utf8' }); -var featureFlags = JSON.parse(featuresJson); - -module.exports = function(environment, appConfig) { - var ENV = { }; - - ENV.EmberENV = { - FEATURES: featureFlags, - ENABLE_DS_FILTER: true, - - // don't raise on deprecation yet, since there are too many thrown errors; - // this should be addressed in another PR - // RAISE_ON_DEPRECATION: true - }; - - if (environment === 'test-optional-features') { - ENV.EmberENV.ENABLE_OPTIONAL_FEATURES = true; - } - - return ENV; -}; diff --git a/index.js b/index.js index 38deac39edc..03ae7ec4ea8 100644 --- a/index.js +++ b/index.js @@ -4,10 +4,59 @@ module.exports = { name: 'ember-data', + _warn: function(message) { + var chalk = require('chalk'); + var warning = chalk.yellow('WARNING: ' + message); + + if (this.ui && this.ui.writeWarnLine) { + this.ui.writeWarnLine(message); + } else if (this.ui) { + this.ui.writeLine(warning); + } else { + console.log(warning); + } + }, + + init: function() { + var bowerDeps = this.project.bowerDependencies(); + + if (bowerDeps['ember-data']) { + this._warn('Please remove `ember-data` from `bower.json`. As of Ember Data 2.3.0, only the NPM package is needed.'); + this._forceBowerUsage = true; + } else { + this._forceBowerUsage = false; + } + + var VersionChecker = require('ember-cli-version-checker'); + + var checker = new VersionChecker(this); + var dep = checker.for('ember-cli-shims', 'bower'); + + if (!dep.satisfies('>= 0.1.0')) { + this._warn('Using a version of ember-cli-shims prior to 0.1.0 will cause errors while loading Ember Data 2.3+. Please update ember-cli-shims from ' + dep.version + ' to 0.1.0.'); + } + }, + treeForAddon: function(dir) { + if (this._forceBowerUsage) { + // Fakes an empty broccoli tree + return { inputTree: dir, rebuild: function() { return []; } }; + } + var version = require('./lib/version'); var merge = require('broccoli-merge-trees'); return this._super.treeForAddon.call(this, merge([version(), dir])); + }, + + included: function(app) { + this._super.included.apply(this, arguments); + + if (this._forceBowerUsage) { + this.app.import({ + development: app.bowerDirectory + '/ember-data/ember-data.js', + production: app.bowerDirectory + '/ember-data/ember-data.prod.js' + }); + } } }; diff --git a/lib/ember-addon/blueprints/ember-data/index.js b/lib/ember-addon/blueprints/ember-data/index.js deleted file mode 100644 index 0de95eb439c..00000000000 --- a/lib/ember-addon/blueprints/ember-data/index.js +++ /dev/null @@ -1,15 +0,0 @@ -/* jshint node: true */ -'use strict'; - -module.exports = { - normalizeEntityName: function() { - // this prevents an error when the entityName is - // not specified (since that doesn't actually matter - // to us - }, - - afterInstall: function() { - var json = require('../../../../package.json'); - return this.addBowerPackageToProject('ember-data', json.version); - } -}; diff --git a/lib/ember-addon/index.js b/lib/ember-addon/index.js deleted file mode 100644 index 8aa40289352..00000000000 --- a/lib/ember-addon/index.js +++ /dev/null @@ -1,31 +0,0 @@ -/* jshint node: true */ -'use strict'; - -var path = require('path'); - -module.exports = { - name: 'ember-data', - blueprintsPath: function() { - return path.join(__dirname, 'blueprints'); - }, - included: function(app) { - this._super.included(app); - - var options = { - exports: { - 'ember-data': [ - 'default' - ] - } - }; - - this.app.import({ - development: app.bowerDirectory + '/ember-data/ember-data.js', - production: app.bowerDirectory + '/ember-data/ember-data.prod.js' - }, options); - // Source maps - this.app.import({ - development: app.bowerDirectory + '/ember-data/ember-data.js.map' - }, {destDir: 'assets'}); - } -}; diff --git a/lib/ember-data-shims.js b/lib/ember-data-shims.js new file mode 100644 index 00000000000..50ddf3e47ac --- /dev/null +++ b/lib/ember-data-shims.js @@ -0,0 +1,36 @@ +;(function() { + function processEmberDataShims() { + var shims = { + 'ember-data': { default: DS }, + 'ember-data/model': { default: DS.Model }, + 'ember-data/serializers/rest': { default: DS.RESTSerializer }, + 'ember-data/serializers/active-model': { default: DS.ActiveModelSerializer }, + 'ember-data/serializers/json': { default: DS.JSONSerializer }, + 'ember-data/serializers/json-api': { default: DS.JSONAPISerializer }, + 'ember-data/adapters/json-api': { default: DS.JSONAPIAdapter }, + 'ember-data/adapters/rest': { default: DS.RESTAdapter }, + 'ember-data/adapter': { default: DS.Adapter }, + 'ember-data/adapters/active-model': { default: DS.ActiveModelAdapter }, + 'ember-data/store': { default: DS.Store }, + 'ember-data/transform': { default: DS.Transform }, + 'ember-data/attr': { default: DS.attr }, + 'ember-data/relationships': { hasMany: DS.hasMany, belongsTo: DS.belongsTo } + }; + + for (var moduleName in shims) { + generateModule(moduleName, shims[moduleName]); + } + } + + function generateModule(name, values) { + define(name, [], function() { + 'use strict'; + + return values; + }); + } + + if (typeof define !== 'undefined' && define && define.petal) { + processEmberDataShims(); + } +})(); diff --git a/lib/javascripts.js b/lib/javascripts.js index 60eddc17dcb..5ea125386f0 100644 --- a/lib/javascripts.js +++ b/lib/javascripts.js @@ -105,12 +105,15 @@ function collapse(tree, outputFileName) { var license = new Funnel(generatorDir, {include: ['license.js']}); license = versionReplace(license); + var emberDataShimsPath = path.join(__dirname, 'ember-data-shims.js'); + var emberDataShims = fs.readFileSync(emberDataShimsPath, { encoding: 'utf8' }); + var withLoader = merge([tree, loader, license, emberShim]); return concat(withLoader, { inputFiles: ['license.js', 'loader.js', '**/*.js'], outputFile: '/' + outputFileName, header: '(function(){ \n"use strict";\n', - footer: '\nrequire("ember-data");\n})();\n' + footer: '\nrequire("ember-data");\n})();\n' + emberDataShims }); } diff --git a/package.json b/package.json index f41d413d282..935d77278d7 100644 --- a/package.json +++ b/package.json @@ -15,7 +15,6 @@ "bower": "bower install", "production": "ember build --environment=production" }, - "repository": "", "engines": { "node": ">= 0.10.0" }, @@ -24,7 +23,9 @@ "dependencies": { "broccoli-file-creator": "^1.0.0", "broccoli-merge-trees": "^1.0.0", - "ember-cli-babel": "^5.1.3" + "chalk": "^1.1.1", + "ember-cli-babel": "^5.1.3", + "ember-cli-version-checker": "^1.1.4" }, "devDependencies": { "babel-plugin-feature-flags": "^0.2.0", diff --git a/tests/dummy/config/environment.js b/tests/dummy/config/environment.js index c59bcd538ea..f367c52449c 100644 --- a/tests/dummy/config/environment.js +++ b/tests/dummy/config/environment.js @@ -1,5 +1,9 @@ /* jshint node: true */ +var fs = require('fs'); +var featuresJson = fs.readFileSync('config/features.json', { encoding: 'utf8' }); +var featureFlags = JSON.parse(featuresJson); + module.exports = function(environment) { var ENV = { modulePrefix: 'dummy', @@ -7,10 +11,12 @@ module.exports = function(environment) { baseURL: '/', locationType: 'auto', EmberENV: { - FEATURES: { - // Here you can enable experimental features on an ember canary build - // e.g. 'with-controller': true - } + FEATURES: featureFlags, + ENABLE_DS_FILTER: true, + + // don't raise on deprecation yet, since there are too many thrown errors; + // this should be addressed in another PR + // RAISE_ON_DEPRECATION: true }, APP: { @@ -19,6 +25,10 @@ module.exports = function(environment) { } }; + if (environment === 'test-optional-features') { + ENV.EmberENV.ENABLE_OPTIONAL_FEATURES = true; + } + if (environment === 'development') { // ENV.APP.LOG_RESOLVER = true; // ENV.APP.LOG_ACTIVE_GENERATION = true;