ember-data-source 2.6.2 → 2.7.0.beta.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 92671b3bbf93ce84d6b8409e788245acbe091bdf
4
- data.tar.gz: 3208122930354fa44ae3fb9c91b55fdc9b366213
3
+ metadata.gz: 33dec8fb2ecc2b2dca716443d07526b12b9b3cdf
4
+ data.tar.gz: 71f8117dc0fc6993d1ee95c4c6875743b0bec930
5
5
  SHA512:
6
- metadata.gz: 5884af6051156b1a1f2141e07392a6a85262481d2f3edb61bfe15702bcc0dea3ce1a812977a863c0634a0b6acb3a26813279df9bba7ff6af0573808df40e55a3
7
- data.tar.gz: f0045b59412e756a1f5f416a84996d1d51fe28ed6abdf866dd737b812980839032ccf84c7c1635c97f11e4e96f754484b53bdf716fae938025c1bbafb2eaf22b
6
+ metadata.gz: d6fb1b062982315f424e3a3edb20d9bd41621e22eaf547c9f618d8a274af60caf224cd8e37bc38e2d25f4205975271f913ebb33b415c8b43925fecba48fea33a
7
+ data.tar.gz: 161aa97282f1e6ca50c67a03caa04684d2943a477cecce815520beb5724fee64509f231e9eff2eb532ec07ed59f19a0cc7282f6120882e1ac8bda5c26f6ea5c6
@@ -6,7 +6,7 @@
6
6
  * @copyright Copyright 2011-2016 Tilde Inc. and contributors.
7
7
  * Portions Copyright 2011 LivingSocial Inc.
8
8
  * @license Licensed under MIT license (see license.js)
9
- * @version 2.6.2
9
+ * @version 2.7.0-beta.1
10
10
  */
11
11
 
12
12
  var loader, define, requireModule, require, requirejs;
@@ -25,14 +25,7 @@ var loader, define, requireModule, require, requirejs;
25
25
 
26
26
  requirejs = require = requireModule = function(name) {
27
27
  stats.require++;
28
- var pending = [];
29
- var mod = findModule(name, '(require)', pending);
30
-
31
- for (var i = pending.length - 1; i >= 0; i--) {
32
- pending[i].exports();
33
- }
34
-
35
- return mod.module.exports;
28
+ return findModule(name, '(require)').module.exports;
36
29
  };
37
30
 
38
31
  function resetStats() {
@@ -40,19 +33,18 @@ var loader, define, requireModule, require, requirejs;
40
33
  define: 0,
41
34
  require: 0,
42
35
  reify: 0,
43
- findDeps: 0,
36
+ build: 0,
44
37
  modules: 0,
45
38
  exports: 0,
39
+ ensureBuild: 0,
46
40
  resolve: 0,
47
41
  resolveRelative: 0,
48
42
  findModule: 0,
49
- pendingQueueLength: 0
50
43
  };
51
44
  requirejs._stats = stats;
52
45
  }
53
46
 
54
47
  var stats;
55
-
56
48
  resetStats();
57
49
 
