ember-data-source 2.5.5 → 2.6.0.beta.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/dist/globals/ember-data.js +1081 -433
- data/dist/globals/ember-data.min.js +5 -5
- data/dist/globals/ember-data.prod.js +856 -660
- data/package.json +23 -17
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 88f79999e62cc652e4bea22f2190d6c5a6b8b92b
|
4
|
+
data.tar.gz: edca8ebda1f72c2beb8ac125854f9c1272724379
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2b5815a20c02f767e0889846f4bf024120f215f602f24ace34827d956f889fec7c9f33bc1adbf7cd4da6d38dcd08ef2c44f75df75e6eae008b743088aecca06d
|
7
|
+
data.tar.gz: 41347e4946c0c1cb976f777fc55e77d32774b452572dbe4c59bfaa7e15c0302161f0e114bfb18317c2265d8b8eb5046e607183d83457a6f7493b52bc630648e3
|
data/dist/globals/ember-data.js
CHANGED
@@ -6,17 +6,44 @@
|
|
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.
|
9
|
+
* @version 2.6.0-beta.1
|
10
10
|
*/
|
11
11
|
|
12
|
-
var define, requireModule, require, requirejs;
|
12
|
+
var loader, define, requireModule, require, requirejs;
|
13
13
|
|
14
|
-
(function() {
|
14
|
+
(function(global) {
|
15
|
+
'use strict';
|
16
|
+
|
17
|
+
// Save off the original values of these globals, so we can restore them if someone asks us to
|
18
|
+
var oldGlobals = {
|
19
|
+
loader: loader,
|
20
|
+
define: define,
|
21
|
+
requireModule: requireModule,
|
22
|
+
require: require,
|
23
|
+
requirejs: requirejs
|
24
|
+
};
|
25
|
+
|
26
|
+
loader = {
|
27
|
+
noConflict: function(aliases) {
|
28
|
+
var oldName, newName;
|
29
|
+
|
30
|
+
for (oldName in aliases) {
|
31
|
+
if (aliases.hasOwnProperty(oldName)) {
|
32
|
+
if (oldGlobals.hasOwnProperty(oldName)) {
|
33
|
+
newName = aliases[oldName];
|
34
|
+
|
35
|
+
global[newName] = global[oldName];
|
36
|
+
global[oldName] = oldGlobals[oldName];
|
37
|
+
}
|
38
|
+
}
|
39
|
+
}
|
40
|
+
}
|
41
|
+
};
|
15
42
|
|
16
43
|
var _isArray;
|
17
44
|
if (!Array.isArray) {
|
18
45
|
_isArray = function (x) {
|
19
|
-
return Object.prototype.toString.call(x) ===
|
46
|
+
return Object.prototype.toString.call(x) === '[object Array]';
|
20
47
|
};
|
21
48
|
} else {
|
22
49
|
_isArray = Array.isArray;
|
@@ -25,33 +52,83 @@ var define, requireModule, require, requirejs;
|
|
25
52
|
var registry = {};
|
26
53
|
var seen = {};
|
27
54
|
var FAILED = false;
|
55
|
+
var LOADED = true;
|
28
56
|
|
29
57
|
var uuid = 0;
|
30
58
|
|
31
|
-
function tryFinally(tryable, finalizer) {
|
32
|
-
try {
|
33
|
-
return tryable();
|
34
|
-
} finally {
|
35
|
-
finalizer();
|
36
|
-
}
|
37
|
-
}
|
38
|
-
|
39
59
|
function unsupportedModule(length) {
|
40
|
-
throw new Error(
|
60
|
+
throw new Error('an unsupported module was defined, expected `define(name, deps, module)` instead got: `' +
|
61
|
+
length + '` arguments to define`');
|
41
62
|
}
|
42
63
|
|
43
64
|
var defaultDeps = ['require', 'exports', 'module'];
|
44
65
|
|
45
|
-
function Module(name, deps, callback
|
46
|
-
this.id
|
47
|
-
this.name
|
48
|
-
this.deps
|
49
|
-
this.
|
50
|
-
this.callback
|
51
|
-
this.state
|
66
|
+
function Module(name, deps, callback) {
|
67
|
+
this.id = uuid++;
|
68
|
+
this.name = name;
|
69
|
+
this.deps = !deps.length && callback.length ? defaultDeps : deps;
|
70
|
+
this.module = { exports: {} };
|
71
|
+
this.callback = callback;
|
72
|
+
this.state = undefined;
|
52
73
|
this._require = undefined;
|
74
|
+
this.finalized = false;
|
75
|
+
this.hasExportsAsDep = false;
|
53
76
|
}
|
54
77
|
|
78
|
+
Module.prototype.makeDefaultExport = function() {
|
79
|
+
var exports = this.module.exports;
|
80
|
+
if (exports !== null &&
|
81
|
+
(typeof exports === 'object' || typeof exports === 'function') &&
|
82
|
+
exports['default'] === undefined) {
|
83
|
+
exports['default'] = exports;
|
84
|
+
}
|
85
|
+
};
|
86
|
+
|
87
|
+
Module.prototype.exports = function(reifiedDeps) {
|
88
|
+
if (this.finalized) {
|
89
|
+
return this.module.exports;
|
90
|
+
} else {
|
91
|
+
if (loader.wrapModules) {
|
92
|
+
this.callback = loader.wrapModules(this.name, this.callback);
|
93
|
+
}
|
94
|
+
var result = this.callback.apply(this, reifiedDeps);
|
95
|
+
if (!(this.hasExportsAsDep && result === undefined)) {
|
96
|
+
this.module.exports = result;
|
97
|
+
}
|
98
|
+
this.makeDefaultExport();
|
99
|
+
this.finalized = true;
|
100
|
+
return this.module.exports;
|
101
|
+
}
|
102
|
+
};
|
103
|
+
|
104
|
+
Module.prototype.unsee = function() {
|
105
|
+
this.finalized = false;
|
106
|
+
this.state = undefined;
|
107
|
+
this.module = { exports: {}};
|
108
|
+
};
|
109
|
+
|
110
|
+
Module.prototype.reify = function() {
|
111
|
+
var deps = this.deps;
|
112
|
+
var length = deps.length;
|
113
|
+
var reified = new Array(length);
|
114
|
+
var dep;
|
115
|
+
|
116
|
+
for (var i = 0, l = length; i < l; i++) {
|
117
|
+
dep = deps[i];
|
118
|
+
if (dep === 'exports') {
|
119
|
+
this.hasExportsAsDep = true;
|
120
|
+
reified[i] = this.module.exports;
|
121
|
+
} else if (dep === 'require') {
|
122
|
+
reified[i] = this.makeRequire();
|
123
|
+
} else if (dep === 'module') {
|
124
|
+
reified[i] = this.module;
|
125
|
+
} else {
|
126
|
+
reified[i] = findModule(resolve(dep, this.name), this.name).module.exports;
|
127
|
+
}
|
128
|
+
}
|
129
|
+
|
130
|
+
return reified;
|
131
|
+
};
|
55
132
|
|
56
133
|
Module.prototype.makeRequire = function() {
|
57
134
|
var name = this.name;
|
@@ -59,7 +136,14 @@ var define, requireModule, require, requirejs;
|
|
59
136
|
return this._require || (this._require = function(dep) {
|
60
137
|
return require(resolve(dep, name));
|
61
138
|
});
|
62
|
-
}
|
139
|
+
};
|
140
|
+
|
141
|
+
Module.prototype.build = function() {
|
142
|
+
if (this.state === FAILED) { return; }
|
143
|
+
this.state = FAILED;
|
144
|
+
this.exports(this.reify());
|
145
|
+
this.state = LOADED;
|
146
|
+
};
|
63
147
|
|
64
148
|
define = function(name, deps, callback) {
|
65
149
|
if (arguments.length < 2) {
|
@@ -87,91 +171,27 @@ var define, requireModule, require, requirejs;
|
|
87
171
|
return new Alias(path);
|
88
172
|
};
|
89
173
|
|
90
|
-
function
|
91
|
-
|
92
|
-
var length = deps.length;
|
93
|
-
var reified = new Array(length);
|
94
|
-
var dep;
|
95
|
-
// TODO: new Module
|
96
|
-
// TODO: seen refactor
|
97
|
-
var module = { };
|
98
|
-
|
99
|
-
for (var i = 0, l = length; i < l; i++) {
|
100
|
-
dep = deps[i];
|
101
|
-
if (dep === 'exports') {
|
102
|
-
module.exports = reified[i] = seen;
|
103
|
-
} else if (dep === 'require') {
|
104
|
-
reified[i] = mod.makeRequire();
|
105
|
-
} else if (dep === 'module') {
|
106
|
-
mod.exports = seen;
|
107
|
-
module = reified[i] = mod;
|
108
|
-
} else {
|
109
|
-
reified[i] = requireFrom(resolve(dep, name), name);
|
110
|
-
}
|
111
|
-
}
|
112
|
-
|
113
|
-
return {
|
114
|
-
deps: reified,
|
115
|
-
module: module
|
116
|
-
};
|
117
|
-
}
|
118
|
-
|
119
|
-
function requireFrom(name, origin) {
|
120
|
-
var mod = registry[name];
|
121
|
-
if (!mod) {
|
122
|
-
throw new Error('Could not find module `' + name + '` imported from `' + origin + '`');
|
123
|
-
}
|
124
|
-
return require(name);
|
174
|
+
function missingModule(name, referrer) {
|
175
|
+
throw new Error('Could not find module `' + name + '` imported from `' + referrer + '`');
|
125
176
|
}
|
126
177
|
|
127
|
-
function missingModule(name) {
|
128
|
-
throw new Error('Could not find module ' + name);
|
129
|
-
}
|
130
178
|
requirejs = require = requireModule = function(name) {
|
131
|
-
|
132
|
-
|
133
|
-
if (mod && mod.callback instanceof Alias) {
|
134
|
-
mod = registry[mod.callback.name];
|
135
|
-
}
|
136
|
-
|
137
|
-
if (!mod) { missingModule(name); }
|
138
|
-
|
139
|
-
if (mod.state !== FAILED &&
|
140
|
-
seen.hasOwnProperty(name)) {
|
141
|
-
return seen[name];
|
142
|
-
}
|
143
|
-
|
144
|
-
var reified;
|
145
|
-
var module;
|
146
|
-
var loaded = false;
|
147
|
-
|
148
|
-
seen[name] = { }; // placeholder for run-time cycles
|
179
|
+
return findModule(name, '(require)').module.exports;
|
180
|
+
};
|
149
181
|
|
150
|
-
|
151
|
-
|
152
|
-
module = mod.callback.apply(this, reified.deps);
|
153
|
-
loaded = true;
|
154
|
-
}, function() {
|
155
|
-
if (!loaded) {
|
156
|
-
mod.state = FAILED;
|
157
|
-
}
|
158
|
-
});
|
182
|
+
function findModule(name, referrer) {
|
183
|
+
var mod = registry[name] || registry[name + '/index'];
|
159
184
|
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
} else {
|
164
|
-
obj = seen[name] = module;
|
185
|
+
while (mod && mod.callback instanceof Alias) {
|
186
|
+
name = mod.callback.name;
|
187
|
+
mod = registry[name];
|
165
188
|
}
|
166
189
|
|
167
|
-
if (
|
168
|
-
(typeof obj === 'object' || typeof obj === 'function') &&
|
169
|
-
obj['default'] === undefined) {
|
170
|
-
obj['default'] = obj;
|
171
|
-
}
|
190
|
+
if (!mod) { missingModule(name, referrer); }
|
172
191
|
|
173
|
-
|
174
|
-
|
192
|
+
mod.build();
|
193
|
+
return mod;
|
194
|
+
}
|
175
195
|
|
176
196
|
function resolve(child, name) {
|
177
197
|
if (child.charAt(0) !== '.') { return child; }
|
@@ -198,14 +218,14 @@ var define, requireModule, require, requirejs;
|
|
198
218
|
|
199
219
|
requirejs.entries = requirejs._eak_seen = registry;
|
200
220
|
requirejs.unsee = function(moduleName) {
|
201
|
-
|
221
|
+
findModule(moduleName, '(unsee)').unsee();
|
202
222
|
};
|
203
223
|
|
204
224
|
requirejs.clear = function() {
|
205
225
|
requirejs.entries = requirejs._eak_seen = registry = {};
|
206
|
-
seen =
|
226
|
+
seen = {};
|
207
227
|
};
|
208
|
-
})();
|
228
|
+
})(this);
|
209
229
|
|
210
230
|
define("ember-data/-private/adapters", ["exports", "ember-data/adapters/json-api", "ember-data/adapters/rest"], function (exports, _emberDataAdaptersJsonApi, _emberDataAdaptersRest) {
|
211
231
|
exports.JSONAPIAdapter = _emberDataAdaptersJsonApi.default;
|
@@ -389,7 +409,7 @@ define('ember-data/-private/adapters/build-url-mixin', ['exports', 'ember'], fun
|
|
389
409
|
},
|
390
410
|
|
391
411
|
/**
|
392
|
-
* @method
|
412
|
+
* @method urlForFindBelongsTo
|
393
413
|
* @param {String} id
|
394
414
|
* @param {String} modelName
|
395
415
|
* @param {DS.Snapshot} snapshot
|
@@ -498,189 +518,6 @@ define('ember-data/-private/adapters/build-url-mixin', ['exports', 'ember'], fun
|
|
498
518
|
}
|
499
519
|
});
|
500
520
|
});
|
501
|
-
define('ember-data/-private/adapters/errors', ['exports', 'ember', 'ember-data/-private/debug'], function (exports, _ember, _emberDataPrivateDebug) {
|
502
|
-
exports.AdapterError = AdapterError;
|
503
|
-
exports.InvalidError = InvalidError;
|
504
|
-
exports.TimeoutError = TimeoutError;
|
505
|
-
exports.AbortError = AbortError;
|
506
|
-
exports.errorsHashToArray = errorsHashToArray;
|
507
|
-
exports.errorsArrayToHash = errorsArrayToHash;
|
508
|
-
|
509
|
-
var EmberError = _ember.default.Error;
|
510
|
-
|
511
|
-
var SOURCE_POINTER_REGEXP = /^\/?data\/(attributes|relationships)\/(.*)/;
|
512
|
-
var SOURCE_POINTER_PRIMARY_REGEXP = /^\/?data/;
|
513
|
-
var PRIMARY_ATTRIBUTE_KEY = 'base';
|
514
|
-
|
515
|
-
/**
|
516
|
-
@class AdapterError
|
517
|
-
@namespace DS
|
518
|
-
*/
|
519
|
-
|
520
|
-
function AdapterError(errors) {
|
521
|
-
var message = arguments.length <= 1 || arguments[1] === undefined ? 'Adapter operation failed' : arguments[1];
|
522
|
-
|
523
|
-
this.isAdapterError = true;
|
524
|
-
EmberError.call(this, message);
|
525
|
-
|
526
|
-
this.errors = errors || [{
|
527
|
-
title: 'Adapter Error',
|
528
|
-
detail: message
|
529
|
-
}];
|
530
|
-
}
|
531
|
-
|
532
|
-
AdapterError.prototype = Object.create(EmberError.prototype);
|
533
|
-
|
534
|
-
/**
|
535
|
-
A `DS.InvalidError` is used by an adapter to signal the external API
|
536
|
-
was unable to process a request because the content was not
|
537
|
-
semantically correct or meaningful per the API. Usually this means a
|
538
|
-
record failed some form of server side validation. When a promise
|
539
|
-
from an adapter is rejected with a `DS.InvalidError` the record will
|
540
|
-
transition to the `invalid` state and the errors will be set to the
|
541
|
-
`errors` property on the record.
|
542
|
-
|
543
|
-
For Ember Data to correctly map errors to their corresponding
|
544
|
-
properties on the model, Ember Data expects each error to be
|
545
|
-
a valid json-api error object with a `source/pointer` that matches
|
546
|
-
the property name. For example if you had a Post model that
|
547
|
-
looked like this.
|
548
|
-
|
549
|
-
```app/models/post.js
|
550
|
-
import DS from 'ember-data';
|
551
|
-
|
552
|
-
export default DS.Model.extend({
|
553
|
-
title: DS.attr('string'),
|
554
|
-
content: DS.attr('string')
|
555
|
-
});
|
556
|
-
```
|
557
|
-
|
558
|
-
To show an error from the server related to the `title` and
|
559
|
-
`content` properties your adapter could return a promise that
|
560
|
-
rejects with a `DS.InvalidError` object that looks like this:
|
561
|
-
|
562
|
-
```app/adapters/post.js
|
563
|
-
import Ember from 'ember';
|
564
|
-
import DS from 'ember-data';
|
565
|
-
|
566
|
-
export default DS.RESTAdapter.extend({
|
567
|
-
updateRecord: function() {
|
568
|
-
// Fictional adapter that always rejects
|
569
|
-
return Ember.RSVP.reject(new DS.InvalidError([
|
570
|
-
{
|
571
|
-
detail: 'Must be unique',
|
572
|
-
source: { pointer: '/data/attributes/title' }
|
573
|
-
},
|
574
|
-
{
|
575
|
-
detail: 'Must not be blank',
|
576
|
-
source: { pointer: '/data/attributes/content'}
|
577
|
-
}
|
578
|
-
]));
|
579
|
-
}
|
580
|
-
});
|
581
|
-
```
|
582
|
-
|
583
|
-
Your backend may use different property names for your records the
|
584
|
-
store will attempt extract and normalize the errors using the
|
585
|
-
serializer's `extractErrors` method before the errors get added to
|
586
|
-
the the model. As a result, it is safe for the `InvalidError` to
|
587
|
-
wrap the error payload unaltered.
|
588
|
-
|
589
|
-
@class InvalidError
|
590
|
-
@namespace DS
|
591
|
-
*/
|
592
|
-
|
593
|
-
function InvalidError(errors) {
|
594
|
-
(0, _emberDataPrivateDebug.assert)('`InvalidError` expects json-api formatted errors array.', _ember.default.isArray(errors || []));
|
595
|
-
AdapterError.call(this, errors, 'The adapter rejected the commit because it was invalid');
|
596
|
-
}
|
597
|
-
|
598
|
-
InvalidError.prototype = Object.create(AdapterError.prototype);
|
599
|
-
|
600
|
-
/**
|
601
|
-
@class TimeoutError
|
602
|
-
@namespace DS
|
603
|
-
*/
|
604
|
-
|
605
|
-
function TimeoutError() {
|
606
|
-
AdapterError.call(this, null, 'The adapter operation timed out');
|
607
|
-
}
|
608
|
-
|
609
|
-
TimeoutError.prototype = Object.create(AdapterError.prototype);
|
610
|
-
|
611
|
-
/**
|
612
|
-
@class AbortError
|
613
|
-
@namespace DS
|
614
|
-
*/
|
615
|
-
|
616
|
-
function AbortError() {
|
617
|
-
AdapterError.call(this, null, 'The adapter operation was aborted');
|
618
|
-
}
|
619
|
-
|
620
|
-
AbortError.prototype = Object.create(AdapterError.prototype);
|
621
|
-
|
622
|
-
/**
|
623
|
-
@method errorsHashToArray
|
624
|
-
@private
|
625
|
-
*/
|
626
|
-
|
627
|
-
function errorsHashToArray(errors) {
|
628
|
-
var out = [];
|
629
|
-
|
630
|
-
if (_ember.default.isPresent(errors)) {
|
631
|
-
Object.keys(errors).forEach(function (key) {
|
632
|
-
var messages = _ember.default.makeArray(errors[key]);
|
633
|
-
for (var i = 0; i < messages.length; i++) {
|
634
|
-
var title = 'Invalid Attribute';
|
635
|
-
var pointer = '/data/attributes/' + key;
|
636
|
-
if (key === PRIMARY_ATTRIBUTE_KEY) {
|
637
|
-
title = 'Invalid Document';
|
638
|
-
pointer = '/data';
|
639
|
-
}
|
640
|
-
out.push({
|
641
|
-
title: title,
|
642
|
-
detail: messages[i],
|
643
|
-
source: {
|
644
|
-
pointer: pointer
|
645
|
-
}
|
646
|
-
});
|
647
|
-
}
|
648
|
-
});
|
649
|
-
}
|
650
|
-
|
651
|
-
return out;
|
652
|
-
}
|
653
|
-
|
654
|
-
/**
|
655
|
-
@method errorsArrayToHash
|
656
|
-
@private
|
657
|
-
*/
|
658
|
-
|
659
|
-
function errorsArrayToHash(errors) {
|
660
|
-
var out = {};
|
661
|
-
|
662
|
-
if (_ember.default.isPresent(errors)) {
|
663
|
-
errors.forEach(function (error) {
|
664
|
-
if (error.source && error.source.pointer) {
|
665
|
-
var key = error.source.pointer.match(SOURCE_POINTER_REGEXP);
|
666
|
-
|
667
|
-
if (key) {
|
668
|
-
key = key[2];
|
669
|
-
} else if (error.source.pointer.search(SOURCE_POINTER_PRIMARY_REGEXP) !== -1) {
|
670
|
-
key = PRIMARY_ATTRIBUTE_KEY;
|
671
|
-
}
|
672
|
-
|
673
|
-
if (key) {
|
674
|
-
out[key] = out[key] || [];
|
675
|
-
out[key].push(error.detail || error.title);
|
676
|
-
}
|
677
|
-
}
|
678
|
-
});
|
679
|
-
}
|
680
|
-
|
681
|
-
return out;
|
682
|
-
}
|
683
|
-
});
|
684
521
|
define('ember-data/-private/core', ['exports', 'ember', 'ember-data/version'], function (exports, _ember, _emberDataVersion) {
|
685
522
|
|
686
523
|
/**
|
@@ -1393,7 +1230,11 @@ define("ember-data/-private/system/many-array", ["exports", "ember", "ember-data
|
|
1393
1230
|
|
1394
1231
|
//a hack for not removing new records
|
1395
1232
|
//TODO remove once we have proper diffing
|
1396
|
-
var newRecords = this.currentState.filter(
|
1233
|
+
var newRecords = this.currentState.filter(
|
1234
|
+
// only add new records which are not yet in the canonical state of this
|
1235
|
+
// relationship (a new record can be in the canonical state if it has
|
1236
|
+
// been 'acknowleged' to be in the relationship via a store.push)
|
1237
|
+
function (internalModel) {
|
1397
1238
|
return internalModel.isNew() && toSet.indexOf(internalModel) === -1;
|
1398
1239
|
});
|
1399
1240
|
toSet = toSet.concat(newRecords);
|
@@ -2765,7 +2606,7 @@ define("ember-data/-private/system/model/internal-model", ["exports", "ember", "
|
|
2765
2606
|
},
|
2766
2607
|
|
2767
2608
|
_preloadHasMany: function (key, preloadValue, type) {
|
2768
|
-
(0, _emberDataPrivateDebug.assert)("You need to pass in an array to set a hasMany property on a record",
|
2609
|
+
(0, _emberDataPrivateDebug.assert)("You need to pass in an array to set a hasMany property on a record", Array.isArray(preloadValue));
|
2769
2610
|
var recordsToSet = new Array(preloadValue.length);
|
2770
2611
|
|
2771
2612
|
for (var i = 0; i < preloadValue.length; i++) {
|
@@ -3015,7 +2856,7 @@ define("ember-data/-private/system/model/internal-model", ["exports", "ember", "
|
|
3015
2856
|
}
|
3016
2857
|
};
|
3017
2858
|
|
3018
|
-
if (
|
2859
|
+
if ((0, _emberDataPrivateFeatures.default)('ds-references')) {
|
3019
2860
|
|
3020
2861
|
InternalModel.prototype.referenceFor = function (type, name) {
|
3021
2862
|
var reference = this.references[name];
|
@@ -3792,7 +3633,7 @@ define("ember-data/-private/system/model/model", ["exports", "ember", "ember-dat
|
|
3792
3633
|
});
|
3793
3634
|
}
|
3794
3635
|
|
3795
|
-
if (
|
3636
|
+
if ((0, _emberDataPrivateFeatures.default)("ds-references")) {
|
3796
3637
|
|
3797
3638
|
Model.reopen({
|
3798
3639
|
|
@@ -5228,7 +5069,7 @@ define("ember-data/-private/system/record-arrays", ["exports", "ember-data/-priv
|
|
5228
5069
|
/**
|
5229
5070
|
@module ember-data
|
5230
5071
|
*/
|
5231
|
-
define("ember-data/-private/system/record-arrays/adapter-populated-record-array", ["exports", "ember", "ember-data/-private/system/record-arrays/record-array", "ember-data/-private/system/clone-null"], function (exports, _ember, _emberDataPrivateSystemRecordArraysRecordArray, _emberDataPrivateSystemCloneNull) {
|
5072
|
+
define("ember-data/-private/system/record-arrays/adapter-populated-record-array", ["exports", "ember", "ember-data/-private/system/record-arrays/record-array", "ember-data/-private/system/clone-null", "ember-data/-private/features"], function (exports, _ember, _emberDataPrivateSystemRecordArraysRecordArray, _emberDataPrivateSystemCloneNull, _emberDataPrivateFeatures) {
|
5232
5073
|
|
5233
5074
|
/**
|
5234
5075
|
@module ember-data
|
@@ -5280,6 +5121,10 @@ define("ember-data/-private/system/record-arrays/adapter-populated-record-array"
|
|
5280
5121
|
meta: (0, _emberDataPrivateSystemCloneNull.default)(payload.meta)
|
5281
5122
|
});
|
5282
5123
|
|
5124
|
+
if ((0, _emberDataPrivateFeatures.default)('ds-links-in-record-array')) {
|
5125
|
+
this.set('links', (0, _emberDataPrivateSystemCloneNull.default)(payload.links));
|
5126
|
+
}
|
5127
|
+
|
5283
5128
|
internalModels.forEach(function (record) {
|
5284
5129
|
_this.manager.recordArraysForRecord(record).add(_this);
|
5285
5130
|
});
|
@@ -6930,9 +6775,17 @@ define("ember-data/-private/system/relationships/state/create", ["exports", "emb
|
|
6930
6775
|
|
6931
6776
|
var get = _ember.default.get;
|
6932
6777
|
|
6778
|
+
function shouldFindInverse(relationshipMeta) {
|
6779
|
+
var options = relationshipMeta.options;
|
6780
|
+
return !(options && options.inverse === null);
|
6781
|
+
}
|
6782
|
+
|
6933
6783
|
function createRelationshipFor(record, relationshipMeta, store) {
|
6934
|
-
var inverseKey;
|
6935
|
-
var inverse =
|
6784
|
+
var inverseKey = undefined;
|
6785
|
+
var inverse = null;
|
6786
|
+
if (shouldFindInverse(relationshipMeta)) {
|
6787
|
+
inverse = record.type.inverseFor(relationshipMeta.key, store);
|
6788
|
+
}
|
6936
6789
|
|
6937
6790
|
if (inverse) {
|
6938
6791
|
inverseKey = inverse.name;
|
@@ -7510,7 +7363,7 @@ define('ember-data/-private/system/snapshot-record-array', ['exports', 'ember-da
|
|
7510
7363
|
*/
|
7511
7364
|
this.adapterOptions = options.adapterOptions;
|
7512
7365
|
|
7513
|
-
if (
|
7366
|
+
if ((0, _emberDataPrivateFeatures.default)('ds-finder-include')) {
|
7514
7367
|
this.include = options.include;
|
7515
7368
|
}
|
7516
7369
|
}
|
@@ -7575,7 +7428,7 @@ define('ember-data/-private/system/snapshot', ['exports', 'ember', 'ember-data/-
|
|
7575
7428
|
*/
|
7576
7429
|
this.adapterOptions = options.adapterOptions;
|
7577
7430
|
|
7578
|
-
if (
|
7431
|
+
if ((0, _emberDataPrivateFeatures.default)('ds-finder-include')) {
|
7579
7432
|
this.include = options.include;
|
7580
7433
|
}
|
7581
7434
|
|
@@ -7861,13 +7714,12 @@ define('ember-data/-private/system/snapshot', ['exports', 'ember', 'ember-data/-
|
|
7861
7714
|
/**
|
7862
7715
|
@module ember-data
|
7863
7716
|
*/
|
7864
|
-
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
|
7717
|
+
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) {
|
7865
7718
|
var badIdFormatAssertion = '`id` has to be non-empty string or number';
|
7866
7719
|
|
7867
7720
|
exports.badIdFormatAssertion = badIdFormatAssertion;
|
7868
7721
|
var Backburner = _ember.default._Backburner;
|
7869
7722
|
var Map = _ember.default.Map;
|
7870
|
-
var isArray = Array.isArray || _ember.default.isArray;
|
7871
7723
|
|
7872
7724
|
//Get the materialized model from the internalModel/promise that returns
|
7873
7725
|
//an internal model and return it in a promiseObject. Useful for returning
|
@@ -8751,9 +8603,6 @@ define('ember-data/-private/system/store', ['exports', 'ember', 'ember-data/mode
|
|
8751
8603
|
|
8752
8604
|
(0, _emberDataPrivateDebug.assert)("You tried to load all records but you have no adapter (for " + typeClass + ")", adapter);
|
8753
8605
|
(0, _emberDataPrivateDebug.assert)("You tried to load all records but your adapter does not implement `findAll`", typeof adapter.findAll === 'function');
|
8754
|
-
|
8755
|
-
set(array, 'isUpdating', true);
|
8756
|
-
|
8757
8606
|
if (options.reload) {
|
8758
8607
|
return (0, _emberDataPrivateSystemPromiseProxies.promiseArray)((0, _emberDataPrivateSystemStoreFinders._findAll)(adapter, this, typeClass, sinceToken, options));
|
8759
8608
|
}
|
@@ -9353,7 +9202,7 @@ define('ember-data/-private/system/store', ['exports', 'ember', 'ember-data/mode
|
|
9353
9202
|
}
|
9354
9203
|
}
|
9355
9204
|
|
9356
|
-
if (isArray(data.data)) {
|
9205
|
+
if (Array.isArray(data.data)) {
|
9357
9206
|
length = data.data.length;
|
9358
9207
|
var internalModels = new Array(length);
|
9359
9208
|
for (i = 0; i < length; i++) {
|
@@ -9384,18 +9233,30 @@ define('ember-data/-private/system/store', ['exports', 'ember', 'ember-data/mode
|
|
9384
9233
|
(0, _emberDataPrivateDebug.assert)('You must include an \'id\' for ' + modelName + ' in an object passed to \'push\'', data.id != null && data.id !== '');
|
9385
9234
|
(0, _emberDataPrivateDebug.assert)('You tried to push data with a type \'' + modelName + '\' but no model could be found with that name.', this._hasModelFor(modelName));
|
9386
9235
|
|
9387
|
-
|
9236
|
+
(0, _emberDataPrivateDebug.runInDebug)(function () {
|
9237
|
+
// If Ember.ENV.DS_WARN_ON_UNKNOWN_KEYS is set to true and the payload
|
9238
|
+
// contains unknown attributes or relationships, log a warning.
|
9388
9239
|
|
9389
|
-
|
9390
|
-
|
9240
|
+
if (_ember.default.ENV.DS_WARN_ON_UNKNOWN_KEYS) {
|
9241
|
+
(function () {
|
9242
|
+
var type = _this2.modelFor(modelName);
|
9391
9243
|
|
9392
|
-
|
9393
|
-
|
9394
|
-
|
9395
|
-
|
9396
|
-
|
9397
|
-
|
9398
|
-
|
9244
|
+
// Check unknown attributes
|
9245
|
+
var unknownAttributes = Object.keys(data.attributes || {}).filter(function (key) {
|
9246
|
+
return !get(type, 'fields').has(key);
|
9247
|
+
});
|
9248
|
+
var unknownAttributesMessage = 'The payload for \'' + type.modelName + '\' contains these unknown attributes: ' + unknownAttributes + '. Make sure they\'ve been defined in your model.';
|
9249
|
+
(0, _emberDataPrivateDebug.warn)(unknownAttributesMessage, unknownAttributes.length === 0, { id: 'ds.store.unknown-keys-in-payload' });
|
9250
|
+
|
9251
|
+
// Check unknown relationships
|
9252
|
+
var unknownRelationships = Object.keys(data.relationships || {}).filter(function (key) {
|
9253
|
+
return !get(type, 'fields').has(key);
|
9254
|
+
});
|
9255
|
+
var unknownRelationshipsMessage = 'The payload for \'' + type.modelName + '\' contains these unknown relationships: ' + unknownRelationships + '. Make sure they\'ve been defined in your model.';
|
9256
|
+
(0, _emberDataPrivateDebug.warn)(unknownRelationshipsMessage, unknownRelationships.length === 0, { id: 'ds.store.unknown-keys-in-payload' });
|
9257
|
+
})();
|
9258
|
+
}
|
9259
|
+
});
|
9399
9260
|
|
9400
9261
|
// Actually load the record into the store.
|
9401
9262
|
var internalModel = this._load(data);
|
@@ -9470,7 +9331,7 @@ define('ember-data/-private/system/store', ['exports', 'ember', 'ember-data/mode
|
|
9470
9331
|
(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');
|
9471
9332
|
serializer = this.serializerFor(modelName);
|
9472
9333
|
}
|
9473
|
-
if (
|
9334
|
+
if ((0, _emberDataPrivateFeatures.default)('ds-pushpayload-return')) {
|
9474
9335
|
return this._adapterRun(function () {
|
9475
9336
|
return serializer.pushPayload(_this3, payload);
|
9476
9337
|
});
|
@@ -9489,7 +9350,7 @@ define('ember-data/-private/system/store', ['exports', 'ember', 'ember-data/mode
|
|
9489
9350
|
socket.on('message', function(message) {
|
9490
9351
|
var modelName = message.model;
|
9491
9352
|
var data = message.data;
|
9492
|
-
store.push(
|
9353
|
+
store.push(store.normalize(modelName, data));
|
9493
9354
|
});
|
9494
9355
|
```
|
9495
9356
|
@method normalize
|
@@ -9671,7 +9532,7 @@ define('ember-data/-private/system/store', ['exports', 'ember', 'ember-data/mode
|
|
9671
9532
|
|
9672
9533
|
});
|
9673
9534
|
|
9674
|
-
if (
|
9535
|
+
if ((0, _emberDataPrivateFeatures.default)("ds-references")) {
|
9675
9536
|
|
9676
9537
|
Store.reopen({
|
9677
9538
|
/**
|
@@ -9712,7 +9573,7 @@ define('ember-data/-private/system/store', ['exports', 'ember', 'ember-data/mode
|
|
9712
9573
|
return;
|
9713
9574
|
}
|
9714
9575
|
|
9715
|
-
(0, _emberDataPrivateDebug.assert)('A ' + relationship.parentType + ' record was pushed into the store with the value of ' + key + ' being ' + _ember.default.inspect(id) + ', but ' + key + ' is a belongsTo relationship so the value must not be an array. You should probably check your data payload or serializer.', !isArray(id));
|
9576
|
+
(0, _emberDataPrivateDebug.assert)('A ' + relationship.parentType + ' record was pushed into the store with the value of ' + key + ' being ' + _ember.default.inspect(id) + ', but ' + key + ' is a belongsTo relationship so the value must not be an array. You should probably check your data payload or serializer.', !Array.isArray(id));
|
9716
9577
|
|
9717
9578
|
//TODO:Better asserts
|
9718
9579
|
return store._internalModelForId(id.type, id.id);
|
@@ -9723,7 +9584,7 @@ define('ember-data/-private/system/store', ['exports', 'ember', 'ember-data/mode
|
|
9723
9584
|
return;
|
9724
9585
|
}
|
9725
9586
|
|
9726
|
-
(0, _emberDataPrivateDebug.assert)('A ' + relationship.parentType + ' record was pushed into the store with the value of ' + key + ' being \'' + _ember.default.inspect(ids) + '\', but ' + key + ' is a hasMany relationship so the value must be an array. You should probably check your data payload or serializer.', isArray(ids));
|
9587
|
+
(0, _emberDataPrivateDebug.assert)('A ' + relationship.parentType + ' record was pushed into the store with the value of ' + key + ' being \'' + _ember.default.inspect(ids) + '\', but ' + key + ' is a hasMany relationship so the value must be an array. You should probably check your data payload or serializer.', Array.isArray(ids));
|
9727
9588
|
var _ids = new Array(ids.length);
|
9728
9589
|
|
9729
9590
|
for (var i = 0; i < ids.length; i++) {
|
@@ -9768,7 +9629,7 @@ define('ember-data/-private/system/store', ['exports', 'ember', 'ember-data/mode
|
|
9768
9629
|
|
9769
9630
|
return internalModel;
|
9770
9631
|
}, function (error) {
|
9771
|
-
if (error instanceof
|
9632
|
+
if (error instanceof _emberDataAdaptersErrors.InvalidError) {
|
9772
9633
|
var errors = serializer.extractErrors(store, typeClass, error, snapshot.id);
|
9773
9634
|
store.recordWasInvalid(internalModel, errors);
|
9774
9635
|
} else {
|
@@ -9973,7 +9834,7 @@ define("ember-data/-private/system/store/finders", ["exports", "ember", "ember-d
|
|
9973
9834
|
var Promise = _ember.default.RSVP.Promise;
|
9974
9835
|
|
9975
9836
|
function payloadIsNotBlank(adapterPayload) {
|
9976
|
-
if (
|
9837
|
+
if (Array.isArray(adapterPayload)) {
|
9977
9838
|
return true;
|
9978
9839
|
} else {
|
9979
9840
|
return Object.keys(adapterPayload || {}).length;
|
@@ -9990,7 +9851,7 @@ define("ember-data/-private/system/store/finders", ["exports", "ember", "ember-d
|
|
9990
9851
|
promise = (0, _emberDataPrivateSystemStoreCommon._guard)(promise, (0, _emberDataPrivateSystemStoreCommon._bind)(_emberDataPrivateSystemStoreCommon._objectIsAlive, store));
|
9991
9852
|
|
9992
9853
|
return promise.then(function (adapterPayload) {
|
9993
|
-
(0, _emberDataPrivateDebug.assert)("You made a `findRecord` request for a " + typeClass.
|
9854
|
+
(0, _emberDataPrivateDebug.assert)("You made a `findRecord` request for a " + typeClass.modelName + " with id " + id + ", but the adapter's response did not have any data", payloadIsNotBlank(adapterPayload));
|
9994
9855
|
return store._adapterRun(function () {
|
9995
9856
|
var payload = (0, _emberDataPrivateSystemStoreSerializerResponse.normalizeResponseHelper)(serializer, store, typeClass, adapterPayload, id, 'findRecord');
|
9996
9857
|
(0, _emberDataPrivateDebug.assert)('Ember Data expected the primary data returned from a `findRecord` response to be an object but instead it found an array.', !Array.isArray(payload.data));
|
@@ -10022,7 +9883,7 @@ define("ember-data/-private/system/store/finders", ["exports", "ember", "ember-d
|
|
10022
9883
|
promise = (0, _emberDataPrivateSystemStoreCommon._guard)(promise, (0, _emberDataPrivateSystemStoreCommon._bind)(_emberDataPrivateSystemStoreCommon._objectIsAlive, store));
|
10023
9884
|
|
10024
9885
|
return promise.then(function (adapterPayload) {
|
10025
|
-
(0, _emberDataPrivateDebug.assert)("You made a `findMany` request for
|
9886
|
+
(0, _emberDataPrivateDebug.assert)("You made a `findMany` request for " + typeClass.modelName + " records with ids " + ids + ", but the adapter's response did not have any data", payloadIsNotBlank(adapterPayload));
|
10026
9887
|
return store._adapterRun(function () {
|
10027
9888
|
var payload = (0, _emberDataPrivateSystemStoreSerializerResponse.normalizeResponseHelper)(serializer, store, typeClass, adapterPayload, null, 'findMany');
|
10028
9889
|
//TODO Optimize, no need to materialize here
|
@@ -10102,7 +9963,7 @@ define("ember-data/-private/system/store/finders", ["exports", "ember", "ember-d
|
|
10102
9963
|
promise = (0, _emberDataPrivateSystemStoreCommon._guard)(promise, (0, _emberDataPrivateSystemStoreCommon._bind)(_emberDataPrivateSystemStoreCommon._objectIsAlive, store));
|
10103
9964
|
|
10104
9965
|
return promise.then(function (adapterPayload) {
|
10105
|
-
(0, _emberDataPrivateDebug.assert)("You made a `findAll` request for " + typeClass.
|
9966
|
+
(0, _emberDataPrivateDebug.assert)("You made a `findAll` request for " + typeClass.modelName + " records, but the adapter's response did not have any data", payloadIsNotBlank(adapterPayload));
|
10106
9967
|
store._adapterRun(function () {
|
10107
9968
|
var payload = (0, _emberDataPrivateSystemStoreSerializerResponse.normalizeResponseHelper)(serializer, store, typeClass, adapterPayload, null, 'findAll');
|
10108
9969
|
//TODO Optimize
|
@@ -10132,7 +9993,7 @@ define("ember-data/-private/system/store/finders", ["exports", "ember", "ember-d
|
|
10132
9993
|
records = store.push(payload);
|
10133
9994
|
});
|
10134
9995
|
|
10135
|
-
(0, _emberDataPrivateDebug.assert)('The response to store.query is expected to be an array but it was a single record. Please wrap your response in an array or use `store.queryRecord` to query for a single record.',
|
9996
|
+
(0, _emberDataPrivateDebug.assert)('The response to store.query is expected to be an array but it was a single record. Please wrap your response in an array or use `store.queryRecord` to query for a single record.', Array.isArray(records));
|
10136
9997
|
recordArray.loadRecords(records, payload);
|
10137
9998
|
return recordArray;
|
10138
9999
|
}, null, "DS: Extract payload of query " + typeClass);
|
@@ -10148,7 +10009,7 @@ define("ember-data/-private/system/store/finders", ["exports", "ember", "ember-d
|
|
10148
10009
|
promise = (0, _emberDataPrivateSystemStoreCommon._guard)(promise, (0, _emberDataPrivateSystemStoreCommon._bind)(_emberDataPrivateSystemStoreCommon._objectIsAlive, store));
|
10149
10010
|
|
10150
10011
|
return promise.then(function (adapterPayload) {
|
10151
|
-
(0, _emberDataPrivateDebug.assert)("You made a `queryRecord` request for " + typeClass.
|
10012
|
+
(0, _emberDataPrivateDebug.assert)("You made a `queryRecord` request for a " + typeClass.modelName + ", but the adapter's response did not have any data", payloadIsNotBlank(adapterPayload));
|
10152
10013
|
var record;
|
10153
10014
|
store._adapterRun(function () {
|
10154
10015
|
var payload = (0, _emberDataPrivateSystemStoreSerializerResponse.normalizeResponseHelper)(serializer, store, typeClass, adapterPayload, null, 'queryRecord');
|
@@ -10188,7 +10049,7 @@ define('ember-data/-private/system/store/serializer-response', ['exports', 'embe
|
|
10188
10049
|
}
|
10189
10050
|
}
|
10190
10051
|
if ('data' in doc) {
|
10191
|
-
if (!(doc.data === null ||
|
10052
|
+
if (!(doc.data === null || Array.isArray(doc.data) || typeof doc.data === 'object')) {
|
10192
10053
|
errors.push('data must be null, an object, or an array');
|
10193
10054
|
}
|
10194
10055
|
}
|
@@ -10198,7 +10059,7 @@ define('ember-data/-private/system/store/serializer-response', ['exports', 'embe
|
|
10198
10059
|
}
|
10199
10060
|
}
|
10200
10061
|
if ('errors' in doc) {
|
10201
|
-
if (!
|
10062
|
+
if (!Array.isArray(doc.errors)) {
|
10202
10063
|
errors.push('errors must be an array');
|
10203
10064
|
}
|
10204
10065
|
}
|
@@ -10274,7 +10135,8 @@ define("ember-data/-private/transforms", ["exports", "ember-data/transform", "em
|
|
10274
10135
|
exports.StringTransform = _emberDataPrivateTransformsString.default;
|
10275
10136
|
exports.BooleanTransform = _emberDataPrivateTransformsBoolean.default;
|
10276
10137
|
});
|
10277
|
-
define(
|
10138
|
+
define('ember-data/-private/transforms/boolean', ['exports', 'ember', 'ember-data/transform', 'ember-data/-private/features'], function (exports, _ember, _emberDataTransform, _emberDataPrivateFeatures) {
|
10139
|
+
var isNone = _ember.default.isNone;
|
10278
10140
|
|
10279
10141
|
/**
|
10280
10142
|
The `DS.BooleanTransform` class is used to serialize and deserialize
|
@@ -10299,9 +10161,17 @@ define("ember-data/-private/transforms/boolean", ["exports", "ember-data/transfo
|
|
10299
10161
|
@namespace DS
|
10300
10162
|
*/
|
10301
10163
|
exports.default = _emberDataTransform.default.extend({
|
10302
|
-
deserialize: function (serialized) {
|
10164
|
+
deserialize: function (serialized, options) {
|
10303
10165
|
var type = typeof serialized;
|
10304
10166
|
|
10167
|
+
if ((0, _emberDataPrivateFeatures.default)('ds-transform-pass-options')) {
|
10168
|
+
if ((0, _emberDataPrivateFeatures.default)('ds-boolean-transform-allow-null')) {
|
10169
|
+
if (isNone(serialized) && options.allowNull === true) {
|
10170
|
+
return null;
|
10171
|
+
}
|
10172
|
+
}
|
10173
|
+
}
|
10174
|
+
|
10305
10175
|
if (type === "boolean") {
|
10306
10176
|
return serialized;
|
10307
10177
|
} else if (type === "string") {
|
@@ -10313,7 +10183,15 @@ define("ember-data/-private/transforms/boolean", ["exports", "ember-data/transfo
|
|
10313
10183
|
}
|
10314
10184
|
},
|
10315
10185
|
|
10316
|
-
serialize: function (deserialized) {
|
10186
|
+
serialize: function (deserialized, options) {
|
10187
|
+
if ((0, _emberDataPrivateFeatures.default)('ds-transform-pass-options')) {
|
10188
|
+
if ((0, _emberDataPrivateFeatures.default)('ds-boolean-transform-allow-null')) {
|
10189
|
+
if (isNone(deserialized) && options.allowNull === true) {
|
10190
|
+
return null;
|
10191
|
+
}
|
10192
|
+
}
|
10193
|
+
}
|
10194
|
+
|
10317
10195
|
return Boolean(deserialized);
|
10318
10196
|
}
|
10319
10197
|
});
|
@@ -10621,9 +10499,9 @@ define('ember-data/adapter', ['exports', 'ember'], function (exports, _ember) {
|
|
10621
10499
|
/**
|
10622
10500
|
The `findRecord()` method is invoked when the store is asked for a record that
|
10623
10501
|
has not previously been loaded. In response to `findRecord()` being called, you
|
10624
|
-
should query your persistence layer for a record with the given ID.
|
10625
|
-
|
10626
|
-
|
10502
|
+
should query your persistence layer for a record with the given ID. The `findRecord`
|
10503
|
+
method should return a promise that will resolve to a JavaScript object that will be
|
10504
|
+
normalized by the serializer.
|
10627
10505
|
Here is an example `findRecord` implementation:
|
10628
10506
|
```app/adapters/application.js
|
10629
10507
|
import DS from 'ember-data';
|
@@ -11009,7 +10887,242 @@ define('ember-data/adapter', ['exports', 'ember'], function (exports, _ember) {
|
|
11009
10887
|
/**
|
11010
10888
|
@module ember-data
|
11011
10889
|
*/
|
11012
|
-
define('ember-data/adapters/
|
10890
|
+
define('ember-data/adapters/errors', ['exports', 'ember', 'ember-data/-private/debug', 'ember-data/-private/features'], function (exports, _ember, _emberDataPrivateDebug, _emberDataPrivateFeatures) {
|
10891
|
+
exports.AdapterError = AdapterError;
|
10892
|
+
exports.errorsHashToArray = errorsHashToArray;
|
10893
|
+
exports.errorsArrayToHash = errorsArrayToHash;
|
10894
|
+
|
10895
|
+
var EmberError = _ember.default.Error;
|
10896
|
+
|
10897
|
+
var SOURCE_POINTER_REGEXP = /^\/?data\/(attributes|relationships)\/(.*)/;
|
10898
|
+
var SOURCE_POINTER_PRIMARY_REGEXP = /^\/?data/;
|
10899
|
+
var PRIMARY_ATTRIBUTE_KEY = 'base';
|
10900
|
+
|
10901
|
+
/**
|
10902
|
+
@class AdapterError
|
10903
|
+
@namespace DS
|
10904
|
+
*/
|
10905
|
+
|
10906
|
+
function AdapterError(errors) {
|
10907
|
+
var message = arguments.length <= 1 || arguments[1] === undefined ? 'Adapter operation failed' : arguments[1];
|
10908
|
+
|
10909
|
+
this.isAdapterError = true;
|
10910
|
+
EmberError.call(this, message);
|
10911
|
+
|
10912
|
+
this.errors = errors || [{
|
10913
|
+
title: 'Adapter Error',
|
10914
|
+
detail: message
|
10915
|
+
}];
|
10916
|
+
}
|
10917
|
+
|
10918
|
+
var extendedErrorsEnabled = false;
|
10919
|
+
if ((0, _emberDataPrivateFeatures.default)('ds-extended-errors')) {
|
10920
|
+
extendedErrorsEnabled = true;
|
10921
|
+
}
|
10922
|
+
|
10923
|
+
function extendFn(ErrorClass) {
|
10924
|
+
return function () {
|
10925
|
+
var _ref = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];
|
10926
|
+
|
10927
|
+
var defaultMessage = _ref.message;
|
10928
|
+
|
10929
|
+
return extend(ErrorClass, defaultMessage);
|
10930
|
+
};
|
10931
|
+
}
|
10932
|
+
|
10933
|
+
function extend(ParentErrorClass, defaultMessage) {
|
10934
|
+
var ErrorClass = function (errors, message) {
|
10935
|
+
(0, _emberDataPrivateDebug.assert)('`AdapterError` expects json-api formatted errors array.', Array.isArray(errors || []));
|
10936
|
+
ParentErrorClass.call(this, errors, message || defaultMessage);
|
10937
|
+
};
|
10938
|
+
ErrorClass.prototype = Object.create(ParentErrorClass.prototype);
|
10939
|
+
|
10940
|
+
if (extendedErrorsEnabled) {
|
10941
|
+
ErrorClass.extend = extendFn(ErrorClass);
|
10942
|
+
}
|
10943
|
+
|
10944
|
+
return ErrorClass;
|
10945
|
+
}
|
10946
|
+
|
10947
|
+
AdapterError.prototype = Object.create(EmberError.prototype);
|
10948
|
+
|
10949
|
+
if (extendedErrorsEnabled) {
|
10950
|
+
AdapterError.extend = extendFn(AdapterError);
|
10951
|
+
}
|
10952
|
+
|
10953
|
+
/**
|
10954
|
+
A `DS.InvalidError` is used by an adapter to signal the external API
|
10955
|
+
was unable to process a request because the content was not
|
10956
|
+
semantically correct or meaningful per the API. Usually this means a
|
10957
|
+
record failed some form of server side validation. When a promise
|
10958
|
+
from an adapter is rejected with a `DS.InvalidError` the record will
|
10959
|
+
transition to the `invalid` state and the errors will be set to the
|
10960
|
+
`errors` property on the record.
|
10961
|
+
|
10962
|
+
For Ember Data to correctly map errors to their corresponding
|
10963
|
+
properties on the model, Ember Data expects each error to be
|
10964
|
+
a valid json-api error object with a `source/pointer` that matches
|
10965
|
+
the property name. For example if you had a Post model that
|
10966
|
+
looked like this.
|
10967
|
+
|
10968
|
+
```app/models/post.js
|
10969
|
+
import DS from 'ember-data';
|
10970
|
+
|
10971
|
+
export default DS.Model.extend({
|
10972
|
+
title: DS.attr('string'),
|
10973
|
+
content: DS.attr('string')
|
10974
|
+
});
|
10975
|
+
```
|
10976
|
+
|
10977
|
+
To show an error from the server related to the `title` and
|
10978
|
+
`content` properties your adapter could return a promise that
|
10979
|
+
rejects with a `DS.InvalidError` object that looks like this:
|
10980
|
+
|
10981
|
+
```app/adapters/post.js
|
10982
|
+
import Ember from 'ember';
|
10983
|
+
import DS from 'ember-data';
|
10984
|
+
|
10985
|
+
export default DS.RESTAdapter.extend({
|
10986
|
+
updateRecord: function() {
|
10987
|
+
// Fictional adapter that always rejects
|
10988
|
+
return Ember.RSVP.reject(new DS.InvalidError([
|
10989
|
+
{
|
10990
|
+
detail: 'Must be unique',
|
10991
|
+
source: { pointer: '/data/attributes/title' }
|
10992
|
+
},
|
10993
|
+
{
|
10994
|
+
detail: 'Must not be blank',
|
10995
|
+
source: { pointer: '/data/attributes/content'}
|
10996
|
+
}
|
10997
|
+
]));
|
10998
|
+
}
|
10999
|
+
});
|
11000
|
+
```
|
11001
|
+
|
11002
|
+
Your backend may use different property names for your records the
|
11003
|
+
store will attempt extract and normalize the errors using the
|
11004
|
+
serializer's `extractErrors` method before the errors get added to
|
11005
|
+
the the model. As a result, it is safe for the `InvalidError` to
|
11006
|
+
wrap the error payload unaltered.
|
11007
|
+
|
11008
|
+
@class InvalidError
|
11009
|
+
@namespace DS
|
11010
|
+
*/
|
11011
|
+
var InvalidError = extend(AdapterError, 'The adapter rejected the commit because it was invalid');
|
11012
|
+
|
11013
|
+
exports.InvalidError = InvalidError;
|
11014
|
+
/**
|
11015
|
+
@class TimeoutError
|
11016
|
+
@namespace DS
|
11017
|
+
*/
|
11018
|
+
var TimeoutError = extend(AdapterError, 'The adapter operation timed out');
|
11019
|
+
|
11020
|
+
exports.TimeoutError = TimeoutError;
|
11021
|
+
/**
|
11022
|
+
@class AbortError
|
11023
|
+
@namespace DS
|
11024
|
+
*/
|
11025
|
+
var AbortError = extend(AdapterError, 'The adapter operation was aborted');
|
11026
|
+
|
11027
|
+
exports.AbortError = AbortError;
|
11028
|
+
/**
|
11029
|
+
@class UnauthorizedError
|
11030
|
+
@namespace DS
|
11031
|
+
*/
|
11032
|
+
var UnauthorizedError = extendedErrorsEnabled ? extend(AdapterError, 'The adapter operation is unauthorized') : null;
|
11033
|
+
|
11034
|
+
exports.UnauthorizedError = UnauthorizedError;
|
11035
|
+
/**
|
11036
|
+
@class ForbiddenError
|
11037
|
+
@namespace DS
|
11038
|
+
*/
|
11039
|
+
var ForbiddenError = extendedErrorsEnabled ? extend(AdapterError, 'The adapter operation is forbidden') : null;
|
11040
|
+
|
11041
|
+
exports.ForbiddenError = ForbiddenError;
|
11042
|
+
/**
|
11043
|
+
@class NotFoundError
|
11044
|
+
@namespace DS
|
11045
|
+
*/
|
11046
|
+
var NotFoundError = extendedErrorsEnabled ? extend(AdapterError, 'The adapter could not find the resource') : null;
|
11047
|
+
|
11048
|
+
exports.NotFoundError = NotFoundError;
|
11049
|
+
/**
|
11050
|
+
@class ConflictError
|
11051
|
+
@namespace DS
|
11052
|
+
*/
|
11053
|
+
var ConflictError = extendedErrorsEnabled ? extend(AdapterError, 'The adapter operation failed due to a conflict') : null;
|
11054
|
+
|
11055
|
+
exports.ConflictError = ConflictError;
|
11056
|
+
/**
|
11057
|
+
@class ServerError
|
11058
|
+
@namespace DS
|
11059
|
+
*/
|
11060
|
+
var ServerError = extendedErrorsEnabled ? extend(AdapterError, 'The adapter operation failed due to a server error') : null;
|
11061
|
+
|
11062
|
+
exports.ServerError = ServerError;
|
11063
|
+
/**
|
11064
|
+
@method errorsHashToArray
|
11065
|
+
@private
|
11066
|
+
*/
|
11067
|
+
|
11068
|
+
function errorsHashToArray(errors) {
|
11069
|
+
var out = [];
|
11070
|
+
|
11071
|
+
if (_ember.default.isPresent(errors)) {
|
11072
|
+
Object.keys(errors).forEach(function (key) {
|
11073
|
+
var messages = _ember.default.makeArray(errors[key]);
|
11074
|
+
for (var i = 0; i < messages.length; i++) {
|
11075
|
+
var title = 'Invalid Attribute';
|
11076
|
+
var pointer = '/data/attributes/' + key;
|
11077
|
+
if (key === PRIMARY_ATTRIBUTE_KEY) {
|
11078
|
+
title = 'Invalid Document';
|
11079
|
+
pointer = '/data';
|
11080
|
+
}
|
11081
|
+
out.push({
|
11082
|
+
title: title,
|
11083
|
+
detail: messages[i],
|
11084
|
+
source: {
|
11085
|
+
pointer: pointer
|
11086
|
+
}
|
11087
|
+
});
|
11088
|
+
}
|
11089
|
+
});
|
11090
|
+
}
|
11091
|
+
|
11092
|
+
return out;
|
11093
|
+
}
|
11094
|
+
|
11095
|
+
/**
|
11096
|
+
@method errorsArrayToHash
|
11097
|
+
@private
|
11098
|
+
*/
|
11099
|
+
|
11100
|
+
function errorsArrayToHash(errors) {
|
11101
|
+
var out = {};
|
11102
|
+
|
11103
|
+
if (_ember.default.isPresent(errors)) {
|
11104
|
+
errors.forEach(function (error) {
|
11105
|
+
if (error.source && error.source.pointer) {
|
11106
|
+
var key = error.source.pointer.match(SOURCE_POINTER_REGEXP);
|
11107
|
+
|
11108
|
+
if (key) {
|
11109
|
+
key = key[2];
|
11110
|
+
} else if (error.source.pointer.search(SOURCE_POINTER_PRIMARY_REGEXP) !== -1) {
|
11111
|
+
key = PRIMARY_ATTRIBUTE_KEY;
|
11112
|
+
}
|
11113
|
+
|
11114
|
+
if (key) {
|
11115
|
+
out[key] = out[key] || [];
|
11116
|
+
out[key].push(error.detail || error.title);
|
11117
|
+
}
|
11118
|
+
}
|
11119
|
+
});
|
11120
|
+
}
|
11121
|
+
|
11122
|
+
return out;
|
11123
|
+
}
|
11124
|
+
});
|
11125
|
+
define('ember-data/adapters/json-api', ['exports', 'ember', 'ember-data/adapters/rest', 'ember-data/-private/features'], function (exports, _ember, _emberDataAdaptersRest, _emberDataPrivateFeatures) {
|
11013
11126
|
|
11014
11127
|
/**
|
11015
11128
|
@class JSONAPIAdapter
|
@@ -11017,7 +11130,7 @@ define('ember-data/adapters/json-api', ['exports', 'ember', 'ember-data/adapters
|
|
11017
11130
|
@namespace DS
|
11018
11131
|
@extends DS.RESTAdapter
|
11019
11132
|
*/
|
11020
|
-
|
11133
|
+
var JSONAPIAdapter = _emberDataAdaptersRest.default.extend({
|
11021
11134
|
defaultSerializer: '-json-api',
|
11022
11135
|
|
11023
11136
|
/**
|
@@ -11093,8 +11206,12 @@ define('ember-data/adapters/json-api', ['exports', 'ember', 'ember-data/adapters
|
|
11093
11206
|
@return {Promise} promise
|
11094
11207
|
*/
|
11095
11208
|
findMany: function (store, type, ids, snapshots) {
|
11096
|
-
|
11097
|
-
|
11209
|
+
if ((0, _emberDataPrivateFeatures.default)('ds-improved-ajax')) {
|
11210
|
+
return this._super.apply(this, arguments);
|
11211
|
+
} else {
|
11212
|
+
var url = this.buildURL(type.modelName, ids, snapshots, 'findMany');
|
11213
|
+
return this.ajax(url, 'GET', { data: { filter: { id: ids.join(',') } } });
|
11214
|
+
}
|
11098
11215
|
},
|
11099
11216
|
|
11100
11217
|
/**
|
@@ -11116,22 +11233,87 @@ define('ember-data/adapters/json-api', ['exports', 'ember', 'ember-data/adapters
|
|
11116
11233
|
@return {Promise} promise
|
11117
11234
|
*/
|
11118
11235
|
updateRecord: function (store, type, snapshot) {
|
11119
|
-
|
11120
|
-
|
11236
|
+
if ((0, _emberDataPrivateFeatures.default)('ds-improved-ajax')) {
|
11237
|
+
return this._super.apply(this, arguments);
|
11238
|
+
} else {
|
11239
|
+
var data = {};
|
11240
|
+
var serializer = store.serializerFor(type.modelName);
|
11121
11241
|
|
11122
|
-
|
11242
|
+
serializer.serializeIntoHash(data, type, snapshot, { includeId: true });
|
11123
11243
|
|
11124
|
-
|
11125
|
-
|
11244
|
+
var id = snapshot.id;
|
11245
|
+
var url = this.buildURL(type.modelName, id, snapshot, 'updateRecord');
|
11126
11246
|
|
11127
|
-
|
11247
|
+
return this.ajax(url, 'PATCH', { data: data });
|
11248
|
+
}
|
11128
11249
|
}
|
11129
11250
|
});
|
11251
|
+
|
11252
|
+
if ((0, _emberDataPrivateFeatures.default)('ds-improved-ajax')) {
|
11253
|
+
|
11254
|
+
JSONAPIAdapter.reopen({
|
11255
|
+
|
11256
|
+
methodForRequest: function (params) {
|
11257
|
+
if (params.requestType === 'updateRecord') {
|
11258
|
+
return 'PATCH';
|
11259
|
+
}
|
11260
|
+
|
11261
|
+
return this._super.apply(this, arguments);
|
11262
|
+
},
|
11263
|
+
|
11264
|
+
dataForRequest: function (params) {
|
11265
|
+
var requestType = params.requestType;
|
11266
|
+
var ids = params.ids;
|
11267
|
+
|
11268
|
+
if (requestType === 'findMany') {
|
11269
|
+
return {
|
11270
|
+
filter: { id: ids.join(',') }
|
11271
|
+
};
|
11272
|
+
}
|
11273
|
+
|
11274
|
+
if (requestType === 'updateRecord') {
|
11275
|
+
var store = params.store;
|
11276
|
+
var type = params.type;
|
11277
|
+
var snapshot = params.snapshot;
|
11278
|
+
|
11279
|
+
var data = {};
|
11280
|
+
var serializer = store.serializerFor(type.modelName);
|
11281
|
+
|
11282
|
+
serializer.serializeIntoHash(data, type, snapshot, { includeId: true });
|
11283
|
+
|
11284
|
+
return data;
|
11285
|
+
}
|
11286
|
+
|
11287
|
+
return this._super.apply(this, arguments);
|
11288
|
+
},
|
11289
|
+
|
11290
|
+
headersForRequest: function () {
|
11291
|
+
var headers = this._super.apply(this, arguments) || {};
|
11292
|
+
|
11293
|
+
headers['Accept'] = 'application/vnd.api+json';
|
11294
|
+
|
11295
|
+
return headers;
|
11296
|
+
},
|
11297
|
+
|
11298
|
+
_requestToJQueryAjaxHash: function () {
|
11299
|
+
var hash = this._super.apply(this, arguments);
|
11300
|
+
|
11301
|
+
if (hash.contentType) {
|
11302
|
+
hash.contentType = 'application/vnd.api+json';
|
11303
|
+
}
|
11304
|
+
|
11305
|
+
return hash;
|
11306
|
+
}
|
11307
|
+
|
11308
|
+
});
|
11309
|
+
}
|
11310
|
+
|
11311
|
+
exports.default = JSONAPIAdapter;
|
11130
11312
|
});
|
11131
11313
|
/**
|
11132
11314
|
@module ember-data
|
11133
11315
|
*/
|
11134
|
-
define('ember-data/adapters/rest', ['exports', 'ember', 'ember-data/adapter', 'ember-data
|
11316
|
+
define('ember-data/adapters/rest', ['exports', 'ember', 'ember-data/adapter', 'ember-data/adapters/errors', 'ember-data/-private/adapters/build-url-mixin', 'ember-data/-private/features', 'ember-data/-private/debug', 'ember-data/-private/utils/parse-response-headers'], function (exports, _ember, _emberDataAdapter, _emberDataAdaptersErrors, _emberDataPrivateAdaptersBuildUrlMixin, _emberDataPrivateFeatures, _emberDataPrivateDebug, _emberDataPrivateUtilsParseResponseHeaders) {
|
11135
11317
|
var MapWithDefault = _ember.default.MapWithDefault;
|
11136
11318
|
var get = _ember.default.get;
|
11137
11319
|
|
@@ -11345,7 +11527,7 @@ define('ember-data/adapters/rest', ['exports', 'ember', 'ember-data/adapter', 'e
|
|
11345
11527
|
@extends DS.Adapter
|
11346
11528
|
@uses DS.BuildURLMixin
|
11347
11529
|
*/
|
11348
|
-
|
11530
|
+
var RESTAdapter = _emberDataAdapter.default.extend(_emberDataPrivateAdaptersBuildUrlMixin.default, {
|
11349
11531
|
defaultSerializer: '-rest',
|
11350
11532
|
|
11351
11533
|
/**
|
@@ -11492,10 +11674,19 @@ define('ember-data/adapters/rest', ['exports', 'ember', 'ember-data/adapter', 'e
|
|
11492
11674
|
@return {Promise} promise
|
11493
11675
|
*/
|
11494
11676
|
findRecord: function (store, type, id, snapshot) {
|
11495
|
-
|
11496
|
-
|
11677
|
+
if ((0, _emberDataPrivateFeatures.default)('ds-improved-ajax')) {
|
11678
|
+
var request = this._requestFor({
|
11679
|
+
store: store, type: type, id: id, snapshot: snapshot,
|
11680
|
+
requestType: 'findRecord'
|
11681
|
+
});
|
11497
11682
|
|
11498
|
-
|
11683
|
+
return this._makeRequest(request);
|
11684
|
+
} else {
|
11685
|
+
var url = this.buildURL(type.modelName, id, snapshot, 'findRecord');
|
11686
|
+
var query = this.buildQuery(snapshot);
|
11687
|
+
|
11688
|
+
return this.ajax(url, 'GET', { data: query });
|
11689
|
+
}
|
11499
11690
|
},
|
11500
11691
|
|
11501
11692
|
/**
|
@@ -11511,10 +11702,25 @@ define('ember-data/adapters/rest', ['exports', 'ember', 'ember-data/adapter', 'e
|
|
11511
11702
|
@return {Promise} promise
|
11512
11703
|
*/
|
11513
11704
|
findAll: function (store, type, sinceToken, snapshotRecordArray) {
|
11514
|
-
var url = this.buildURL(type.modelName, null, snapshotRecordArray, 'findAll');
|
11515
11705
|
var query = this.buildQuery(snapshotRecordArray);
|
11516
11706
|
|
11517
|
-
|
11707
|
+
if ((0, _emberDataPrivateFeatures.default)('ds-improved-ajax')) {
|
11708
|
+
var request = this._requestFor({
|
11709
|
+
store: store, type: type, sinceToken: sinceToken, query: query,
|
11710
|
+
snapshots: snapshotRecordArray,
|
11711
|
+
requestType: 'findAll'
|
11712
|
+
});
|
11713
|
+
|
11714
|
+
return this._makeRequest(request);
|
11715
|
+
} else {
|
11716
|
+
var url = this.buildURL(type.modelName, null, snapshotRecordArray, 'findAll');
|
11717
|
+
|
11718
|
+
if (sinceToken) {
|
11719
|
+
query.since = sinceToken;
|
11720
|
+
}
|
11721
|
+
|
11722
|
+
return this.ajax(url, 'GET', { data: query });
|
11723
|
+
}
|
11518
11724
|
},
|
11519
11725
|
|
11520
11726
|
/**
|
@@ -11532,13 +11738,22 @@ define('ember-data/adapters/rest', ['exports', 'ember', 'ember-data/adapter', 'e
|
|
11532
11738
|
@return {Promise} promise
|
11533
11739
|
*/
|
11534
11740
|
query: function (store, type, query) {
|
11535
|
-
|
11741
|
+
if ((0, _emberDataPrivateFeatures.default)('ds-improved-ajax')) {
|
11742
|
+
var request = this._requestFor({
|
11743
|
+
store: store, type: type, query: query,
|
11744
|
+
requestType: 'query'
|
11745
|
+
});
|
11536
11746
|
|
11537
|
-
|
11538
|
-
|
11539
|
-
|
11747
|
+
return this._makeRequest(request);
|
11748
|
+
} else {
|
11749
|
+
var url = this.buildURL(type.modelName, null, null, 'query', query);
|
11750
|
+
|
11751
|
+
if (this.sortQueryParams) {
|
11752
|
+
query = this.sortQueryParams(query);
|
11753
|
+
}
|
11540
11754
|
|
11541
|
-
|
11755
|
+
return this.ajax(url, 'GET', { data: query });
|
11756
|
+
}
|
11542
11757
|
},
|
11543
11758
|
|
11544
11759
|
/**
|
@@ -11556,13 +11771,22 @@ define('ember-data/adapters/rest', ['exports', 'ember', 'ember-data/adapter', 'e
|
|
11556
11771
|
@return {Promise} promise
|
11557
11772
|
*/
|
11558
11773
|
queryRecord: function (store, type, query) {
|
11559
|
-
|
11774
|
+
if ((0, _emberDataPrivateFeatures.default)('ds-improved-ajax')) {
|
11775
|
+
var request = this._requestFor({
|
11776
|
+
store: store, type: type, query: query,
|
11777
|
+
requestType: 'queryRecord'
|
11778
|
+
});
|
11560
11779
|
|
11561
|
-
|
11562
|
-
|
11563
|
-
|
11780
|
+
return this._makeRequest(request);
|
11781
|
+
} else {
|
11782
|
+
var url = this.buildURL(type.modelName, null, null, 'queryRecord', query);
|
11783
|
+
|
11784
|
+
if (this.sortQueryParams) {
|
11785
|
+
query = this.sortQueryParams(query);
|
11786
|
+
}
|
11564
11787
|
|
11565
|
-
|
11788
|
+
return this.ajax(url, 'GET', { data: query });
|
11789
|
+
}
|
11566
11790
|
},
|
11567
11791
|
|
11568
11792
|
/**
|
@@ -11592,8 +11816,17 @@ define('ember-data/adapters/rest', ['exports', 'ember', 'ember-data/adapter', 'e
|
|
11592
11816
|
@return {Promise} promise
|
11593
11817
|
*/
|
11594
11818
|
findMany: function (store, type, ids, snapshots) {
|
11595
|
-
|
11596
|
-
|
11819
|
+
if ((0, _emberDataPrivateFeatures.default)('ds-improved-ajax')) {
|
11820
|
+
var request = this._requestFor({
|
11821
|
+
store: store, type: type, ids: ids, snapshots: snapshots,
|
11822
|
+
requestType: 'findMany'
|
11823
|
+
});
|
11824
|
+
|
11825
|
+
return this._makeRequest(request);
|
11826
|
+
} else {
|
11827
|
+
var url = this.buildURL(type.modelName, ids, snapshots, 'findMany');
|
11828
|
+
return this.ajax(url, 'GET', { data: { ids: ids } });
|
11829
|
+
}
|
11597
11830
|
},
|
11598
11831
|
|
11599
11832
|
/**
|
@@ -11623,12 +11856,21 @@ define('ember-data/adapters/rest', ['exports', 'ember', 'ember-data/adapter', 'e
|
|
11623
11856
|
@return {Promise} promise
|
11624
11857
|
*/
|
11625
11858
|
findHasMany: function (store, snapshot, url, relationship) {
|
11626
|
-
|
11627
|
-
|
11859
|
+
if ((0, _emberDataPrivateFeatures.default)('ds-improved-ajax')) {
|
11860
|
+
var request = this._requestFor({
|
11861
|
+
store: store, snapshot: snapshot, url: url, relationship: relationship,
|
11862
|
+
requestType: 'findHasMany'
|
11863
|
+
});
|
11864
|
+
|
11865
|
+
return this._makeRequest(request);
|
11866
|
+
} else {
|
11867
|
+
var id = snapshot.id;
|
11868
|
+
var type = snapshot.modelName;
|
11628
11869
|
|
11629
|
-
|
11870
|
+
url = this.urlPrefix(url, this.buildURL(type, id, snapshot, 'findHasMany'));
|
11630
11871
|
|
11631
|
-
|
11872
|
+
return this.ajax(url, 'GET');
|
11873
|
+
}
|
11632
11874
|
},
|
11633
11875
|
|
11634
11876
|
/**
|
@@ -11658,11 +11900,20 @@ define('ember-data/adapters/rest', ['exports', 'ember', 'ember-data/adapter', 'e
|
|
11658
11900
|
@return {Promise} promise
|
11659
11901
|
*/
|
11660
11902
|
findBelongsTo: function (store, snapshot, url, relationship) {
|
11661
|
-
|
11662
|
-
|
11903
|
+
if ((0, _emberDataPrivateFeatures.default)('ds-improved-ajax')) {
|
11904
|
+
var request = this._requestFor({
|
11905
|
+
store: store, snapshot: snapshot, url: url, relationship: relationship,
|
11906
|
+
requestType: 'findBelongsTo'
|
11907
|
+
});
|
11908
|
+
|
11909
|
+
return this._makeRequest(request);
|
11910
|
+
} else {
|
11911
|
+
var id = snapshot.id;
|
11912
|
+
var type = snapshot.modelName;
|
11663
11913
|
|
11664
|
-
|
11665
|
-
|
11914
|
+
url = this.urlPrefix(url, this.buildURL(type, id, snapshot, 'findBelongsTo'));
|
11915
|
+
return this.ajax(url, 'GET');
|
11916
|
+
}
|
11666
11917
|
},
|
11667
11918
|
|
11668
11919
|
/**
|
@@ -11679,13 +11930,22 @@ define('ember-data/adapters/rest', ['exports', 'ember', 'ember-data/adapter', 'e
|
|
11679
11930
|
@return {Promise} promise
|
11680
11931
|
*/
|
11681
11932
|
createRecord: function (store, type, snapshot) {
|
11682
|
-
|
11683
|
-
|
11684
|
-
|
11933
|
+
if ((0, _emberDataPrivateFeatures.default)('ds-improved-ajax')) {
|
11934
|
+
var request = this._requestFor({
|
11935
|
+
store: store, type: type, snapshot: snapshot,
|
11936
|
+
requestType: 'createRecord'
|
11937
|
+
});
|
11685
11938
|
|
11686
|
-
|
11939
|
+
return this._makeRequest(request);
|
11940
|
+
} else {
|
11941
|
+
var data = {};
|
11942
|
+
var serializer = store.serializerFor(type.modelName);
|
11943
|
+
var url = this.buildURL(type.modelName, null, snapshot, 'createRecord');
|
11944
|
+
|
11945
|
+
serializer.serializeIntoHash(data, type, snapshot, { includeId: true });
|
11687
11946
|
|
11688
|
-
|
11947
|
+
return this.ajax(url, "POST", { data: data });
|
11948
|
+
}
|
11689
11949
|
},
|
11690
11950
|
|
11691
11951
|
/**
|
@@ -11702,15 +11962,24 @@ define('ember-data/adapters/rest', ['exports', 'ember', 'ember-data/adapter', 'e
|
|
11702
11962
|
@return {Promise} promise
|
11703
11963
|
*/
|
11704
11964
|
updateRecord: function (store, type, snapshot) {
|
11705
|
-
|
11706
|
-
|
11965
|
+
if ((0, _emberDataPrivateFeatures.default)('ds-improved-ajax')) {
|
11966
|
+
var request = this._requestFor({
|
11967
|
+
store: store, type: type, snapshot: snapshot,
|
11968
|
+
requestType: 'updateRecord'
|
11969
|
+
});
|
11707
11970
|
|
11708
|
-
|
11971
|
+
return this._makeRequest(request);
|
11972
|
+
} else {
|
11973
|
+
var data = {};
|
11974
|
+
var serializer = store.serializerFor(type.modelName);
|
11709
11975
|
|
11710
|
-
|
11711
|
-
var url = this.buildURL(type.modelName, id, snapshot, 'updateRecord');
|
11976
|
+
serializer.serializeIntoHash(data, type, snapshot);
|
11712
11977
|
|
11713
|
-
|
11978
|
+
var id = snapshot.id;
|
11979
|
+
var url = this.buildURL(type.modelName, id, snapshot, 'updateRecord');
|
11980
|
+
|
11981
|
+
return this.ajax(url, "PUT", { data: data });
|
11982
|
+
}
|
11714
11983
|
},
|
11715
11984
|
|
11716
11985
|
/**
|
@@ -11723,9 +11992,18 @@ define('ember-data/adapters/rest', ['exports', 'ember', 'ember-data/adapter', 'e
|
|
11723
11992
|
@return {Promise} promise
|
11724
11993
|
*/
|
11725
11994
|
deleteRecord: function (store, type, snapshot) {
|
11726
|
-
|
11995
|
+
if ((0, _emberDataPrivateFeatures.default)('ds-improved-ajax')) {
|
11996
|
+
var request = this._requestFor({
|
11997
|
+
store: store, type: type, snapshot: snapshot,
|
11998
|
+
requestType: 'deleteRecord'
|
11999
|
+
});
|
12000
|
+
|
12001
|
+
return this._makeRequest(request);
|
12002
|
+
} else {
|
12003
|
+
var id = snapshot.id;
|
11727
12004
|
|
11728
|
-
|
12005
|
+
return this.ajax(this.buildURL(type.modelName, id, snapshot, 'deleteRecord'), "DELETE");
|
12006
|
+
}
|
11729
12007
|
},
|
11730
12008
|
|
11731
12009
|
_stripIDFromURL: function (store, snapshot) {
|
@@ -11839,13 +12117,30 @@ define('ember-data/adapters/rest', ['exports', 'ember', 'ember-data/adapter', 'e
|
|
11839
12117
|
if (this.isSuccess(status, headers, payload)) {
|
11840
12118
|
return payload;
|
11841
12119
|
} else if (this.isInvalid(status, headers, payload)) {
|
11842
|
-
return new
|
12120
|
+
return new _emberDataAdaptersErrors.InvalidError(payload.errors);
|
11843
12121
|
}
|
11844
12122
|
|
11845
12123
|
var errors = this.normalizeErrorResponse(status, headers, payload);
|
11846
12124
|
var detailedMessage = this.generatedDetailedMessage(status, headers, payload, requestData);
|
11847
12125
|
|
11848
|
-
|
12126
|
+
if ((0, _emberDataPrivateFeatures.default)('ds-extended-errors')) {
|
12127
|
+
switch (status) {
|
12128
|
+
case 401:
|
12129
|
+
return new _emberDataAdaptersErrors.UnauthorizedError(errors, detailedMessage);
|
12130
|
+
case 403:
|
12131
|
+
return new _emberDataAdaptersErrors.ForbiddenError(errors, detailedMessage);
|
12132
|
+
case 404:
|
12133
|
+
return new _emberDataAdaptersErrors.NotFoundError(errors, detailedMessage);
|
12134
|
+
case 409:
|
12135
|
+
return new _emberDataAdaptersErrors.ConflictError(errors, detailedMessage);
|
12136
|
+
default:
|
12137
|
+
if (status >= 500) {
|
12138
|
+
return new _emberDataAdaptersErrors.ServerError(errors, detailedMessage);
|
12139
|
+
}
|
12140
|
+
}
|
12141
|
+
}
|
12142
|
+
|
12143
|
+
return new _emberDataAdaptersErrors.AdapterError(errors, detailedMessage);
|
11849
12144
|
},
|
11850
12145
|
|
11851
12146
|
/**
|
@@ -11917,14 +12212,22 @@ define('ember-data/adapters/rest', ['exports', 'ember', 'ember-data/adapter', 'e
|
|
11917
12212
|
};
|
11918
12213
|
|
11919
12214
|
hash.error = function (jqXHR, textStatus, errorThrown) {
|
12215
|
+
(0, _emberDataPrivateDebug.runInDebug)(function () {
|
12216
|
+
var message = 'The server returned an empty string for ' + type + ' ' + url + ', which cannot be parsed into a valid JSON. Return either null or {}.';
|
12217
|
+
var validJSONString = !(textStatus === "parsererror" && jqXHR.responseText === "");
|
12218
|
+
(0, _emberDataPrivateDebug.warn)(message, validJSONString, {
|
12219
|
+
id: 'ds.adapter.returned-empty-string-as-JSON'
|
12220
|
+
});
|
12221
|
+
});
|
12222
|
+
|
11920
12223
|
var error = undefined;
|
11921
12224
|
|
11922
12225
|
if (errorThrown instanceof Error) {
|
11923
12226
|
error = errorThrown;
|
11924
12227
|
} else if (textStatus === 'timeout') {
|
11925
|
-
error = new
|
12228
|
+
error = new _emberDataAdaptersErrors.TimeoutError();
|
11926
12229
|
} else if (textStatus === 'abort') {
|
11927
|
-
error = new
|
12230
|
+
error = new _emberDataAdaptersErrors.AbortError();
|
11928
12231
|
} else {
|
11929
12232
|
error = adapter.handleResponse(jqXHR.status, (0, _emberDataPrivateUtilsParseResponseHeaders.default)(jqXHR.getAllResponseHeaders()), adapter.parseErrorResponse(jqXHR.responseText) || errorThrown, requestData);
|
11930
12233
|
}
|
@@ -12043,7 +12346,7 @@ define('ember-data/adapters/rest', ['exports', 'ember', 'ember-data/adapter', 'e
|
|
12043
12346
|
buildQuery: function (snapshot) {
|
12044
12347
|
var query = {};
|
12045
12348
|
|
12046
|
-
if (
|
12349
|
+
if ((0, _emberDataPrivateFeatures.default)('ds-finder-include')) {
|
12047
12350
|
if (snapshot) {
|
12048
12351
|
var include = snapshot.include;
|
12049
12352
|
|
@@ -12057,6 +12360,266 @@ define('ember-data/adapters/rest', ['exports', 'ember', 'ember-data/adapter', 'e
|
|
12057
12360
|
}
|
12058
12361
|
});
|
12059
12362
|
|
12363
|
+
if ((0, _emberDataPrivateFeatures.default)('ds-improved-ajax')) {
|
12364
|
+
|
12365
|
+
RESTAdapter.reopen({
|
12366
|
+
|
12367
|
+
/**
|
12368
|
+
* Get the data (body or query params) for a request.
|
12369
|
+
*
|
12370
|
+
* @public
|
12371
|
+
* @method dataForRequest
|
12372
|
+
* @param {Object} params
|
12373
|
+
* @return {Object} data
|
12374
|
+
*/
|
12375
|
+
dataForRequest: function (params) {
|
12376
|
+
var store = params.store;
|
12377
|
+
var type = params.type;
|
12378
|
+
var snapshot = params.snapshot;
|
12379
|
+
var requestType = params.requestType;
|
12380
|
+
var query = params.query;
|
12381
|
+
|
12382
|
+
// type is not passed to findBelongsTo and findHasMany
|
12383
|
+
type = type || snapshot && snapshot.type;
|
12384
|
+
|
12385
|
+
var serializer = store.serializerFor(type.modelName);
|
12386
|
+
var data = {};
|
12387
|
+
|
12388
|
+
switch (requestType) {
|
12389
|
+
case 'createRecord':
|
12390
|
+
serializer.serializeIntoHash(data, type, snapshot, { includeId: true });
|
12391
|
+
break;
|
12392
|
+
|
12393
|
+
case 'updateRecord':
|
12394
|
+
serializer.serializeIntoHash(data, type, snapshot);
|
12395
|
+
break;
|
12396
|
+
|
12397
|
+
case 'findRecord':
|
12398
|
+
data = this.buildQuery(snapshot);
|
12399
|
+
break;
|
12400
|
+
|
12401
|
+
case 'findAll':
|
12402
|
+
if (params.sinceToken) {
|
12403
|
+
query = query || {};
|
12404
|
+
query.since = params.sinceToken;
|
12405
|
+
}
|
12406
|
+
data = query;
|
12407
|
+
break;
|
12408
|
+
|
12409
|
+
case 'query':
|
12410
|
+
case 'queryRecord':
|
12411
|
+
if (this.sortQueryParams) {
|
12412
|
+
query = this.sortQueryParams(query);
|
12413
|
+
}
|
12414
|
+
data = query;
|
12415
|
+
break;
|
12416
|
+
|
12417
|
+
case 'findMany':
|
12418
|
+
data = { ids: params.ids };
|
12419
|
+
break;
|
12420
|
+
|
12421
|
+
default:
|
12422
|
+
data = undefined;
|
12423
|
+
break;
|
12424
|
+
}
|
12425
|
+
|
12426
|
+
return data;
|
12427
|
+
},
|
12428
|
+
|
12429
|
+
/**
|
12430
|
+
* Get the HTTP method for a request.
|
12431
|
+
*
|
12432
|
+
* @public
|
12433
|
+
* @method methodForRequest
|
12434
|
+
* @param {Object} params
|
12435
|
+
* @return {String} HTTP method
|
12436
|
+
*/
|
12437
|
+
methodForRequest: function (params) {
|
12438
|
+
var requestType = params.requestType;
|
12439
|
+
|
12440
|
+
switch (requestType) {
|
12441
|
+
case 'createRecord':
|
12442
|
+
return 'POST';
|
12443
|
+
case 'updateRecord':
|
12444
|
+
return 'PUT';
|
12445
|
+
case 'deleteRecord':
|
12446
|
+
return 'DELETE';
|
12447
|
+
}
|
12448
|
+
|
12449
|
+
return 'GET';
|
12450
|
+
},
|
12451
|
+
|
12452
|
+
/**
|
12453
|
+
* Get the URL for a request.
|
12454
|
+
*
|
12455
|
+
* @public
|
12456
|
+
* @method urlForRequest
|
12457
|
+
* @param {Object} params
|
12458
|
+
* @return {String} URL
|
12459
|
+
*/
|
12460
|
+
urlForRequest: function (params) {
|
12461
|
+
var type = params.type;
|
12462
|
+
var id = params.id;
|
12463
|
+
var ids = params.ids;
|
12464
|
+
var snapshot = params.snapshot;
|
12465
|
+
var snapshots = params.snapshots;
|
12466
|
+
var requestType = params.requestType;
|
12467
|
+
var query = params.query;
|
12468
|
+
|
12469
|
+
// type and id are not passed from updateRecord and deleteRecord, hence they
|
12470
|
+
// are defined if not set
|
12471
|
+
type = type || snapshot && snapshot.type;
|
12472
|
+
id = id || snapshot && snapshot.id;
|
12473
|
+
|
12474
|
+
switch (requestType) {
|
12475
|
+
case 'findAll':
|
12476
|
+
return this.buildURL(type.modelName, null, snapshots, requestType);
|
12477
|
+
|
12478
|
+
case 'query':
|
12479
|
+
case 'queryRecord':
|
12480
|
+
return this.buildURL(type.modelName, null, null, requestType, query);
|
12481
|
+
|
12482
|
+
case 'findMany':
|
12483
|
+
return this.buildURL(type.modelName, ids, snapshots, requestType);
|
12484
|
+
|
12485
|
+
case 'findHasMany':
|
12486
|
+
case 'findBelongsTo':
|
12487
|
+
var url = this.buildURL(type.modelName, id, snapshot, requestType);
|
12488
|
+
return this.urlPrefix(params.url, url);
|
12489
|
+
}
|
12490
|
+
|
12491
|
+
return this.buildURL(type.modelName, id, snapshot, requestType, query);
|
12492
|
+
},
|
12493
|
+
|
12494
|
+
/**
|
12495
|
+
* Get the headers for a request.
|
12496
|
+
*
|
12497
|
+
* By default the value of the `headers` property of the adapter is
|
12498
|
+
* returned.
|
12499
|
+
*
|
12500
|
+
* @public
|
12501
|
+
* @method headersForRequest
|
12502
|
+
* @param {Object} params
|
12503
|
+
* @return {Object} headers
|
12504
|
+
*/
|
12505
|
+
headersForRequest: function (params) {
|
12506
|
+
return this.get('headers');
|
12507
|
+
},
|
12508
|
+
|
12509
|
+
/**
|
12510
|
+
* Get an object which contains all properties for a request which should
|
12511
|
+
* be made.
|
12512
|
+
*
|
12513
|
+
* @private
|
12514
|
+
* @method _requestFor
|
12515
|
+
* @param {Object} params
|
12516
|
+
* @return {Object} request object
|
12517
|
+
*/
|
12518
|
+
_requestFor: function (params) {
|
12519
|
+
var method = this.methodForRequest(params);
|
12520
|
+
var url = this.urlForRequest(params);
|
12521
|
+
var headers = this.headersForRequest(params);
|
12522
|
+
var data = this.dataForRequest(params);
|
12523
|
+
|
12524
|
+
return { method: method, url: url, headers: headers, data: data };
|
12525
|
+
},
|
12526
|
+
|
12527
|
+
/**
|
12528
|
+
* Convert a request object into a hash which can be passed to `jQuery.ajax`.
|
12529
|
+
*
|
12530
|
+
* @private
|
12531
|
+
* @method _requestToJQueryAjaxHash
|
12532
|
+
* @param {Object} request
|
12533
|
+
* @return {Object} jQuery ajax hash
|
12534
|
+
*/
|
12535
|
+
_requestToJQueryAjaxHash: function (request) {
|
12536
|
+
var hash = {};
|
12537
|
+
|
12538
|
+
hash.type = request.method;
|
12539
|
+
hash.url = request.url;
|
12540
|
+
hash.dataType = 'json';
|
12541
|
+
hash.context = this;
|
12542
|
+
|
12543
|
+
if (request.data) {
|
12544
|
+
if (request.type !== 'GET') {
|
12545
|
+
hash.contentType = 'application/json; charset=utf-8';
|
12546
|
+
hash.data = JSON.stringify(request.data);
|
12547
|
+
} else {
|
12548
|
+
hash.data = request.data;
|
12549
|
+
}
|
12550
|
+
}
|
12551
|
+
|
12552
|
+
var headers = request.headers;
|
12553
|
+
if (headers !== undefined) {
|
12554
|
+
hash.beforeSend = function (xhr) {
|
12555
|
+
Object.keys(headers).forEach(function (key) {
|
12556
|
+
return xhr.setRequestHeader(key, headers[key]);
|
12557
|
+
});
|
12558
|
+
};
|
12559
|
+
}
|
12560
|
+
|
12561
|
+
return hash;
|
12562
|
+
},
|
12563
|
+
|
12564
|
+
/**
|
12565
|
+
* Make a request using `jQuery.ajax`.
|
12566
|
+
*
|
12567
|
+
* @private
|
12568
|
+
* @method _makeRequest
|
12569
|
+
* @param {Object} request
|
12570
|
+
* @return {Promise} promise
|
12571
|
+
*/
|
12572
|
+
_makeRequest: function (request) {
|
12573
|
+
var adapter = this;
|
12574
|
+
var hash = this._requestToJQueryAjaxHash(request);
|
12575
|
+
|
12576
|
+
var method = request.method;
|
12577
|
+
var url = request.url;
|
12578
|
+
|
12579
|
+
var requestData = { method: method, url: url };
|
12580
|
+
|
12581
|
+
return new _ember.default.RSVP.Promise(function (resolve, reject) {
|
12582
|
+
|
12583
|
+
hash.success = function (payload, textStatus, jqXHR) {
|
12584
|
+
var response = adapter.handleResponse(jqXHR.status, (0, _emberDataPrivateUtilsParseResponseHeaders.default)(jqXHR.getAllResponseHeaders()), payload, requestData);
|
12585
|
+
|
12586
|
+
if (response instanceof _emberDataAdaptersErrors.AdapterError) {
|
12587
|
+
_ember.default.run.join(null, reject, response);
|
12588
|
+
} else {
|
12589
|
+
_ember.default.run.join(null, resolve, response);
|
12590
|
+
}
|
12591
|
+
};
|
12592
|
+
|
12593
|
+
hash.error = function (jqXHR, textStatus, errorThrown) {
|
12594
|
+
(0, _emberDataPrivateDebug.runInDebug)(function () {
|
12595
|
+
var message = 'The server returned an empty string for ' + method + ' ' + url + ', which cannot be parsed into a valid JSON. Return either null or {}.';
|
12596
|
+
var validJSONString = !(textStatus === "parsererror" && jqXHR.responseText === "");
|
12597
|
+
(0, _emberDataPrivateDebug.warn)(message, validJSONString, {
|
12598
|
+
id: 'ds.adapter.returned-empty-string-as-JSON'
|
12599
|
+
});
|
12600
|
+
});
|
12601
|
+
|
12602
|
+
var error = undefined;
|
12603
|
+
|
12604
|
+
if (errorThrown instanceof Error) {
|
12605
|
+
error = errorThrown;
|
12606
|
+
} else if (textStatus === 'timeout') {
|
12607
|
+
error = new _emberDataAdaptersErrors.TimeoutError();
|
12608
|
+
} else if (textStatus === 'abort') {
|
12609
|
+
error = new _emberDataAdaptersErrors.AbortError();
|
12610
|
+
} else {
|
12611
|
+
error = adapter.handleResponse(jqXHR.status, (0, _emberDataPrivateUtilsParseResponseHeaders.default)(jqXHR.getAllResponseHeaders()), adapter.parseErrorResponse(jqXHR.responseText) || errorThrown, requestData);
|
12612
|
+
}
|
12613
|
+
|
12614
|
+
_ember.default.run.join(null, reject, error);
|
12615
|
+
};
|
12616
|
+
|
12617
|
+
adapter._ajaxRequest(hash);
|
12618
|
+
}, 'DS: RESTAdapter#makeRequest: ' + method + ' ' + url);
|
12619
|
+
}
|
12620
|
+
});
|
12621
|
+
}
|
12622
|
+
|
12060
12623
|
//From http://stackoverflow.com/questions/280634/endswith-in-javascript
|
12061
12624
|
function endsWith(string, suffix) {
|
12062
12625
|
if (typeof String.prototype.endsWith !== 'function') {
|
@@ -12065,11 +12628,13 @@ define('ember-data/adapters/rest', ['exports', 'ember', 'ember-data/adapter', 'e
|
|
12065
12628
|
return string.endsWith(suffix);
|
12066
12629
|
}
|
12067
12630
|
}
|
12631
|
+
|
12632
|
+
exports.default = RESTAdapter;
|
12068
12633
|
});
|
12069
12634
|
/**
|
12070
12635
|
@module ember-data
|
12071
12636
|
*/
|
12072
|
-
define(
|
12637
|
+
define('ember-data/attr', ['exports', 'ember', 'ember-data/-private/debug'], function (exports, _ember, _emberDataPrivateDebug) {
|
12073
12638
|
exports.default = attr;
|
12074
12639
|
|
12075
12640
|
/**
|
@@ -12077,11 +12642,11 @@ define("ember-data/attr", ["exports", "ember", "ember-data/-private/debug"], fun
|
|
12077
12642
|
*/
|
12078
12643
|
|
12079
12644
|
function getDefaultValue(record, options, key) {
|
12080
|
-
if (typeof options.defaultValue ===
|
12645
|
+
if (typeof options.defaultValue === 'function') {
|
12081
12646
|
return options.defaultValue.apply(null, arguments);
|
12082
12647
|
} else {
|
12083
12648
|
var defaultValue = options.defaultValue;
|
12084
|
-
(0, _emberDataPrivateDebug.deprecate)(
|
12649
|
+
(0, _emberDataPrivateDebug.deprecate)('Non primitive defaultValues are deprecated because they are shared between all instances. If you would like to use a complex object as a default value please provide a function that returns the complex object.', typeof defaultValue !== 'object' || defaultValue === null, {
|
12085
12650
|
id: 'ds.defaultValue.complex-object',
|
12086
12651
|
until: '3.0.0'
|
12087
12652
|
});
|
@@ -12231,7 +12796,7 @@ define("ember-data/attr", ["exports", "ember", "ember-data/-private/debug"], fun
|
|
12231
12796
|
// *
|
12232
12797
|
// */
|
12233
12798
|
});
|
12234
|
-
define("ember-data", ["exports", "ember", "ember-data/-private/debug", "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
|
12799
|
+
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) {
|
12235
12800
|
/**
|
12236
12801
|
Ember Data
|
12237
12802
|
@module ember-data
|
@@ -12242,12 +12807,6 @@ define("ember-data", ["exports", "ember", "ember-data/-private/debug", "ember-da
|
|
12242
12807
|
throw new _ember.default.Error("Ember Data requires at least Ember 1.13.0, but you have " + _ember.default.VERSION + ". Please upgrade your version of Ember, then upgrade Ember Data.");
|
12243
12808
|
}
|
12244
12809
|
|
12245
|
-
if (_ember.default.VERSION.match(/^1\.13\./)) {
|
12246
|
-
(0, _emberDataPrivateDebug.warn)("Use of Ember Data 2+ with Ember 1.13 is unsupported. Please upgrade your version of Ember to 2.0 or higher.", false, {
|
12247
|
-
id: 'ds.version.ember-1-13'
|
12248
|
-
});
|
12249
|
-
}
|
12250
|
-
|
12251
12810
|
_emberDataPrivateCore.default.Store = _emberDataPrivateSystemStore.Store;
|
12252
12811
|
_emberDataPrivateCore.default.PromiseArray = _emberDataPrivateSystemPromiseProxies.PromiseArray;
|
12253
12812
|
_emberDataPrivateCore.default.PromiseObject = _emberDataPrivateSystemPromiseProxies.PromiseObject;
|
@@ -12264,13 +12823,21 @@ define("ember-data", ["exports", "ember", "ember-data/-private/debug", "ember-da
|
|
12264
12823
|
|
12265
12824
|
_emberDataPrivateCore.default.Adapter = _emberDataAdapter.default;
|
12266
12825
|
|
12267
|
-
_emberDataPrivateCore.default.AdapterError =
|
12268
|
-
_emberDataPrivateCore.default.InvalidError =
|
12269
|
-
_emberDataPrivateCore.default.TimeoutError =
|
12270
|
-
_emberDataPrivateCore.default.AbortError =
|
12826
|
+
_emberDataPrivateCore.default.AdapterError = _emberDataAdaptersErrors.AdapterError;
|
12827
|
+
_emberDataPrivateCore.default.InvalidError = _emberDataAdaptersErrors.InvalidError;
|
12828
|
+
_emberDataPrivateCore.default.TimeoutError = _emberDataAdaptersErrors.TimeoutError;
|
12829
|
+
_emberDataPrivateCore.default.AbortError = _emberDataAdaptersErrors.AbortError;
|
12830
|
+
|
12831
|
+
if ((0, _emberDataPrivateFeatures.default)('ds-extended-errors')) {
|
12832
|
+
_emberDataPrivateCore.default.UnauthorizedError = _emberDataAdaptersErrors.UnauthorizedError;
|
12833
|
+
_emberDataPrivateCore.default.ForbiddenError = _emberDataAdaptersErrors.ForbiddenError;
|
12834
|
+
_emberDataPrivateCore.default.NotFoundError = _emberDataAdaptersErrors.NotFoundError;
|
12835
|
+
_emberDataPrivateCore.default.ConflictError = _emberDataAdaptersErrors.ConflictError;
|
12836
|
+
_emberDataPrivateCore.default.ServerError = _emberDataAdaptersErrors.ServerError;
|
12837
|
+
}
|
12271
12838
|
|
12272
|
-
_emberDataPrivateCore.default.errorsHashToArray =
|
12273
|
-
_emberDataPrivateCore.default.errorsArrayToHash =
|
12839
|
+
_emberDataPrivateCore.default.errorsHashToArray = _emberDataAdaptersErrors.errorsHashToArray;
|
12840
|
+
_emberDataPrivateCore.default.errorsArrayToHash = _emberDataAdaptersErrors.errorsArrayToHash;
|
12274
12841
|
|
12275
12842
|
_emberDataPrivateCore.default.Serializer = _emberDataSerializer.default;
|
12276
12843
|
|
@@ -12411,7 +12978,7 @@ define('ember-data/serializer', ['exports', 'ember'], function (exports, _ember)
|
|
12411
12978
|
/**
|
12412
12979
|
@module ember-data
|
12413
12980
|
*/
|
12414
|
-
define('ember-data/serializers/embedded-records-mixin', ['exports', 'ember', 'ember-data/-private/debug'], function (exports, _ember, _emberDataPrivateDebug) {
|
12981
|
+
define('ember-data/serializers/embedded-records-mixin', ['exports', 'ember', 'ember-data/-private/debug', 'ember-data/-private/features'], function (exports, _ember, _emberDataPrivateDebug, _emberDataPrivateFeatures) {
|
12415
12982
|
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); } }
|
12416
12983
|
|
12417
12984
|
var get = _ember.default.get;
|
@@ -12636,7 +13203,7 @@ define('ember-data/serializers/embedded-records-mixin', ['exports', 'ember', 'em
|
|
12636
13203
|
},
|
12637
13204
|
|
12638
13205
|
/**
|
12639
|
-
|
13206
|
+
Serializes `hasMany` relationships when it is configured as embedded objects.
|
12640
13207
|
This example of a post model has many comments:
|
12641
13208
|
```js
|
12642
13209
|
Post = DS.Model.extend({
|
@@ -12677,7 +13244,7 @@ define('ember-data/serializers/embedded-records-mixin', ['exports', 'ember', 'em
|
|
12677
13244
|
}
|
12678
13245
|
```
|
12679
13246
|
The attrs options object can use more specific instruction for extracting and
|
12680
|
-
serializing. When serializing, an option to embed `ids` or `records` can be set.
|
13247
|
+
serializing. When serializing, an option to embed `ids`, `ids-and-types` or `records` can be set.
|
12681
13248
|
When extracting the only option is `records`.
|
12682
13249
|
So `{ embedded: 'always' }` is shorthand for:
|
12683
13250
|
`{ serialize: 'records', deserialize: 'records' }`
|
@@ -12700,6 +13267,47 @@ define('ember-data/serializers/embedded-records-mixin', ['exports', 'ember', 'em
|
|
12700
13267
|
}
|
12701
13268
|
}
|
12702
13269
|
```
|
13270
|
+
To embed the relationship as a collection of objects with `id` and `type` keys, set
|
13271
|
+
`ids-and-types` for the related object.
|
13272
|
+
This is particularly useful for polymorphic relationships where records don't share
|
13273
|
+
the same table and the `id` is not enough information.
|
13274
|
+
By example having a user that has many pets:
|
13275
|
+
```js
|
13276
|
+
User = DS.Model.extend({
|
13277
|
+
name: DS.attr('string'),
|
13278
|
+
pets: DS.hasMany('pet', { polymorphic: true })
|
13279
|
+
});
|
13280
|
+
Pet = DS.Model.extend({
|
13281
|
+
name: DS.attr('string'),
|
13282
|
+
});
|
13283
|
+
Cat = Pet.extend({
|
13284
|
+
// ...
|
13285
|
+
});
|
13286
|
+
Parrot = Pet.extend({
|
13287
|
+
// ...
|
13288
|
+
});
|
13289
|
+
```
|
13290
|
+
```app/serializers/user.js
|
13291
|
+
import DS from 'ember-data;
|
13292
|
+
export default DS.RESTSerializer.extend(DS.EmbeddedRecordsMixin, {
|
13293
|
+
attrs: {
|
13294
|
+
pets: { serialize: 'ids-and-types', deserialize: 'records' }
|
13295
|
+
}
|
13296
|
+
});
|
13297
|
+
```
|
13298
|
+
```js
|
13299
|
+
{
|
13300
|
+
"user": {
|
13301
|
+
"id": "1"
|
13302
|
+
"name": "Bertin Osborne",
|
13303
|
+
"pets": [
|
13304
|
+
{ "id": "1", "type": "Cat" },
|
13305
|
+
{ "id": "1", "type": "Parrot"}
|
13306
|
+
]
|
13307
|
+
}
|
13308
|
+
}
|
13309
|
+
```
|
13310
|
+
Note that the `ids-and-types` strategy is still behind the `ds-serialize-ids-and-types` feature flag.
|
12703
13311
|
@method serializeHasMany
|
12704
13312
|
@param {DS.Snapshot} snapshot
|
12705
13313
|
@param {Object} json
|
@@ -12711,16 +13319,41 @@ define('ember-data/serializers/embedded-records-mixin', ['exports', 'ember', 'em
|
|
12711
13319
|
this._super(snapshot, json, relationship);
|
12712
13320
|
return;
|
12713
13321
|
}
|
12714
|
-
|
12715
|
-
|
12716
|
-
if (includeIds) {
|
13322
|
+
|
13323
|
+
if (this.hasSerializeIdsOption(attr)) {
|
12717
13324
|
var serializedKey = this.keyForRelationship(attr, relationship.kind, 'serialize');
|
12718
13325
|
json[serializedKey] = snapshot.hasMany(attr, { ids: true });
|
12719
|
-
} else if (
|
13326
|
+
} else if (this.hasSerializeRecordsOption(attr)) {
|
12720
13327
|
this._serializeEmbeddedHasMany(snapshot, json, relationship);
|
13328
|
+
} else {
|
13329
|
+
if ((0, _emberDataPrivateFeatures.default)("ds-serialize-ids-and-types")) {
|
13330
|
+
if (this.hasSerializeIdsAndTypesOption(attr)) {
|
13331
|
+
this._serializeHasManyAsIdsAndTypes(snapshot, json, relationship);
|
13332
|
+
}
|
13333
|
+
}
|
12721
13334
|
}
|
12722
13335
|
},
|
12723
13336
|
|
13337
|
+
/**
|
13338
|
+
Serializes a hasMany relationship as an array of objects containing only `id` and `type`
|
13339
|
+
keys.
|
13340
|
+
This has its use case on polymorphic hasMany relationships where the server is not storing
|
13341
|
+
all records in the same table using STI, and therefore the `id` is not enough information
|
13342
|
+
TODO: Make the default in Ember-data 3.0??
|
13343
|
+
*/
|
13344
|
+
_serializeHasManyAsIdsAndTypes: function (snapshot, json, relationship) {
|
13345
|
+
var serializedKey = this.keyForAttribute(relationship.key, 'serialize');
|
13346
|
+
var hasMany = snapshot.hasMany(relationship.key);
|
13347
|
+
|
13348
|
+
json[serializedKey] = _ember.default.A(hasMany).map(function (recordSnapshot) {
|
13349
|
+
//
|
13350
|
+
// I'm sure I'm being utterly naive here. Propably id is a configurate property and
|
13351
|
+
// type too, and the modelName has to be normalized somehow.
|
13352
|
+
//
|
13353
|
+
return { id: recordSnapshot.id, type: recordSnapshot.modelName };
|
13354
|
+
});
|
13355
|
+
},
|
13356
|
+
|
12724
13357
|
_serializeEmbeddedHasMany: function (snapshot, json, relationship) {
|
12725
13358
|
var serializedKey = this._getMappedKey(relationship.key, snapshot.type);
|
12726
13359
|
if (serializedKey === relationship.key && this.keyForRelationship) {
|
@@ -12798,6 +13431,12 @@ define('ember-data/serializers/embedded-records-mixin', ['exports', 'ember', 'em
|
|
12798
13431
|
return option && (option.serialize === 'ids' || option.serialize === 'id');
|
12799
13432
|
},
|
12800
13433
|
|
13434
|
+
// checks config for attrs option to serialize records as objects containing id and types
|
13435
|
+
hasSerializeIdsAndTypesOption: function (attr) {
|
13436
|
+
var option = this.attrsOption(attr);
|
13437
|
+
return option && (option.serialize === 'ids-and-types' || option.serialize === 'id-and-type');
|
13438
|
+
},
|
13439
|
+
|
12801
13440
|
// checks config for attrs option to serialize records
|
12802
13441
|
noSerializeOptionSpecified: function (attr) {
|
12803
13442
|
var option = this.attrsOption(attr);
|
@@ -12916,7 +13555,8 @@ define('ember-data/serializers/embedded-records-mixin', ['exports', 'ember', 'em
|
|
12916
13555
|
var serializer = store.serializerFor(modelName);
|
12917
13556
|
|
12918
13557
|
return serializer.normalize(modelClass, relationshipHash, null);
|
12919
|
-
}
|
13558
|
+
},
|
13559
|
+
isEmbeddedRecordsMixin: true
|
12920
13560
|
});
|
12921
13561
|
});
|
12922
13562
|
define('ember-data/serializers/json-api', ['exports', 'ember', 'ember-data/-private/debug', 'ember-data/serializers/json', 'ember-data/-private/system/normalize-model-name', 'ember-inflector', 'ember-data/-private/features'], function (exports, _ember, _emberDataPrivateDebug, _emberDataSerializersJson, _emberDataPrivateSystemNormalizeModelName, _emberInflector, _emberDataPrivateFeatures) {
|
@@ -13095,7 +13735,7 @@ define('ember-data/serializers/json-api', ['exports', 'ember', 'ember-data/-priv
|
|
13095
13735
|
*/
|
13096
13736
|
pushPayload: function (store, payload) {
|
13097
13737
|
var normalizedPayload = this._normalizeDocumentHelper(payload);
|
13098
|
-
if (
|
13738
|
+
if ((0, _emberDataPrivateFeatures.default)('ds-pushpayload-return')) {
|
13099
13739
|
return store.push(normalizedPayload);
|
13100
13740
|
} else {
|
13101
13741
|
store.push(normalizedPayload);
|
@@ -13410,6 +14050,11 @@ define('ember-data/serializers/json-api', ['exports', 'ember', 'ember-data/-priv
|
|
13410
14050
|
|
13411
14051
|
(0, _emberDataPrivateDebug.runInDebug)(function () {
|
13412
14052
|
JSONAPISerializer.reopen({
|
14053
|
+
willMergeMixin: function (props) {
|
14054
|
+
(0, _emberDataPrivateDebug.warn)('The JSONAPISerializer does not work with the EmbeddedRecordsMixin because the JSON API spec does not describe how to format embedded resources.', !props.isEmbeddedRecordsMixin, {
|
14055
|
+
id: 'ds.serializer.embedded-records-mixin-not-supported'
|
14056
|
+
});
|
14057
|
+
},
|
13413
14058
|
warnMessageForUndefinedType: function () {
|
13414
14059
|
return 'Encountered a resource object with an undefined type (resolved resource using ' + this.constructor.toString() + ')';
|
13415
14060
|
},
|
@@ -13424,7 +14069,7 @@ define('ember-data/serializers/json-api', ['exports', 'ember', 'ember-data/-priv
|
|
13424
14069
|
/**
|
13425
14070
|
@module ember-data
|
13426
14071
|
*/
|
13427
|
-
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
|
14072
|
+
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) {
|
13428
14073
|
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); } }
|
13429
14074
|
|
13430
14075
|
var get = _ember.default.get;
|
@@ -13586,17 +14231,17 @@ define('ember-data/serializers/json', ['exports', 'ember', 'ember-data/-private/
|
|
13586
14231
|
var _this = this;
|
13587
14232
|
|
13588
14233
|
var attributes = undefined;
|
13589
|
-
if (
|
14234
|
+
if ((0, _emberDataPrivateFeatures.default)('ds-transform-pass-options')) {
|
13590
14235
|
attributes = get(typeClass, 'attributes');
|
13591
14236
|
}
|
13592
14237
|
|
13593
14238
|
typeClass.eachTransformedAttribute(function (key, typeClass) {
|
13594
|
-
if (!
|
14239
|
+
if (!(key in data)) {
|
13595
14240
|
return;
|
13596
14241
|
}
|
13597
14242
|
|
13598
14243
|
var transform = _this.transformFor(typeClass);
|
13599
|
-
if (
|
14244
|
+
if ((0, _emberDataPrivateFeatures.default)('ds-transform-pass-options')) {
|
13600
14245
|
var transformMeta = attributes.get(key);
|
13601
14246
|
data[key] = transform.deserialize(data[key], transformMeta.options);
|
13602
14247
|
} else {
|
@@ -14445,7 +15090,7 @@ define('ember-data/serializers/json', ['exports', 'ember', 'ember-data/-private/
|
|
14445
15090
|
var value = snapshot.attr(key);
|
14446
15091
|
if (type) {
|
14447
15092
|
var transform = this.transformFor(type);
|
14448
|
-
if (
|
15093
|
+
if ((0, _emberDataPrivateFeatures.default)('ds-transform-pass-options')) {
|
14449
15094
|
value = transform.serialize(value, attribute.options);
|
14450
15095
|
} else {
|
14451
15096
|
value = transform.serialize(value);
|
@@ -14686,7 +15331,7 @@ define('ember-data/serializers/json', ['exports', 'ember', 'ember-data/-private/
|
|
14686
15331
|
var _this7 = this;
|
14687
15332
|
|
14688
15333
|
if (payload && typeof payload === 'object' && payload.errors) {
|
14689
|
-
payload = (0,
|
15334
|
+
payload = (0, _emberDataAdaptersErrors.errorsArrayToHash)(payload.errors);
|
14690
15335
|
|
14691
15336
|
this.normalizeUsingDeclaredMapping(typeClass, payload);
|
14692
15337
|
|
@@ -14791,8 +15436,7 @@ define("ember-data/serializers/rest", ["exports", "ember", "ember-data/-private/
|
|
14791
15436
|
|
14792
15437
|
/**
|
14793
15438
|
Normally, applications will use the `RESTSerializer` by implementing
|
14794
|
-
the `normalize` method
|
14795
|
-
`normalizeHash`.
|
15439
|
+
the `normalize` method.
|
14796
15440
|
|
14797
15441
|
This allows you to do whatever kind of munging you need, and is
|
14798
15442
|
especially useful if your server is inconsistent and you need to
|
@@ -14805,7 +15449,7 @@ define("ember-data/serializers/rest", ["exports", "ember", "ember-data/-private/
|
|
14805
15449
|
There are also a number of hooks that you might find useful to define
|
14806
15450
|
across-the-board rules for your payload. These rules will be useful
|
14807
15451
|
if your server is consistent, or if you're building an adapter for
|
14808
|
-
an infrastructure service, like
|
15452
|
+
an infrastructure service, like Firebase, and want to encode service
|
14809
15453
|
conventions.
|
14810
15454
|
|
14811
15455
|
For example, if all of your keys are underscored and all-caps, but
|
@@ -14889,25 +15533,25 @@ define("ember-data/serializers/rest", ["exports", "ember", "ember-data/-private/
|
|
14889
15533
|
* With `App.Comment`, `"comments"` and `{ id: 1, body: "FIRST" }`
|
14890
15534
|
* With `App.Comment`, `"comments"` and `{ id: 2, body: "Rails is unagi" }`
|
14891
15535
|
You can use this method, for example, to normalize underscored keys to camelized
|
14892
|
-
or other general-purpose normalizations.
|
14893
|
-
|
14894
|
-
can specify those under `normalizeHash`.
|
15536
|
+
or other general-purpose normalizations. You will only need to implement
|
15537
|
+
`normalize` and manipulate the payload as desired.
|
14895
15538
|
For example, if the `IDs` under `"comments"` are provided as `_id` instead of
|
14896
15539
|
`id`, you can specify how to normalize just the comments:
|
14897
15540
|
```app/serializers/post.js
|
14898
15541
|
import DS from 'ember-data';
|
14899
15542
|
export default DS.RESTSerializer.extend({
|
14900
|
-
|
14901
|
-
|
15543
|
+
normalize(model, hash, prop) {
|
15544
|
+
if (prop === 'comments') {
|
14902
15545
|
hash.id = hash._id;
|
14903
|
-
delete hash._id;
|
14904
|
-
return hash;
|
15546
|
+
delete hash._id;
|
14905
15547
|
}
|
15548
|
+
return this._super(...arguments);
|
14906
15549
|
}
|
14907
15550
|
});
|
14908
15551
|
```
|
14909
|
-
|
14910
|
-
payload
|
15552
|
+
On each call to the `normalize` method, the third parameter (`prop`) is always
|
15553
|
+
one of the keys that were in the original payload or in the result of another
|
15554
|
+
normalization as `normalizeResponse`.
|
14911
15555
|
@method normalize
|
14912
15556
|
@param {DS.Model} modelClass
|
14913
15557
|
@param {Object} resourceHash
|
@@ -14916,9 +15560,13 @@ define("ember-data/serializers/rest", ["exports", "ember", "ember-data/-private/
|
|
14916
15560
|
*/
|
14917
15561
|
normalize: function (modelClass, resourceHash, prop) {
|
14918
15562
|
if (this.normalizeHash && this.normalizeHash[prop]) {
|
15563
|
+
(0, _emberDataPrivateDebug.deprecate)('`RESTSerializer.normalizeHash` has been deprecated. Please use `serializer.normalize` to modify the payload of single resources.', false, {
|
15564
|
+
id: 'ds.serializer.normalize-hash-deprecated',
|
15565
|
+
until: '3.0.0'
|
15566
|
+
});
|
14919
15567
|
this.normalizeHash[prop](resourceHash);
|
14920
15568
|
}
|
14921
|
-
return this._super(modelClass, resourceHash
|
15569
|
+
return this._super(modelClass, resourceHash);
|
14922
15570
|
},
|
14923
15571
|
|
14924
15572
|
/**
|
@@ -15180,7 +15828,7 @@ define("ember-data/serializers/rest", ["exports", "ember", "ember-data/-private/
|
|
15180
15828
|
});
|
15181
15829
|
}
|
15182
15830
|
|
15183
|
-
if (
|
15831
|
+
if ((0, _emberDataPrivateFeatures.default)('ds-pushpayload-return')) {
|
15184
15832
|
return store.push(documentHash);
|
15185
15833
|
} else {
|
15186
15834
|
store.push(documentHash);
|
@@ -15607,7 +16255,7 @@ define('ember-data/transform', ['exports', 'ember'], function (exports, _ember)
|
|
15607
16255
|
});
|
15608
16256
|
});
|
15609
16257
|
define("ember-data/version", ["exports"], function (exports) {
|
15610
|
-
exports.default = "2.
|
16258
|
+
exports.default = "2.6.0-beta.1";
|
15611
16259
|
});
|
15612
16260
|
define("ember-inflector", ["exports", "ember", "ember-inflector/lib/system", "ember-inflector/lib/ext/string"], function (exports, _ember, _emberInflectorLibSystem, _emberInflectorLibExtString) {
|
15613
16261
|
|
@@ -16002,7 +16650,7 @@ define('ember-inflector/lib/system/inflector', ['exports', 'ember'], function (e
|
|
16002
16650
|
return word;
|
16003
16651
|
}
|
16004
16652
|
|
16005
|
-
for (rule in irregular) {
|
16653
|
+
for (rule in this.rules.irregular) {
|
16006
16654
|
if (lowercase.match(rule + "$")) {
|
16007
16655
|
substitution = irregular[rule];
|
16008
16656
|
|
@@ -16011,7 +16659,7 @@ define('ember-inflector/lib/system/inflector', ['exports', 'ember'], function (e
|
|
16011
16659
|
rule = capitalize(rule);
|
16012
16660
|
}
|
16013
16661
|
|
16014
|
-
return word.replace(
|
16662
|
+
return word.replace(rule, substitution);
|
16015
16663
|
}
|
16016
16664
|
}
|
16017
16665
|
|