58
50
  loader = {
@@ -83,6 +75,8 @@ var loader, define, requireModule, require, requirejs;
83
75
 
84
76
  var registry = {};
85
77
  var seen = {};
78
+ var FAILED = false;
79
+ var LOADED = true;
86
80
 
87
81
  var uuid = 0;
88
82
 
@@ -94,18 +88,17 @@ var loader, define, requireModule, require, requirejs;
94
88
  var defaultDeps = ['require', 'exports', 'module'];
95
89
 
96
90
  function Module(name, deps, callback, alias) {
97
- stats.modules++;
91
+ stats.modules ++;
98
92
  this.id = uuid++;
99
93
  this.name = name;
100
94
  this.deps = !deps.length && callback.length ? defaultDeps : deps;
101
95
  this.module = { exports: {} };
102
96
  this.callback = callback;
97
+ this.state = undefined;
103
98
  this.finalized = false;
104
99
  this.hasExportsAsDep = false;
105
100
  this.isAlias = alias;
106
101
  this.reified = new Array(deps.length);
107
- this._foundDeps = false;
108
- this.isPending = false;
109
102
  }
110
103
 
111
104
  Module.prototype.makeDefaultExport = function() {
@@ -118,66 +111,46 @@ var loader, define, requireModule, require, requirejs;
118
111
  };
119
112
 
120
113
  Module.prototype.exports = function() {
121
- if (this.finalized) { return this.module.exports; }
122
- stats.exports++;
123
-
124
- this.finalized = true;
125
- this.isPending = false;
126
-
127
- if (loader.wrapModules) {
128
- this.callback = loader.wrapModules(this.name, this.callback);
129
- }
130
-
131
- this.reify();
132
-
133
- var result = this.callback.apply(this, this.reified);
134
-
135
- if (!(this.hasExportsAsDep && result === undefined)) {
136
- this.module.exports = result;
114
+ stats.exports ++;
115
+ if (this.finalized) {
116
+ return this.module.exports;
117
+ } else {
118
+ if (loader.wrapModules) {
119
+ this.callback = loader.wrapModules(this.name, this.callback);
120
+ }
121
+ var result = this.callback.apply(this, this.reified);
122
+ if (!(this.hasExportsAsDep && result === undefined)) {
123
+ this.module.exports = result;
124
+ }
125
+ this.makeDefaultExport();
126
+ this.finalized = true;
127
+ return this.module.exports;
137
128
  }
138
- this.makeDefaultExport();
139
- return this.module.exports;
140
129
  };
141
130
 
142
131
  Module.prototype.unsee = function() {
143
132
  this.finalized = false;
144
- this._foundDeps = false;
145
- this.isPending = false;
133
+ this.state = undefined;
146
134
  this.module = { exports: {}};
147
135
  };
148
136
 
149
137
  Module.prototype.reify = function() {
150
138
  stats.reify++;
151
- var reified = this.reified;
152
- for (var i = 0; i < reified.length; i++) {
153
- var mod = reified[i];
154
- reified[i] = mod.exports ? mod.exports : mod.module.exports();
155
- }
156
- };
157
-
158
- Module.prototype.findDeps = function(pending) {
159
- if (this._foundDeps) {
160
- return;
161
- }
162
-
163
- stats.findDeps++;
164
- this._foundDeps = true;
165
- this.isPending = true;
166
-
167
139
  var deps = this.deps;
140
+ var dep;
141
+ var reified = this.reified;
168
142
 
169
143
  for (var i = 0; i < deps.length; i++) {
170
- var dep = deps[i];
171
- var entry = this.reified[i] = { exports: undefined, module: undefined };
144
+ dep = deps[i];
172
145
  if (dep === 'exports') {
173
146
  this.hasExportsAsDep = true;
174
- entry.exports = this.module.exports;
147
+ reified[i] = this.module.exports;
175
148
  } else if (dep === 'require') {
176
- entry.exports = this.makeRequire();
149
+ reified[i] = this.makeRequire();
177
150
  } else if (dep === 'module') {
178
- entry.exports = this.module;
151
+ reified[i] = this.module;
179
152
  } else {
180
- entry.module = findModule(resolve(dep, this.name), this.name, pending);
153
+ reified[i] = findModule(resolve(dep, this.name), this.name).module.exports;
181
154
  }
182
155
  }
183
156
  };
@@ -194,6 +167,16 @@ var loader, define, requireModule, require, requirejs;
194
167
  return r;
195
168
  };
196
169
 
170
+ Module.prototype.build = function() {
171
+ stats.ensureBuild++;
172
+ if (this.state === FAILED || this.state === LOADED) { return; }
173
+ stats.build++;
174
+ this.state = FAILED;
175
+ this.reify()
176
+ this.exports();
177
+ this.state = LOADED;
178
+ };
179
+
197
180
  define = function(name, deps, callback) {
198
181
  stats.define++;
199
182
  if (arguments.length < 2) {
@@ -229,7 +212,7 @@ var loader, define, requireModule, require, requirejs;
229
212
  throw new Error('Could not find module `' + name + '` imported from `' + referrer + '`');
230
213
  }
231
214
 
232
- function findModule(name, referrer, pending) {
215
+ function findModule(name, referrer) {
233
216
  stats.findModule++;
234
217
  var mod = registry[name] || registry[name + '/index'];
235
218
 
@@ -239,11 +222,7 @@ var loader, define, requireModule, require, requirejs;
239
222
 
240
223
  if (!mod) { missingModule(name, referrer); }
241
224
 
242
- if (pending && !mod.finalized && !mod.isPending) {
243
- mod.findDeps(pending);
244
- pending.push(mod);
245
- stats.pendingQueueLength++;
246
- }
225
+ mod.build();
247
226
  return mod;
248
227
  }
249
228
 
@@ -279,7 +258,7 @@ var loader, define, requireModule, require, requirejs;
279
258
  requirejs.entries = requirejs._eak_seen = registry;
280
259
  requirejs.has = has;
281
260
  requirejs.unsee = function(moduleName) {
282
- findModule(moduleName, '(unsee)', false).unsee();
261
+ findModule(moduleName, '(unsee)').unsee();
283
262
  };
284
263
 
285
264
  requirejs.clear = function() {
@@ -621,7 +600,8 @@ define('ember-data/-private/core', ['exports', 'ember', 'ember-data/version'], f
621
600
  @static
622
601
  */
623
602
  var DS = _ember.default.Namespace.create({
624
- VERSION: _emberDataVersion.default
603
+ VERSION: _emberDataVersion.default,
604
+ name: "DS"
625
605
  });
626
606
 
627
607
  if (_ember.default.libraries) {
@@ -711,30 +691,14 @@ define('ember-data/-private/debug', ['exports', 'ember'], function (exports, _em
711
691
  assert(assertionMessage, checkPolymorphic(typeClass, addedRecord));
712
692
  }
713
693
  });
714
- define('ember-data/-private/ext/date', ['exports', 'ember'], function (exports, _ember) {
694
+ define('ember-data/-private/ext/date', ['exports', 'ember', 'ember-data/-private/debug'], function (exports, _ember, _emberDataPrivateDebug) {
715
695
 
716
- /**
717
- Date.parse with progressive enhancement for ISO 8601 <https://github.com/csnover/js-iso8601>
718
-
719
- © 2011 Colin Snover <http://zetafleet.com>
720
-
721
- Released under MIT license.
722
-
723
- @class Date
724
- @namespace Ember
725
- @static
726
- */
727
696
  _ember.default.Date = _ember.default.Date || {};
728
697
 
729
698
  var origParse = Date.parse;
730
699
  var numericKeys = [1, 4, 5, 6, 7, 10, 11];
731
700
 
732
- /**
733
- @method parse
734
- @param {Date} date
735
- @return {Number} timestamp
736
- */
737
- _ember.default.Date.parse = function (date) {
701
+ var parseDate = function (date) {
738
702
  var timestamp, struct;
739
703
  var minutesOffset = 0;
740
704
 
@@ -742,7 +706,7 @@ define('ember-data/-private/ext/date', ['exports', 'ember'], function (exports,
742
706
  // before falling back to any implementation-specific date parsing, so that’s what we do, even if native
743
707
  // implementations could be faster
744
708
  // 1 YYYY 2 MM 3 DD 4 HH 5 mm 6 ss 7 msec 8 Z 9 ± 10 tzHH 11 tzmm
745
- if (struct = /^(\d{4}|[+\-]\d{6})(?:-(\d{2})(?:-(\d{2}))?)?(?:T(\d{2}):(\d{2})(?::(\d{2})(?:\.(\d{3}))?)?(?:(Z)|([+\-])(\d{2})(?::(\d{2}))?)?)?$/.exec(date)) {
709
+ if (struct = /^(\d{4}|[+\-]\d{6})(?:-(\d{2})(?:-(\d{2}))?)?(?:T(\d{2}):(\d{2})(?::(\d{2})(?:\.(\d{3}))?)?(?:(Z)|([+\-])(\d{2})(?:(\d{2}))?)?)?$/.exec(date)) {
746
710
  // avoid NaN timestamps caused by “undefined” values being passed to Date.UTC
747
711
  for (var i = 0, k; k = numericKeys[i]; ++i) {
748
712
  struct[k] = +struct[k] || 0;
@@ -768,8 +732,23 @@ define('ember-data/-private/ext/date', ['exports', 'ember'], function (exports,
768
732
  return timestamp;
769
733
  };
770
734
 
735
+ exports.parseDate = parseDate;
736
+ _ember.default.Date.parse = function (date) {
737
+ // throw deprecation
738
+ (0, _emberDataPrivateDebug.deprecate)('Ember.Date.parse is deprecated because Safari 5-, IE8-, and\n Firefox 3.6- are no longer supported (see\n https://github.com/csnover/js-iso8601 for the history of this issue).\n Please use Date.parse instead', false, {
739
+ id: 'ds.ember.date.parse-deprecate',
740
+ until: '3.0.0'
741
+ });
742
+
743
+ return parseDate(date);
744
+ };
745
+
771
746
  if (_ember.default.EXTEND_PROTOTYPES === true || _ember.default.EXTEND_PROTOTYPES.Date) {
772
- Date.parse = _ember.default.Date.parse;
747
+ (0, _emberDataPrivateDebug.deprecate)('Overriding Date.parse with Ember.Date.parse is deprecated. Please set ENV.EmberENV.EXTEND_PROTOTYPES.Date to false in config/environment.js\n\n\n// config/environment.js\nENV = {\n EmberENV: {\n EXTEND_PROTOTYPES: {\n Date: false,\n }\n }\n}\n', false, {
748
+ id: 'ds.date.parse-deprecate',
749
+ until: '3.0.0'
750
+ });
751
+ Date.parse = parseDate;
773
752
  }
774
753
  });
775
754
  /**
@@ -784,6 +763,25 @@ define('ember-data/-private/features', ['exports', 'ember'], function (exports,
784
763
  return (_Ember$FEATURES = _ember.default.FEATURES).isEnabled.apply(_Ember$FEATURES, arguments);
785
764
  }
786
765
  });
766
+ define('ember-data/-private/global', ['exports'], function (exports) {
767
+ /* globals global, window, self */
768
+
769
+ // originally from https://github.com/emberjs/ember.js/blob/c0bd26639f50efd6a03ee5b87035fd200e313b8e/packages/ember-environment/lib/global.js
770
+
771
+ // from lodash to catch fake globals
772
+ function checkGlobal(value) {
773
+ return value && value.Object === Object ? value : undefined;
774
+ }
775
+
776
+ // element ids can ruin global miss checks
777
+ function checkElementIdShadowing(value) {
778
+ return value && value.nodeType === undefined ? value : undefined;
779
+ }
780
+
781
+ // export real global
782
+ exports.default = checkGlobal(checkElementIdShadowing(typeof global === 'object' && global)) || checkGlobal(typeof self === 'object' && self) || checkGlobal(typeof window === 'object' && window) || new Function('return this')();
783
+ // eval outside of strict mode
784
+ });
787
785
  define("ember-data/-private/initializers/data-adapter", ["exports", "ember-data/-private/system/debug/debug-adapter"], function (exports, _emberDataPrivateSystemDebugDebugAdapter) {
788
786
  exports.default = initializeDebugAdapter;
789
787
 
@@ -921,7 +919,7 @@ define('ember-data/-private/system/coerce-id', ['exports'], function (exports) {
921
919
  // corresponding record, we will not know if it is a string or a number.
922
920
 
923
921
  function coerceId(id) {
924
- return id == null || id === '' ? null : id + '';
922
+ return id === null || id === undefined || id === '' ? null : id + '';
925
923
  }
926
924
  });
927
925
  define('ember-data/-private/system/container-proxy', ['exports', 'ember-data/-private/debug'], function (exports, _emberDataPrivateDebug) {
@@ -2125,7 +2123,7 @@ define('ember-data/-private/system/model/errors', ['exports', 'ember', 'ember-da
2125
2123
  }
2126
2124
  });
2127
2125
  });
2128
- define("ember-data/-private/system/model/internal-model", ["exports", "ember", "ember-data/-private/debug", "ember-data/-private/system/model/states", "ember-data/-private/system/relationships/state/create", "ember-data/-private/system/snapshot", "ember-data/-private/system/empty-object", "ember-data/-private/features", "ember-data/-private/utils", "ember-data/-private/system/references"], function (exports, _ember, _emberDataPrivateDebug, _emberDataPrivateSystemModelStates, _emberDataPrivateSystemRelationshipsStateCreate, _emberDataPrivateSystemSnapshot, _emberDataPrivateSystemEmptyObject, _emberDataPrivateFeatures, _emberDataPrivateUtils, _emberDataPrivateSystemReferences) {
2126
+ define("ember-data/-private/system/model/internal-model", ["exports", "ember", "ember-data/-private/debug", "ember-data/-private/system/model/states", "ember-data/-private/system/relationships/state/create", "ember-data/-private/system/snapshot", "ember-data/-private/system/empty-object", "ember-data/-private/utils", "ember-data/-private/system/references"], function (exports, _ember, _emberDataPrivateDebug, _emberDataPrivateSystemModelStates, _emberDataPrivateSystemRelationshipsStateCreate, _emberDataPrivateSystemSnapshot, _emberDataPrivateSystemEmptyObject, _emberDataPrivateUtils, _emberDataPrivateSystemReferences) {
2129
2127
  var _slicedToArray = (function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; })();
2130
2128
 
2131
2129
  exports.default = InternalModel;
@@ -2937,12 +2935,9 @@ define("ember-data/-private/system/model/internal-model", ["exports", "ember", "
2937
2935
  } else {
2938
2936
  return "<" + this.modelName + ":" + this.id + ">";
2939
2937
  }
2940
- }
2941
- };
2942
-
2943
- if (true) {
2938
+ },
2944
2939
 
2945
- InternalModel.prototype.referenceFor = function (type, name) {
2940
+ referenceFor: function (type, name) {
2946
2941
  var reference = this.references[name];
2947
2942
 
2948
2943
  if (!reference) {
@@ -2958,10 +2953,10 @@ define("ember-data/-private/system/model/internal-model", ["exports", "ember", "
2958
2953
  }
2959
2954
 
2960
2955
  return reference;
2961
- };
2962
- }
2956
+ }
2957
+ };
2963
2958
  });
2964
- define("ember-data/-private/system/model/model", ["exports", "ember", "ember-data/-private/debug", "ember-data/-private/system/promise-proxies", "ember-data/-private/system/model/errors", "ember-data/-private/features", "ember-data/-private/system/debug/debug-info", "ember-data/-private/system/relationships/belongs-to", "ember-data/-private/system/relationships/has-many", "ember-data/-private/system/relationships/ext", "ember-data/-private/system/model/attr"], function (exports, _ember, _emberDataPrivateDebug, _emberDataPrivateSystemPromiseProxies, _emberDataPrivateSystemModelErrors, _emberDataPrivateFeatures, _emberDataPrivateSystemDebugDebugInfo, _emberDataPrivateSystemRelationshipsBelongsTo, _emberDataPrivateSystemRelationshipsHasMany, _emberDataPrivateSystemRelationshipsExt, _emberDataPrivateSystemModelAttr) {
2959
+ define("ember-data/-private/system/model/model", ["exports", "ember", "ember-data/-private/debug", "ember-data/-private/system/promise-proxies", "ember-data/-private/system/model/errors", "ember-data/-private/system/debug/debug-info", "ember-data/-private/system/relationships/belongs-to", "ember-data/-private/system/relationships/has-many", "ember-data/-private/system/relationships/ext", "ember-data/-private/system/model/attr"], function (exports, _ember, _emberDataPrivateDebug, _emberDataPrivateSystemPromiseProxies, _emberDataPrivateSystemModelErrors, _emberDataPrivateSystemDebugDebugInfo, _emberDataPrivateSystemRelationshipsBelongsTo, _emberDataPrivateSystemRelationshipsHasMany, _emberDataPrivateSystemRelationshipsExt, _emberDataPrivateSystemModelAttr) {
2965
2960
 
2966
2961
  /**
2967
2962
  @module ember-data
@@ -3434,6 +3429,22 @@ define("ember-data/-private/system/model/model", ["exports", "ember", "ember-dat
3434
3429
  }
3435
3430
  }
3436
3431
  });
3432
+ ```
3433
+ If you pass an object on the `adapterOptions` property of the options
3434
+ argument it will be passed to you adapter via the snapshot
3435
+ ```js
3436
+ record.destroyRecord({ adapterOptions: { subscribe: false } });
3437
+ ```
3438
+ ```app/adapters/post.js
3439
+ import MyCustomAdapter from './custom-adapter';
3440
+ export default MyCustomAdapter.extend({
3441
+ deleteRecord: function(store, type, snapshot) {
3442
+ if (snapshot.adapterOptions.subscribe) {
3443
+ // ...
3444
+ }
3445
+ // ...
3446
+ }
3447
+ });
3437
3448
  ```
3438
3449
  @method destroyRecord
3439
3450
  @param {Object} options
@@ -3565,7 +3576,23 @@ define("ember-data/-private/system/model/model", ["exports", "ember", "ember-dat
3565
3576
  // Error callback
3566
3577
  });
3567
3578
  ```
3568
- @method save
3579
+ If you pass an object on the `adapterOptions` property of the options
3580
+ argument it will be passed to you adapter via the snapshot
3581
+ ```js
3582
+ record.save({ adapterOptions: { subscribe: false } });
3583
+ ```
3584
+ ```app/adapters/post.js
3585
+ import MyCustomAdapter from './custom-adapter';
3586
+ export default MyCustomAdapter.extend({
3587
+ updateRecord: function(store, type, snapshot) {
3588
+ if (snapshot.adapterOptions.subscribe) {
3589
+ // ...
3590
+ }
3591
+ // ...
3592
+ }
3593
+ });
3594
+ ```
3595
+ @method save
3569
3596
  @param {Object} options
3570
3597
  @return {Promise} a promise that will be resolved when the adapter returns
3571
3598
  successfully or rejected if the adapter returns with an error.
@@ -3650,12 +3677,103 @@ define("ember-data/-private/system/model/model", ["exports", "ember", "ember-dat
3650
3677
  (0, _emberDataPrivateDebug.assert)("The `attr` method is not available on DS.Model, a DS.Snapshot was probably expected. Are you passing a DS.Model instead of a DS.Snapshot to your serializer?", false);
3651
3678
  },
3652
3679
 
3653
- belongsTo: function () {
3654
- (0, _emberDataPrivateDebug.assert)("The `belongsTo` method is not available on DS.Model, a DS.Snapshot was probably expected. Are you passing a DS.Model instead of a DS.Snapshot to your serializer?", false);
3680
+ /**
3681
+ Get the reference for the specified belongsTo relationship.
3682
+ Example
3683
+ ```javascript
3684
+ // models/blog.js
3685
+ export default DS.Model.extend({
3686
+ user: DS.belongsTo({ async: true })
3687
+ });
3688
+ var blog = store.push({
3689
+ type: 'blog',
3690
+ id: 1,
3691
+ relationships: {
3692
+ user: { type: 'user', id: 1 }
3693
+ }
3694
+ });
3695
+ var userRef = blog.belongsTo('user');
3696
+ // check if the user relationship is loaded
3697
+ var isLoaded = userRef.value() !== null;
3698
+ // get the record of the reference (null if not yet available)
3699
+ var user = userRef.value();
3700
+ // get the identifier of the reference
3701
+ if (userRef.remoteType() === "id") {
3702
+ var id = userRef.id();
3703
+ } else if (userRef.remoteType() === "link") {
3704
+ var link = userRef.link();
3705
+ }
3706
+ // load user (via store.findRecord or store.findBelongsTo)
3707
+ userRef.load().then(...)
3708
+ // or trigger a reload
3709
+ userRef.reload().then(...)
3710
+ // provide data for reference
3711
+ userRef.push({
3712
+ type: 'user',
3713
+ id: 1,
3714
+ attributes: {
3715
+ username: "@user"
3716
+ }
3717
+ }).then(function(user) {
3718
+ userRef.value() === user;
3719
+ });
3720
+ ```
3721
+ @method belongsTo
3722
+ @param {String} name of the relationship
3723
+ @since 2.5.0
3724
+ @return {BelongsToReference} reference for this relationship
3725
+ */
3726
+ belongsTo: function (name) {
3727
+ return this._internalModel.referenceFor('belongsTo', name);
3655
3728
  },
3656
3729
 
3657
- hasMany: function () {
3658
- (0, _emberDataPrivateDebug.assert)("The `hasMany` method is not available on DS.Model, a DS.Snapshot was probably expected. Are you passing a DS.Model instead of a DS.Snapshot to your serializer?", false);
3730
+ /**
3731
+ Get the reference for the specified hasMany relationship.
3732
+ Example
3733
+ ```javascript
3734
+ // models/blog.js
3735
+ export default DS.Model.extend({
3736
+ comments: DS.hasMany({ async: true })
3737
+ });
3738
+ var blog = store.push({
3739
+ type: 'blog',
3740
+ id: 1,
3741
+ relationships: {
3742
+ comments: {
3743
+ data: [
3744
+ { type: 'comment', id: 1 },
3745
+ { type: 'comment', id: 2 }
3746
+ ]
3747
+ }
3748
+ }
3749
+ });
3750
+ var commentsRef = blog.hasMany('comments');
3751
+ // check if the comments are loaded already
3752
+ var isLoaded = commentsRef.value() !== null;
3753
+ // get the records of the reference (null if not yet available)
3754
+ var comments = commentsRef.value();
3755
+ // get the identifier of the reference
3756
+ if (commentsRef.remoteType() === "ids") {
3757
+ var ids = commentsRef.ids();
3758
+ } else if (commentsRef.remoteType() === "link") {
3759
+ var link = commentsRef.link();
3760
+ }
3761
+ // load comments (via store.findMany or store.findHasMany)
3762
+ commentsRef.load().then(...)
3763
+ // or trigger a reload
3764
+ commentsRef.reload().then(...)
3765
+ // provide data for reference
3766
+ commentsRef.push([{ type: 'comment', id: 1 }, { type: 'comment', id: 2 }]).then(function(comments) {
3767
+ commentsRef.value() === comments;
3768
+ });
3769
+ ```
3770
+ @method hasMany
3771
+ @param {String} name of the relationship
3772
+ @since 2.5.0
3773
+ @return {HasManyReference} reference for this relationship
3774
+ */
3775
+ hasMany: function (name) {
3776
+ return this._internalModel.referenceFor('hasMany', name);
3659
3777
  },
3660
3778
 
3661
3779
  setId: _ember.default.observer('id', function () {
@@ -3730,109 +3848,6 @@ define("ember-data/-private/system/model/model", ["exports", "ember", "ember-dat
3730
3848
  });
3731
3849
  }
3732
3850
 
3733
- if (true) {
3734
-
3735
- Model.reopen({
3736
-
3737
- /**
3738
- Get the reference for the specified belongsTo relationship.
3739
- Example
3740
- ```javascript
3741
- // models/blog.js
3742
- export default DS.Model.extend({
3743
- user: DS.belongsTo({ async: true })
3744
- });
3745
- var blog = store.push({
3746
- type: 'blog',
3747
- id: 1,
3748
- relationships: {
3749
- user: { type: 'user', id: 1 }
3750
- }
3751
- });
3752
- var userRef = blog.belongsTo('user');
3753
- // check if the user relationship is loaded
3754
- var isLoaded = userRef.value() !== null;
3755
- // get the record of the reference (null if not yet available)
3756
- var user = userRef.value();
3757
- // get the identifier of the reference
3758
- if (userRef.remoteType() === "id") {
3759
- var id = userRef.id();
3760
- } else if (userRef.remoteType() === "link") {
3761
- var link = userRef.link();
3762
- }
3763
- // load user (via store.findRecord or store.findBelongsTo)
3764
- userRef.load().then(...)
3765
- // or trigger a reload
3766
- userRef.reload().then(...)
3767
- // provide data for reference
3768
- userRef.push({
3769
- type: 'user',
3770
- id: 1,
3771
- attributes: {
3772
- username: "@user"
3773
- }
3774
- }).then(function(user) {
3775
- userRef.value() === user;
3776
- });
3777
- ```
3778
- @method belongsTo
3779
- @param {String} name of the relationship
3780
- @return {BelongsToReference} reference for this relationship
3781
- */
3782
- belongsTo: function (name) {
3783
- return this._internalModel.referenceFor('belongsTo', name);
3784
- },
3785
-
3786
- /**
3787
- Get the reference for the specified hasMany relationship.
3788
- Example
3789
- ```javascript
3790
- // models/blog.js
3791
- export default DS.Model.extend({
3792
- comments: DS.hasMany({ async: true })
3793
- });
3794
- var blog = store.push({
3795
- type: 'blog',
3796
- id: 1,
3797
- relationships: {
3798
- comments: {
3799
- data: [
3800
- { type: 'comment', id: 1 },
3801
- { type: 'comment', id: 2 }
3802
- ]
3803
- }
3804
- }
3805
- });
3806
- var commentsRef = blog.hasMany('comments');
3807
- // check if the comments are loaded already
3808
- var isLoaded = commentsRef.value() !== null;
3809
- // get the records of the reference (null if not yet available)
3810
- var comments = commentsRef.value();
3811
- // get the identifier of the reference
3812
- if (commentsRef.remoteType() === "ids") {
3813
- var ids = commentsRef.ids();
3814
- } else if (commentsRef.remoteType() === "link") {
3815
- var link = commentsRef.link();
3816
- }
3817
- // load comments (via store.findMany or store.findHasMany)
3818
- commentsRef.load().then(...)
3819
- // or trigger a reload
3820
- commentsRef.reload().then(...)
3821
- // provide data for reference
3822
- commentsRef.push([{ type: 'comment', id: 1 }, { type: 'comment', id: 2 }]).then(function(comments) {
3823
- commentsRef.value() === comments;
3824
- });
3825
- ```
3826
- @method hasMany
3827
- @param {String} name of the relationship
3828
- @return {HasManyReference} reference for this relationship
3829
- */
3830
- hasMany: function (name) {
3831
- return this._internalModel.referenceFor('hasMany', name);
3832
- }
3833
- });
3834
- }
3835
-
3836
3851
  Model.reopenClass(_emberDataPrivateSystemRelationshipsExt.RelationshipsClassMethodsMixin);
3837
3852
  Model.reopenClass(_emberDataPrivateSystemModelAttr.AttrClassMethodsMixin);
3838
3853
 
@@ -4579,7 +4594,6 @@ define('ember-data/-private/system/model/states', ['exports', 'ember', 'ember-da
4579
4594
  };
4580
4595
 
4581
4596
  function wireState(object, parent, name) {
4582
- /*jshint proto:true*/
4583
4597
  // TODO: Use Object.create and copy instead
4584
4598
  object = mixin(parent ? Object.create(parent) : {}, object);
4585
4599
  object.parentState = parent;
@@ -4676,7 +4690,7 @@ define('ember-data/-private/system/ordered-set', ['exports', 'ember'], function
4676
4690
 
4677
4691
  presenceSet[guid] = true;
4678
4692
 
4679
- if (idx === undefined || idx == null) {
4693
+ if (idx === undefined || idx === null) {
4680
4694
  list.push(obj);
4681
4695
  } else {
4682
4696
  list.splice(idx, 0, obj);
@@ -5218,9 +5232,7 @@ define("ember-data/-private/system/record-arrays/adapter-populated-record-array"
5218
5232
  meta: (0, _emberDataPrivateSystemCloneNull.default)(payload.meta)
5219
5233
  });
5220
5234
 
5221
- if (false) {
5222
- this.set('links', (0, _emberDataPrivateSystemCloneNull.default)(payload.links));
5223
- }
5235
+ this.set('links', (0, _emberDataPrivateSystemCloneNull.default)(payload.links));
5224
5236
 
5225
5237
  internalModels.forEach(function (record) {
5226
5238
  _this.manager.recordArraysForRecord(record).add(_this);
@@ -5501,7 +5513,7 @@ define('ember-data/-private/system/references', ['exports', 'ember-data/-private
5501
5513
  exports.BelongsToReference = _emberDataPrivateSystemReferencesBelongsTo.default;
5502
5514
  exports.HasManyReference = _emberDataPrivateSystemReferencesHasMany.default;
5503
5515
  });
5504
- define('ember-data/-private/system/references/belongs-to', ['exports', 'ember-data/model', 'ember', 'ember-data/-private/system/references/reference', 'ember-data/-private/debug'], function (exports, _emberDataModel, _ember, _emberDataPrivateSystemReferencesReference, _emberDataPrivateDebug) {
5516
+ define('ember-data/-private/system/references/belongs-to', ['exports', 'ember-data/model', 'ember', 'ember-data/-private/system/references/reference', 'ember-data/-private/features', 'ember-data/-private/debug'], function (exports, _emberDataModel, _ember, _emberDataPrivateSystemReferencesReference, _emberDataPrivateFeatures, _emberDataPrivateDebug) {
5505
5517
 
5506
5518
  var BelongsToReference = function (store, parentInternalModel, belongsToRelationship) {
5507
5519
  this._super$constructor(store, parentInternalModel);
@@ -5591,7 +5603,7 @@ define('ember-data/-private/system/references/belongs-to', ['exports', 'ember-da
5591
5603
 
5592
5604
  exports.default = BelongsToReference;
5593
5605
  });
5594
- define('ember-data/-private/system/references/has-many', ['exports', 'ember', 'ember-data/-private/system/references/reference', 'ember-data/-private/debug'], function (exports, _ember, _emberDataPrivateSystemReferencesReference, _emberDataPrivateDebug) {
5606
+ define('ember-data/-private/system/references/has-many', ['exports', 'ember', 'ember-data/-private/system/references/reference', 'ember-data/-private/debug', 'ember-data/-private/features'], function (exports, _ember, _emberDataPrivateSystemReferencesReference, _emberDataPrivateDebug, _emberDataPrivateFeatures) {
5595
5607
 
5596
5608
  var get = _ember.default.get;
5597
5609
 
@@ -5638,20 +5650,38 @@ define('ember-data/-private/system/references/has-many', ['exports', 'ember', 'e
5638
5650
 
5639
5651
  return _ember.default.RSVP.resolve(objectOrPromise).then(function (payload) {
5640
5652
  var array = payload;
5653
+
5654
+ var useLegacyArrayPush = true;
5641
5655
  if (typeof payload === "object" && payload.data) {
5642
5656
  array = payload.data;
5657
+ useLegacyArrayPush = array.length && array[0].data;
5643
5658
  }
5644
5659
 
5645
- var internalModels = array.map(function (obj) {
5646
- var record = _this.store.push(obj);
5660
+ useLegacyArrayPush = true;
5647
5661
 
5648
- (0, _emberDataPrivateDebug.runInDebug)(function () {
5649
- var relationshipMeta = _this.hasManyRelationship.relationshipMeta;
5650
- (0, _emberDataPrivateDebug.assertPolymorphicType)(_this.internalModel, relationshipMeta, record._internalModel);
5662
+ var internalModels = undefined;
5663
+ if (useLegacyArrayPush) {
5664
+ internalModels = array.map(function (obj) {
5665
+ var record = _this.store.push(obj);
5666
+
5667
+ (0, _emberDataPrivateDebug.runInDebug)(function () {
5668
+ var relationshipMeta = _this.hasManyRelationship.relationshipMeta;
5669
+ (0, _emberDataPrivateDebug.assertPolymorphicType)(_this.internalModel, relationshipMeta, record._internalModel);
5670
+ });
5671
+
5672
+ return record._internalModel;
5651
5673
  });
5674
+ } else {
5675
+ var records = _this.store.push(payload);
5676
+ internalModels = _ember.default.A(records).mapBy('_internalModel');
5652
5677
 
5653
- return record._internalModel;
5654
- });
5678
+ (0, _emberDataPrivateDebug.runInDebug)(function () {
5679
+ internalModels.forEach(function (internalModel) {
5680
+ var relationshipMeta = _this.hasManyRelationship.relationshipMeta;
5681
+ (0, _emberDataPrivateDebug.assertPolymorphicType)(_this.internalModel, relationshipMeta, internalModel);
5682
+ });
5683
+ });
5684
+ }
5655
5685
 
5656
5686
  _this.hasManyRelationship.computeChanges(internalModels);
5657
5687
 
@@ -6356,9 +6386,9 @@ define("ember-data/-private/system/relationships/ext", ["exports", "ember", "emb
6356
6386
  import Blog from 'app/models/blog';
6357
6387
  var relationshipsByName = Ember.get(Blog, 'relationshipsByName');
6358
6388
  relationshipsByName.get('users');
6359
- //=> { key: 'users', kind: 'hasMany', type: App.User }
6389
+ //=> { key: 'users', kind: 'hasMany', type: 'user', options: Object, isRelationship: true }
6360
6390
  relationshipsByName.get('owner');
6361
- //=> { key: 'owner', kind: 'belongsTo', type: App.User }
6391
+ //=> { key: 'owner', kind: 'belongsTo', type: 'user', options: Object, isRelationship: true }
6362
6392
  ```
6363
6393
  @property relationshipsByName
6364
6394
  @static
@@ -6451,14 +6481,14 @@ define("ember-data/-private/system/relationships/ext", ["exports", "ember", "emb
6451
6481
  var knownKey = knownSide.key;
6452
6482
  var knownKind = knownSide.kind;
6453
6483
  var inverse = this.inverseFor(knownKey, store);
6454
- var key = undefined,
6455
- otherKind = undefined;
6484
+ // let key;
6485
+ var otherKind = undefined;
6456
6486
 
6457
6487
  if (!inverse) {
6458
6488
  return knownKind === 'belongsTo' ? 'oneToNone' : 'manyToNone';
6459
6489
  }
6460
6490
 
6461
- key = inverse.name;
6491
+ // key = inverse.name;
6462
6492
  otherKind = inverse.kind;
6463
6493
 
6464
6494
  if (otherKind === 'belongsTo') {
@@ -6488,7 +6518,7 @@ define("ember-data/-private/system/relationships/ext", ["exports", "ember", "emb
6488
6518
  - **kind** <span class="type">String</span> "hasMany" or "belongsTo"
6489
6519
  - **options** <span class="type">Object</span> the original options hash passed when the relationship was declared
6490
6520
  - **parentType** <span class="type">DS.Model</span> the type of the Model that owns this relationship
6491
- - **type** <span class="type">DS.Model</span> the type of the related Model
6521
+ - **type** <span class="type">String</span> the type name of the related Model
6492
6522
  Note that in addition to a callback, you can also pass an optional target
6493
6523
  object that will be set as `this` on the context.
6494
6524
  Example
@@ -7406,8 +7436,11 @@ define("ember-data/-private/system/relationships/state/relationship", ["exports"
7406
7436
  }
7407
7437
  };
7408
7438
  });
7409
- define('ember-data/-private/system/snapshot-record-array', ['exports', 'ember-data/-private/features'], function (exports, _emberDataPrivateFeatures) {
7439
+ define('ember-data/-private/system/snapshot-record-array', ['exports'], function (exports) {
7410
7440
  exports.default = SnapshotRecordArray;
7441
+ /**
7442
+ @module ember-data
7443
+ */
7411
7444
 
7412
7445
  /**
7413
7446
  @class SnapshotRecordArray
@@ -7460,9 +7493,7 @@ define('ember-data/-private/system/snapshot-record-array', ['exports', 'ember-da
7460
7493
  */
7461
7494
  this.adapterOptions = options.adapterOptions;
7462
7495
 
7463
- if (true) {
7464
- this.include = options.include;
7465
- }
7496
+ this.include = options.include;
7466
7497
  }
7467
7498
 
7468
7499
  /**
@@ -7480,10 +7511,7 @@ define('ember-data/-private/system/snapshot-record-array', ['exports', 'ember-da
7480
7511
  return this._snapshots;
7481
7512
  };
7482
7513
  });
7483
- /**
7484
- @module ember-data
7485
- */
7486
- define('ember-data/-private/system/snapshot', ['exports', 'ember', 'ember-data/-private/system/empty-object', 'ember-data/-private/features'], function (exports, _ember, _emberDataPrivateSystemEmptyObject, _emberDataPrivateFeatures) {
7514
+ define("ember-data/-private/system/snapshot", ["exports", "ember", "ember-data/-private/system/empty-object"], function (exports, _ember, _emberDataPrivateSystemEmptyObject) {
7487
7515
  exports.default = Snapshot;
7488
7516
 
7489
7517
  var get = _ember.default.get;
@@ -7525,9 +7553,7 @@ define('ember-data/-private/system/snapshot', ['exports', 'ember', 'ember-data/-
7525
7553
  */
7526
7554
  this.adapterOptions = options.adapterOptions;
7527
7555
 
7528
- if (true) {
7529
- this.include = options.include;
7530
- }
7556
+ this.include = options.include;
7531
7557
 
7532
7558
  this._changedAttributes = record.changedAttributes();
7533
7559
  }
@@ -7812,7 +7838,7 @@ define('ember-data/-private/system/snapshot', ['exports', 'ember', 'ember-data/-
7812
7838
  @module ember-data
7813
7839
  */
7814
7840
  define('ember-data/-private/system/store', ['exports', 'ember', 'ember-data/model', 'ember-data/-private/debug', 'ember-data/-private/system/normalize-link', 'ember-data/-private/system/normalize-model-name', 'ember-data/adapters/errors', 'ember-data/-private/system/promise-proxies', 'ember-data/-private/system/store/common', 'ember-data/-private/system/store/serializer-response', 'ember-data/-private/system/store/serializers', 'ember-data/-private/system/store/finders', 'ember-data/-private/utils', 'ember-data/-private/system/coerce-id', 'ember-data/-private/system/record-array-manager', 'ember-data/-private/system/store/container-instance-cache', 'ember-data/-private/system/model/internal-model', 'ember-data/-private/system/empty-object', 'ember-data/-private/features'], function (exports, _ember, _emberDataModel, _emberDataPrivateDebug, _emberDataPrivateSystemNormalizeLink, _emberDataPrivateSystemNormalizeModelName, _emberDataAdaptersErrors, _emberDataPrivateSystemPromiseProxies, _emberDataPrivateSystemStoreCommon, _emberDataPrivateSystemStoreSerializerResponse, _emberDataPrivateSystemStoreSerializers, _emberDataPrivateSystemStoreFinders, _emberDataPrivateUtils, _emberDataPrivateSystemCoerceId, _emberDataPrivateSystemRecordArrayManager, _emberDataPrivateSystemStoreContainerInstanceCache, _emberDataPrivateSystemModelInternalModel, _emberDataPrivateSystemEmptyObject, _emberDataPrivateFeatures) {
7815
- var badIdFormatAssertion = '`id` has to be non-empty string or number';
7841
+ var badIdFormatAssertion = '`id` passed to `findRecord()` has to be non-empty string or number';
7816
7842
 
7817
7843
  exports.badIdFormatAssertion = badIdFormatAssertion;
7818
7844
  var Backburner = _ember.default._Backburner;
@@ -8170,6 +8196,7 @@ define('ember-data/-private/system/store', ['exports', 'ember', 'ember-data/mode
8170
8196
  method to find the necessary data. If the record is already present in the
8171
8197
  store, it depends on the reload behavior _when_ the returned promise
8172
8198
  resolves.
8199
+ ### Reloading
8173
8200
  The reload behavior is configured either via the passed `options` hash or
8174
8201
  the result of the adapter's `shouldReloadRecord`.
8175
8202
  If `{ reload: true }` is passed or `adapter.shouldReloadRecord` evaluates
@@ -8197,6 +8224,7 @@ define('ember-data/-private/system/store', ['exports', 'ember', 'ember-data/mode
8197
8224
  ```
8198
8225
  If no reload is indicated via the abovementioned ways, then the promise
8199
8226
  immediately resolves with the cached version in the store.
8227
+ ### Background Reloading
8200
8228
  Optionally, if `adapter.shouldBackgroundReloadRecord` evaluates to `true`,
8201
8229
  then a background reload is started, which updates the records' data, once
8202
8230
  it is available:
@@ -8231,6 +8259,40 @@ define('ember-data/-private/system/store', ['exports', 'ember', 'ember-data/mode
8231
8259
  // }
8232
8260
  // ]
8233
8261
  blogPost.get('revision'); // 2
8262
+ ```
8263
+ If you would like to force or prevent background reloading, you can set a
8264
+ boolean value for `backgroundReload` in the options object for
8265
+ `findRecord`.
8266
+ ```app/routes/post/edit.js
8267
+ import Ember from 'ember';
8268
+ export default Ember.Route.extend({
8269
+ model: function(params) {
8270
+ return this.store.findRecord('post', params.post_id, { backgroundReload: false });
8271
+ }
8272
+ });
8273
+ ```
8274
+ If you pass an object on the `adapterOptions` property of the options
8275
+ argument it will be passed to you adapter via the snapshot
8276
+ ```app/routes/post/edit.js
8277
+ import Ember from 'ember';
8278
+ export default Ember.Route.extend({
8279
+ model: function(params) {
8280
+ return this.store.findRecord('post', params.post_id, {
8281
+ adapterOptions: { subscribe: false }
8282
+ });
8283
+ }
8284
+ });
8285
+ ```
8286
+ ```app/adapters/post.js
8287
+ import MyCustomAdapter from './custom-adapter';
8288
+ export default MyCustomAdapter.extend({
8289
+ findRecord: function(store, type, id, snapshot) {
8290
+ if (snapshot.adapterOptions.subscribe) {
8291
+ // ...
8292
+ }
8293
+ // ...
8294
+ }
8295
+ });
8234
8296
  ```
8235
8297
  See [peekRecord](#method_peekRecord) to get the cached version of a record.
8236
8298
  @method findRecord
@@ -8262,16 +8324,21 @@ define('ember-data/-private/system/store', ['exports', 'ember', 'ember-data/mode
8262
8324
  return this.scheduleFetch(internalModel, options);
8263
8325
  }
8264
8326
 
8265
- // Refetch the record if the adapter thinks the record is stale
8266
8327
  var snapshot = internalModel.createSnapshot(options);
8267
8328
  var typeClass = internalModel.type;
8268
8329
  var adapter = this.adapterFor(typeClass.modelName);
8330
+
8331
+ // Refetch the record if the adapter thinks the record is stale
8269
8332
  if (adapter.shouldReloadRecord(this, snapshot)) {
8270
8333
  return this.scheduleFetch(internalModel, options);
8271
8334
  }
8272
8335
 
8273
- // Trigger the background refetch if all the previous checks fail
8274
- if (adapter.shouldBackgroundReloadRecord(this, snapshot)) {
8336
+ if (options.backgroundReload === false) {
8337
+ return Promise.resolve(internalModel);
8338
+ }
8339
+
8340
+ // Trigger the background refetch if backgroundReload option is passed
8341
+ if (options.backgroundReload || adapter.shouldBackgroundReloadRecord(this, snapshot)) {
8275
8342
  this.scheduleFetch(internalModel, options);
8276
8343
  }
8277
8344
 
@@ -8484,6 +8551,38 @@ define('ember-data/-private/system/store', ['exports', 'ember', 'ember-data/mode
8484
8551
  }
8485
8552
  },
8486
8553
 
8554
+ /**
8555
+ Get the reference for the specified record.
8556
+ Example
8557
+ ```javascript
8558
+ var userRef = store.getReference('user', 1);
8559
+ // check if the user is loaded
8560
+ var isLoaded = userRef.value() !== null;
8561
+ // get the record of the reference (null if not yet available)
8562
+ var user = userRef.value();
8563
+ // get the identifier of the reference
8564
+ if (userRef.remoteType() === "id") {
8565
+ var id = userRef.id();
8566
+ }
8567
+ // load user (via store.find)
8568
+ userRef.load().then(...)
8569
+ // or trigger a reload
8570
+ userRef.reload().then(...)
8571
+ // provide data for reference
8572
+ userRef.push({ id: 1, username: "@user" }).then(function(user) {
8573
+ userRef.value() === user;
8574
+ });
8575
+ ```
8576
+ @method getReference
8577
+ @param {String} type
8578
+ @param {String|Integer} id
8579
+ @since 2.5.0
8580
+ @return {RecordReference}
8581
+ */
8582
+ getReference: function (type, id) {
8583
+ return this._internalModelForId(type, id).recordReference;
8584
+ },
8585
+
8487
8586
  /**
8488
8587
  Get a record by a given type and ID without triggering a fetch.
8489
8588
  This method will synchronously return the record if it is available in the store,
@@ -8777,7 +8876,7 @@ define('ember-data/-private/system/store', ['exports', 'ember', 'ember-data/mode
8777
8876
  },
8778
8877
 
8779
8878
  /**
8780
- `findAll` ask the adapter's `findAll` method to find the records for the
8879
+ `findAll` asks the adapter's `findAll` method to find the records for the
8781
8880
  given type, and returns a promise which will resolve with all records of
8782
8881
  this type present in the store, even if the adapter only returns a subset
8783
8882
  of them.
@@ -8792,6 +8891,7 @@ define('ember-data/-private/system/store', ['exports', 'ember', 'ember-data/mode
8792
8891
  _When_ the returned promise resolves depends on the reload behavior,
8793
8892
  configured via the passed `options` hash and the result of the adapter's
8794
8893
  `shouldReloadAll` method.
8894
+ ### Reloading
8795
8895
  If `{ reload: true }` is passed or `adapter.shouldReloadAll` evaluates to
8796
8896
  `true`, then the returned promise resolves once the adapter returns data,
8797
8897
  regardless if there are already records in the store:
@@ -8815,7 +8915,8 @@ define('ember-data/-private/system/store', ['exports', 'ember', 'ember-data/mode
8815
8915
  ```
8816
8916
  If no reload is indicated via the abovementioned ways, then the promise
8817
8917
  immediately resolves with all the records currently loaded in the store.
8818
- Optionally, if `adapter.shouldBackgroundReloadAll` evaluates to `true`,
8918
+ ### Background Reloading
8919
+ Optionally, if `adapter.shouldBackgroundReloadAll` evaluates to `true`,
8819
8920
  then a background reload is started. Once this resolves, the array with
8820
8921
  which the promise resolves, is updated automatically so it contains all the
8821
8922
  records in the store:
@@ -8850,7 +8951,41 @@ define('ember-data/-private/system/store', ['exports', 'ember', 'ember-data/mode
8850
8951
  // ]
8851
8952
  allAuthors.getEach('id'); // ['first', 'second']
8852
8953
  ```
8853
- See [peekAll](#method_peekAll) to get an array of current records in the
8954
+ If you would like to force or prevent background reloading, you can set a
8955
+ boolean value for `backgroundReload` in the options object for
8956
+ `findAll`.
8957
+ ```app/routes/post/edit.js
8958
+ import Ember from 'ember';
8959
+ export default Ember.Route.extend({
8960
+ model: function() {
8961
+ return this.store.findAll('post', { backgroundReload: false });
8962
+ }
8963
+ });
8964
+ ```
8965
+ If you pass an object on the `adapterOptions` property of the options
8966
+ argument it will be passed to you adapter via the `snapshotRecordArray`
8967
+ ```app/routes/posts.js
8968
+ import Ember from 'ember';
8969
+ export default Ember.Route.extend({
8970
+ model: function(params) {
8971
+ return this.store.findAll('post', {
8972
+ adapterOptions: { subscribe: false }
8973
+ });
8974
+ }
8975
+ });
8976
+ ```
8977
+ ```app/adapters/post.js
8978
+ import MyCustomAdapter from './custom-adapter';
8979
+ export default MyCustomAdapter.extend({
8980
+ findAll: function(store, type, sinceToken, snapshotRecordArray) {
8981
+ if (snapshotRecordArray.adapterOptions.subscribe) {
8982
+ // ...
8983
+ }
8984
+ // ...
8985
+ }
8986
+ });
8987
+ ```
8988
+ See [peekAll](#method_peekAll) to get an array of current records in the
8854
8989
  store, without waiting until a reload is finished.
8855
8990
  See [query](#method_query) to only get a subset of records from the server.
8856
8991
  @method findAll
@@ -8886,13 +9021,21 @@ define('ember-data/-private/system/store', ['exports', 'ember', 'ember-data/mode
8886
9021
  if (options.reload) {
8887
9022
  return (0, _emberDataPrivateSystemPromiseProxies.promiseArray)((0, _emberDataPrivateSystemStoreFinders._findAll)(adapter, this, typeClass, sinceToken, options));
8888
9023
  }
9024
+
8889
9025
  var snapshotArray = array.createSnapshot(options);
9026
+
8890
9027
  if (adapter.shouldReloadAll(this, snapshotArray)) {
8891
9028
  return (0, _emberDataPrivateSystemPromiseProxies.promiseArray)((0, _emberDataPrivateSystemStoreFinders._findAll)(adapter, this, typeClass, sinceToken, options));
8892
9029
  }
8893
- if (adapter.shouldBackgroundReloadAll(this, snapshotArray)) {
9030
+
9031
+ if (options.backgroundReload === false) {
9032
+ return (0, _emberDataPrivateSystemPromiseProxies.promiseArray)(Promise.resolve(array));
9033
+ }
9034
+
9035
+ if (options.backgroundReload || adapter.shouldBackgroundReloadAll(this, snapshotArray)) {
8894
9036
  (0, _emberDataPrivateSystemStoreFinders._findAll)(adapter, this, typeClass, sinceToken, options);
8895
9037
  }
9038
+
8896
9039
  return (0, _emberDataPrivateSystemPromiseProxies.promiseArray)(Promise.resolve(array));
8897
9040
  },
8898
9041
 
@@ -9510,7 +9653,7 @@ define('ember-data/-private/system/store', ['exports', 'ember', 'ember-data/mode
9510
9653
  var _this2 = this;
9511
9654
 
9512
9655
  var modelName = data.type;
9513
- (0, _emberDataPrivateDebug.assert)('You must include an \'id\' for ' + modelName + ' in an object passed to \'push\'', data.id != null && data.id !== '');
9656
+ (0, _emberDataPrivateDebug.assert)('You must include an \'id\' for ' + modelName + ' in an object passed to \'push\'', data.id !== null && data.id !== undefined && data.id !== '');
9514
9657
  (0, _emberDataPrivateDebug.assert)('You tried to push data with a type \'' + modelName + '\' but no model could be found with that name.', this._hasModelFor(modelName));
9515
9658
 
9516
9659
  (0, _emberDataPrivateDebug.runInDebug)(function () {
@@ -9611,15 +9754,10 @@ define('ember-data/-private/system/store', ['exports', 'ember', 'ember-data/mode
9611
9754
  (0, _emberDataPrivateDebug.assert)('Passing classes to store methods has been removed. Please pass a dasherized string instead of ' + _ember.default.inspect(modelName), typeof modelName === 'string');
9612
9755
  serializer = this.serializerFor(modelName);
9613
9756
  }
9614
- if (false) {
9615
- return this._adapterRun(function () {
9616
- return serializer.pushPayload(_this3, payload);
9617
- });
9618
- } else {
9619
- this._adapterRun(function () {
9620
- return serializer.pushPayload(_this3, payload);
9621
- });
9622
- }
9757
+
9758
+ this._adapterRun(function () {
9759
+ return serializer.pushPayload(_this3, payload);
9760
+ });
9623
9761
  },
9624
9762
 
9625
9763
  /**
@@ -9812,42 +9950,6 @@ define('ember-data/-private/system/store', ['exports', 'ember', 'ember-data/mode
9812
9950
 
9813
9951
  });
9814
9952
 
9815
- if (true) {
9816
-
9817
- Store.reopen({
9818
- /**
9819
- Get the reference for the specified record.
9820
- Example
9821
- ```javascript
9822
- var userRef = store.getReference('user', 1);
9823
- // check if the user is loaded
9824
- var isLoaded = userRef.value() !== null;
9825
- // get the record of the reference (null if not yet available)
9826
- var user = userRef.value();
9827
- // get the identifier of the reference
9828
- if (userRef.remoteType() === "id") {
9829
- var id = userRef.id();
9830
- }
9831
- // load user (via store.find)
9832
- userRef.load().then(...)
9833
- // or trigger a reload
9834
- userRef.reload().then(...)
9835
- // provide data for reference
9836
- userRef.push({ id: 1, username: "@user" }).then(function(user) {
9837
- userRef.value() === user;
9838
- });
9839
- ```
9840
- @method getReference
9841
- @param {String} type
9842
- @param {String|Integer} id
9843
- @return {RecordReference}
9844
- */
9845
- getReference: function (type, id) {
9846
- return this._internalModelForId(type, id).recordReference;
9847
- }
9848
- });
9849
- }
9850
-
9851
9953
  function deserializeRecordId(store, key, relationship, id) {
9852
9954
  if (isNone(id)) {
9853
9955
  return;
@@ -10448,12 +10550,8 @@ define('ember-data/-private/transforms/boolean', ['exports', 'ember', 'ember-dat
10448
10550
  deserialize: function (serialized, options) {
10449
10551
  var type = typeof serialized;
10450
10552
 
10451
- if (true) {
10452
- if (false) {
10453
- if (isNone(serialized) && options.allowNull === true) {
10454
- return null;
10455
- }
10456
- }
10553
+ if (isNone(serialized) && options.allowNull === true) {
10554
+ return null;
10457
10555
  }
10458
10556
 
10459
10557
  if (type === "boolean") {
@@ -10468,25 +10566,21 @@ define('ember-data/-private/transforms/boolean', ['exports', 'ember', 'ember-dat
10468
10566
  },
10469
10567
 
10470
10568
  serialize: function (deserialized, options) {
10471
- if (true) {
10472
- if (false) {
10473
- if (isNone(deserialized) && options.allowNull === true) {
10474
- return null;
10475
- }
10476
- }
10569
+ if (isNone(deserialized) && options.allowNull === true) {
10570
+ return null;
10477
10571
  }
10478
10572
 
10479
10573
  return Boolean(deserialized);
10480
10574
  }
10481
10575
  });
10482
10576
  });
10483
- define("ember-data/-private/transforms/date", ["exports", "ember", "ember-data/-private/ext/date", "ember-data/transform"], function (exports, _ember, _emberDataPrivateExtDate, _emberDataTransform) {
10577
+ define("ember-data/-private/transforms/date", ["exports", "ember-data/-private/ext/date", "ember-data/transform"], function (exports, _emberDataPrivateExtDate, _emberDataTransform) {
10484
10578
  exports.default = _emberDataTransform.default.extend({
10485
10579
  deserialize: function (serialized) {
10486
10580
  var type = typeof serialized;
10487
10581
 
10488
10582
  if (type === "string") {
10489
- return new Date(_ember.default.Date.parse(serialized));
10583
+ return new Date((0, _emberDataPrivateExtDate.parseDate)(serialized));
10490
10584
  } else if (type === "number") {
10491
10585
  return new Date(serialized);
10492
10586
  } else if (serialized === null || serialized === undefined) {
@@ -10783,8 +10877,8 @@ define('ember-data/adapter', ['exports', 'ember'], function (exports, _ember) {
10783
10877
  /**
10784
10878
  The `findRecord()` method is invoked when the store is asked for a record that
10785
10879
  has not previously been loaded. In response to `findRecord()` being called, you
10786
- should query your persistence layer for a record with the given ID. The `findRecord`
10787
- method should return a promise that will resolve to a JavaScript object that will be
10880
+ should query your persistence layer for a record with the given ID. The `findRecord`
10881
+ method should return a promise that will resolve to a JavaScript object that will be
10788
10882
  normalized by the serializer.
10789
10883
  Here is an example `findRecord` implementation:
10790
10884
  ```app/adapters/application.js
@@ -11274,9 +11368,6 @@ define('ember-data/adapters/errors', ['exports', 'ember', 'ember-data/-private/d
11274
11368
  }
11275
11369
 
11276
11370
  var extendedErrorsEnabled = false;
11277
- if (false) {
11278
- extendedErrorsEnabled = true;
11279
- }
11280
11371
 
11281
11372
  function extendFn(ErrorClass) {
11282
11373
  return function () {
@@ -11564,12 +11655,7 @@ define('ember-data/adapters/json-api', ['exports', 'ember', 'ember-data/adapters
11564
11655
  @return {Promise} promise
11565
11656
  */
11566
11657
  findMany: function (store, type, ids, snapshots) {
11567
- if (false) {
11568
- return this._super.apply(this, arguments);
11569
- } else {
11570
- var url = this.buildURL(type.modelName, ids, snapshots, 'findMany');
11571
- return this.ajax(url, 'GET', { data: { filter: { id: ids.join(',') } } });
11572
- }
11658
+ return this._super.apply(this, arguments);
11573
11659
  },
11574
11660
 
11575
11661
  /**
@@ -11591,80 +11677,65 @@ define('ember-data/adapters/json-api', ['exports', 'ember', 'ember-data/adapters
11591
11677
  @return {Promise} promise
11592
11678
  */
11593
11679
  updateRecord: function (store, type, snapshot) {
11594
- if (false) {
11595
- return this._super.apply(this, arguments);
11596
- } else {
11597
- var data = {};
11598
- var serializer = store.serializerFor(type.modelName);
11599
-
11600
- serializer.serializeIntoHash(data, type, snapshot, { includeId: true });
11601
-
11602
- var id = snapshot.id;
11603
- var url = this.buildURL(type.modelName, id, snapshot, 'updateRecord');
11604
-
11605
- return this.ajax(url, 'PATCH', { data: data });
11606
- }
11680
+ return this._super.apply(this, arguments);
11607
11681
  }
11608
11682
  });
11609
11683
 
11610
- if (false) {
11684
+ JSONAPIAdapter.reopen({
11611
11685
 
11612
- JSONAPIAdapter.reopen({
11686
+ methodForRequest: function (params) {
11687
+ if (params.requestType === 'updateRecord') {
11688
+ return 'PATCH';
11689
+ }
11613
11690
 
11614
- methodForRequest: function (params) {
11615
- if (params.requestType === 'updateRecord') {
11616
- return 'PATCH';
11617
- }
11691
+ return this._super.apply(this, arguments);
11692
+ },
11618
11693
 
11619
- return this._super.apply(this, arguments);
11620
- },
11621
-
11622
- dataForRequest: function (params) {
11623
- var requestType = params.requestType;
11624
- var ids = params.ids;
11625
-
11626
- if (requestType === 'findMany') {
11627
- return {
11628
- filter: { id: ids.join(',') }
11629
- };
11630
- }
11694
+ dataForRequest: function (params) {
11695
+ var requestType = params.requestType;
11696
+ var ids = params.ids;
11631
11697
 
11632
- if (requestType === 'updateRecord') {
11633
- var store = params.store;
11634
- var type = params.type;
11635
- var snapshot = params.snapshot;
11698
+ if (requestType === 'findMany') {
11699
+ return {
11700
+ filter: { id: ids.join(',') }
11701
+ };
11702
+ }
11636
11703
 
11637
- var data = {};
11638
- var serializer = store.serializerFor(type.modelName);
11704
+ if (requestType === 'updateRecord') {
11705
+ var store = params.store;
11706
+ var type = params.type;
11707
+ var snapshot = params.snapshot;
11639
11708
 
11640
- serializer.serializeIntoHash(data, type, snapshot, { includeId: true });
11709
+ var data = {};
11710
+ var serializer = store.serializerFor(type.modelName);
11641
11711
 
11642
- return data;
11643
- }
11712
+ serializer.serializeIntoHash(data, type, snapshot, { includeId: true });
11644
11713
 
11645
- return this._super.apply(this, arguments);
11646
- },
11714
+ return data;
11715
+ }
11647
11716
 
11648
- headersForRequest: function () {
11649
- var headers = this._super.apply(this, arguments) || {};
11717
+ return this._super.apply(this, arguments);
11718
+ },
11650
11719
 
11651
- headers['Accept'] = 'application/vnd.api+json';
11720
+ headersForRequest: function () {
11721
+ var headers = this._super.apply(this, arguments) || {};
11652
11722
 
11653
- return headers;
11654
- },
11723
+ headers['Accept'] = 'application/vnd.api+json';
11655
11724
 
11656
- _requestToJQueryAjaxHash: function () {
11657
- var hash = this._super.apply(this, arguments);
11725
+ return headers;
11726
+ },
11658
11727
 
11659
- if (hash.contentType) {
11660
- hash.contentType = 'application/vnd.api+json';
11661
- }
11728
+ _requestToJQueryAjaxHash: function () {
11729
+ var hash = this._super.apply(this, arguments);
11662
11730
 
11663
- return hash;
11731
+ if (hash.contentType) {
11732
+ hash.contentType = 'application/vnd.api+json';
11664
11733
  }
11665
11734
 
11666
- });
11667
- }
11735
+ return hash;
11736
+ }
11737
+
11738
+ });
11668
11739
 
11669
11740
  exports.default = JSONAPIAdapter;
11670
11741
  });
@@ -12032,19 +12103,12 @@ define('ember-data/adapters/rest', ['exports', 'ember', 'ember-data/adapter', 'e
12032
12103
  @return {Promise} promise
12033
12104
  */
12034
12105
  findRecord: function (store, type, id, snapshot) {
12035
- if (false) {
12036
- var request = this._requestFor({
12037
- store: store, type: type, id: id, snapshot: snapshot,
12038
- requestType: 'findRecord'
12039
- });
12040
-
12041
- return this._makeRequest(request);
12042
- } else {
12043
- var url = this.buildURL(type.modelName, id, snapshot, 'findRecord');
12044
- var query = this.buildQuery(snapshot);
12106
+ var request = this._requestFor({
12107
+ store: store, type: type, id: id, snapshot: snapshot,
12108
+ requestType: 'findRecord'
12109
+ });
12045
12110
 
12046
- return this.ajax(url, 'GET', { data: query });
12047
- }
12111
+ return this._makeRequest(request);
12048
12112
  },
12049
12113
 
12050
12114
  /**
@@ -12062,23 +12126,13 @@ define('ember-data/adapters/rest', ['exports', 'ember', 'ember-data/adapter', 'e
12062
12126
  findAll: function (store, type, sinceToken, snapshotRecordArray) {
12063
12127
  var query = this.buildQuery(snapshotRecordArray);
12064
12128
 
12065
- if (false) {
12066
- var request = this._requestFor({
12067
- store: store, type: type, sinceToken: sinceToken, query: query,
12068
- snapshots: snapshotRecordArray,
12069
- requestType: 'findAll'
12070
- });
12071
-
12072
- return this._makeRequest(request);
12073
- } else {
12074
- var url = this.buildURL(type.modelName, null, snapshotRecordArray, 'findAll');
12075
-
12076
- if (sinceToken) {
12077
- query.since = sinceToken;
12078
- }
12129
+ var request = this._requestFor({
12130
+ store: store, type: type, sinceToken: sinceToken, query: query,
12131
+ snapshots: snapshotRecordArray,
12132
+ requestType: 'findAll'
12133
+ });
12079
12134
 
12080
- return this.ajax(url, 'GET', { data: query });
12081
- }
12135
+ return this._makeRequest(request);
12082
12136
  },
12083
12137
 
12084
12138
  /**
@@ -12096,22 +12150,12 @@ define('ember-data/adapters/rest', ['exports', 'ember', 'ember-data/adapter', 'e
12096
12150
  @return {Promise} promise
12097
12151
  */
12098
12152
  query: function (store, type, query) {
12099
- if (false) {
12100
- var request = this._requestFor({
12101
- store: store, type: type, query: query,
12102
- requestType: 'query'
12103
- });
12104
-
12105
- return this._makeRequest(request);
12106
- } else {
12107
- var url = this.buildURL(type.modelName, null, null, 'query', query);
12108
-
12109
- if (this.sortQueryParams) {
12110
- query = this.sortQueryParams(query);
12111
- }
12153
+ var request = this._requestFor({
12154
+ store: store, type: type, query: query,
12155
+ requestType: 'query'
12156
+ });
12112
12157
 
12113
- return this.ajax(url, 'GET', { data: query });
12114
- }
12158
+ return this._makeRequest(request);
12115
12159
  },
12116
12160
 
12117
12161
  /**
@@ -12129,22 +12173,12 @@ define('ember-data/adapters/rest', ['exports', 'ember', 'ember-data/adapter', 'e
12129
12173
  @return {Promise} promise
12130
12174
  */
12131
12175
  queryRecord: function (store, type, query) {
12132
- if (false) {
12133
- var request = this._requestFor({
12134
- store: store, type: type, query: query,
12135
- requestType: 'queryRecord'
12136
- });
12137
-
12138
- return this._makeRequest(request);
12139
- } else {
12140
- var url = this.buildURL(type.modelName, null, null, 'queryRecord', query);
12141
-
12142
- if (this.sortQueryParams) {
12143
- query = this.sortQueryParams(query);
12144
- }
12176
+ var request = this._requestFor({
12177
+ store: store, type: type, query: query,
12178
+ requestType: 'queryRecord'
12179
+ });
12145
12180
 
12146
- return this.ajax(url, 'GET', { data: query });
12147
- }
12181
+ return this._makeRequest(request);
12148
12182
  },
12149
12183
 
12150
12184
  /**
@@ -12174,17 +12208,12 @@ define('ember-data/adapters/rest', ['exports', 'ember', 'ember-data/adapter', 'e
12174
12208
  @return {Promise} promise
12175
12209
  */
12176
12210
  findMany: function (store, type, ids, snapshots) {
12177
- if (false) {
12178
- var request = this._requestFor({
12179
- store: store, type: type, ids: ids, snapshots: snapshots,
12180
- requestType: 'findMany'
12181
- });
12211
+ var request = this._requestFor({
12212
+ store: store, type: type, ids: ids, snapshots: snapshots,
12213
+ requestType: 'findMany'
12214
+ });
12182
12215
 
12183
- return this._makeRequest(request);
12184
- } else {
12185
- var url = this.buildURL(type.modelName, ids, snapshots, 'findMany');
12186
- return this.ajax(url, 'GET', { data: { ids: ids } });
12187
- }
12216
+ return this._makeRequest(request);
12188
12217
  },
12189
12218
 
12190
12219
  /**
@@ -12214,21 +12243,12 @@ define('ember-data/adapters/rest', ['exports', 'ember', 'ember-data/adapter', 'e
12214
12243
  @return {Promise} promise
12215
12244
  */
12216
12245
  findHasMany: function (store, snapshot, url, relationship) {
12217
- if (false) {
12218
- var request = this._requestFor({
12219
- store: store, snapshot: snapshot, url: url, relationship: relationship,
12220
- requestType: 'findHasMany'
12221
- });
12222
-
12223
- return this._makeRequest(request);
12224
- } else {
12225
- var id = snapshot.id;
12226
- var type = snapshot.modelName;
12227
-
12228
- url = this.urlPrefix(url, this.buildURL(type, id, snapshot, 'findHasMany'));
12246
+ var request = this._requestFor({
12247
+ store: store, snapshot: snapshot, url: url, relationship: relationship,
12248
+ requestType: 'findHasMany'
12249
+ });
12229
12250
 
12230
- return this.ajax(url, 'GET');
12231
- }
12251
+ return this._makeRequest(request);
12232
12252
  },
12233
12253
 
12234
12254
  /**
@@ -12258,20 +12278,12 @@ define('ember-data/adapters/rest', ['exports', 'ember', 'ember-data/adapter', 'e
12258
12278
  @return {Promise} promise
12259
12279
  */
12260
12280
  findBelongsTo: function (store, snapshot, url, relationship) {
12261
- if (false) {
12262
- var request = this._requestFor({
12263
- store: store, snapshot: snapshot, url: url, relationship: relationship,
12264
- requestType: 'findBelongsTo'
12265
- });
12266
-
12267
- return this._makeRequest(request);
12268
- } else {
12269
- var id = snapshot.id;
12270
- var type = snapshot.modelName;
12281
+ var request = this._requestFor({
12282
+ store: store, snapshot: snapshot, url: url, relationship: relationship,
12283
+ requestType: 'findBelongsTo'
12284
+ });
12271
12285
 
12272
- url = this.urlPrefix(url, this.buildURL(type, id, snapshot, 'findBelongsTo'));
12273
- return this.ajax(url, 'GET');
12274
- }
12286
+ return this._makeRequest(request);
12275
12287
  },
12276
12288
 
12277
12289
  /**
@@ -12288,22 +12300,12 @@ define('ember-data/adapters/rest', ['exports', 'ember', 'ember-data/adapter', 'e
12288
12300
  @return {Promise} promise
12289
12301
  */
12290
12302
  createRecord: function (store, type, snapshot) {
12291
- if (false) {
12292
- var request = this._requestFor({
12293
- store: store, type: type, snapshot: snapshot,
12294
- requestType: 'createRecord'
12295
- });
12296
-
12297
- return this._makeRequest(request);
12298
- } else {
12299
- var data = {};
12300
- var serializer = store.serializerFor(type.modelName);
12301
- var url = this.buildURL(type.modelName, null, snapshot, 'createRecord');
12302
-
12303
- serializer.serializeIntoHash(data, type, snapshot, { includeId: true });
12303
+ var request = this._requestFor({
12304
+ store: store, type: type, snapshot: snapshot,
12305
+ requestType: 'createRecord'
12306
+ });
12304
12307
 
12305
- return this.ajax(url, "POST", { data: data });
12306
- }
12308
+ return this._makeRequest(request);
12307
12309
  },
12308
12310
 
12309
12311
  /**
@@ -12320,24 +12322,12 @@ define('ember-data/adapters/rest', ['exports', 'ember', 'ember-data/adapter', 'e
12320
12322
  @return {Promise} promise
12321
12323
  */
12322
12324
  updateRecord: function (store, type, snapshot) {
12323
- if (false) {
12324
- var request = this._requestFor({
12325
- store: store, type: type, snapshot: snapshot,
12326
- requestType: 'updateRecord'
12327
- });
12328
-
12329
- return this._makeRequest(request);
12330
- } else {
12331
- var data = {};
12332
- var serializer = store.serializerFor(type.modelName);
12333
-
12334
- serializer.serializeIntoHash(data, type, snapshot);
12335
-
12336
- var id = snapshot.id;
12337
- var url = this.buildURL(type.modelName, id, snapshot, 'updateRecord');
12325
+ var request = this._requestFor({
12326
+ store: store, type: type, snapshot: snapshot,
12327
+ requestType: 'updateRecord'
12328
+ });
12338
12329
 
12339
- return this.ajax(url, "PUT", { data: data });
12340
- }
12330
+ return this._makeRequest(request);
12341
12331
  },
12342
12332
 
12343
12333
  /**
@@ -12350,28 +12340,26 @@ define('ember-data/adapters/rest', ['exports', 'ember', 'ember-data/adapter', 'e
12350
12340
  @return {Promise} promise
12351
12341
  */
12352
12342
  deleteRecord: function (store, type, snapshot) {
12353
- if (false) {
12354
- var request = this._requestFor({
12355
- store: store, type: type, snapshot: snapshot,
12356
- requestType: 'deleteRecord'
12357
- });
12358
-
12359
- return this._makeRequest(request);
12360
- } else {
12361
- var id = snapshot.id;
12343
+ var request = this._requestFor({
12344
+ store: store, type: type, snapshot: snapshot,
12345
+ requestType: 'deleteRecord'
12346
+ });
12362
12347
 
12363
- return this.ajax(this.buildURL(type.modelName, id, snapshot, 'deleteRecord'), "DELETE");
12364
- }
12348
+ return this._makeRequest(request);
12365
12349
  },
12366
12350
 
12367
12351
  _stripIDFromURL: function (store, snapshot) {
12368
12352
  var url = this.buildURL(snapshot.modelName, snapshot.id, snapshot);
12369
12353
 
12370
12354
  var expandedURL = url.split('/');
12371
- //Case when the url is of the format ...something/:id
12355
+ // Case when the url is of the format ...something/:id
12356
+ // We are decodeURIComponent-ing the lastSegment because if it represents
12357
+ // the id, it has been encodeURIComponent-ified within `buildURL`. If we
12358
+ // don't do this, then records with id having special characters are not
12359
+ // coalesced correctly (see GH #4190 for the reported bug)
12372
12360
  var lastSegment = expandedURL[expandedURL.length - 1];
12373
12361
  var id = snapshot.id;
12374
- if (lastSegment === id) {
12362
+ if (decodeURIComponent(lastSegment) === id) {
12375
12363
  expandedURL[expandedURL.length - 1] = "";
12376
12364
  } else if (endsWith(lastSegment, '?id=' + id)) {
12377
12365
  //Case when the url is of the format ...something?id=:id
@@ -12481,23 +12469,6 @@ define('ember-data/adapters/rest', ['exports', 'ember', 'ember-data/adapter', 'e
12481
12469
  var errors = this.normalizeErrorResponse(status, headers, payload);
12482
12470
  var detailedMessage = this.generatedDetailedMessage(status, headers, payload, requestData);
12483
12471
 
12484
- if (false) {
12485
- switch (status) {
12486
- case 401:
12487
- return new _emberDataAdaptersErrors.UnauthorizedError(errors, detailedMessage);
12488
- case 403:
12489
- return new _emberDataAdaptersErrors.ForbiddenError(errors, detailedMessage);
12490
- case 404:
12491
- return new _emberDataAdaptersErrors.NotFoundError(errors, detailedMessage);
12492
- case 409:
12493
- return new _emberDataAdaptersErrors.ConflictError(errors, detailedMessage);
12494
- default:
12495
- if (status >= 500) {
12496
- return new _emberDataAdaptersErrors.ServerError(errors, detailedMessage);
12497
- }
12498
- }
12499
- }
12500
-
12501
12472
  return new _emberDataAdaptersErrors.AdapterError(errors, detailedMessage);
12502
12473
  },
12503
12474
 
@@ -12649,7 +12620,9 @@ define('ember-data/adapters/rest', ['exports', 'ember', 'ember-data/adapter', 'e
12649
12620
 
12650
12621
  try {
12651
12622
  json = _ember.default.$.parseJSON(responseText);
12652
- } catch (e) {}
12623
+ } catch (e) {
12624
+ // ignored
12625
+ }
12653
12626
 
12654
12627
  return json;
12655
12628
  },
@@ -12704,13 +12677,11 @@ define('ember-data/adapters/rest', ['exports', 'ember', 'ember-data/adapter', 'e
12704
12677
  buildQuery: function (snapshot) {
12705
12678
  var query = {};
12706
12679
 
12707
- if (true) {
12708
- if (snapshot) {
12709
- var include = snapshot.include;
12680
+ if (snapshot) {
12681
+ var include = snapshot.include;
12710
12682
 
12711
- if (include) {
12712
- query.include = include;
12713
- }
12683
+ if (include) {
12684
+ query.include = include;
12714
12685
  }
12715
12686
  }
12716
12687
 
@@ -12718,265 +12689,264 @@ define('ember-data/adapters/rest', ['exports', 'ember', 'ember-data/adapter', 'e
12718
12689
  }
12719
12690
  });
12720
12691
 
12721
- if (false) {
12722
-
12723
- RESTAdapter.reopen({
12692
+ RESTAdapter.reopen({
12724
12693
 
12725
- /**
12726
- * Get the data (body or query params) for a request.
12727
- *
12728
- * @public
12729
- * @method dataForRequest
12730
- * @param {Object} params
12731
- * @return {Object} data
12732
- */
12733
- dataForRequest: function (params) {
12734
- var store = params.store;
12735
- var type = params.type;
12736
- var snapshot = params.snapshot;
12737
- var requestType = params.requestType;
12738
- var query = params.query;
12694
+ /**
12695
+ * Get the data (body or query params) for a request.
12696
+ *
12697
+ * @public
12698
+ * @method dataForRequest
12699
+ * @param {Object} params
12700
+ * @return {Object} data
12701
+ */
12702
+ dataForRequest: function (params) {
12703
+ var store = params.store;
12704
+ var type = params.type;
12705
+ var snapshot = params.snapshot;
12706
+ var requestType = params.requestType;
12707
+ var query = params.query;
12739
12708
 
12740
- // type is not passed to findBelongsTo and findHasMany
12741
- type = type || snapshot && snapshot.type;
12709
+ // type is not passed to findBelongsTo and findHasMany
12710
+ type = type || snapshot && snapshot.type;
12742
12711
 
12743
- var serializer = store.serializerFor(type.modelName);
12744
- var data = {};
12712
+ var serializer = store.serializerFor(type.modelName);
12713
+ var data = {};
12745
12714
 
12746
- switch (requestType) {
12747
- case 'createRecord':
12748
- serializer.serializeIntoHash(data, type, snapshot, { includeId: true });
12749
- break;
12715
+ switch (requestType) {
12716
+ case 'createRecord':
12717
+ serializer.serializeIntoHash(data, type, snapshot, { includeId: true });
12718
+ break;
12750
12719
 
12751
- case 'updateRecord':
12752
- serializer.serializeIntoHash(data, type, snapshot);
12753
- break;
12720
+ case 'updateRecord':
12721
+ serializer.serializeIntoHash(data, type, snapshot);
12722
+ break;
12754
12723
 
12755
- case 'findRecord':
12756
- data = this.buildQuery(snapshot);
12757
- break;
12724
+ case 'findRecord':
12725
+ data = this.buildQuery(snapshot);
12726
+ break;
12758
12727
 
12759
- case 'findAll':
12760
- if (params.sinceToken) {
12761
- query = query || {};
12762
- query.since = params.sinceToken;
12763
- }
12764
- data = query;
12765
- break;
12728
+ case 'findAll':
12729
+ if (params.sinceToken) {
12730
+ query = query || {};
12731
+ query.since = params.sinceToken;
12732
+ }
12733
+ data = query;
12734
+ break;
12766
12735
 
12767
- case 'query':
12768
- case 'queryRecord':
12769
- if (this.sortQueryParams) {
12770
- query = this.sortQueryParams(query);
12771
- }
12772
- data = query;
12773
- break;
12736
+ case 'query':
12737
+ case 'queryRecord':
12738
+ if (this.sortQueryParams) {
12739
+ query = this.sortQueryParams(query);
12740
+ }
12741
+ data = query;
12742
+ break;
12774
12743
 
12775
- case 'findMany':
12776
- data = { ids: params.ids };
12777
- break;
12744
+ case 'findMany':
12745
+ data = { ids: params.ids };
12746
+ break;
12778
12747
 
12779
- default:
12780
- data = undefined;
12781
- break;
12782
- }
12748
+ default:
12749
+ data = undefined;
12750
+ break;
12751
+ }
12783
12752
 
12784
- return data;
12785
- },
12753
+ return data;
12754
+ },
12786
12755
 
12787
- /**
12788
- * Get the HTTP method for a request.
12789
- *
12790
- * @public
12791
- * @method methodForRequest
12792
- * @param {Object} params
12793
- * @return {String} HTTP method
12794
- */
12795
- methodForRequest: function (params) {
12796
- var requestType = params.requestType;
12797
-
12798
- switch (requestType) {
12799
- case 'createRecord':
12800
- return 'POST';
12801
- case 'updateRecord':
12802
- return 'PUT';
12803
- case 'deleteRecord':
12804
- return 'DELETE';
12805
- }
12756
+ /**
12757
+ * Get the HTTP method for a request.
12758
+ *
12759
+ * @public
12760
+ * @method methodForRequest
12761
+ * @param {Object} params
12762
+ * @return {String} HTTP method
12763
+ */
12764
+ methodForRequest: function (params) {
12765
+ var requestType = params.requestType;
12806
12766
 
12807
- return 'GET';
12808
- },
12767
+ switch (requestType) {
12768
+ case 'createRecord':
12769
+ return 'POST';
12770
+ case 'updateRecord':
12771
+ return 'PUT';
12772
+ case 'deleteRecord':
12773
+ return 'DELETE';
12774
+ }
12809
12775
 
12810
- /**
12811
- * Get the URL for a request.
12812
- *
12813
- * @public
12814
- * @method urlForRequest
12815
- * @param {Object} params
12816
- * @return {String} URL
12817
- */
12818
- urlForRequest: function (params) {
12819
- var type = params.type;
12820
- var id = params.id;
12821
- var ids = params.ids;
12822
- var snapshot = params.snapshot;
12823
- var snapshots = params.snapshots;
12824
- var requestType = params.requestType;
12825
- var query = params.query;
12776
+ return 'GET';
12777
+ },
12826
12778
 
12827
- // type and id are not passed from updateRecord and deleteRecord, hence they
12828
- // are defined if not set
12829
- type = type || snapshot && snapshot.type;
12830
- id = id || snapshot && snapshot.id;
12779
+ /**
12780
+ * Get the URL for a request.
12781
+ *
12782
+ * @public
12783
+ * @method urlForRequest
12784
+ * @param {Object} params
12785
+ * @return {String} URL
12786
+ */
12787
+ urlForRequest: function (params) {
12788
+ var type = params.type;
12789
+ var id = params.id;
12790
+ var ids = params.ids;
12791
+ var snapshot = params.snapshot;
12792
+ var snapshots = params.snapshots;
12793
+ var requestType = params.requestType;
12794
+ var query = params.query;
12795
+
12796
+ // type and id are not passed from updateRecord and deleteRecord, hence they
12797
+ // are defined if not set
12798
+ type = type || snapshot && snapshot.type;
12799
+ id = id || snapshot && snapshot.id;
12831
12800
 
12832
- switch (requestType) {
12833
- case 'findAll':
12834
- return this.buildURL(type.modelName, null, snapshots, requestType);
12801
+ switch (requestType) {
12802
+ case 'findAll':
12803
+ return this.buildURL(type.modelName, null, snapshots, requestType);
12835
12804
 
12836
- case 'query':
12837
- case 'queryRecord':
12838
- return this.buildURL(type.modelName, null, null, requestType, query);
12805
+ case 'query':
12806
+ case 'queryRecord':
12807
+ return this.buildURL(type.modelName, null, null, requestType, query);
12839
12808
 
12840
- case 'findMany':
12841
- return this.buildURL(type.modelName, ids, snapshots, requestType);
12809
+ case 'findMany':
12810
+ return this.buildURL(type.modelName, ids, snapshots, requestType);
12842
12811
 
12843
- case 'findHasMany':
12844
- case 'findBelongsTo':
12812
+ case 'findHasMany':
12813
+ case 'findBelongsTo':
12814
+ {
12845
12815
  var url = this.buildURL(type.modelName, id, snapshot, requestType);
12846
12816
  return this.urlPrefix(params.url, url);
12847
- }
12817
+ }
12818
+ }
12848
12819
 
12849
- return this.buildURL(type.modelName, id, snapshot, requestType, query);
12850
- },
12820
+ return this.buildURL(type.modelName, id, snapshot, requestType, query);
12821
+ },
12851
12822
 
12852
- /**
12853
- * Get the headers for a request.
12854
- *
12855
- * By default the value of the `headers` property of the adapter is
12856
- * returned.
12857
- *
12858
- * @public
12859
- * @method headersForRequest
12860
- * @param {Object} params
12861
- * @return {Object} headers
12862
- */
12863
- headersForRequest: function (params) {
12864
- return this.get('headers');
12865
- },
12823
+ /**
12824
+ * Get the headers for a request.
12825
+ *
12826
+ * By default the value of the `headers` property of the adapter is
12827
+ * returned.
12828
+ *
12829
+ * @public
12830
+ * @method headersForRequest
12831
+ * @param {Object} params
12832
+ * @return {Object} headers
12833
+ */
12834
+ headersForRequest: function (params) {
12835
+ return this.get('headers');
12836
+ },
12866
12837
 
12867
- /**
12868
- * Get an object which contains all properties for a request which should
12869
- * be made.
12870
- *
12871
- * @private
12872
- * @method _requestFor
12873
- * @param {Object} params
12874
- * @return {Object} request object
12875
- */
12876
- _requestFor: function (params) {
12877
- var method = this.methodForRequest(params);
12878
- var url = this.urlForRequest(params);
12879
- var headers = this.headersForRequest(params);
12880
- var data = this.dataForRequest(params);
12881
-
12882
- return { method: method, url: url, headers: headers, data: data };
12883
- },
12838
+ /**
12839
+ * Get an object which contains all properties for a request which should
12840
+ * be made.
12841
+ *
12842
+ * @private
12843
+ * @method _requestFor
12844
+ * @param {Object} params
12845
+ * @return {Object} request object
12846
+ */
12847
+ _requestFor: function (params) {
12848
+ var method = this.methodForRequest(params);
12849
+ var url = this.urlForRequest(params);
12850
+ var headers = this.headersForRequest(params);
12851
+ var data = this.dataForRequest(params);
12884
12852
 
12885
- /**
12886
- * Convert a request object into a hash which can be passed to `jQuery.ajax`.
12887
- *
12888
- * @private
12889
- * @method _requestToJQueryAjaxHash
12890
- * @param {Object} request
12891
- * @return {Object} jQuery ajax hash
12892
- */
12893
- _requestToJQueryAjaxHash: function (request) {
12894
- var hash = {};
12895
-
12896
- hash.type = request.method;
12897
- hash.url = request.url;
12898
- hash.dataType = 'json';
12899
- hash.context = this;
12900
-
12901
- if (request.data) {
12902
- if (request.type !== 'GET') {
12903
- hash.contentType = 'application/json; charset=utf-8';
12904
- hash.data = JSON.stringify(request.data);
12905
- } else {
12906
- hash.data = request.data;
12907
- }
12908
- }
12853
+ return { method: method, url: url, headers: headers, data: data };
12854
+ },
12909
12855
 
12910
- var headers = request.headers;
12911
- if (headers !== undefined) {
12912
- hash.beforeSend = function (xhr) {
12913
- Object.keys(headers).forEach(function (key) {
12914
- return xhr.setRequestHeader(key, headers[key]);
12915
- });
12916
- };
12856
+ /**
12857
+ * Convert a request object into a hash which can be passed to `jQuery.ajax`.
12858
+ *
12859
+ * @private
12860
+ * @method _requestToJQueryAjaxHash
12861
+ * @param {Object} request
12862
+ * @return {Object} jQuery ajax hash
12863
+ */
12864
+ _requestToJQueryAjaxHash: function (request) {
12865
+ var hash = {};
12866
+
12867
+ hash.type = request.method;
12868
+ hash.url = request.url;
12869
+ hash.dataType = 'json';
12870
+ hash.context = this;
12871
+
12872
+ if (request.data) {
12873
+ if (request.type !== 'GET') {
12874
+ hash.contentType = 'application/json; charset=utf-8';
12875
+ hash.data = JSON.stringify(request.data);
12876
+ } else {
12877
+ hash.data = request.data;
12917
12878
  }
12879
+ }
12918
12880
 
12919
- return hash;
12920
- },
12881
+ var headers = request.headers;
12882
+ if (headers !== undefined) {
12883
+ hash.beforeSend = function (xhr) {
12884
+ Object.keys(headers).forEach(function (key) {
12885
+ return xhr.setRequestHeader(key, headers[key]);
12886
+ });
12887
+ };
12888
+ }
12889
+
12890
+ return hash;
12891
+ },
12921
12892
 
12922
- /**
12923
- * Make a request using `jQuery.ajax`.
12924
- *
12925
- * @private
12926
- * @method _makeRequest
12927
- * @param {Object} request
12928
- * @return {Promise} promise
12929
- */
12930
- _makeRequest: function (request) {
12931
- var adapter = this;
12932
- var hash = this._requestToJQueryAjaxHash(request);
12893
+ /**
12894
+ * Make a request using `jQuery.ajax`.
12895
+ *
12896
+ * @private
12897
+ * @method _makeRequest
12898
+ * @param {Object} request
12899
+ * @return {Promise} promise
12900
+ */
12901
+ _makeRequest: function (request) {
12902
+ var adapter = this;
12903
+ var hash = this._requestToJQueryAjaxHash(request);
12933
12904
 
12934
- var method = request.method;
12935
- var url = request.url;
12905
+ var method = request.method;
12906
+ var url = request.url;
12936
12907
 
12937
- var requestData = { method: method, url: url };
12908
+ var requestData = { method: method, url: url };
12938
12909
 
12939
- return new _ember.default.RSVP.Promise(function (resolve, reject) {
12910
+ return new _ember.default.RSVP.Promise(function (resolve, reject) {
12940
12911
 
12941
- hash.success = function (payload, textStatus, jqXHR) {
12942
- var response = adapter.handleResponse(jqXHR.status, (0, _emberDataPrivateUtilsParseResponseHeaders.default)(jqXHR.getAllResponseHeaders()), payload, requestData);
12912
+ hash.success = function (payload, textStatus, jqXHR) {
12913
+ var response = adapter.handleResponse(jqXHR.status, (0, _emberDataPrivateUtilsParseResponseHeaders.default)(jqXHR.getAllResponseHeaders()), payload, requestData);
12943
12914
 
12944
- if (response instanceof _emberDataAdaptersErrors.AdapterError) {
12945
- _ember.default.run.join(null, reject, response);
12946
- } else {
12947
- _ember.default.run.join(null, resolve, response);
12948
- }
12949
- };
12915
+ if (response instanceof _emberDataAdaptersErrors.AdapterError) {
12916
+ _ember.default.run.join(null, reject, response);
12917
+ } else {
12918
+ _ember.default.run.join(null, resolve, response);
12919
+ }
12920
+ };
12950
12921
 
12951
- hash.error = function (jqXHR, textStatus, errorThrown) {
12952
- (0, _emberDataPrivateDebug.runInDebug)(function () {
12953
- var message = 'The server returned an empty string for ' + method + ' ' + url + ', which cannot be parsed into a valid JSON. Return either null or {}.';
12954
- var validJSONString = !(textStatus === "parsererror" && jqXHR.responseText === "");
12955
- (0, _emberDataPrivateDebug.warn)(message, validJSONString, {
12956
- id: 'ds.adapter.returned-empty-string-as-JSON'
12957
- });
12922
+ hash.error = function (jqXHR, textStatus, errorThrown) {
12923
+ (0, _emberDataPrivateDebug.runInDebug)(function () {
12924
+ var message = 'The server returned an empty string for ' + method + ' ' + url + ', which cannot be parsed into a valid JSON. Return either null or {}.';
12925
+ var validJSONString = !(textStatus === "parsererror" && jqXHR.responseText === "");
12926
+ (0, _emberDataPrivateDebug.warn)(message, validJSONString, {
12927
+ id: 'ds.adapter.returned-empty-string-as-JSON'
12958
12928
  });
12929
+ });
12959
12930
 
12960
- var error = undefined;
12931
+ var error = undefined;
12961
12932
 
12962
- if (errorThrown instanceof Error) {
12963
- error = errorThrown;
12964
- } else if (textStatus === 'timeout') {
12965
- error = new _emberDataAdaptersErrors.TimeoutError();
12966
- } else if (textStatus === 'abort') {
12967
- error = new _emberDataAdaptersErrors.AbortError();
12968
- } else {
12969
- error = adapter.handleResponse(jqXHR.status, (0, _emberDataPrivateUtilsParseResponseHeaders.default)(jqXHR.getAllResponseHeaders()), adapter.parseErrorResponse(jqXHR.responseText) || errorThrown, requestData);
12970
- }
12933
+ if (errorThrown instanceof Error) {
12934
+ error = errorThrown;
12935
+ } else if (textStatus === 'timeout') {
12936
+ error = new _emberDataAdaptersErrors.TimeoutError();
12937
+ } else if (textStatus === 'abort') {
12938
+ error = new _emberDataAdaptersErrors.AbortError();
12939
+ } else {
12940
+ error = adapter.handleResponse(jqXHR.status, (0, _emberDataPrivateUtilsParseResponseHeaders.default)(jqXHR.getAllResponseHeaders()), adapter.parseErrorResponse(jqXHR.responseText) || errorThrown, requestData);
12941
+ }
12971
12942
 
12972
- _ember.default.run.join(null, reject, error);
12973
- };
12943
+ _ember.default.run.join(null, reject, error);
12944
+ };
12974
12945
 
12975
- adapter._ajaxRequest(hash);
12976
- }, 'DS: RESTAdapter#makeRequest: ' + method + ' ' + url);
12977
- }
12978
- });
12979
- }
12946
+ adapter._ajaxRequest(hash);
12947
+ }, 'DS: RESTAdapter#makeRequest: ' + method + ' ' + url);
12948
+ }
12949
+ });
12980
12950
 
12981
12951
  //From http://stackoverflow.com/questions/280634/endswith-in-javascript
12982
12952
  function endsWith(string, suffix) {
@@ -13069,6 +13039,34 @@ define('ember-data/attr', ['exports', 'ember', 'ember-data/-private/debug'], fun
13069
13039
  });
13070
13040
  ```
13071
13041
 
13042
+ The `options` hash is passed as second argument to a transforms'
13043
+ `serialize` and `deserialize` method. This allows to configure a
13044
+ transformation and adapt the corresponding value, based on the config:
13045
+
13046
+ ```app/models/post.js
13047
+ export default DS.Model.extend({
13048
+ text: DS.attr('text', {
13049
+ uppercase: true
13050
+ })
13051
+ });
13052
+ ```
13053
+
13054
+ ```app/transforms/text.js
13055
+ export default DS.Transform.extend({
13056
+ serialize: function(value, options) {
13057
+ if (options.uppercase) {
13058
+ return value.toUpperCase();
13059
+ }
13060
+
13061
+ return value;
13062
+ },
13063
+
13064
+ deserialize: function(value) {
13065
+ return value;
13066
+ }
13067
+ })
13068
+ ```
13069
+
13072
13070
  @namespace
13073
13071
  @method attr
13074
13072
  @for DS
@@ -13128,40 +13126,9 @@ define('ember-data/attr', ['exports', 'ember', 'ember-data/-private/debug'], fun
13128
13126
  }
13129
13127
  }).meta(meta);
13130
13128
  }
13131
-
13132
- // TODO add to documentation of `attr` function above, once this feature is added
13133
- // /**
13134
- // * The `options` hash is passed as second argument to a transforms'
13135
- // * `serialize` and `deserialize` method. This allows to configure a
13136
- // * transformation and adapt the corresponding value, based on the config:
13137
- // *
13138
- // * ```app/models/post.js
13139
- // * export default DS.Model.extend({
13140
- // * text: DS.attr('text', {
13141
- // * uppercase: true
13142
- // * })
13143
- // * });
13144
- // * ```
13145
- // *
13146
- // * ```app/transforms/text.js
13147
- // * export default DS.Transform.extend({
13148
- // * serialize: function(value, options) {
13149
- // * if (options.uppercase) {
13150
- // * return value.toUpperCase();
13151
- // * }
13152
- // *
13153
- // * return value;
13154
- // * },
13155
- // *
13156
- // * deserialize: function(value) {
13157
- // * return value;
13158
- // * }
13159
- // * })
13160
- // * ```
13161
- // *
13162
- // */
13163
13129
  });
13164
- define("ember-data", ["exports", "ember", "ember-data/-private/debug", "ember-data/-private/features", "ember-data/-private/core", "ember-data/-private/system/normalize-model-name", "ember-data/-private/system/model/internal-model", "ember-data/-private/system/promise-proxies", "ember-data/-private/system/store", "ember-data/-private/system/model", "ember-data/model", "ember-data/-private/system/snapshot", "ember-data/adapter", "ember-data/serializer", "ember-data/-private/system/debug", "ember-data/adapters/errors", "ember-data/-private/system/record-arrays", "ember-data/-private/system/many-array", "ember-data/-private/system/record-array-manager", "ember-data/-private/adapters", "ember-data/-private/adapters/build-url-mixin", "ember-data/-private/serializers", "ember-inflector", "ember-data/serializers/embedded-records-mixin", "ember-data/-private/transforms", "ember-data/relationships", "ember-data/setup-container", "ember-data/-private/instance-initializers/initialize-store-service", "ember-data/-private/system/container-proxy", "ember-data/-private/system/relationships/state/relationship"], function (exports, _ember, _emberDataPrivateDebug, _emberDataPrivateFeatures, _emberDataPrivateCore, _emberDataPrivateSystemNormalizeModelName, _emberDataPrivateSystemModelInternalModel, _emberDataPrivateSystemPromiseProxies, _emberDataPrivateSystemStore, _emberDataPrivateSystemModel, _emberDataModel, _emberDataPrivateSystemSnapshot, _emberDataAdapter, _emberDataSerializer, _emberDataPrivateSystemDebug, _emberDataAdaptersErrors, _emberDataPrivateSystemRecordArrays, _emberDataPrivateSystemManyArray, _emberDataPrivateSystemRecordArrayManager, _emberDataPrivateAdapters, _emberDataPrivateAdaptersBuildUrlMixin, _emberDataPrivateSerializers, _emberInflector, _emberDataSerializersEmbeddedRecordsMixin, _emberDataPrivateTransforms, _emberDataRelationships, _emberDataSetupContainer, _emberDataPrivateInstanceInitializersInitializeStoreService, _emberDataPrivateSystemContainerProxy, _emberDataPrivateSystemRelationshipsStateRelationship) {
13130
+ define("ember-data", ["exports", "ember", "ember-data/-private/debug", "ember-data/-private/features", "ember-data/-private/global", "ember-data/-private/core", "ember-data/-private/system/normalize-model-name", "ember-data/-private/system/model/internal-model", "ember-data/-private/system/promise-proxies", "ember-data/-private/system/store", "ember-data/-private/system/model", "ember-data/model", "ember-data/-private/system/snapshot", "ember-data/adapter", "ember-data/serializer", "ember-data/-private/system/debug", "ember-data/adapters/errors", "ember-data/-private/system/record-arrays", "ember-data/-private/system/many-array", "ember-data/-private/system/record-array-manager", "ember-data/-private/adapters", "ember-data/-private/adapters/build-url-mixin", "ember-data/-private/serializers", "ember-inflector", "ember-data/serializers/embedded-records-mixin", "ember-data/-private/transforms", "ember-data/relationships", "ember-data/setup-container", "ember-data/-private/instance-initializers/initialize-store-service", "ember-data/-private/system/container-proxy", "ember-data/-private/system/relationships/state/relationship"], function (exports, _ember, _emberDataPrivateDebug, _emberDataPrivateFeatures, _emberDataPrivateGlobal, _emberDataPrivateCore, _emberDataPrivateSystemNormalizeModelName, _emberDataPrivateSystemModelInternalModel, _emberDataPrivateSystemPromiseProxies, _emberDataPrivateSystemStore, _emberDataPrivateSystemModel, _emberDataModel, _emberDataPrivateSystemSnapshot, _emberDataAdapter, _emberDataSerializer, _emberDataPrivateSystemDebug, _emberDataAdaptersErrors, _emberDataPrivateSystemRecordArrays, _emberDataPrivateSystemManyArray, _emberDataPrivateSystemRecordArrayManager, _emberDataPrivateAdapters, _emberDataPrivateAdaptersBuildUrlMixin, _emberDataPrivateSerializers, _emberInflector, _emberDataSerializersEmbeddedRecordsMixin, _emberDataPrivateTransforms, _emberDataRelationships, _emberDataSetupContainer, _emberDataPrivateInstanceInitializersInitializeStoreService, _emberDataPrivateSystemContainerProxy, _emberDataPrivateSystemRelationshipsStateRelationship) {
13131
+
13165
13132
  /**
13166
13133
  Ember Data
13167
13134
  @module ember-data
@@ -13193,14 +13160,6 @@ define("ember-data", ["exports", "ember", "ember-data/-private/debug", "ember-da
13193
13160
  _emberDataPrivateCore.default.TimeoutError = _emberDataAdaptersErrors.TimeoutError;
13194
13161
  _emberDataPrivateCore.default.AbortError = _emberDataAdaptersErrors.AbortError;
13195
13162
 
13196
- if (false) {
13197
- _emberDataPrivateCore.default.UnauthorizedError = _emberDataAdaptersErrors.UnauthorizedError;
13198
- _emberDataPrivateCore.default.ForbiddenError = _emberDataAdaptersErrors.ForbiddenError;
13199
- _emberDataPrivateCore.default.NotFoundError = _emberDataAdaptersErrors.NotFoundError;
13200
- _emberDataPrivateCore.default.ConflictError = _emberDataAdaptersErrors.ConflictError;
13201
- _emberDataPrivateCore.default.ServerError = _emberDataAdaptersErrors.ServerError;
13202
- }
13203
-
13204
13163
  _emberDataPrivateCore.default.errorsHashToArray = _emberDataAdaptersErrors.errorsHashToArray;
13205
13164
  _emberDataPrivateCore.default.errorsArrayToHash = _emberDataAdaptersErrors.errorsArrayToHash;
13206
13165
 
@@ -13249,7 +13208,14 @@ define("ember-data", ["exports", "ember", "ember-data/-private/debug", "ember-da
13249
13208
  value: _emberDataPrivateSystemNormalizeModelName.default
13250
13209
  });
13251
13210
 
13252
- _ember.default.lookup.DS = _emberDataPrivateCore.default;
13211
+ Object.defineProperty(_emberDataPrivateGlobal.default, 'DS', {
13212
+ configurable: true,
13213
+ get: function () {
13214
+ (0, _emberDataPrivateDebug.deprecate)('Using the global version of DS is deprecated. Please either import ' + 'the specific modules needed or `import DS from \'ember-data\';`.', false, { id: 'ember-data.global-ds', until: '3.0.0' });
13215
+
13216
+ return _emberDataPrivateCore.default;
13217
+ }
13218
+ });
13253
13219
 
13254
13220
  exports.default = _emberDataPrivateCore.default;
13255
13221
  });
@@ -13691,10 +13657,8 @@ define('ember-data/serializers/embedded-records-mixin', ['exports', 'ember', 'em
13691
13657
  } else if (this.hasSerializeRecordsOption(attr)) {
13692
13658
  this._serializeEmbeddedHasMany(snapshot, json, relationship);
13693
13659
  } else {
13694
- if (true) {
13695
- if (this.hasSerializeIdsAndTypesOption(attr)) {
13696
- this._serializeHasManyAsIdsAndTypes(snapshot, json, relationship);
13697
- }
13660
+ if (this.hasSerializeIdsAndTypesOption(attr)) {
13661
+ this._serializeHasManyAsIdsAndTypes(snapshot, json, relationship);
13698
13662
  }
13699
13663
  }
13700
13664
  },
@@ -14060,6 +14024,7 @@ define('ember-data/serializers/json-api', ['exports', 'ember', 'ember-data/-priv
14060
14024
  _normalizeRelationshipDataHelper: function (relationshipDataHash) {
14061
14025
  var type = this.modelNameFromPayloadKey(relationshipDataHash.type);
14062
14026
  relationshipDataHash.type = type;
14027
+
14063
14028
  return relationshipDataHash;
14064
14029
  },
14065
14030
 
@@ -14074,10 +14039,14 @@ define('ember-data/serializers/json-api', ['exports', 'ember', 'ember-data/-priv
14074
14039
  id: 'ds.serializer.type-is-undefined'
14075
14040
  });
14076
14041
 
14077
- var modelName = this.modelNameFromPayloadKey(resourceHash.type);
14042
+ var modelName = undefined,
14043
+ usedLookup = undefined;
14044
+
14045
+ modelName = this.modelNameFromPayloadKey(resourceHash.type);
14046
+ usedLookup = 'modelNameFromPayloadKey';
14078
14047
 
14079
14048
  if (!this.store._hasModelFor(modelName)) {
14080
- (0, _emberDataPrivateDebug.warn)(this.warnMessageNoModelForType(modelName, resourceHash.type), false, {
14049
+ (0, _emberDataPrivateDebug.warn)(this.warnMessageNoModelForType(modelName, resourceHash.type, usedLookup), false, {
14081
14050
  id: 'ds.serializer.model-for-type-missing'
14082
14051
  });
14083
14052
  return null;
@@ -14100,11 +14069,8 @@ define('ember-data/serializers/json-api', ['exports', 'ember', 'ember-data/-priv
14100
14069
  */
14101
14070
  pushPayload: function (store, payload) {
14102
14071
  var normalizedPayload = this._normalizeDocumentHelper(payload);
14103
- if (false) {
14104
- return store.push(normalizedPayload);
14105
- } else {
14106
- store.push(normalizedPayload);
14107
- }
14072
+
14073
+ store.push(normalizedPayload);
14108
14074
  },
14109
14075
 
14110
14076
  /**
@@ -14147,7 +14113,7 @@ define('ember-data/serializers/json-api', ['exports', 'ember', 'ember-data/-priv
14147
14113
  if (resourceHash.attributes) {
14148
14114
  modelClass.eachAttribute(function (key) {
14149
14115
  var attributeKey = _this.keyForAttribute(key, 'deserialize');
14150
- if (resourceHash.attributes.hasOwnProperty(attributeKey)) {
14116
+ if (resourceHash.attributes[attributeKey] !== undefined) {
14151
14117
  attributes[key] = resourceHash.attributes[attributeKey];
14152
14118
  }
14153
14119
  });
@@ -14195,7 +14161,7 @@ define('ember-data/serializers/json-api', ['exports', 'ember', 'ember-data/-priv
14195
14161
  if (resourceHash.relationships) {
14196
14162
  modelClass.eachRelationship(function (key, relationshipMeta) {
14197
14163
  var relationshipKey = _this2.keyForRelationship(key, relationshipMeta.kind, 'deserialize');
14198
- if (resourceHash.relationships.hasOwnProperty(relationshipKey)) {
14164
+ if (resourceHash.relationships[relationshipKey] !== undefined) {
14199
14165
 
14200
14166
  var relationshipHash = resourceHash.relationships[relationshipKey];
14201
14167
  relationships[key] = _this2.extractRelationship(relationshipHash);
@@ -14222,6 +14188,7 @@ define('ember-data/serializers/json-api', ['exports', 'ember', 'ember-data/-priv
14222
14188
  @param {String} key
14223
14189
  @return {String} the model's modelName
14224
14190
  */
14191
+ // TODO @deprecated Use modelNameFromPayloadType instead
14225
14192
  modelNameFromPayloadKey: function (key) {
14226
14193
  return (0, _emberInflector.singularize)((0, _emberDataPrivateSystemNormalizeModelName.default)(key));
14227
14194
  },
@@ -14231,6 +14198,7 @@ define('ember-data/serializers/json-api', ['exports', 'ember', 'ember-data/-priv
14231
14198
  @param {String} modelName
14232
14199
  @return {String}
14233
14200
  */
14201
+ // TODO @deprecated Use payloadTypeFromModelName instead
14234
14202
  payloadKeyFromModelName: function (modelName) {
14235
14203
  return (0, _emberInflector.pluralize)(modelName);
14236
14204
  },
@@ -14321,7 +14289,12 @@ define('ember-data/serializers/json-api', ['exports', 'ember', 'ember-data/-priv
14321
14289
  */
14322
14290
  serialize: function (snapshot, options) {
14323
14291
  var data = this._super.apply(this, arguments);
14324
- data.type = this.payloadKeyFromModelName(snapshot.modelName);
14292
+
14293
+ var payloadType = undefined;
14294
+
14295
+ payloadType = this.payloadKeyFromModelName(snapshot.modelName);
14296
+
14297
+ data.type = payloadType;
14325
14298
  return { data: data };
14326
14299
  },
14327
14300
 
@@ -14341,7 +14314,7 @@ define('ember-data/serializers/json-api', ['exports', 'ember', 'ember-data/-priv
14341
14314
  var value = snapshot.attr(key);
14342
14315
  if (type) {
14343
14316
  var transform = this.transformFor(type);
14344
- value = transform.serialize(value, attribute.options);
14317
+ value = transform.serialize(value);
14345
14318
  }
14346
14319
 
14347
14320
  var payloadKey = this._getMappedKey(key, snapshot.type);
@@ -14376,8 +14349,12 @@ define('ember-data/serializers/json-api', ['exports', 'ember', 'ember-data/-priv
14376
14349
 
14377
14350
  var data = null;
14378
14351
  if (belongsTo) {
14352
+ var payloadType = undefined;
14353
+
14354
+ payloadType = this.payloadKeyFromModelName(belongsTo.modelName);
14355
+
14379
14356
  data = {
14380
- type: this.payloadKeyFromModelName(belongsTo.modelName),
14357
+ type: payloadType,
14381
14358
  id: belongsTo.id
14382
14359
  };
14383
14360
  }
@@ -14395,8 +14372,9 @@ define('ember-data/serializers/json-api', ['exports', 'ember', 'ember-data/-priv
14395
14372
  */
14396
14373
  serializeHasMany: function (snapshot, json, relationship) {
14397
14374
  var key = relationship.key;
14375
+ var shouldSerializeHasMany = '_shouldSerializeHasMany';
14398
14376
 
14399
- if (this._shouldSerializeHasMany(snapshot, key, relationship)) {
14377
+ if (this[shouldSerializeHasMany](snapshot, key, relationship)) {
14400
14378
  var hasMany = snapshot.hasMany(key);
14401
14379
  if (hasMany !== undefined) {
14402
14380
 
@@ -14411,8 +14389,13 @@ define('ember-data/serializers/json-api', ['exports', 'ember', 'ember-data/-priv
14411
14389
 
14412
14390
  for (var i = 0; i < hasMany.length; i++) {
14413
14391
  var item = hasMany[i];
14392
+
14393
+ var payloadType = undefined;
14394
+
14395
+ payloadType = this.payloadKeyFromModelName(item.modelName);
14396
+
14414
14397
  data[i] = {
14415
- type: this.payloadKeyFromModelName(item.modelName),
14398
+ type: payloadType,
14416
14399
  id: item.id
14417
14400
  };
14418
14401
  }
@@ -14433,8 +14416,8 @@ define('ember-data/serializers/json-api', ['exports', 'ember', 'ember-data/-priv
14433
14416
  warnMessageForUndefinedType: function () {
14434
14417
  return 'Encountered a resource object with an undefined type (resolved resource using ' + this.constructor.toString() + ')';
14435
14418
  },
14436
- warnMessageNoModelForType: function (modelName, originalType) {
14437
- return 'Encountered a resource object with type "' + originalType + '", but no model was found for model name "' + modelName + '" (resolved model name using ' + this.constructor.toString() + '.modelNameFromPayloadKey("' + originalType + '"))';
14419
+ warnMessageNoModelForType: function (modelName, originalType, usedLookup) {
14420
+ return 'Encountered a resource object with type "' + originalType + '", but no model was found for model name "' + modelName + '" (resolved model name using \'' + this.constructor.toString() + '.' + usedLookup + '("' + originalType + '")).';
14438
14421
  }
14439
14422
  });
14440
14423
  });
@@ -14444,7 +14427,80 @@ define('ember-data/serializers/json-api', ['exports', 'ember', 'ember-data/-priv
14444
14427
  /**
14445
14428
  @module ember-data
14446
14429
  */
14447
- define('ember-data/serializers/json', ['exports', 'ember', 'ember-data/-private/debug', 'ember-data/serializer', 'ember-data/-private/system/coerce-id', 'ember-data/-private/system/normalize-model-name', 'ember-data/-private/utils', 'ember-data/adapters/errors', 'ember-data/-private/features'], function (exports, _ember, _emberDataPrivateDebug, _emberDataSerializer, _emberDataPrivateSystemCoerceId, _emberDataPrivateSystemNormalizeModelName, _emberDataPrivateUtils, _emberDataAdaptersErrors, _emberDataPrivateFeatures) {
14430
+
14431
+ /**
14432
+ `modelNameFromPayloadType` can be used to change the mapping for a DS model
14433
+ name, taken from the value in the payload.
14434
+ Say your API namespaces the type of a model and returns the following
14435
+ payload for the `post` model:
14436
+ ```javascript
14437
+ // GET /api/posts/1
14438
+ {
14439
+ "data": {
14440
+ "id": 1,
14441
+ "type: "api::v1::post"
14442
+ }
14443
+ }
14444
+ ```
14445
+ By overwriting `modelNameFromPayloadType` you can specify that the
14446
+ `posr` model should be used:
14447
+ ```app/serializers/application.js
14448
+ import JSONAPISerializer from "ember-data/serializers/json-api";
14449
+ export default JSONAPISerializer.extend({
14450
+ modelNameFromPayloadType(payloadType) {
14451
+ return payloadType.replace('api::v1::', '');
14452
+ }
14453
+ });
14454
+ ```
14455
+ By default the modelName for a model is its singularized name in dasherized
14456
+ form. Usually, Ember Data can use the correct inflection to do this for
14457
+ you. Most of the time, you won't need to override
14458
+ `modelNameFromPayloadType` for this purpose.
14459
+ Also take a look at
14460
+ [payloadTypeFromModelName](#method_payloadTypeFromModelName) to customize
14461
+ how the type of a record should be serialized.
14462
+ @method modelNameFromPayloadType
14463
+ @public
14464
+ @param {String} payloadType type from payload
14465
+ @return {String} modelName
14466
+ */
14467
+
14468
+ /**
14469
+ `payloadTypeFromModelName` can be used to change the mapping for the type in
14470
+ the payload, taken from the model name.
14471
+ Say your API namespaces the type of a model and expects the following
14472
+ payload when you update the `post` model:
14473
+ ```javascript
14474
+ // POST /api/posts/1
14475
+ {
14476
+ "data": {
14477
+ "id": 1,
14478
+ "type": "api::v1::post"
14479
+ }
14480
+ }
14481
+ ```
14482
+ By overwriting `payloadTypeFromModelName` you can specify that the
14483
+ namespaces model name for the `post` should be used:
14484
+ ```app/serializers/application.js
14485
+ import JSONAPISerializer from "ember-data/serializers/json-api";
14486
+ export default JSONAPISerializer.extend({
14487
+ payloadTypeFromModelName(modelName) {
14488
+ return "api::v1::" + modelName;
14489
+ }
14490
+ });
14491
+ ```
14492
+ By default the payload type is the pluralized model name. Usually, Ember
14493
+ Data can use the correct inflection to do this for you. Most of the time,
14494
+ you won't need to override `payloadTypeFromModelName` for this purpose.
14495
+ Also take a look at
14496
+ [modelNameFromPayloadType](#method_modelNameFromPayloadType) to customize
14497
+ how the model name from should be mapped from the payload.
14498
+ @method payloadTypeFromModelName
14499
+ @public
14500
+ @param {String} modelname modelName from the record
14501
+ @return {String} payloadType
14502
+ */
14503
+ define('ember-data/serializers/json', ['exports', 'ember', 'ember-data/-private/debug', 'ember-data/serializer', 'ember-data/-private/system/coerce-id', 'ember-data/-private/system/normalize-model-name', 'ember-data/-private/utils', 'ember-data/-private/features', 'ember-data/adapters/errors'], function (exports, _ember, _emberDataPrivateDebug, _emberDataSerializer, _emberDataPrivateSystemCoerceId, _emberDataPrivateSystemNormalizeModelName, _emberDataPrivateUtils, _emberDataPrivateFeatures, _emberDataAdaptersErrors) {
14448
14504
  function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) arr2[i] = arr[i]; return arr2; } else { return Array.from(arr); } }
14449
14505
 
14450
14506
  var get = _ember.default.get;
@@ -14517,7 +14573,7 @@ define('ember-data/serializers/json', ['exports', 'ember', 'ember-data/-private/
14517
14573
  @namespace DS
14518
14574
  @extends DS.Serializer
14519
14575
  */
14520
- exports.default = _emberDataSerializer.default.extend({
14576
+ var JSONSerializer = _emberDataSerializer.default.extend({
14521
14577
 
14522
14578
  /**
14523
14579
  The `primaryKey` is used when serializing and deserializing
@@ -14605,23 +14661,16 @@ define('ember-data/serializers/json', ['exports', 'ember', 'ember-data/-private/
14605
14661
  applyTransforms: function (typeClass, data) {
14606
14662
  var _this = this;
14607
14663
 
14608
- var attributes = undefined;
14609
- if (true) {
14610
- attributes = get(typeClass, 'attributes');
14611
- }
14664
+ var attributes = get(typeClass, 'attributes');
14612
14665
 
14613
14666
  typeClass.eachTransformedAttribute(function (key, typeClass) {
14614
- if (!(key in data)) {
14667
+ if (data[key] === undefined) {
14615
14668
  return;
14616
14669
  }
14617
14670
 
14618
14671
  var transform = _this.transformFor(typeClass);
14619
- if (true) {
14620
- var transformMeta = attributes.get(key);
14621
- data[key] = transform.deserialize(data[key], transformMeta.options);
14622
- } else {
14623
- data[key] = transform.deserialize(data[key]);
14624
- }
14672
+ var transformMeta = attributes.get(key);
14673
+ data[key] = transform.deserialize(data[key], transformMeta.options);
14625
14674
  });
14626
14675
 
14627
14676
  return data;
@@ -14986,7 +15035,7 @@ define('ember-data/serializers/json', ['exports', 'ember', 'ember-data/-private/
14986
15035
 
14987
15036
  modelClass.eachAttribute(function (key) {
14988
15037
  attributeKey = _this2.keyForAttribute(key, 'deserialize');
14989
- if (resourceHash.hasOwnProperty(attributeKey)) {
15038
+ if (resourceHash[attributeKey] !== undefined) {
14990
15039
  attributes[key] = resourceHash[attributeKey];
14991
15040
  }
14992
15041
  });
@@ -15061,7 +15110,7 @@ define('ember-data/serializers/json', ['exports', 'ember', 'ember-data/-private/
15061
15110
  modelClass.eachRelationship(function (key, relationshipMeta) {
15062
15111
  var relationship = null;
15063
15112
  var relationshipKey = _this3.keyForRelationship(key, relationshipMeta.kind, 'deserialize');
15064
- if (resourceHash.hasOwnProperty(relationshipKey)) {
15113
+ if (resourceHash[relationshipKey] !== undefined) {
15065
15114
  var data = null;
15066
15115
  var relationshipHash = resourceHash[relationshipKey];
15067
15116
  if (relationshipMeta.kind === 'belongsTo') {
@@ -15087,7 +15136,7 @@ define('ember-data/serializers/json', ['exports', 'ember', 'ember-data/-private/
15087
15136
  }
15088
15137
 
15089
15138
  var linkKey = _this3.keyForLink(key, relationshipMeta.kind);
15090
- if (resourceHash.links && resourceHash.links.hasOwnProperty(linkKey)) {
15139
+ if (resourceHash.links && resourceHash.links[linkKey] !== undefined) {
15091
15140
  var related = resourceHash.links[linkKey];
15092
15141
  relationship = relationship || {};
15093
15142
  relationship.links = { related: related };
@@ -15106,6 +15155,7 @@ define('ember-data/serializers/json', ['exports', 'ember', 'ember-data/-private/
15106
15155
  @param {String} key
15107
15156
  @return {String} the model's modelName
15108
15157
  */
15158
+ // TODO @deprecated Use modelNameFromPayloadType instead
15109
15159
  modelNameFromPayloadKey: function (key) {
15110
15160
  return (0, _emberDataPrivateSystemNormalizeModelName.default)(key);
15111
15161
  },
@@ -15125,7 +15175,7 @@ define('ember-data/serializers/json', ['exports', 'ember', 'ember-data/-private/
15125
15175
  if (key === payloadKey) {
15126
15176
  return;
15127
15177
  }
15128
- if (!hash.hasOwnProperty(payloadKey)) {
15178
+ if (hash[payloadKey] === undefined) {
15129
15179
  return;
15130
15180
  }
15131
15181
 
@@ -15150,7 +15200,7 @@ define('ember-data/serializers/json', ['exports', 'ember', 'ember-data/-private/
15150
15200
  if (key === payloadKey) {
15151
15201
  return;
15152
15202
  }
15153
- if (!hash.hasOwnProperty(payloadKey)) {
15203
+ if (hash[payloadKey] === undefined) {
15154
15204
  return;
15155
15205
  }
15156
15206
 
@@ -15172,7 +15222,7 @@ define('ember-data/serializers/json', ['exports', 'ember', 'ember-data/-private/
15172
15222
  for (key in attrs) {
15173
15223
  normalizedKey = payloadKey = this._getMappedKey(key, modelClass);
15174
15224
 
15175
- if (!hash.hasOwnProperty(payloadKey)) {
15225
+ if (hash[payloadKey] === undefined) {
15176
15226
  continue;
15177
15227
  }
15178
15228
 
@@ -15251,6 +15301,26 @@ define('ember-data/serializers/json', ['exports', 'ember', 'ember-data/-private/
15251
15301
  return attrs && attrs[key] && attrs[key].serialize === true;
15252
15302
  },
15253
15303
 
15304
+ /**
15305
+ Check if the given hasMany relationship should be serialized
15306
+ @method shouldSerializeHasMany
15307
+ @param {DS.Snapshot} snapshot
15308
+ @param {String} key
15309
+ @param {String} relationshipType
15310
+ @return {boolean} true if the hasMany relationship should be serialized
15311
+ */
15312
+
15313
+ shouldSerializeHasMany: function (snapshot, key, relationship) {
15314
+ if (this._shouldSerializeHasMany !== JSONSerializer.prototype._shouldSerializeHasMany) {
15315
+ (0, _emberDataPrivateDebug.deprecate)('The private method _shouldSerializeHasMany has been promoted to the public API. Please remove the underscore to use the public shouldSerializeHasMany method.', false, {
15316
+ id: 'ds.serializer.private-should-serialize-has-many',
15317
+ until: '3.0.0'
15318
+ });
15319
+ }
15320
+
15321
+ return this._shouldSerializeHasMany(snapshot, key, relationship);
15322
+ },
15323
+
15254
15324
  /**
15255
15325
  Check if the given hasMany relationship should be serialized
15256
15326
  @method _shouldSerializeHasMany
@@ -15465,11 +15535,7 @@ define('ember-data/serializers/json', ['exports', 'ember', 'ember-data/-private/
15465
15535
  var value = snapshot.attr(key);
15466
15536
  if (type) {
15467
15537
  var transform = this.transformFor(type);
15468
- if (true) {
15469
- value = transform.serialize(value, attribute.options);
15470
- } else {
15471
- value = transform.serialize(value);
15472
- }
15538
+ value = transform.serialize(value, attribute.options);
15473
15539
  }
15474
15540
 
15475
15541
  // if provided, use the mapping provided by `attrs` in
@@ -15554,8 +15620,9 @@ define('ember-data/serializers/json', ['exports', 'ember', 'ember-data/-private/
15554
15620
  */
15555
15621
  serializeHasMany: function (snapshot, json, relationship) {
15556
15622
  var key = relationship.key;
15623
+ var shouldSerializeHasMany = '_shouldSerializeHasMany';
15557
15624
 
15558
- if (this._shouldSerializeHasMany(snapshot, key, relationship)) {
15625
+ if (this[shouldSerializeHasMany](snapshot, key, relationship)) {
15559
15626
  var hasMany = snapshot.hasMany(key, { ids: true });
15560
15627
  if (hasMany !== undefined) {
15561
15628
  // if provided, use the mapping provided by `attrs` in
@@ -15622,7 +15689,7 @@ define('ember-data/serializers/json', ['exports', 'ember', 'ember-data/-private/
15622
15689
  @param {Object} payload
15623
15690
  */
15624
15691
  extractMeta: function (store, modelClass, payload) {
15625
- if (payload && payload.hasOwnProperty('meta')) {
15692
+ if (payload && payload['meta'] !== undefined) {
15626
15693
  var meta = payload.meta;
15627
15694
  delete payload.meta;
15628
15695
  return meta;
@@ -15712,7 +15779,7 @@ define('ember-data/serializers/json', ['exports', 'ember', 'ember-data/-private/
15712
15779
 
15713
15780
  typeClass.eachAttribute(function (name) {
15714
15781
  var key = _this7.keyForAttribute(name, 'deserialize');
15715
- if (key !== name && payload.hasOwnProperty(key)) {
15782
+ if (key !== name && payload[key] !== undefined) {
15716
15783
  payload[name] = payload[key];
15717
15784
  delete payload[key];
15718
15785
  }
@@ -15720,7 +15787,7 @@ define('ember-data/serializers/json', ['exports', 'ember', 'ember-data/-private/
15720
15787
 
15721
15788
  typeClass.eachRelationship(function (name) {
15722
15789
  var key = _this7.keyForRelationship(name, 'deserialize');
15723
- if (key !== name && payload.hasOwnProperty(key)) {
15790
+ if (key !== name && payload[key] !== undefined) {
15724
15791
  payload[name] = payload[key];
15725
15792
  delete payload[key];
15726
15793
  }
@@ -15803,7 +15870,16 @@ define('ember-data/serializers/json', ['exports', 'ember', 'ember-data/-private/
15803
15870
  return transform;
15804
15871
  }
15805
15872
  });
15873
+
15874
+ exports.default = JSONSerializer;
15806
15875
  });
15876
+
15877
+ /**
15878
+ @method modelNameFromPayloadType
15879
+ @public
15880
+ @param {String} type
15881
+ @return {String} the model's modelName
15882
+ */
15807
15883
  define("ember-data/serializers/rest", ["exports", "ember", "ember-data/-private/debug", "ember-data/serializers/json", "ember-data/-private/system/normalize-model-name", "ember-inflector", "ember-data/-private/system/coerce-id", "ember-data/-private/utils", "ember-data/-private/features"], function (exports, _ember, _emberDataPrivateDebug, _emberDataSerializersJson, _emberDataPrivateSystemNormalizeModelName, _emberInflector, _emberDataPrivateSystemCoerceId, _emberDataPrivateUtils, _emberDataPrivateFeatures) {
15808
15884
  function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) arr2[i] = arr[i]; return arr2; } else { return Array.from(arr); } }
15809
15885
 
@@ -15908,7 +15984,7 @@ define("ember-data/serializers/rest", ["exports", "ember", "ember-data/-private/
15908
15984
  * With `App.Comment`, `"comments"` and `{ id: 1, body: "FIRST" }`
15909
15985
  * With `App.Comment`, `"comments"` and `{ id: 2, body: "Rails is unagi" }`
15910
15986
  You can use this method, for example, to normalize underscored keys to camelized
15911
- or other general-purpose normalizations. You will only need to implement
15987
+ or other general-purpose normalizations. You will only need to implement
15912
15988
  `normalize` and manipulate the payload as desired.
15913
15989
  For example, if the `IDs` under `"comments"` are provided as `_id` instead of
15914
15990
  `id`, you can specify how to normalize just the comments:
@@ -15918,14 +15994,14 @@ define("ember-data/serializers/rest", ["exports", "ember", "ember-data/-private/
15918
15994
  normalize(model, hash, prop) {
15919
15995
  if (prop === 'comments') {
15920
15996
  hash.id = hash._id;
15921
- delete hash._id;
15997
+ delete hash._id;
15922
15998
  }
15923
15999
  return this._super(...arguments);
15924
16000
  }
15925
16001
  });
15926
16002
  ```
15927
- On each call to the `normalize` method, the third parameter (`prop`) is always
15928
- one of the keys that were in the original payload or in the result of another
16003
+ On each call to the `normalize` method, the third parameter (`prop`) is always
16004
+ one of the keys that were in the original payload or in the result of another
15929
16005
  normalization as `normalizeResponse`.
15930
16006
  @method normalize
15931
16007
  @param {DS.Model} modelClass
@@ -15966,7 +16042,6 @@ define("ember-data/serializers/rest", ["exports", "ember", "ember-data/-private/
15966
16042
  var modelClass = store.modelFor(modelName);
15967
16043
  var serializer = store.serializerFor(modelName);
15968
16044
 
15969
- /*jshint loopfunc:true*/
15970
16045
  _ember.default.makeArray(arrayHash).forEach(function (hash) {
15971
16046
  var _normalizePolymorphicRecord = _this._normalizePolymorphicRecord(store, hash, prop, modelClass, serializer);
15972
16047
 
@@ -15985,17 +16060,23 @@ define("ember-data/serializers/rest", ["exports", "ember", "ember-data/-private/
15985
16060
  },
15986
16061
 
15987
16062
  _normalizePolymorphicRecord: function (store, hash, prop, primaryModelClass, primarySerializer) {
15988
- var serializer = undefined,
15989
- modelClass = undefined;
16063
+ var serializer = primarySerializer;
16064
+ var modelClass = primaryModelClass;
16065
+
15990
16066
  var primaryHasTypeAttribute = (0, _emberDataPrivateUtils.modelHasAttributeOrRelationshipNamedType)(primaryModelClass);
15991
- // Support polymorphic records in async relationships
15992
- if (!primaryHasTypeAttribute && hash.type && store._hasModelFor(this.modelNameFromPayloadKey(hash.type))) {
15993
- serializer = store.serializerFor(this.modelNameFromPayloadKey(hash.type));
15994
- modelClass = store.modelFor(this.modelNameFromPayloadKey(hash.type));
15995
- } else {
15996
- serializer = primarySerializer;
15997
- modelClass = primaryModelClass;
16067
+
16068
+ if (!primaryHasTypeAttribute && hash.type) {
16069
+ // Support polymorphic records in async relationships
16070
+ var modelName = undefined;
16071
+
16072
+ modelName = this.modelNameFromPayloadKey(hash.type);
16073
+
16074
+ if (store._hasModelFor(modelName)) {
16075
+ serializer = store.serializerFor(modelName);
16076
+ modelClass = store.modelFor(modelName);
16077
+ }
15998
16078
  }
16079
+
15999
16080
  return serializer.normalize(modelClass, hash, prop);
16000
16081
  },
16001
16082
 
@@ -16112,7 +16193,6 @@ define("ember-data/serializers/rest", ["exports", "ember", "ember-data/-private/
16112
16193
  }
16113
16194
 
16114
16195
  if (isSingle) {
16115
- /*jshint loopfunc:true*/
16116
16196
  data.forEach(function (resource) {
16117
16197
 
16118
16198
  /*
@@ -16197,7 +16277,6 @@ define("ember-data/serializers/rest", ["exports", "ember", "ember-data/-private/
16197
16277
  var type = store.modelFor(modelName);
16198
16278
  var typeSerializer = store.serializerFor(type.modelName);
16199
16279
 
16200
- /*jshint loopfunc:true*/
16201
16280
  _ember.default.makeArray(payload[prop]).forEach(function (hash) {
16202
16281
  var _typeSerializer$normalize = typeSerializer.normalize(type, hash, prop);
16203
16282
 
@@ -16213,11 +16292,7 @@ define("ember-data/serializers/rest", ["exports", "ember", "ember-data/-private/
16213
16292
  });
16214
16293
  }
16215
16294
 
16216
- if (false) {
16217
- return store.push(documentHash);
16218
- } else {
16219
- store.push(documentHash);
16220
- }
16295
+ store.push(documentHash);
16221
16296
  },
16222
16297
 
16223
16298
  /**
@@ -16530,7 +16605,8 @@ define("ember-data/serializers/rest", ["exports", "ember", "ember-data/-private/
16530
16605
  var isPolymorphic = relationshipMeta.options.polymorphic;
16531
16606
  var typeProperty = this.keyForPolymorphicType(key, relationshipType, 'deserialize');
16532
16607
 
16533
- if (isPolymorphic && resourceHash.hasOwnProperty(typeProperty) && typeof relationshipHash !== 'object') {
16608
+ if (isPolymorphic && resourceHash[typeProperty] !== undefined && typeof relationshipHash !== 'object') {
16609
+
16534
16610
  var type = this.modelNameFromPayloadKey(resourceHash[typeProperty]);
16535
16611
  return {
16536
16612
  id: relationshipHash,
@@ -16555,6 +16631,82 @@ define("ember-data/serializers/rest", ["exports", "ember", "ember-data/-private/
16555
16631
  /**
16556
16632
  @module ember-data
16557
16633
  */
16634
+
16635
+ /**
16636
+ `modelNameFromPayloadType` can be used to change the mapping for a DS model
16637
+ name, taken from the value in the payload.
16638
+ Say your API namespaces the type of a model and returns the following
16639
+ payload for the `post` model, which has a polymorphic `user` relationship:
16640
+ ```javascript
16641
+ // GET /api/posts/1
16642
+ {
16643
+ "post": {
16644
+ "id": 1,
16645
+ "user": 1,
16646
+ "userType: "api::v1::administrator"
16647
+ }
16648
+ }
16649
+ ```
16650
+ By overwriting `modelNameFromPayloadType` you can specify that the
16651
+ `administrator` model should be used:
16652
+ ```app/serializers/application.js
16653
+ import RESTSerializer from "ember-data/serializers/rest";
16654
+ export default RESTSerializer.extend({
16655
+ modelNameFromPayloadType(payloadType) {
16656
+ return payloadType.replace('api::v1::', '');
16657
+ }
16658
+ });
16659
+ ```
16660
+ By default the modelName for a model is its name in dasherized form.
16661
+ Usually, Ember Data can use the correct inflection to do this for you. Most
16662
+ of the time, you won't need to override `modelNameFromPayloadType` for this
16663
+ purpose.
16664
+ Also take a look at
16665
+ [payloadTypeFromModelName](#method_payloadTypeFromModelName) to customize
16666
+ how the type of a record should be serialized.
16667
+ @method modelNameFromPayloadType
16668
+ @public
16669
+ @param {String} payloadType type from payload
16670
+ @return {String} modelName
16671
+ */
16672
+
16673
+ /**
16674
+ `payloadTypeFromModelName` can be used to change the mapping for the type in
16675
+ the payload, taken from the model name.
16676
+ Say your API namespaces the type of a model and expects the following
16677
+ payload when you update the `post` model, which has a polymorphic `user`
16678
+ relationship:
16679
+ ```javascript
16680
+ // POST /api/posts/1
16681
+ {
16682
+ "post": {
16683
+ "id": 1,
16684
+ "user": 1,
16685
+ "userType": "api::v1::administrator"
16686
+ }
16687
+ }
16688
+ ```
16689
+ By overwriting `payloadTypeFromModelName` you can specify that the
16690
+ namespaces model name for the `administrator` should be used:
16691
+ ```app/serializers/application.js
16692
+ import RESTSerializer from "ember-data/serializers/rest";
16693
+ export default RESTSerializer.extend({
16694
+ payloadTypeFromModelName(modelName) {
16695
+ return "api::v1::" + modelName;
16696
+ }
16697
+ });
16698
+ ```
16699
+ By default the payload type is the camelized model name. Usually, Ember
16700
+ Data can use the correct inflection to do this for you. Most of the time,
16701
+ you won't need to override `payloadTypeFromModelName` for this purpose.
16702
+ Also take a look at
16703
+ [modelNameFromPayloadType](#method_modelNameFromPayloadType) to customize
16704
+ how the model name from should be mapped from the payload.
16705
+ @method payloadTypeFromModelName
16706
+ @public
16707
+ @param {String} modelname modelName from the record
16708
+ @return {String} payloadType
16709
+ */
16558
16710
  define('ember-data/setup-container', ['exports', 'ember-data/-private/initializers/store', 'ember-data/-private/initializers/transforms', 'ember-data/-private/initializers/store-injections', 'ember-data/-private/initializers/data-adapter'], function (exports, _emberDataPrivateInitializersStore, _emberDataPrivateInitializersTransforms, _emberDataPrivateInitializersStoreInjections, _emberDataPrivateInitializersDataAdapter) {
16559
16711
  exports.default = setupContainer;
16560
16712
 
@@ -16613,12 +16765,13 @@ define('ember-data/transform', ['exports', 'ember'], function (exports, _ember)
16613
16765
  method must return the serialized value.
16614
16766
  Example
16615
16767
  ```javascript
16616
- serialize: function(deserialized) {
16768
+ serialize: function(deserialized, options) {
16617
16769
  return Ember.isEmpty(deserialized) ? null : Number(deserialized);
16618
16770
  }
16619
16771
  ```
16620
16772
  @method serialize
16621
16773
  @param deserialized The deserialized value
16774
+ @param options hash of options passed to `DS.attr`
16622
16775
  @return The serialized value
16623
16776
  */
16624
16777
  serialize: null,
@@ -16628,19 +16781,20 @@ define('ember-data/transform', ['exports', 'ember'], function (exports, _ember)
16628
16781
  return the deserialized value for the record attribute.
16629
16782
  Example
16630
16783
  ```javascript
16631
- deserialize: function(serialized) {
16784
+ deserialize: function(serialized, options) {
16632
16785
  return empty(serialized) ? null : Number(serialized);
16633
16786
  }
16634
16787
  ```
16635
16788
  @method deserialize
16636
16789
  @param serialized The serialized value
16790
+ @param options hash of options passed to `DS.attr`
16637
16791
  @return The deserialized value
16638
16792
  */
16639
16793
  deserialize: null
16640
16794
  });
16641
16795
  });
16642
16796
  define("ember-data/version", ["exports"], function (exports) {
16643
- exports.default = "2.6.2";
16797
+ exports.default = "2.7.0-beta.1";
16644
16798
  });
16645
16799
  define("ember-inflector", ["exports", "ember", "ember-inflector/lib/system", "ember-inflector/lib/ext/string"], function (exports, _ember, _emberInflectorLibSystem, _emberInflectorLibExtString) {
16646
16800
 
@@ -17035,7 +17189,7 @@ define('ember-inflector/lib/system/inflector', ['exports', 'ember'], function (e
17035
17189
  return word;
17036
17190
  }
17037
17191
 
17038
- for (rule in irregular) {
17192
+ for (rule in this.rules.irregular) {
17039
17193
  if (lowercase.match(rule + "$")) {
17040
17194
  substitution = irregular[rule];
17041
17195
 
@@ -17044,7 +17198,7 @@ define('ember-inflector/lib/system/inflector', ['exports', 'ember'], function (e
17044
17198
  rule = capitalize(rule);
17045
17199
  }
17046
17200
 
17047
- return word.replace(new RegExp(rule, 'i'), substitution);
17201
+ return word.replace(rule, substitution);
17048
17202
  }
17049
17203
  }
17050
17204
 
@@ -17105,6 +17259,15 @@ define('ember', [], function() {
17105
17259
 
17106
17260
 
17107
17261
  require("ember-data");
17262
+ ;(function() {
17263
+ var global = require('ember-data/-private/global').default;
17264
+ var DS = require('ember-data').default;
17265
+ Object.defineProperty(global, 'DS', {
17266
+ get: function() {
17267
+ return DS;
17268
+ }
17269
+ });
17270
+ })();
17108
17271
  })();
17109
17272
  ;(function() {
17110
17273
  function processEmberDataShims() {
@@ -17144,6 +17307,8 @@ require("ember-data");
17144
17307
  processEmberDataShims();
17145
17308
  }
17146
17309
  })();
17310
+ /* eslint no-extra-semi: "off" */
17311
+
17147
17312
  ;(function() {
17148
17313
  /* globals Ember */
17149
17314
  /* globals DS */