ember-data-source 1.0.0.beta.15 → 1.0.0.beta.16
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/dist/ember-data-tests.js +177 -151
- data/dist/ember-data.js +1408 -1121
- data/dist/ember-data.js.map +1 -1
- data/dist/ember-data.min.js +3 -3
- data/dist/ember-data.prod.js +1389 -1108
- data/package.json +4 -3
- metadata +2 -2
data/dist/ember-data.js
CHANGED
@@ -1,8 +1,5 @@
|
|
1
1
|
(function() {
|
2
2
|
"use strict";
|
3
|
-
/**
|
4
|
-
@module ember-data
|
5
|
-
*/
|
6
3
|
|
7
4
|
var ember$data$lib$system$adapter$$get = Ember.get;
|
8
5
|
|
@@ -25,9 +22,39 @@
|
|
25
22
|
transition to the `invalid` state and the errors will be set to the
|
26
23
|
`errors` property on the record.
|
27
24
|
|
28
|
-
|
29
|
-
|
30
|
-
|
25
|
+
For Ember Data to correctly map errors to their corresponding
|
26
|
+
properties on the model, Ember Data expects each error to be
|
27
|
+
namespaced under a key that matches the property name. For example
|
28
|
+
if you had a Post model that looked like this.
|
29
|
+
|
30
|
+
```js
|
31
|
+
App.Post = DS.Model.extend({
|
32
|
+
title: DS.attr('string'),
|
33
|
+
content: DS.attr('string')
|
34
|
+
});
|
35
|
+
```
|
36
|
+
|
37
|
+
To show an error from the server related to the `title` and
|
38
|
+
`content` properties your adapter could return a promise that
|
39
|
+
rejects with a `DS.InvalidError` object that looks like this:
|
40
|
+
|
41
|
+
```js
|
42
|
+
App.PostAdapter = DS.RESTAdapter.extend({
|
43
|
+
updateRecord: function() {
|
44
|
+
// Fictional adapter that always rejects
|
45
|
+
return Ember.RSVP.reject(new DS.InvalidError({
|
46
|
+
title: ['Must be unique'],
|
47
|
+
content: ['Must not be blank'],
|
48
|
+
}));
|
49
|
+
}
|
50
|
+
});
|
51
|
+
```
|
52
|
+
|
53
|
+
Your backend may use different property names for your records the
|
54
|
+
store will attempt extract and normalize the errors using the
|
55
|
+
serializer's `extractErrors` method before the errors get added to
|
56
|
+
the the model. As a result, it is safe for the `InvalidError` to
|
57
|
+
wrap the error payload unaltered.
|
31
58
|
|
32
59
|
Example
|
33
60
|
|
@@ -36,27 +63,20 @@
|
|
36
63
|
ajaxError: function(jqXHR) {
|
37
64
|
var error = this._super(jqXHR);
|
38
65
|
|
66
|
+
// 422 is used by this fictional server to signal a validation error
|
39
67
|
if (jqXHR && jqXHR.status === 422) {
|
40
68
|
var jsonErrors = Ember.$.parseJSON(jqXHR.responseText);
|
41
69
|
return new DS.InvalidError(jsonErrors);
|
42
70
|
} else {
|
71
|
+
// The ajax request failed however it is not a result of this
|
72
|
+
// record being in an invalid state so we do not return a
|
73
|
+
// `InvalidError` object.
|
43
74
|
return error;
|
44
75
|
}
|
45
76
|
}
|
46
77
|
});
|
47
78
|
```
|
48
79
|
|
49
|
-
The `DS.InvalidError` must be constructed with a single object whose
|
50
|
-
keys are the invalid model properties, and whose values contain
|
51
|
-
arrays of the corresponding error messages. For example:
|
52
|
-
|
53
|
-
```javascript
|
54
|
-
return new DS.InvalidError({
|
55
|
-
length: ['Must be less than 15'],
|
56
|
-
name: ['Must not be blank']
|
57
|
-
});
|
58
|
-
```
|
59
|
-
|
60
80
|
@class InvalidError
|
61
81
|
@namespace DS
|
62
82
|
*/
|
@@ -160,7 +180,7 @@
|
|
160
180
|
|
161
181
|
```javascript
|
162
182
|
App.ApplicationAdapter = DS.Adapter.extend({
|
163
|
-
find: function(store, type, id) {
|
183
|
+
find: function(store, type, id, snapshot) {
|
164
184
|
var url = [type.typeKey, id].join('/');
|
165
185
|
|
166
186
|
return new Ember.RSVP.Promise(function(resolve, reject) {
|
@@ -179,9 +199,10 @@
|
|
179
199
|
@param {DS.Store} store
|
180
200
|
@param {subclass of DS.Model} type
|
181
201
|
@param {String} id
|
202
|
+
@param {DS.Snapshot} snapshot
|
182
203
|
@return {Promise} promise
|
183
204
|
*/
|
184
|
-
find:
|
205
|
+
find: null,
|
185
206
|
|
186
207
|
/**
|
187
208
|
The `findAll()` method is called when you call `find` on the store
|
@@ -284,8 +305,8 @@
|
|
284
305
|
|
285
306
|
```javascript
|
286
307
|
App.ApplicationAdapter = DS.Adapter.extend({
|
287
|
-
createRecord: function(store, type,
|
288
|
-
var data = this.serialize(
|
308
|
+
createRecord: function(store, type, snapshot) {
|
309
|
+
var data = this.serialize(snapshot, { includeId: true });
|
289
310
|
var url = type;
|
290
311
|
|
291
312
|
// ...
|
@@ -313,8 +334,8 @@
|
|
313
334
|
|
314
335
|
```javascript
|
315
336
|
App.ApplicationAdapter = DS.Adapter.extend({
|
316
|
-
createRecord: function(store, type,
|
317
|
-
var data = this.serialize(
|
337
|
+
createRecord: function(store, type, snapshot) {
|
338
|
+
var data = this.serialize(snapshot, { includeId: true });
|
318
339
|
var url = type;
|
319
340
|
|
320
341
|
return new Ember.RSVP.Promise(function(resolve, reject) {
|
@@ -337,10 +358,10 @@
|
|
337
358
|
@method createRecord
|
338
359
|
@param {DS.Store} store
|
339
360
|
@param {subclass of DS.Model} type the DS.Model class of the record
|
340
|
-
@param {DS.
|
361
|
+
@param {DS.Snapshot} snapshot
|
341
362
|
@return {Promise} promise
|
342
363
|
*/
|
343
|
-
createRecord:
|
364
|
+
createRecord: null,
|
344
365
|
|
345
366
|
/**
|
346
367
|
Implement this method in a subclass to handle the updating of
|
@@ -352,9 +373,9 @@
|
|
352
373
|
|
353
374
|
```javascript
|
354
375
|
App.ApplicationAdapter = DS.Adapter.extend({
|
355
|
-
updateRecord: function(store, type,
|
356
|
-
var data = this.serialize(
|
357
|
-
var id =
|
376
|
+
updateRecord: function(store, type, snapshot) {
|
377
|
+
var data = this.serialize(snapshot, { includeId: true });
|
378
|
+
var id = snapshot.id;
|
358
379
|
var url = [type, id].join('/');
|
359
380
|
|
360
381
|
return new Ember.RSVP.Promise(function(resolve, reject) {
|
@@ -377,10 +398,10 @@
|
|
377
398
|
@method updateRecord
|
378
399
|
@param {DS.Store} store
|
379
400
|
@param {subclass of DS.Model} type the DS.Model class of the record
|
380
|
-
@param {DS.
|
401
|
+
@param {DS.Snapshot} snapshot
|
381
402
|
@return {Promise} promise
|
382
403
|
*/
|
383
|
-
updateRecord:
|
404
|
+
updateRecord: null,
|
384
405
|
|
385
406
|
/**
|
386
407
|
Implement this method in a subclass to handle the deletion of
|
@@ -392,9 +413,9 @@
|
|
392
413
|
|
393
414
|
```javascript
|
394
415
|
App.ApplicationAdapter = DS.Adapter.extend({
|
395
|
-
deleteRecord: function(store, type,
|
396
|
-
var data = this.serialize(
|
397
|
-
var id =
|
416
|
+
deleteRecord: function(store, type, snapshot) {
|
417
|
+
var data = this.serialize(snapshot, { includeId: true });
|
418
|
+
var id = snapshot.id;
|
398
419
|
var url = [type, id].join('/');
|
399
420
|
|
400
421
|
return new Ember.RSVP.Promise(function(resolve, reject) {
|
@@ -417,10 +438,10 @@
|
|
417
438
|
@method deleteRecord
|
418
439
|
@param {DS.Store} store
|
419
440
|
@param {subclass of DS.Model} type the DS.Model class of the record
|
420
|
-
@param {DS.
|
441
|
+
@param {DS.Snapshot} snapshot
|
421
442
|
@return {Promise} promise
|
422
443
|
*/
|
423
|
-
deleteRecord:
|
444
|
+
deleteRecord: null,
|
424
445
|
|
425
446
|
/**
|
426
447
|
By default the store will try to coalesce all `fetchRecord` calls within the same runloop
|
@@ -440,7 +461,7 @@
|
|
440
461
|
@param {DS.Store} store
|
441
462
|
@param {subclass of DS.Model} type the DS.Model class of the records
|
442
463
|
@param {Array} ids
|
443
|
-
@param {Array}
|
464
|
+
@param {Array} snapshots
|
444
465
|
@return {Promise} promise
|
445
466
|
*/
|
446
467
|
|
@@ -455,28 +476,27 @@
|
|
455
476
|
|
456
477
|
@method groupRecordsForFindMany
|
457
478
|
@param {DS.Store} store
|
458
|
-
@param {Array}
|
479
|
+
@param {Array} snapshots
|
459
480
|
@return {Array} an array of arrays of records, each of which is to be
|
460
481
|
loaded separately by `findMany`.
|
461
482
|
*/
|
462
|
-
groupRecordsForFindMany: function
|
463
|
-
return [
|
483
|
+
groupRecordsForFindMany: function(store, snapshots) {
|
484
|
+
return [snapshots];
|
464
485
|
}
|
465
486
|
});
|
466
487
|
|
467
488
|
var ember$data$lib$system$adapter$$default = ember$data$lib$system$adapter$$Adapter;
|
468
|
-
|
469
|
-
|
470
|
-
|
471
|
-
var ember$data$lib$adapters$fixture_adapter$$get = Ember.get;
|
472
|
-
var ember$data$lib$adapters$fixture_adapter$$fmt = Ember.String.fmt;
|
473
|
-
var ember$data$lib$adapters$fixture_adapter$$indexOf = Ember.EnumerableUtils.indexOf;
|
489
|
+
var ember$data$lib$adapters$fixture$adapter$$get = Ember.get;
|
490
|
+
var ember$data$lib$adapters$fixture$adapter$$fmt = Ember.String.fmt;
|
491
|
+
var ember$data$lib$adapters$fixture$adapter$$indexOf = Ember.EnumerableUtils.indexOf;
|
474
492
|
|
475
|
-
var ember$data$lib$adapters$
|
493
|
+
var ember$data$lib$adapters$fixture$adapter$$counter = 0;
|
476
494
|
|
477
|
-
var ember$data$lib$adapters$
|
495
|
+
var ember$data$lib$adapters$fixture$adapter$$default = ember$data$lib$system$adapter$$default.extend({
|
478
496
|
// by default, fixtures are already in normalized form
|
479
497
|
serializer: null,
|
498
|
+
// The fixture adapter does not support coalesceFindRequests
|
499
|
+
coalesceFindRequests: false,
|
480
500
|
|
481
501
|
/**
|
482
502
|
If `simulateRemoteResponse` is `true` the `FixtureAdapter` will
|
@@ -515,7 +535,7 @@
|
|
515
535
|
return fixtures.map(function(fixture) {
|
516
536
|
var fixtureIdType = typeof fixture.id;
|
517
537
|
if (fixtureIdType !== "number" && fixtureIdType !== "string") {
|
518
|
-
throw new Error(ember$data$lib$adapters$
|
538
|
+
throw new Error(ember$data$lib$adapters$fixture$adapter$$fmt('the id property must be defined as a number or string for fixture %@', [fixture]));
|
519
539
|
}
|
520
540
|
fixture.id = fixture.id + '';
|
521
541
|
return fixture;
|
@@ -560,10 +580,9 @@
|
|
560
580
|
@method mockJSON
|
561
581
|
@param {DS.Store} store
|
562
582
|
@param {Subclass of DS.Model} type
|
563
|
-
@param {DS.
|
583
|
+
@param {DS.Snapshot} snapshot
|
564
584
|
*/
|
565
|
-
mockJSON: function(store, type,
|
566
|
-
var snapshot = record._createSnapshot();
|
585
|
+
mockJSON: function(store, type, snapshot) {
|
567
586
|
return store.serializerFor(snapshot.typeKey).serialize(snapshot, { includeId: true });
|
568
587
|
},
|
569
588
|
|
@@ -574,7 +593,7 @@
|
|
574
593
|
@return {String} id
|
575
594
|
*/
|
576
595
|
generateIdForRecord: function(store) {
|
577
|
-
return "fixture-" + ember$data$lib$adapters$
|
596
|
+
return "fixture-" + ember$data$lib$adapters$fixture$adapter$$counter++;
|
578
597
|
},
|
579
598
|
|
580
599
|
/**
|
@@ -582,9 +601,10 @@
|
|
582
601
|
@param {DS.Store} store
|
583
602
|
@param {subclass of DS.Model} type
|
584
603
|
@param {String} id
|
604
|
+
@param {DS.Snapshot} snapshot
|
585
605
|
@return {Promise} promise
|
586
606
|
*/
|
587
|
-
find: function(store, type, id) {
|
607
|
+
find: function(store, type, id, snapshot) {
|
588
608
|
var fixtures = this.fixturesForType(type);
|
589
609
|
var fixture;
|
590
610
|
|
@@ -606,16 +626,17 @@
|
|
606
626
|
@param {DS.Store} store
|
607
627
|
@param {subclass of DS.Model} type
|
608
628
|
@param {Array} ids
|
629
|
+
@param {Array} snapshots
|
609
630
|
@return {Promise} promise
|
610
631
|
*/
|
611
|
-
findMany: function(store, type, ids) {
|
632
|
+
findMany: function(store, type, ids, snapshots) {
|
612
633
|
var fixtures = this.fixturesForType(type);
|
613
634
|
|
614
635
|
Ember.assert("Unable to find fixtures for model type "+type.toString(), fixtures);
|
615
636
|
|
616
637
|
if (fixtures) {
|
617
638
|
fixtures = fixtures.filter(function(item) {
|
618
|
-
return ember$data$lib$adapters$
|
639
|
+
return ember$data$lib$adapters$fixture$adapter$$indexOf(ids, item.id) !== -1;
|
619
640
|
});
|
620
641
|
}
|
621
642
|
|
@@ -671,11 +692,11 @@
|
|
671
692
|
@method createRecord
|
672
693
|
@param {DS.Store} store
|
673
694
|
@param {subclass of DS.Model} type
|
674
|
-
@param {DS.
|
695
|
+
@param {DS.Snapshot} snapshot
|
675
696
|
@return {Promise} promise
|
676
697
|
*/
|
677
|
-
createRecord: function(store, type,
|
678
|
-
var fixture = this.mockJSON(store, type,
|
698
|
+
createRecord: function(store, type, snapshot) {
|
699
|
+
var fixture = this.mockJSON(store, type, snapshot);
|
679
700
|
|
680
701
|
this.updateFixtures(type, fixture);
|
681
702
|
|
@@ -688,11 +709,11 @@
|
|
688
709
|
@method updateRecord
|
689
710
|
@param {DS.Store} store
|
690
711
|
@param {subclass of DS.Model} type
|
691
|
-
@param {DS.
|
712
|
+
@param {DS.Snapshot} snapshot
|
692
713
|
@return {Promise} promise
|
693
714
|
*/
|
694
|
-
updateRecord: function(store, type,
|
695
|
-
var fixture = this.mockJSON(store, type,
|
715
|
+
updateRecord: function(store, type, snapshot) {
|
716
|
+
var fixture = this.mockJSON(store, type, snapshot);
|
696
717
|
|
697
718
|
this.updateFixtures(type, fixture);
|
698
719
|
|
@@ -705,11 +726,11 @@
|
|
705
726
|
@method deleteRecord
|
706
727
|
@param {DS.Store} store
|
707
728
|
@param {subclass of DS.Model} type
|
708
|
-
@param {DS.
|
729
|
+
@param {DS.Snapshot} snapshot
|
709
730
|
@return {Promise} promise
|
710
731
|
*/
|
711
|
-
deleteRecord: function(store, type,
|
712
|
-
this.deleteLoadedFixture(type,
|
732
|
+
deleteRecord: function(store, type, snapshot) {
|
733
|
+
this.deleteLoadedFixture(type, snapshot);
|
713
734
|
|
714
735
|
return this.simulateRemoteCall(function() {
|
715
736
|
// no payload in a deletion
|
@@ -721,13 +742,13 @@
|
|
721
742
|
@method deleteLoadedFixture
|
722
743
|
@private
|
723
744
|
@param type
|
724
|
-
@param
|
745
|
+
@param snapshot
|
725
746
|
*/
|
726
|
-
deleteLoadedFixture: function(type,
|
727
|
-
var existingFixture = this.findExistingFixture(type,
|
747
|
+
deleteLoadedFixture: function(type, snapshot) {
|
748
|
+
var existingFixture = this.findExistingFixture(type, snapshot);
|
728
749
|
|
729
750
|
if (existingFixture) {
|
730
|
-
var index = ember$data$lib$adapters$
|
751
|
+
var index = ember$data$lib$adapters$fixture$adapter$$indexOf(type.FIXTURES, existingFixture);
|
731
752
|
type.FIXTURES.splice(index, 1);
|
732
753
|
return true;
|
733
754
|
}
|
@@ -737,11 +758,11 @@
|
|
737
758
|
@method findExistingFixture
|
738
759
|
@private
|
739
760
|
@param type
|
740
|
-
@param
|
761
|
+
@param snapshot
|
741
762
|
*/
|
742
|
-
findExistingFixture: function(type,
|
763
|
+
findExistingFixture: function(type, snapshot) {
|
743
764
|
var fixtures = this.fixturesForType(type);
|
744
|
-
var id =
|
765
|
+
var id = snapshot.id;
|
745
766
|
|
746
767
|
return this.findFixtureById(fixtures, id);
|
747
768
|
},
|
@@ -754,7 +775,7 @@
|
|
754
775
|
*/
|
755
776
|
findFixtureById: function(fixtures, id) {
|
756
777
|
return Ember.A(fixtures).find(function(r) {
|
757
|
-
if (''+ember$data$lib$adapters$
|
778
|
+
if (''+ember$data$lib$adapters$fixture$adapter$$get(r, 'id') === ''+id) {
|
758
779
|
return true;
|
759
780
|
} else {
|
760
781
|
return false;
|
@@ -773,11 +794,11 @@
|
|
773
794
|
|
774
795
|
return new Ember.RSVP.Promise(function(resolve) {
|
775
796
|
var value = Ember.copy(callback.call(context), true);
|
776
|
-
if (ember$data$lib$adapters$
|
797
|
+
if (ember$data$lib$adapters$fixture$adapter$$get(adapter, 'simulateRemoteResponse')) {
|
777
798
|
// Schedule with setTimeout
|
778
799
|
Ember.run.later(function() {
|
779
800
|
resolve(value);
|
780
|
-
}, ember$data$lib$adapters$
|
801
|
+
}, ember$data$lib$adapters$fixture$adapter$$get(adapter, 'latency'));
|
781
802
|
} else {
|
782
803
|
// Asynchronous, but at the of the runloop with zero latency
|
783
804
|
Ember.run.schedule('actions', null, function() {
|
@@ -788,23 +809,129 @@
|
|
788
809
|
}
|
789
810
|
});
|
790
811
|
|
791
|
-
/*
|
792
|
-
The Map/MapWithDefault/OrderedSet code has been in flux as we try
|
793
|
-
to catch up with ES6. This is difficult as we support multiple
|
794
|
-
versions of Ember.
|
795
|
-
This file is currently here in case we have to polyfill ember's code
|
796
|
-
across a few releases. As ES6 comes to a close we should have a smaller
|
797
|
-
and smaller gap in implementations between Ember releases.
|
798
|
-
*/
|
799
812
|
var ember$data$lib$system$map$$Map = Ember.Map;
|
800
813
|
var ember$data$lib$system$map$$MapWithDefault = Ember.MapWithDefault;
|
801
|
-
var ember$data$lib$system$map$$OrderedSet = Ember.OrderedSet;
|
802
814
|
|
803
815
|
var ember$data$lib$system$map$$default = ember$data$lib$system$map$$Map;
|
804
|
-
var ember$data$lib$adapters$
|
805
|
-
|
816
|
+
var ember$data$lib$adapters$build$url$mixin$$get = Ember.get;
|
817
|
+
|
818
|
+
var ember$data$lib$adapters$build$url$mixin$$default = Ember.Mixin.create({
|
819
|
+
/**
|
820
|
+
Builds a URL for a given type and optional ID.
|
821
|
+
|
822
|
+
By default, it pluralizes the type's name (for example, 'post'
|
823
|
+
becomes 'posts' and 'person' becomes 'people'). To override the
|
824
|
+
pluralization see [pathForType](#method_pathForType).
|
825
|
+
|
826
|
+
If an ID is specified, it adds the ID to the path generated
|
827
|
+
for the type, separated by a `/`.
|
828
|
+
|
829
|
+
When called by RESTAdapter.findMany() the `id` and `snapshot` parameters
|
830
|
+
will be arrays of ids and snapshots.
|
831
|
+
|
832
|
+
@method buildURL
|
833
|
+
@param {String} type
|
834
|
+
@param {String|Array} id single id or array of ids
|
835
|
+
@param {DS.Snapshot|Array} snapshot single snapshot or array of snapshots
|
836
|
+
@return {String} url
|
837
|
+
*/
|
838
|
+
buildURL: function(type, id, snapshot) {
|
839
|
+
var url = [];
|
840
|
+
var host = ember$data$lib$adapters$build$url$mixin$$get(this, 'host');
|
841
|
+
var prefix = this.urlPrefix();
|
842
|
+
|
843
|
+
if (type) { url.push(this.pathForType(type)); }
|
844
|
+
|
845
|
+
//We might get passed in an array of ids from findMany
|
846
|
+
//in which case we don't want to modify the url, as the
|
847
|
+
//ids will be passed in through a query param
|
848
|
+
if (id && !Ember.isArray(id)) { url.push(encodeURIComponent(id)); }
|
849
|
+
|
850
|
+
if (prefix) { url.unshift(prefix); }
|
851
|
+
|
852
|
+
url = url.join('/');
|
853
|
+
if (!host && url) { url = '/' + url; }
|
854
|
+
|
855
|
+
return url;
|
856
|
+
},
|
857
|
+
|
858
|
+
/**
|
859
|
+
@method urlPrefix
|
860
|
+
@private
|
861
|
+
@param {String} path
|
862
|
+
@param {String} parentUrl
|
863
|
+
@return {String} urlPrefix
|
864
|
+
*/
|
865
|
+
urlPrefix: function(path, parentURL) {
|
866
|
+
var host = ember$data$lib$adapters$build$url$mixin$$get(this, 'host');
|
867
|
+
var namespace = ember$data$lib$adapters$build$url$mixin$$get(this, 'namespace');
|
868
|
+
var url = [];
|
869
|
+
|
870
|
+
if (path) {
|
871
|
+
// Protocol relative url
|
872
|
+
//jscs:disable disallowEmptyBlocks
|
873
|
+
if (/^\/\//.test(path)) {
|
874
|
+
// Do nothing, the full host is already included. This branch
|
875
|
+
// avoids the absolute path logic and the relative path logic.
|
876
|
+
|
877
|
+
// Absolute path
|
878
|
+
} else if (path.charAt(0) === '/') {
|
879
|
+
//jscs:enable disallowEmptyBlocks
|
880
|
+
if (host) {
|
881
|
+
path = path.slice(1);
|
882
|
+
url.push(host);
|
883
|
+
}
|
884
|
+
// Relative path
|
885
|
+
} else if (!/^http(s)?:\/\//.test(path)) {
|
886
|
+
url.push(parentURL);
|
887
|
+
}
|
888
|
+
} else {
|
889
|
+
if (host) { url.push(host); }
|
890
|
+
if (namespace) { url.push(namespace); }
|
891
|
+
}
|
892
|
+
|
893
|
+
if (path) {
|
894
|
+
url.push(path);
|
895
|
+
}
|
896
|
+
|
897
|
+
return url.join('/');
|
898
|
+
},
|
899
|
+
|
900
|
+
|
901
|
+
/**
|
902
|
+
Determines the pathname for a given type.
|
903
|
+
|
904
|
+
By default, it pluralizes the type's name (for example,
|
905
|
+
'post' becomes 'posts' and 'person' becomes 'people').
|
906
|
+
|
907
|
+
### Pathname customization
|
908
|
+
|
909
|
+
For example if you have an object LineItem with an
|
910
|
+
endpoint of "/line_items/".
|
911
|
+
|
912
|
+
```js
|
913
|
+
App.ApplicationAdapter = DS.RESTAdapter.extend({
|
914
|
+
pathForType: function(type) {
|
915
|
+
var decamelized = Ember.String.decamelize(type);
|
916
|
+
return Ember.String.pluralize(decamelized);
|
917
|
+
}
|
918
|
+
});
|
919
|
+
```
|
920
|
+
|
921
|
+
@method pathForType
|
922
|
+
@param {String} type
|
923
|
+
@return {String} path
|
924
|
+
**/
|
925
|
+
pathForType: function(type) {
|
926
|
+
var camelized = Ember.String.camelize(type);
|
927
|
+
return Ember.String.pluralize(camelized);
|
928
|
+
}
|
929
|
+
});
|
930
|
+
|
931
|
+
var ember$data$lib$adapters$rest$adapter$$get = Ember.get;
|
932
|
+
var ember$data$lib$adapters$rest$adapter$$forEach = Ember.ArrayPolyfills.forEach;
|
806
933
|
|
807
|
-
var ember$data$lib$adapters$
|
934
|
+
var ember$data$lib$adapters$rest$adapter$$default = ember$data$lib$system$adapter$$Adapter.extend(ember$data$lib$adapters$build$url$mixin$$default, {
|
808
935
|
defaultSerializer: '-rest',
|
809
936
|
|
810
937
|
/**
|
@@ -974,11 +1101,11 @@
|
|
974
1101
|
@param {DS.Store} store
|
975
1102
|
@param {subclass of DS.Model} type
|
976
1103
|
@param {String} id
|
977
|
-
@param {DS.
|
1104
|
+
@param {DS.Snapshot} snapshot
|
978
1105
|
@return {Promise} promise
|
979
1106
|
*/
|
980
|
-
find: function(store, type, id,
|
981
|
-
return this.ajax(this.buildURL(type.typeKey, id,
|
1107
|
+
find: function(store, type, id, snapshot) {
|
1108
|
+
return this.ajax(this.buildURL(type.typeKey, id, snapshot), 'GET');
|
982
1109
|
},
|
983
1110
|
|
984
1111
|
/**
|
@@ -1059,11 +1186,11 @@
|
|
1059
1186
|
@param {DS.Store} store
|
1060
1187
|
@param {subclass of DS.Model} type
|
1061
1188
|
@param {Array} ids
|
1062
|
-
@param {Array}
|
1189
|
+
@param {Array} snapshots
|
1063
1190
|
@return {Promise} promise
|
1064
1191
|
*/
|
1065
|
-
findMany: function(store, type, ids,
|
1066
|
-
return this.ajax(this.buildURL(type.typeKey, ids,
|
1192
|
+
findMany: function(store, type, ids, snapshots) {
|
1193
|
+
return this.ajax(this.buildURL(type.typeKey, ids, snapshots), 'GET', { data: { ids: ids } });
|
1067
1194
|
},
|
1068
1195
|
|
1069
1196
|
/**
|
@@ -1091,14 +1218,14 @@
|
|
1091
1218
|
|
1092
1219
|
@method findHasMany
|
1093
1220
|
@param {DS.Store} store
|
1094
|
-
@param {DS.
|
1221
|
+
@param {DS.Snapshot} snapshot
|
1095
1222
|
@param {String} url
|
1096
1223
|
@return {Promise} promise
|
1097
1224
|
*/
|
1098
|
-
findHasMany: function(store,
|
1099
|
-
var host = ember$data$lib$adapters$
|
1100
|
-
var id =
|
1101
|
-
var type =
|
1225
|
+
findHasMany: function(store, snapshot, url, relationship) {
|
1226
|
+
var host = ember$data$lib$adapters$rest$adapter$$get(this, 'host');
|
1227
|
+
var id = snapshot.id;
|
1228
|
+
var type = snapshot.typeKey;
|
1102
1229
|
|
1103
1230
|
if (host && url.charAt(0) === '/' && url.charAt(1) !== '/') {
|
1104
1231
|
url = host + url;
|
@@ -1130,13 +1257,13 @@
|
|
1130
1257
|
|
1131
1258
|
@method findBelongsTo
|
1132
1259
|
@param {DS.Store} store
|
1133
|
-
@param {DS.
|
1260
|
+
@param {DS.Snapshot} snapshot
|
1134
1261
|
@param {String} url
|
1135
1262
|
@return {Promise} promise
|
1136
1263
|
*/
|
1137
|
-
findBelongsTo: function(store,
|
1138
|
-
var id =
|
1139
|
-
var type =
|
1264
|
+
findBelongsTo: function(store, snapshot, url, relationship) {
|
1265
|
+
var id = snapshot.id;
|
1266
|
+
var type = snapshot.typeKey;
|
1140
1267
|
|
1141
1268
|
return this.ajax(this.urlPrefix(url, this.buildURL(type, id)), 'GET');
|
1142
1269
|
},
|
@@ -1154,17 +1281,16 @@
|
|
1154
1281
|
@method createRecord
|
1155
1282
|
@param {DS.Store} store
|
1156
1283
|
@param {subclass of DS.Model} type
|
1157
|
-
@param {DS.
|
1284
|
+
@param {DS.Snapshot} snapshot
|
1158
1285
|
@return {Promise} promise
|
1159
1286
|
*/
|
1160
|
-
createRecord: function(store, type,
|
1287
|
+
createRecord: function(store, type, snapshot) {
|
1161
1288
|
var data = {};
|
1162
1289
|
var serializer = store.serializerFor(type.typeKey);
|
1163
1290
|
|
1164
|
-
var snapshot = record._createSnapshot();
|
1165
1291
|
serializer.serializeIntoHash(data, type, snapshot, { includeId: true });
|
1166
1292
|
|
1167
|
-
return this.ajax(this.buildURL(type.typeKey, null,
|
1293
|
+
return this.ajax(this.buildURL(type.typeKey, null, snapshot), "POST", { data: data });
|
1168
1294
|
},
|
1169
1295
|
|
1170
1296
|
/**
|
@@ -1180,19 +1306,18 @@
|
|
1180
1306
|
@method updateRecord
|
1181
1307
|
@param {DS.Store} store
|
1182
1308
|
@param {subclass of DS.Model} type
|
1183
|
-
@param {DS.
|
1309
|
+
@param {DS.Snapshot} snapshot
|
1184
1310
|
@return {Promise} promise
|
1185
1311
|
*/
|
1186
|
-
updateRecord: function(store, type,
|
1312
|
+
updateRecord: function(store, type, snapshot) {
|
1187
1313
|
var data = {};
|
1188
1314
|
var serializer = store.serializerFor(type.typeKey);
|
1189
1315
|
|
1190
|
-
var snapshot = record._createSnapshot();
|
1191
1316
|
serializer.serializeIntoHash(data, type, snapshot);
|
1192
1317
|
|
1193
|
-
var id =
|
1318
|
+
var id = snapshot.id;
|
1194
1319
|
|
1195
|
-
return this.ajax(this.buildURL(type.typeKey, id,
|
1320
|
+
return this.ajax(this.buildURL(type.typeKey, id, snapshot), "PUT", { data: data });
|
1196
1321
|
},
|
1197
1322
|
|
1198
1323
|
/**
|
@@ -1203,104 +1328,25 @@
|
|
1203
1328
|
@method deleteRecord
|
1204
1329
|
@param {DS.Store} store
|
1205
1330
|
@param {subclass of DS.Model} type
|
1206
|
-
@param {DS.
|
1331
|
+
@param {DS.Snapshot} snapshot
|
1207
1332
|
@return {Promise} promise
|
1208
1333
|
*/
|
1209
|
-
deleteRecord: function(store, type,
|
1210
|
-
var id =
|
1211
|
-
|
1212
|
-
return this.ajax(this.buildURL(type.typeKey, id, record), "DELETE");
|
1213
|
-
},
|
1214
|
-
|
1215
|
-
/**
|
1216
|
-
Builds a URL for a given type and optional ID.
|
1217
|
-
|
1218
|
-
By default, it pluralizes the type's name (for example, 'post'
|
1219
|
-
becomes 'posts' and 'person' becomes 'people'). To override the
|
1220
|
-
pluralization see [pathForType](#method_pathForType).
|
1221
|
-
|
1222
|
-
If an ID is specified, it adds the ID to the path generated
|
1223
|
-
for the type, separated by a `/`.
|
1224
|
-
|
1225
|
-
@method buildURL
|
1226
|
-
@param {String} type
|
1227
|
-
@param {String} id
|
1228
|
-
@param {DS.Model} record
|
1229
|
-
@return {String} url
|
1230
|
-
*/
|
1231
|
-
buildURL: function(type, id, record) {
|
1232
|
-
var url = [];
|
1233
|
-
var host = ember$data$lib$adapters$rest_adapter$$get(this, 'host');
|
1234
|
-
var prefix = this.urlPrefix();
|
1235
|
-
|
1236
|
-
if (type) { url.push(this.pathForType(type)); }
|
1237
|
-
|
1238
|
-
//We might get passed in an array of ids from findMany
|
1239
|
-
//in which case we don't want to modify the url, as the
|
1240
|
-
//ids will be passed in through a query param
|
1241
|
-
if (id && !Ember.isArray(id)) { url.push(encodeURIComponent(id)); }
|
1242
|
-
|
1243
|
-
if (prefix) { url.unshift(prefix); }
|
1244
|
-
|
1245
|
-
url = url.join('/');
|
1246
|
-
if (!host && url) { url = '/' + url; }
|
1247
|
-
|
1248
|
-
return url;
|
1249
|
-
},
|
1250
|
-
|
1251
|
-
/**
|
1252
|
-
@method urlPrefix
|
1253
|
-
@private
|
1254
|
-
@param {String} path
|
1255
|
-
@param {String} parentUrl
|
1256
|
-
@return {String} urlPrefix
|
1257
|
-
*/
|
1258
|
-
urlPrefix: function(path, parentURL) {
|
1259
|
-
var host = ember$data$lib$adapters$rest_adapter$$get(this, 'host');
|
1260
|
-
var namespace = ember$data$lib$adapters$rest_adapter$$get(this, 'namespace');
|
1261
|
-
var url = [];
|
1262
|
-
|
1263
|
-
if (path) {
|
1264
|
-
// Protocol relative url
|
1265
|
-
//jscs:disable disallowEmptyBlocks
|
1266
|
-
if (/^\/\//.test(path)) {
|
1267
|
-
// Do nothing, the full host is already included. This branch
|
1268
|
-
// avoids the absolute path logic and the relative path logic.
|
1269
|
-
|
1270
|
-
// Absolute path
|
1271
|
-
} else if (path.charAt(0) === '/') {
|
1272
|
-
//jscs:enable disallowEmptyBlocks
|
1273
|
-
if (host) {
|
1274
|
-
path = path.slice(1);
|
1275
|
-
url.push(host);
|
1276
|
-
}
|
1277
|
-
// Relative path
|
1278
|
-
} else if (!/^http(s)?:\/\//.test(path)) {
|
1279
|
-
url.push(parentURL);
|
1280
|
-
}
|
1281
|
-
} else {
|
1282
|
-
if (host) { url.push(host); }
|
1283
|
-
if (namespace) { url.push(namespace); }
|
1284
|
-
}
|
1285
|
-
|
1286
|
-
if (path) {
|
1287
|
-
url.push(path);
|
1288
|
-
}
|
1334
|
+
deleteRecord: function(store, type, snapshot) {
|
1335
|
+
var id = snapshot.id;
|
1289
1336
|
|
1290
|
-
return
|
1337
|
+
return this.ajax(this.buildURL(type.typeKey, id, snapshot), "DELETE");
|
1291
1338
|
},
|
1292
1339
|
|
1293
|
-
_stripIDFromURL: function(store,
|
1294
|
-
var
|
1295
|
-
var url = this.buildURL(type.typeKey, record.get('id'), record);
|
1340
|
+
_stripIDFromURL: function(store, snapshot) {
|
1341
|
+
var url = this.buildURL(snapshot.typeKey, snapshot.id, snapshot);
|
1296
1342
|
|
1297
1343
|
var expandedURL = url.split('/');
|
1298
1344
|
//Case when the url is of the format ...something/:id
|
1299
1345
|
var lastSegment = expandedURL[expandedURL.length - 1];
|
1300
|
-
var id =
|
1346
|
+
var id = snapshot.id;
|
1301
1347
|
if (lastSegment === id) {
|
1302
1348
|
expandedURL[expandedURL.length - 1] = "";
|
1303
|
-
} else if (ember$data$lib$adapters$
|
1349
|
+
} else if (ember$data$lib$adapters$rest$adapter$$endsWith(lastSegment, '?id=' + id)) {
|
1304
1350
|
//Case when the url is of the format ...something?id=:id
|
1305
1351
|
expandedURL[expandedURL.length - 1] = lastSegment.substring(0, lastSegment.length - id.length - 1);
|
1306
1352
|
}
|
@@ -1329,18 +1375,18 @@
|
|
1329
1375
|
|
1330
1376
|
@method groupRecordsForFindMany
|
1331
1377
|
@param {DS.Store} store
|
1332
|
-
@param {Array}
|
1378
|
+
@param {Array} snapshots
|
1333
1379
|
@return {Array} an array of arrays of records, each of which is to be
|
1334
1380
|
loaded separately by `findMany`.
|
1335
1381
|
*/
|
1336
|
-
groupRecordsForFindMany: function (store,
|
1382
|
+
groupRecordsForFindMany: function (store, snapshots) {
|
1337
1383
|
var groups = ember$data$lib$system$map$$MapWithDefault.create({ defaultValue: function() { return []; } });
|
1338
1384
|
var adapter = this;
|
1339
1385
|
var maxUrlLength = this.maxUrlLength;
|
1340
1386
|
|
1341
|
-
ember$data$lib$adapters$
|
1342
|
-
var baseUrl = adapter._stripIDFromURL(store,
|
1343
|
-
groups.get(baseUrl).push(
|
1387
|
+
ember$data$lib$adapters$rest$adapter$$forEach.call(snapshots, function(snapshot) {
|
1388
|
+
var baseUrl = adapter._stripIDFromURL(store, snapshot);
|
1389
|
+
groups.get(baseUrl).push(snapshot);
|
1344
1390
|
});
|
1345
1391
|
|
1346
1392
|
function splitGroupToFitInUrl(group, maxUrlLength, paramNameLength) {
|
@@ -1348,8 +1394,8 @@
|
|
1348
1394
|
var idsSize = 0;
|
1349
1395
|
var splitGroups = [[]];
|
1350
1396
|
|
1351
|
-
ember$data$lib$adapters$
|
1352
|
-
var additionalLength = encodeURIComponent(
|
1397
|
+
ember$data$lib$adapters$rest$adapter$$forEach.call(group, function(snapshot) {
|
1398
|
+
var additionalLength = encodeURIComponent(snapshot.id).length + paramNameLength;
|
1353
1399
|
if (baseUrl.length + idsSize + additionalLength >= maxUrlLength) {
|
1354
1400
|
idsSize = 0;
|
1355
1401
|
splitGroups.push([]);
|
@@ -1358,7 +1404,7 @@
|
|
1358
1404
|
idsSize += additionalLength;
|
1359
1405
|
|
1360
1406
|
var lastGroupIndex = splitGroups.length - 1;
|
1361
|
-
splitGroups[lastGroupIndex].push(
|
1407
|
+
splitGroups[lastGroupIndex].push(snapshot);
|
1362
1408
|
});
|
1363
1409
|
|
1364
1410
|
return splitGroups;
|
@@ -1369,7 +1415,7 @@
|
|
1369
1415
|
var paramNameLength = '&ids%5B%5D='.length;
|
1370
1416
|
var splitGroups = splitGroupToFitInUrl(group, maxUrlLength, paramNameLength);
|
1371
1417
|
|
1372
|
-
ember$data$lib$adapters$
|
1418
|
+
ember$data$lib$adapters$rest$adapter$$forEach.call(splitGroups, function(splitGroup) {
|
1373
1419
|
groupsArray.push(splitGroup);
|
1374
1420
|
});
|
1375
1421
|
});
|
@@ -1377,49 +1423,20 @@
|
|
1377
1423
|
return groupsArray;
|
1378
1424
|
},
|
1379
1425
|
|
1380
|
-
/**
|
1381
|
-
Determines the pathname for a given type.
|
1382
1426
|
|
1383
|
-
|
1384
|
-
|
1427
|
+
/**
|
1428
|
+
Takes an ajax response, and returns an error payload.
|
1385
1429
|
|
1386
|
-
|
1430
|
+
Returning a `DS.InvalidError` from this method will cause the
|
1431
|
+
record to transition into the `invalid` state and make the
|
1432
|
+
`errors` object available on the record. When returning an
|
1433
|
+
`InvalidError` the store will attempt to normalize the error data
|
1434
|
+
returned from the server using the serializer's `extractErrors`
|
1435
|
+
method.
|
1387
1436
|
|
1388
|
-
|
1389
|
-
endpoint of "/line_items/".
|
1437
|
+
Example
|
1390
1438
|
|
1391
|
-
```
|
1392
|
-
App.ApplicationAdapter = DS.RESTAdapter.extend({
|
1393
|
-
pathForType: function(type) {
|
1394
|
-
var decamelized = Ember.String.decamelize(type);
|
1395
|
-
return Ember.String.pluralize(decamelized);
|
1396
|
-
}
|
1397
|
-
});
|
1398
|
-
```
|
1399
|
-
|
1400
|
-
@method pathForType
|
1401
|
-
@param {String} type
|
1402
|
-
@return {String} path
|
1403
|
-
**/
|
1404
|
-
pathForType: function(type) {
|
1405
|
-
var camelized = Ember.String.camelize(type);
|
1406
|
-
return Ember.String.pluralize(camelized);
|
1407
|
-
},
|
1408
|
-
|
1409
|
-
/**
|
1410
|
-
Takes an ajax response, and returns an error payload.
|
1411
|
-
|
1412
|
-
Returning a `DS.InvalidError` from this method will cause the
|
1413
|
-
record to transition into the `invalid` state and make the
|
1414
|
-
`errors` object available on the record.
|
1415
|
-
|
1416
|
-
This function should return the entire payload as received from the
|
1417
|
-
server. Error object extraction and normalization of model errors
|
1418
|
-
should be performed by `extractErrors` on the serializer.
|
1419
|
-
|
1420
|
-
Example
|
1421
|
-
|
1422
|
-
```javascript
|
1439
|
+
```javascript
|
1423
1440
|
App.ApplicationAdapter = DS.RESTAdapter.extend({
|
1424
1441
|
ajaxError: function(jqXHR) {
|
1425
1442
|
var error = this._super(jqXHR);
|
@@ -1445,6 +1462,7 @@
|
|
1445
1462
|
@method ajaxError
|
1446
1463
|
@param {Object} jqXHR
|
1447
1464
|
@param {Object} responseText
|
1465
|
+
@param {Object} errorThrown
|
1448
1466
|
@return {Object} jqXHR
|
1449
1467
|
*/
|
1450
1468
|
ajaxError: function(jqXHR, responseText, errorThrown) {
|
@@ -1474,7 +1492,6 @@
|
|
1474
1492
|
If you need to access these, you can override this hook to copy them
|
1475
1493
|
from jqXHR to the payload object so they can be processed in you serializer.
|
1476
1494
|
|
1477
|
-
|
1478
1495
|
2. Your API might return errors as successful responses with status code
|
1479
1496
|
200 and an Errors text or object. You can return a DS.InvalidError from
|
1480
1497
|
this hook and it will automatically reject the promise and put your record
|
@@ -1557,10 +1574,10 @@
|
|
1557
1574
|
hash.data = JSON.stringify(hash.data);
|
1558
1575
|
}
|
1559
1576
|
|
1560
|
-
var headers = ember$data$lib$adapters$
|
1577
|
+
var headers = ember$data$lib$adapters$rest$adapter$$get(this, 'headers');
|
1561
1578
|
if (headers !== undefined) {
|
1562
1579
|
hash.beforeSend = function (xhr) {
|
1563
|
-
ember$data$lib$adapters$
|
1580
|
+
ember$data$lib$adapters$rest$adapter$$forEach.call(Ember.keys(headers), function(key) {
|
1564
1581
|
xhr.setRequestHeader(key, headers[key]);
|
1565
1582
|
});
|
1566
1583
|
};
|
@@ -1571,7 +1588,7 @@
|
|
1571
1588
|
});
|
1572
1589
|
|
1573
1590
|
//From http://stackoverflow.com/questions/280634/endswith-in-javascript
|
1574
|
-
function ember$data$lib$adapters$
|
1591
|
+
function ember$data$lib$adapters$rest$adapter$$endsWith(string, suffix) {
|
1575
1592
|
if (typeof String.prototype.endsWith !== 'function') {
|
1576
1593
|
return string.indexOf(suffix, string.length - suffix.length) !== -1;
|
1577
1594
|
} else {
|
@@ -1966,51 +1983,105 @@
|
|
1966
1983
|
|
1967
1984
|
ember$inflector$lib$system$inflector$$default.inflector = new ember$inflector$lib$system$inflector$$default(ember$inflector$lib$system$inflections$$default);
|
1968
1985
|
|
1969
|
-
|
1970
|
-
|
1971
|
-
|
1972
|
-
|
1973
|
-
|
1974
|
-
|
1975
|
-
|
1976
|
-
|
1977
|
-
|
1978
|
-
|
1979
|
-
|
1980
|
-
|
1981
|
-
|
1982
|
-
|
1983
|
-
|
1984
|
-
|
1985
|
-
|
1986
|
-
|
1987
|
-
|
1988
|
-
|
1989
|
-
|
1990
|
-
|
1991
|
-
|
1992
|
-
|
1993
|
-
|
1994
|
-
|
1995
|
-
|
1996
|
-
|
1997
|
-
|
1998
|
-
|
1999
|
-
|
2000
|
-
|
2001
|
-
|
2002
|
-
|
2003
|
-
|
2004
|
-
|
2005
|
-
|
2006
|
-
|
2007
|
-
|
2008
|
-
|
2009
|
-
word =
|
1986
|
+
if (Ember.HTMLBars) {
|
1987
|
+
/**
|
1988
|
+
*
|
1989
|
+
* If you have Ember Inflector (such as if Ember Data is present),
|
1990
|
+
* singularize a word. For example, turn "oxen" into "ox".
|
1991
|
+
*
|
1992
|
+
* Example:
|
1993
|
+
*
|
1994
|
+
* {{singularize myProperty}}
|
1995
|
+
* {{singularize "oxen"}}
|
1996
|
+
*
|
1997
|
+
* @for Ember.HTMLBars.helpers
|
1998
|
+
* @method singularize
|
1999
|
+
* @param {String|Property} word word to singularize
|
2000
|
+
*/
|
2001
|
+
Ember.HTMLBars._registerHelper('singularize', Ember.HTMLBars.makeBoundHelper(function(params){
|
2002
|
+
return ember$inflector$lib$system$string$$singularize(params[0]);
|
2003
|
+
}));
|
2004
|
+
|
2005
|
+
/**
|
2006
|
+
*
|
2007
|
+
* If you have Ember Inflector (such as if Ember Data is present),
|
2008
|
+
* pluralize a word. For example, turn "ox" into "oxen".
|
2009
|
+
*
|
2010
|
+
* Example:
|
2011
|
+
*
|
2012
|
+
* {{pluralize count myProperty}}
|
2013
|
+
* {{pluralize 1 "oxen"}}
|
2014
|
+
* {{pluralize myProperty}}
|
2015
|
+
* {{pluralize "ox"}}
|
2016
|
+
*
|
2017
|
+
* @for Ember.HTMLBars.helpers
|
2018
|
+
* @method pluralize
|
2019
|
+
* @param {Number|Property} [count] count of objects
|
2020
|
+
* @param {String|Property} word word to pluralize
|
2021
|
+
*/
|
2022
|
+
Ember.HTMLBars._registerHelper('pluralize', Ember.HTMLBars.makeBoundHelper(function(params) {
|
2023
|
+
var count, word;
|
2024
|
+
|
2025
|
+
if (params.length === 1) {
|
2026
|
+
word = params[0];
|
2027
|
+
return ember$inflector$lib$system$string$$pluralize(word);
|
2028
|
+
} else {
|
2029
|
+
count = params[0];
|
2030
|
+
word = params[1];
|
2031
|
+
|
2032
|
+
if (count !== 1) {
|
2033
|
+
word = ember$inflector$lib$system$string$$pluralize(word);
|
2034
|
+
}
|
2035
|
+
return count + " " + word;
|
2036
|
+
}
|
2037
|
+
}));
|
2038
|
+
} else {
|
2039
|
+
/**
|
2040
|
+
*
|
2041
|
+
* If you have Ember Inflector (such as if Ember Data is present),
|
2042
|
+
* singularize a word. For example, turn "oxen" into "ox".
|
2043
|
+
*
|
2044
|
+
* Example:
|
2045
|
+
*
|
2046
|
+
* {{singularize myProperty}}
|
2047
|
+
* {{singularize "oxen"}}
|
2048
|
+
*
|
2049
|
+
* @for Ember.Handlebars.helpers
|
2050
|
+
* @method singularize
|
2051
|
+
* @param {String|Property} word word to singularize
|
2052
|
+
*/
|
2053
|
+
Ember.Handlebars.helper('singularize', ember$inflector$lib$system$string$$singularize);
|
2054
|
+
|
2055
|
+
/**
|
2056
|
+
*
|
2057
|
+
* If you have Ember Inflector (such as if Ember Data is present),
|
2058
|
+
* pluralize a word. For example, turn "ox" into "oxen".
|
2059
|
+
*
|
2060
|
+
* Example:
|
2061
|
+
*
|
2062
|
+
* {{pluralize count myProperty}}
|
2063
|
+
* {{pluralize 1 "oxen"}}
|
2064
|
+
* {{pluralize myProperty}}
|
2065
|
+
* {{pluralize "ox"}}
|
2066
|
+
*
|
2067
|
+
* @for Ember.Handlebars.helpers
|
2068
|
+
* @method pluralize
|
2069
|
+
* @param {Number|Property} [count] count of objects
|
2070
|
+
* @param {String|Property} word word to pluralize
|
2071
|
+
*/
|
2072
|
+
Ember.Handlebars.helper('pluralize', function(count, word, options) {
|
2073
|
+
if(arguments.length < 3) {
|
2074
|
+
return ember$inflector$lib$system$string$$pluralize(count);
|
2075
|
+
} else {
|
2076
|
+
/* jshint eqeqeq: false */
|
2077
|
+
if(count != 1) {
|
2078
|
+
/* jshint eqeqeq: true */
|
2079
|
+
word = ember$inflector$lib$system$string$$pluralize(word);
|
2080
|
+
}
|
2081
|
+
return count + " " + word;
|
2010
2082
|
}
|
2011
|
-
|
2012
|
-
|
2013
|
-
});
|
2083
|
+
});
|
2084
|
+
}
|
2014
2085
|
|
2015
2086
|
if (Ember.EXTEND_PROTOTYPES === true || Ember.EXTEND_PROTOTYPES.String) {
|
2016
2087
|
/**
|
@@ -2042,12 +2113,21 @@
|
|
2042
2113
|
|
2043
2114
|
var ember$inflector$lib$main$$default = ember$inflector$lib$system$inflector$$default;
|
2044
2115
|
|
2116
|
+
if (typeof define !== 'undefined' && define.amd){
|
2117
|
+
define('ember-inflector', ['exports'], function(__exports__){
|
2118
|
+
__exports__['default'] = ember$inflector$lib$system$inflector$$default;
|
2119
|
+
return ember$inflector$lib$system$inflector$$default;
|
2120
|
+
});
|
2121
|
+
} else if (typeof module !== 'undefined' && module['exports']){
|
2122
|
+
module['exports'] = ember$inflector$lib$system$inflector$$default;
|
2123
|
+
}
|
2124
|
+
|
2045
2125
|
/**
|
2046
2126
|
@module ember-data
|
2047
2127
|
*/
|
2048
2128
|
|
2049
|
-
var activemodel$adapter$lib$system$
|
2050
|
-
var activemodel$adapter$lib$system$
|
2129
|
+
var activemodel$adapter$lib$system$active$model$adapter$$decamelize = Ember.String.decamelize;
|
2130
|
+
var activemodel$adapter$lib$system$active$model$adapter$$underscore = Ember.String.underscore;
|
2051
2131
|
|
2052
2132
|
/**
|
2053
2133
|
The ActiveModelAdapter is a subclass of the RESTAdapter designed to integrate
|
@@ -2140,7 +2220,7 @@
|
|
2140
2220
|
@extends DS.RESTAdapter
|
2141
2221
|
**/
|
2142
2222
|
|
2143
|
-
var activemodel$adapter$lib$system$
|
2223
|
+
var activemodel$adapter$lib$system$active$model$adapter$$ActiveModelAdapter = ember$data$lib$adapters$rest$adapter$$default.extend({
|
2144
2224
|
defaultSerializer: '-active-model',
|
2145
2225
|
/**
|
2146
2226
|
The ActiveModelAdapter overrides the `pathForType` method to build
|
@@ -2156,8 +2236,8 @@
|
|
2156
2236
|
@return String
|
2157
2237
|
*/
|
2158
2238
|
pathForType: function(type) {
|
2159
|
-
var decamelized = activemodel$adapter$lib$system$
|
2160
|
-
var underscored = activemodel$adapter$lib$system$
|
2239
|
+
var decamelized = activemodel$adapter$lib$system$active$model$adapter$$decamelize(type);
|
2240
|
+
var underscored = activemodel$adapter$lib$system$active$model$adapter$$underscore(decamelized);
|
2161
2241
|
return ember$inflector$lib$system$string$$pluralize(underscored);
|
2162
2242
|
},
|
2163
2243
|
|
@@ -2188,32 +2268,19 @@
|
|
2188
2268
|
}
|
2189
2269
|
});
|
2190
2270
|
|
2191
|
-
var activemodel$adapter$lib$system$
|
2192
|
-
/**
|
2193
|
-
@module ember-data
|
2194
|
-
*/
|
2195
|
-
|
2196
|
-
/**
|
2197
|
-
`DS.Serializer` is an abstract base class that you should override in your
|
2198
|
-
application to customize it for your backend. The minimum set of methods
|
2199
|
-
that you should implement is:
|
2200
|
-
|
2201
|
-
* `extract()`
|
2202
|
-
* `serialize()`
|
2203
|
-
|
2204
|
-
And you can optionally override the following methods:
|
2205
|
-
|
2206
|
-
* `normalize()`
|
2207
|
-
|
2208
|
-
For an example implementation, see
|
2209
|
-
[DS.JSONSerializer](DS.JSONSerializer.html), the included JSON serializer.
|
2210
|
-
|
2211
|
-
@class Serializer
|
2212
|
-
@namespace DS
|
2213
|
-
@extends Ember.Object
|
2214
|
-
*/
|
2271
|
+
var activemodel$adapter$lib$system$active$model$adapter$$default = activemodel$adapter$lib$system$active$model$adapter$$ActiveModelAdapter;
|
2215
2272
|
|
2216
2273
|
var ember$data$lib$system$serializer$$Serializer = Ember.Object.extend({
|
2274
|
+
/**
|
2275
|
+
The `store` property is the application's `store` that contains all records.
|
2276
|
+
It's injected as a service.
|
2277
|
+
It can be used to push records from a non flat data structure server
|
2278
|
+
response.
|
2279
|
+
|
2280
|
+
@property store
|
2281
|
+
@type {DS.Store}
|
2282
|
+
@public
|
2283
|
+
*/
|
2217
2284
|
|
2218
2285
|
/**
|
2219
2286
|
The `extract` method is used to deserialize the payload received from your
|
@@ -2227,7 +2294,7 @@
|
|
2227
2294
|
@param {String} requestType
|
2228
2295
|
@return {Object}
|
2229
2296
|
*/
|
2230
|
-
extract:
|
2297
|
+
extract: null,
|
2231
2298
|
|
2232
2299
|
/**
|
2233
2300
|
The `serialize` method is used when a record is saved in order to convert
|
@@ -2243,7 +2310,7 @@
|
|
2243
2310
|
@param {Object} [options]
|
2244
2311
|
@return {Object}
|
2245
2312
|
*/
|
2246
|
-
serialize:
|
2313
|
+
serialize: null,
|
2247
2314
|
|
2248
2315
|
/**
|
2249
2316
|
The `normalize` method is used to convert a payload received from your
|
@@ -2264,12 +2331,12 @@
|
|
2264
2331
|
|
2265
2332
|
var ember$data$lib$system$serializer$$default = ember$data$lib$system$serializer$$Serializer;
|
2266
2333
|
|
2267
|
-
var ember$data$lib$serializers$
|
2268
|
-
var ember$data$lib$serializers$
|
2269
|
-
var ember$data$lib$serializers$
|
2270
|
-
var ember$data$lib$serializers$
|
2334
|
+
var ember$data$lib$serializers$json$serializer$$get = Ember.get;
|
2335
|
+
var ember$data$lib$serializers$json$serializer$$isNone = Ember.isNone;
|
2336
|
+
var ember$data$lib$serializers$json$serializer$$map = Ember.ArrayPolyfills.map;
|
2337
|
+
var ember$data$lib$serializers$json$serializer$$merge = Ember.merge;
|
2271
2338
|
|
2272
|
-
var ember$data$lib$serializers$
|
2339
|
+
var ember$data$lib$serializers$json$serializer$$default = ember$data$lib$system$serializer$$default.extend({
|
2273
2340
|
/**
|
2274
2341
|
The primaryKey is used when serializing and deserializing
|
2275
2342
|
data. Ember Data always uses the `id` property to store the id of
|
@@ -2483,7 +2550,7 @@
|
|
2483
2550
|
@private
|
2484
2551
|
*/
|
2485
2552
|
normalizeUsingDeclaredMapping: function(type, hash) {
|
2486
|
-
var attrs = ember$data$lib$serializers$
|
2553
|
+
var attrs = ember$data$lib$serializers$json$serializer$$get(this, 'attrs');
|
2487
2554
|
var payloadKey, key;
|
2488
2555
|
|
2489
2556
|
if (attrs) {
|
@@ -2504,7 +2571,7 @@
|
|
2504
2571
|
@private
|
2505
2572
|
*/
|
2506
2573
|
normalizeId: function(hash) {
|
2507
|
-
var primaryKey = ember$data$lib$serializers$
|
2574
|
+
var primaryKey = ember$data$lib$serializers$json$serializer$$get(this, 'primaryKey');
|
2508
2575
|
|
2509
2576
|
if (primaryKey === 'id') { return; }
|
2510
2577
|
|
@@ -2532,7 +2599,7 @@
|
|
2532
2599
|
@return {String} key
|
2533
2600
|
*/
|
2534
2601
|
_getMappedKey: function(key) {
|
2535
|
-
var attrs = ember$data$lib$serializers$
|
2602
|
+
var attrs = ember$data$lib$serializers$json$serializer$$get(this, 'attrs');
|
2536
2603
|
var mappedKey;
|
2537
2604
|
if (attrs && attrs[key]) {
|
2538
2605
|
mappedKey = attrs[key];
|
@@ -2559,7 +2626,7 @@
|
|
2559
2626
|
@return {boolean} true if the key can be serialized
|
2560
2627
|
*/
|
2561
2628
|
_canSerialize: function(key) {
|
2562
|
-
var attrs = ember$data$lib$serializers$
|
2629
|
+
var attrs = ember$data$lib$serializers$json$serializer$$get(this, 'attrs');
|
2563
2630
|
|
2564
2631
|
return !attrs || !attrs[key] || attrs[key].serialize !== false;
|
2565
2632
|
},
|
@@ -2715,7 +2782,7 @@
|
|
2715
2782
|
var id = snapshot.id;
|
2716
2783
|
|
2717
2784
|
if (id) {
|
2718
|
-
json[ember$data$lib$serializers$
|
2785
|
+
json[ember$data$lib$serializers$json$serializer$$get(this, 'primaryKey')] = id;
|
2719
2786
|
}
|
2720
2787
|
}
|
2721
2788
|
|
@@ -2759,7 +2826,7 @@
|
|
2759
2826
|
@param {Object} options
|
2760
2827
|
*/
|
2761
2828
|
serializeIntoHash: function(hash, type, snapshot, options) {
|
2762
|
-
ember$data$lib$serializers$
|
2829
|
+
ember$data$lib$serializers$json$serializer$$merge(hash, this.serialize(snapshot, options));
|
2763
2830
|
},
|
2764
2831
|
|
2765
2832
|
/**
|
@@ -2846,7 +2913,7 @@
|
|
2846
2913
|
}
|
2847
2914
|
|
2848
2915
|
//Need to check whether the id is there for new&async records
|
2849
|
-
if (ember$data$lib$serializers$
|
2916
|
+
if (ember$data$lib$serializers$json$serializer$$isNone(belongsToId)) {
|
2850
2917
|
json[payloadKey] = null;
|
2851
2918
|
} else {
|
2852
2919
|
json[payloadKey] = belongsToId;
|
@@ -2948,7 +3015,7 @@
|
|
2948
3015
|
the `requestType`.
|
2949
3016
|
|
2950
3017
|
To override this method with a custom one, make sure to call
|
2951
|
-
`this._super(store, type, payload, id, requestType)` with your
|
3018
|
+
`return this._super(store, type, payload, id, requestType)` with your
|
2952
3019
|
pre-processed data.
|
2953
3020
|
|
2954
3021
|
Here's an example of using `extract` manually:
|
@@ -3200,7 +3267,7 @@
|
|
3200
3267
|
var normalizedPayload = this.normalizePayload(arrayPayload);
|
3201
3268
|
var serializer = this;
|
3202
3269
|
|
3203
|
-
return ember$data$lib$serializers$
|
3270
|
+
return ember$data$lib$serializers$json$serializer$$map.call(normalizedPayload, function(singlePayload) {
|
3204
3271
|
return serializer.normalize(type, singlePayload);
|
3205
3272
|
});
|
3206
3273
|
},
|
@@ -3333,11 +3400,11 @@
|
|
3333
3400
|
}
|
3334
3401
|
});
|
3335
3402
|
|
3336
|
-
var ember$data$lib$serializers$
|
3337
|
-
var ember$data$lib$serializers$
|
3338
|
-
var ember$data$lib$serializers$
|
3403
|
+
var ember$data$lib$serializers$rest$serializer$$forEach = Ember.ArrayPolyfills.forEach;
|
3404
|
+
var ember$data$lib$serializers$rest$serializer$$map = Ember.ArrayPolyfills.map;
|
3405
|
+
var ember$data$lib$serializers$rest$serializer$$camelize = Ember.String.camelize;
|
3339
3406
|
|
3340
|
-
function ember$data$lib$serializers$
|
3407
|
+
function ember$data$lib$serializers$rest$serializer$$coerceId(id) {
|
3341
3408
|
return id == null ? null : id + '';
|
3342
3409
|
}
|
3343
3410
|
|
@@ -3381,7 +3448,7 @@
|
|
3381
3448
|
@namespace DS
|
3382
3449
|
@extends DS.JSONSerializer
|
3383
3450
|
*/
|
3384
|
-
var ember$data$lib$serializers$
|
3451
|
+
var ember$data$lib$serializers$rest$serializer$$RESTSerializer = ember$data$lib$serializers$json$serializer$$default.extend({
|
3385
3452
|
/**
|
3386
3453
|
If you want to do normalizations specific to some part of the payload, you
|
3387
3454
|
can specify those under `normalizeHash`.
|
@@ -3614,7 +3681,7 @@
|
|
3614
3681
|
}
|
3615
3682
|
|
3616
3683
|
/*jshint loopfunc:true*/
|
3617
|
-
ember$data$lib$serializers$
|
3684
|
+
ember$data$lib$serializers$rest$serializer$$forEach.call(value, function(hash) {
|
3618
3685
|
var typeName = this.typeForRoot(prop);
|
3619
3686
|
var type = store.modelFor(typeName);
|
3620
3687
|
var typeSerializer = store.serializerFor(type);
|
@@ -3622,7 +3689,7 @@
|
|
3622
3689
|
hash = typeSerializer.normalize(type, hash, prop);
|
3623
3690
|
|
3624
3691
|
var isFirstCreatedRecord = isPrimary && !recordId && !primaryRecord;
|
3625
|
-
var isUpdatedRecord = isPrimary && ember$data$lib$serializers$
|
3692
|
+
var isUpdatedRecord = isPrimary && ember$data$lib$serializers$rest$serializer$$coerceId(hash.id) === recordId;
|
3626
3693
|
|
3627
3694
|
// find the primary record.
|
3628
3695
|
//
|
@@ -3765,7 +3832,7 @@
|
|
3765
3832
|
var isPrimary = (!forcedSecondary && (type.typeKey === primaryTypeName));
|
3766
3833
|
|
3767
3834
|
/*jshint loopfunc:true*/
|
3768
|
-
var normalizedArray = ember$data$lib$serializers$
|
3835
|
+
var normalizedArray = ember$data$lib$serializers$rest$serializer$$map.call(payload[prop], function(hash) {
|
3769
3836
|
return typeSerializer.normalize(type, hash, prop);
|
3770
3837
|
}, this);
|
3771
3838
|
|
@@ -3823,7 +3890,7 @@
|
|
3823
3890
|
var typeSerializer = store.serializerFor(type);
|
3824
3891
|
|
3825
3892
|
/*jshint loopfunc:true*/
|
3826
|
-
var normalizedArray = ember$data$lib$serializers$
|
3893
|
+
var normalizedArray = ember$data$lib$serializers$rest$serializer$$map.call(Ember.makeArray(payload[prop]), function(hash) {
|
3827
3894
|
return typeSerializer.normalize(type, hash, prop);
|
3828
3895
|
}, this);
|
3829
3896
|
|
@@ -3875,7 +3942,7 @@
|
|
3875
3942
|
@return {String} the model's typeKey
|
3876
3943
|
*/
|
3877
3944
|
typeForRoot: function(key) {
|
3878
|
-
return ember$data$lib$serializers$
|
3945
|
+
return ember$data$lib$serializers$rest$serializer$$camelize(ember$inflector$lib$system$string$$singularize(key));
|
3879
3946
|
},
|
3880
3947
|
|
3881
3948
|
// SERIALIZE
|
@@ -4076,23 +4143,23 @@
|
|
4076
4143
|
});
|
4077
4144
|
|
4078
4145
|
Ember.runInDebug(function() {
|
4079
|
-
ember$data$lib$serializers$
|
4146
|
+
ember$data$lib$serializers$rest$serializer$$RESTSerializer.reopen({
|
4080
4147
|
warnMessageNoModelForKey: function(prop, typeKey) {
|
4081
4148
|
return 'Encountered "' + prop + '" in payload, but no model was found for model name "' + typeKey + '" (resolved model name using ' + this.constructor.toString() + '.typeForRoot("' + prop + '"))';
|
4082
4149
|
}
|
4083
4150
|
});
|
4084
4151
|
});
|
4085
4152
|
|
4086
|
-
var ember$data$lib$serializers$
|
4153
|
+
var ember$data$lib$serializers$rest$serializer$$default = ember$data$lib$serializers$rest$serializer$$RESTSerializer;
|
4087
4154
|
/**
|
4088
4155
|
@module ember-data
|
4089
4156
|
*/
|
4090
4157
|
|
4091
|
-
var activemodel$adapter$lib$system$
|
4092
|
-
var activemodel$adapter$lib$system$
|
4093
|
-
var activemodel$adapter$lib$system$
|
4094
|
-
var activemodel$adapter$lib$system$
|
4095
|
-
var activemodel$adapter$lib$system$
|
4158
|
+
var activemodel$adapter$lib$system$active$model$serializer$$forEach = Ember.EnumerableUtils.forEach;
|
4159
|
+
var activemodel$adapter$lib$system$active$model$serializer$$camelize = Ember.String.camelize;
|
4160
|
+
var activemodel$adapter$lib$system$active$model$serializer$$capitalize = Ember.String.capitalize;
|
4161
|
+
var activemodel$adapter$lib$system$active$model$serializer$$decamelize = Ember.String.decamelize;
|
4162
|
+
var activemodel$adapter$lib$system$active$model$serializer$$underscore = Ember.String.underscore;
|
4096
4163
|
|
4097
4164
|
/**
|
4098
4165
|
The ActiveModelSerializer is a subclass of the RESTSerializer designed to integrate
|
@@ -4181,7 +4248,7 @@
|
|
4181
4248
|
@namespace DS
|
4182
4249
|
@extends DS.RESTSerializer
|
4183
4250
|
*/
|
4184
|
-
var activemodel$adapter$lib$system$
|
4251
|
+
var activemodel$adapter$lib$system$active$model$serializer$$ActiveModelSerializer = ember$data$lib$serializers$rest$serializer$$default.extend({
|
4185
4252
|
// SERIALIZE
|
4186
4253
|
|
4187
4254
|
/**
|
@@ -4192,7 +4259,7 @@
|
|
4192
4259
|
@return String
|
4193
4260
|
*/
|
4194
4261
|
keyForAttribute: function(attr) {
|
4195
|
-
return activemodel$adapter$lib$system$
|
4262
|
+
return activemodel$adapter$lib$system$active$model$serializer$$decamelize(attr);
|
4196
4263
|
},
|
4197
4264
|
|
4198
4265
|
/**
|
@@ -4205,7 +4272,7 @@
|
|
4205
4272
|
@return String
|
4206
4273
|
*/
|
4207
4274
|
keyForRelationship: function(rawKey, kind) {
|
4208
|
-
var key = activemodel$adapter$lib$system$
|
4275
|
+
var key = activemodel$adapter$lib$system$active$model$serializer$$decamelize(rawKey);
|
4209
4276
|
if (kind === "belongsTo") {
|
4210
4277
|
return key + "_id";
|
4211
4278
|
} else if (kind === "hasMany") {
|
@@ -4230,7 +4297,7 @@
|
|
4230
4297
|
@param {Object} options
|
4231
4298
|
*/
|
4232
4299
|
serializeIntoHash: function(data, type, snapshot, options) {
|
4233
|
-
var root = activemodel$adapter$lib$system$
|
4300
|
+
var root = activemodel$adapter$lib$system$active$model$serializer$$underscore(activemodel$adapter$lib$system$active$model$serializer$$decamelize(type.typeKey));
|
4234
4301
|
data[root] = this.serialize(snapshot, options);
|
4235
4302
|
},
|
4236
4303
|
|
@@ -4245,12 +4312,12 @@
|
|
4245
4312
|
serializePolymorphicType: function(snapshot, json, relationship) {
|
4246
4313
|
var key = relationship.key;
|
4247
4314
|
var belongsTo = snapshot.belongsTo(key);
|
4248
|
-
var jsonKey = activemodel$adapter$lib$system$
|
4315
|
+
var jsonKey = activemodel$adapter$lib$system$active$model$serializer$$underscore(key + "_type");
|
4249
4316
|
|
4250
4317
|
if (Ember.isNone(belongsTo)) {
|
4251
4318
|
json[jsonKey] = null;
|
4252
4319
|
} else {
|
4253
|
-
json[jsonKey] = activemodel$adapter$lib$system$
|
4320
|
+
json[jsonKey] = activemodel$adapter$lib$system$active$model$serializer$$capitalize(activemodel$adapter$lib$system$active$model$serializer$$camelize(belongsTo.typeKey));
|
4254
4321
|
}
|
4255
4322
|
},
|
4256
4323
|
|
@@ -4308,7 +4375,7 @@
|
|
4308
4375
|
var links = data.links;
|
4309
4376
|
|
4310
4377
|
for (var link in links) {
|
4311
|
-
var camelizedLink = activemodel$adapter$lib$system$
|
4378
|
+
var camelizedLink = activemodel$adapter$lib$system$active$model$serializer$$camelize(link);
|
4312
4379
|
|
4313
4380
|
if (camelizedLink !== link) {
|
4314
4381
|
links[camelizedLink] = links[link];
|
@@ -4352,7 +4419,7 @@
|
|
4352
4419
|
payload.type = this.typeForRoot(payload.type);
|
4353
4420
|
} else if (payload && relationship.kind === "hasMany") {
|
4354
4421
|
var self = this;
|
4355
|
-
activemodel$adapter$lib$system$
|
4422
|
+
activemodel$adapter$lib$system$active$model$serializer$$forEach(payload, function(single) {
|
4356
4423
|
single.type = self.typeForRoot(single.type);
|
4357
4424
|
});
|
4358
4425
|
}
|
@@ -4372,20 +4439,12 @@
|
|
4372
4439
|
}
|
4373
4440
|
});
|
4374
4441
|
|
4375
|
-
var activemodel$adapter$lib$system$
|
4376
|
-
|
4377
|
-
This is used internally to enable deprecation of container paths and provide
|
4378
|
-
a decent message to the user indicating how to fix the issue.
|
4379
|
-
|
4380
|
-
@class ContainerProxy
|
4381
|
-
@namespace DS
|
4382
|
-
@private
|
4383
|
-
*/
|
4384
|
-
function ember$data$lib$system$container_proxy$$ContainerProxy(container) {
|
4442
|
+
var activemodel$adapter$lib$system$active$model$serializer$$default = activemodel$adapter$lib$system$active$model$serializer$$ActiveModelSerializer;
|
4443
|
+
function ember$data$lib$system$container$proxy$$ContainerProxy(container) {
|
4385
4444
|
this.container = container;
|
4386
4445
|
}
|
4387
4446
|
|
4388
|
-
ember$data$lib$system$
|
4447
|
+
ember$data$lib$system$container$proxy$$ContainerProxy.prototype.aliasedFactory = function(path, preLookup) {
|
4389
4448
|
var _this = this;
|
4390
4449
|
|
4391
4450
|
return {
|
@@ -4397,13 +4456,13 @@
|
|
4397
4456
|
};
|
4398
4457
|
};
|
4399
4458
|
|
4400
|
-
ember$data$lib$system$
|
4459
|
+
ember$data$lib$system$container$proxy$$ContainerProxy.prototype.registerAlias = function(source, dest, preLookup) {
|
4401
4460
|
var factory = this.aliasedFactory(dest, preLookup);
|
4402
4461
|
|
4403
4462
|
return this.container.register(source, factory);
|
4404
4463
|
};
|
4405
4464
|
|
4406
|
-
ember$data$lib$system$
|
4465
|
+
ember$data$lib$system$container$proxy$$ContainerProxy.prototype.registerDeprecation = function(deprecated, valid) {
|
4407
4466
|
var preLookupCallback = function() {
|
4408
4467
|
Ember.deprecate("You tried to look up '" + deprecated + "', " +
|
4409
4468
|
"but this has been deprecated in favor of '" + valid + "'.", false);
|
@@ -4412,7 +4471,7 @@
|
|
4412
4471
|
return this.registerAlias(deprecated, valid, preLookupCallback);
|
4413
4472
|
};
|
4414
4473
|
|
4415
|
-
ember$data$lib$system$
|
4474
|
+
ember$data$lib$system$container$proxy$$ContainerProxy.prototype.registerDeprecations = function(proxyPairs) {
|
4416
4475
|
var i, proxyPair, deprecated, valid;
|
4417
4476
|
|
4418
4477
|
for (i = proxyPairs.length; i > 0; i--) {
|
@@ -4424,38 +4483,20 @@
|
|
4424
4483
|
}
|
4425
4484
|
};
|
4426
4485
|
|
4427
|
-
var ember$data$lib$system$
|
4428
|
-
function activemodel$adapter$lib$setup$container$$setupActiveModelAdapter(
|
4429
|
-
var proxy = new ember$data$lib$system$
|
4486
|
+
var ember$data$lib$system$container$proxy$$default = ember$data$lib$system$container$proxy$$ContainerProxy;
|
4487
|
+
function activemodel$adapter$lib$setup$container$$setupActiveModelAdapter(registry, application) {
|
4488
|
+
var proxy = new ember$data$lib$system$container$proxy$$default(registry);
|
4430
4489
|
proxy.registerDeprecations([
|
4431
4490
|
{ deprecated: 'serializer:_ams', valid: 'serializer:-active-model' },
|
4432
4491
|
{ deprecated: 'adapter:_ams', valid: 'adapter:-active-model' }
|
4433
4492
|
]);
|
4434
4493
|
|
4435
|
-
|
4436
|
-
|
4494
|
+
registry.register('serializer:-active-model', activemodel$adapter$lib$system$active$model$serializer$$default);
|
4495
|
+
registry.register('adapter:-active-model', activemodel$adapter$lib$system$active$model$adapter$$default);
|
4437
4496
|
}
|
4438
4497
|
var activemodel$adapter$lib$setup$container$$default = activemodel$adapter$lib$setup$container$$setupActiveModelAdapter;
|
4439
|
-
/**
|
4440
|
-
@module ember-data
|
4441
|
-
*/
|
4442
|
-
|
4443
|
-
/**
|
4444
|
-
All Ember Data methods and functions are defined inside of this namespace.
|
4445
|
-
|
4446
|
-
@class DS
|
4447
|
-
@static
|
4448
|
-
*/
|
4449
|
-
|
4450
|
-
/**
|
4451
|
-
@property VERSION
|
4452
|
-
@type String
|
4453
|
-
@default '1.0.0-beta.15'
|
4454
|
-
@static
|
4455
|
-
*/
|
4456
|
-
/*jshint -W079 */
|
4457
4498
|
var ember$data$lib$core$$DS = Ember.Namespace.create({
|
4458
|
-
VERSION: '1.0.0-beta.
|
4499
|
+
VERSION: '1.0.0-beta.16'
|
4459
4500
|
});
|
4460
4501
|
|
4461
4502
|
if (Ember.libraries) {
|
@@ -4463,8 +4504,8 @@
|
|
4463
4504
|
}
|
4464
4505
|
|
4465
4506
|
var ember$data$lib$core$$default = ember$data$lib$core$$DS;
|
4466
|
-
var ember$data$lib$system$
|
4467
|
-
var ember$data$lib$system$
|
4507
|
+
var ember$data$lib$system$promise$proxies$$Promise = Ember.RSVP.Promise;
|
4508
|
+
var ember$data$lib$system$promise$proxies$$get = Ember.get;
|
4468
4509
|
|
4469
4510
|
/**
|
4470
4511
|
A `PromiseArray` is an object that acts like both an `Ember.Array`
|
@@ -4495,7 +4536,7 @@
|
|
4495
4536
|
@extends Ember.ArrayProxy
|
4496
4537
|
@uses Ember.PromiseProxyMixin
|
4497
4538
|
*/
|
4498
|
-
var ember$data$lib$system$
|
4539
|
+
var ember$data$lib$system$promise$proxies$$PromiseArray = Ember.ArrayProxy.extend(Ember.PromiseProxyMixin);
|
4499
4540
|
|
4500
4541
|
/**
|
4501
4542
|
A `PromiseObject` is an object that acts like both an `Ember.Object`
|
@@ -4526,17 +4567,17 @@
|
|
4526
4567
|
@extends Ember.ObjectProxy
|
4527
4568
|
@uses Ember.PromiseProxyMixin
|
4528
4569
|
*/
|
4529
|
-
var ember$data$lib$system$
|
4570
|
+
var ember$data$lib$system$promise$proxies$$PromiseObject = Ember.ObjectProxy.extend(Ember.PromiseProxyMixin);
|
4530
4571
|
|
4531
|
-
var ember$data$lib$system$
|
4532
|
-
return ember$data$lib$system$
|
4533
|
-
promise: ember$data$lib$system$
|
4572
|
+
var ember$data$lib$system$promise$proxies$$promiseObject = function(promise, label) {
|
4573
|
+
return ember$data$lib$system$promise$proxies$$PromiseObject.create({
|
4574
|
+
promise: ember$data$lib$system$promise$proxies$$Promise.resolve(promise, label)
|
4534
4575
|
});
|
4535
4576
|
};
|
4536
4577
|
|
4537
|
-
var ember$data$lib$system$
|
4538
|
-
return ember$data$lib$system$
|
4539
|
-
promise: ember$data$lib$system$
|
4578
|
+
var ember$data$lib$system$promise$proxies$$promiseArray = function(promise, label) {
|
4579
|
+
return ember$data$lib$system$promise$proxies$$PromiseArray.create({
|
4580
|
+
promise: ember$data$lib$system$promise$proxies$$Promise.resolve(promise, label)
|
4540
4581
|
});
|
4541
4582
|
};
|
4542
4583
|
|
@@ -4558,46 +4599,231 @@
|
|
4558
4599
|
@extends Ember.ArrayProxy
|
4559
4600
|
*/
|
4560
4601
|
|
4561
|
-
function ember$data$lib$system$
|
4602
|
+
function ember$data$lib$system$promise$proxies$$proxyToContent(method) {
|
4562
4603
|
return function() {
|
4563
|
-
var content = ember$data$lib$system$
|
4604
|
+
var content = ember$data$lib$system$promise$proxies$$get(this, 'content');
|
4564
4605
|
return content[method].apply(content, arguments);
|
4565
4606
|
};
|
4566
4607
|
}
|
4567
4608
|
|
4568
|
-
var ember$data$lib$system$
|
4609
|
+
var ember$data$lib$system$promise$proxies$$PromiseManyArray = ember$data$lib$system$promise$proxies$$PromiseArray.extend({
|
4569
4610
|
reload: function() {
|
4570
4611
|
//I don't think this should ever happen right now, but worth guarding if we refactor the async relationships
|
4571
|
-
Ember.assert('You are trying to reload an async manyArray before it has been created', ember$data$lib$system$
|
4572
|
-
return ember$data$lib$system$
|
4573
|
-
promise: ember$data$lib$system$
|
4612
|
+
Ember.assert('You are trying to reload an async manyArray before it has been created', ember$data$lib$system$promise$proxies$$get(this, 'content'));
|
4613
|
+
return ember$data$lib$system$promise$proxies$$PromiseManyArray.create({
|
4614
|
+
promise: ember$data$lib$system$promise$proxies$$get(this, 'content').reload()
|
4574
4615
|
});
|
4575
4616
|
},
|
4576
4617
|
|
4577
|
-
createRecord: ember$data$lib$system$
|
4618
|
+
createRecord: ember$data$lib$system$promise$proxies$$proxyToContent('createRecord'),
|
4578
4619
|
|
4579
|
-
on: ember$data$lib$system$
|
4620
|
+
on: ember$data$lib$system$promise$proxies$$proxyToContent('on'),
|
4580
4621
|
|
4581
|
-
one: ember$data$lib$system$
|
4622
|
+
one: ember$data$lib$system$promise$proxies$$proxyToContent('one'),
|
4582
4623
|
|
4583
|
-
trigger: ember$data$lib$system$
|
4624
|
+
trigger: ember$data$lib$system$promise$proxies$$proxyToContent('trigger'),
|
4584
4625
|
|
4585
|
-
off: ember$data$lib$system$
|
4626
|
+
off: ember$data$lib$system$promise$proxies$$proxyToContent('off'),
|
4586
4627
|
|
4587
|
-
has: ember$data$lib$system$
|
4628
|
+
has: ember$data$lib$system$promise$proxies$$proxyToContent('has')
|
4588
4629
|
});
|
4589
4630
|
|
4590
|
-
var ember$data$lib$system$
|
4591
|
-
return ember$data$lib$system$
|
4592
|
-
promise: ember$data$lib$system$
|
4631
|
+
var ember$data$lib$system$promise$proxies$$promiseManyArray = function(promise, label) {
|
4632
|
+
return ember$data$lib$system$promise$proxies$$PromiseManyArray.create({
|
4633
|
+
promise: ember$data$lib$system$promise$proxies$$Promise.resolve(promise, label)
|
4593
4634
|
});
|
4594
4635
|
};
|
4595
4636
|
|
4596
4637
|
|
4597
|
-
var ember$data$lib$system$
|
4598
|
-
|
4638
|
+
var ember$data$lib$system$store$common$$get = Ember.get;
|
4639
|
+
|
4640
|
+
function ember$data$lib$system$store$common$$_bind(fn) {
|
4641
|
+
var args = Array.prototype.slice.call(arguments, 1);
|
4642
|
+
|
4643
|
+
return function() {
|
4644
|
+
return fn.apply(undefined, args);
|
4645
|
+
};
|
4646
|
+
}
|
4647
|
+
|
4648
|
+
function ember$data$lib$system$store$common$$_guard(promise, test) {
|
4649
|
+
var guarded = promise['finally'](function() {
|
4650
|
+
if (!test()) {
|
4651
|
+
guarded._subscribers.length = 0;
|
4652
|
+
}
|
4653
|
+
});
|
4654
|
+
|
4655
|
+
return guarded;
|
4656
|
+
}
|
4657
|
+
|
4658
|
+
function ember$data$lib$system$store$common$$_objectIsAlive(object) {
|
4659
|
+
return !(ember$data$lib$system$store$common$$get(object, "isDestroyed") || ember$data$lib$system$store$common$$get(object, "isDestroying"));
|
4660
|
+
}
|
4661
|
+
function ember$data$lib$system$store$serializers$$serializerForAdapter(store, adapter, type) {
|
4662
|
+
var serializer = adapter.serializer;
|
4663
|
+
|
4664
|
+
if (serializer === undefined) {
|
4665
|
+
serializer = store.serializerFor(type);
|
4666
|
+
}
|
4667
|
+
|
4668
|
+
if (serializer === null || serializer === undefined) {
|
4669
|
+
serializer = {
|
4670
|
+
extract: function(store, type, payload) { return payload; }
|
4671
|
+
};
|
4672
|
+
}
|
4673
|
+
|
4674
|
+
return serializer;
|
4675
|
+
}
|
4676
|
+
|
4677
|
+
|
4678
|
+
var ember$data$lib$system$store$finders$$get = Ember.get;
|
4679
|
+
var ember$data$lib$system$store$finders$$Promise = Ember.RSVP.Promise;
|
4680
|
+
|
4681
|
+
function ember$data$lib$system$store$finders$$_find(adapter, store, type, id, record) {
|
4682
|
+
var snapshot = record._createSnapshot();
|
4683
|
+
var promise = adapter.find(store, type, id, snapshot);
|
4684
|
+
var serializer = ember$data$lib$system$store$serializers$$serializerForAdapter(store, adapter, type);
|
4685
|
+
var label = "DS: Handle Adapter#find of " + type + " with id: " + id;
|
4686
|
+
|
4687
|
+
promise = ember$data$lib$system$store$finders$$Promise.cast(promise, label);
|
4688
|
+
promise = ember$data$lib$system$store$common$$_guard(promise, ember$data$lib$system$store$common$$_bind(ember$data$lib$system$store$common$$_objectIsAlive, store));
|
4689
|
+
|
4690
|
+
return promise.then(function(adapterPayload) {
|
4691
|
+
Ember.assert("You made a request for a " + type.typeKey + " with id " + id + ", but the adapter's response did not have any data", adapterPayload);
|
4692
|
+
return store._adapterRun(function() {
|
4693
|
+
var payload = serializer.extract(store, type, adapterPayload, id, 'find');
|
4694
|
+
|
4695
|
+
return store.push(type, payload);
|
4696
|
+
});
|
4697
|
+
}, function(error) {
|
4698
|
+
var record = store.getById(type, id);
|
4699
|
+
if (record) {
|
4700
|
+
record.notFound();
|
4701
|
+
if (ember$data$lib$system$store$finders$$get(record, 'isEmpty')) {
|
4702
|
+
store.unloadRecord(record);
|
4703
|
+
}
|
4704
|
+
}
|
4705
|
+
throw error;
|
4706
|
+
}, "DS: Extract payload of '" + type + "'");
|
4707
|
+
}
|
4708
|
+
|
4709
|
+
|
4710
|
+
function ember$data$lib$system$store$finders$$_findMany(adapter, store, type, ids, records) {
|
4711
|
+
var snapshots = Ember.A(records).invoke('_createSnapshot');
|
4712
|
+
var promise = adapter.findMany(store, type, ids, snapshots);
|
4713
|
+
var serializer = ember$data$lib$system$store$serializers$$serializerForAdapter(store, adapter, type);
|
4714
|
+
var label = "DS: Handle Adapter#findMany of " + type;
|
4715
|
+
|
4716
|
+
if (promise === undefined) {
|
4717
|
+
throw new Error('adapter.findMany returned undefined, this was very likely a mistake');
|
4718
|
+
}
|
4719
|
+
|
4720
|
+
promise = ember$data$lib$system$store$finders$$Promise.cast(promise, label);
|
4721
|
+
promise = ember$data$lib$system$store$common$$_guard(promise, ember$data$lib$system$store$common$$_bind(ember$data$lib$system$store$common$$_objectIsAlive, store));
|
4722
|
+
|
4723
|
+
return promise.then(function(adapterPayload) {
|
4724
|
+
return store._adapterRun(function() {
|
4725
|
+
var payload = serializer.extract(store, type, adapterPayload, null, 'findMany');
|
4726
|
+
|
4727
|
+
Ember.assert("The response from a findMany must be an Array, not " + Ember.inspect(payload), Ember.typeOf(payload) === 'array');
|
4728
|
+
|
4729
|
+
return store.pushMany(type, payload);
|
4730
|
+
});
|
4731
|
+
}, null, "DS: Extract payload of " + type);
|
4732
|
+
}
|
4733
|
+
|
4734
|
+
function ember$data$lib$system$store$finders$$_findHasMany(adapter, store, record, link, relationship) {
|
4735
|
+
var snapshot = record._createSnapshot();
|
4736
|
+
var promise = adapter.findHasMany(store, snapshot, link, relationship);
|
4737
|
+
var serializer = ember$data$lib$system$store$serializers$$serializerForAdapter(store, adapter, relationship.type);
|
4738
|
+
var label = "DS: Handle Adapter#findHasMany of " + record + " : " + relationship.type;
|
4739
|
+
|
4740
|
+
promise = ember$data$lib$system$store$finders$$Promise.cast(promise, label);
|
4741
|
+
promise = ember$data$lib$system$store$common$$_guard(promise, ember$data$lib$system$store$common$$_bind(ember$data$lib$system$store$common$$_objectIsAlive, store));
|
4742
|
+
promise = ember$data$lib$system$store$common$$_guard(promise, ember$data$lib$system$store$common$$_bind(ember$data$lib$system$store$common$$_objectIsAlive, record));
|
4743
|
+
|
4744
|
+
return promise.then(function(adapterPayload) {
|
4745
|
+
return store._adapterRun(function() {
|
4746
|
+
var payload = serializer.extract(store, relationship.type, adapterPayload, null, 'findHasMany');
|
4747
|
+
|
4748
|
+
Ember.assert("The response from a findHasMany must be an Array, not " + Ember.inspect(payload), Ember.typeOf(payload) === 'array');
|
4749
|
+
|
4750
|
+
var records = store.pushMany(relationship.type, payload);
|
4751
|
+
return records;
|
4752
|
+
});
|
4753
|
+
}, null, "DS: Extract payload of " + record + " : hasMany " + relationship.type);
|
4754
|
+
}
|
4755
|
+
|
4756
|
+
function ember$data$lib$system$store$finders$$_findBelongsTo(adapter, store, record, link, relationship) {
|
4757
|
+
var snapshot = record._createSnapshot();
|
4758
|
+
var promise = adapter.findBelongsTo(store, snapshot, link, relationship);
|
4759
|
+
var serializer = ember$data$lib$system$store$serializers$$serializerForAdapter(store, adapter, relationship.type);
|
4760
|
+
var label = "DS: Handle Adapter#findBelongsTo of " + record + " : " + relationship.type;
|
4761
|
+
|
4762
|
+
promise = ember$data$lib$system$store$finders$$Promise.cast(promise, label);
|
4763
|
+
promise = ember$data$lib$system$store$common$$_guard(promise, ember$data$lib$system$store$common$$_bind(ember$data$lib$system$store$common$$_objectIsAlive, store));
|
4764
|
+
promise = ember$data$lib$system$store$common$$_guard(promise, ember$data$lib$system$store$common$$_bind(ember$data$lib$system$store$common$$_objectIsAlive, record));
|
4765
|
+
|
4766
|
+
return promise.then(function(adapterPayload) {
|
4767
|
+
return store._adapterRun(function() {
|
4768
|
+
var payload = serializer.extract(store, relationship.type, adapterPayload, null, 'findBelongsTo');
|
4769
|
+
|
4770
|
+
if (!payload) {
|
4771
|
+
return null;
|
4772
|
+
}
|
4773
|
+
|
4774
|
+
var record = store.push(relationship.type, payload);
|
4775
|
+
return record;
|
4776
|
+
});
|
4777
|
+
}, null, "DS: Extract payload of " + record + " : " + relationship.type);
|
4778
|
+
}
|
4779
|
+
|
4780
|
+
function ember$data$lib$system$store$finders$$_findAll(adapter, store, type, sinceToken) {
|
4781
|
+
var promise = adapter.findAll(store, type, sinceToken);
|
4782
|
+
var serializer = ember$data$lib$system$store$serializers$$serializerForAdapter(store, adapter, type);
|
4783
|
+
var label = "DS: Handle Adapter#findAll of " + type;
|
4784
|
+
|
4785
|
+
promise = ember$data$lib$system$store$finders$$Promise.cast(promise, label);
|
4786
|
+
promise = ember$data$lib$system$store$common$$_guard(promise, ember$data$lib$system$store$common$$_bind(ember$data$lib$system$store$common$$_objectIsAlive, store));
|
4787
|
+
|
4788
|
+
return promise.then(function(adapterPayload) {
|
4789
|
+
store._adapterRun(function() {
|
4790
|
+
var payload = serializer.extract(store, type, adapterPayload, null, 'findAll');
|
4791
|
+
|
4792
|
+
Ember.assert("The response from a findAll must be an Array, not " + Ember.inspect(payload), Ember.typeOf(payload) === 'array');
|
4793
|
+
|
4794
|
+
store.pushMany(type, payload);
|
4795
|
+
});
|
4796
|
+
|
4797
|
+
store.didUpdateAll(type);
|
4798
|
+
return store.all(type);
|
4799
|
+
}, null, "DS: Extract payload of findAll " + type);
|
4800
|
+
}
|
4801
|
+
|
4802
|
+
function ember$data$lib$system$store$finders$$_findQuery(adapter, store, type, query, recordArray) {
|
4803
|
+
var promise = adapter.findQuery(store, type, query, recordArray);
|
4804
|
+
var serializer = ember$data$lib$system$store$serializers$$serializerForAdapter(store, adapter, type);
|
4805
|
+
var label = "DS: Handle Adapter#findQuery of " + type;
|
4806
|
+
|
4807
|
+
promise = ember$data$lib$system$store$finders$$Promise.cast(promise, label);
|
4808
|
+
promise = ember$data$lib$system$store$common$$_guard(promise, ember$data$lib$system$store$common$$_bind(ember$data$lib$system$store$common$$_objectIsAlive, store));
|
4809
|
+
|
4810
|
+
return promise.then(function(adapterPayload) {
|
4811
|
+
var payload;
|
4812
|
+
store._adapterRun(function() {
|
4813
|
+
payload = serializer.extract(store, type, adapterPayload, null, 'findQuery');
|
4814
|
+
|
4815
|
+
Ember.assert("The response from a findQuery must be an Array, not " + Ember.inspect(payload), Ember.typeOf(payload) === 'array');
|
4816
|
+
});
|
4599
4817
|
|
4600
|
-
|
4818
|
+
recordArray.load(payload);
|
4819
|
+
return recordArray;
|
4820
|
+
|
4821
|
+
}, null, "DS: Extract payload of findQuery " + type);
|
4822
|
+
}
|
4823
|
+
var ember$data$lib$system$record$arrays$record$array$$get = Ember.get;
|
4824
|
+
var ember$data$lib$system$record$arrays$record$array$$set = Ember.set;
|
4825
|
+
|
4826
|
+
var ember$data$lib$system$record$arrays$record$array$$default = Ember.ArrayProxy.extend(Ember.Evented, {
|
4601
4827
|
/**
|
4602
4828
|
The model type contained by this record array.
|
4603
4829
|
|
@@ -4667,7 +4893,7 @@
|
|
4667
4893
|
@return {DS.Model} record
|
4668
4894
|
*/
|
4669
4895
|
objectAtContent: function(index) {
|
4670
|
-
var content = ember$data$lib$system$
|
4896
|
+
var content = ember$data$lib$system$record$arrays$record$array$$get(this, 'content');
|
4671
4897
|
|
4672
4898
|
return content.objectAt(index);
|
4673
4899
|
},
|
@@ -4688,10 +4914,10 @@
|
|
4688
4914
|
@method update
|
4689
4915
|
*/
|
4690
4916
|
update: function() {
|
4691
|
-
if (ember$data$lib$system$
|
4917
|
+
if (ember$data$lib$system$record$arrays$record$array$$get(this, 'isUpdating')) { return; }
|
4692
4918
|
|
4693
|
-
var store = ember$data$lib$system$
|
4694
|
-
var type = ember$data$lib$system$
|
4919
|
+
var store = ember$data$lib$system$record$arrays$record$array$$get(this, 'store');
|
4920
|
+
var type = ember$data$lib$system$record$arrays$record$array$$get(this, 'type');
|
4695
4921
|
|
4696
4922
|
return store.fetchAll(type, this);
|
4697
4923
|
},
|
@@ -4705,7 +4931,7 @@
|
|
4705
4931
|
@param {DS.Model} an optional index to insert at
|
4706
4932
|
*/
|
4707
4933
|
addRecord: function(record, idx) {
|
4708
|
-
var content = ember$data$lib$system$
|
4934
|
+
var content = ember$data$lib$system$record$arrays$record$array$$get(this, 'content');
|
4709
4935
|
if (idx === undefined) {
|
4710
4936
|
content.addObject(record);
|
4711
4937
|
} else if (!content.contains(record)) {
|
@@ -4714,7 +4940,7 @@
|
|
4714
4940
|
},
|
4715
4941
|
|
4716
4942
|
_pushRecord: function(record) {
|
4717
|
-
ember$data$lib$system$
|
4943
|
+
ember$data$lib$system$record$arrays$record$array$$get(this, 'content').pushObject(record);
|
4718
4944
|
},
|
4719
4945
|
|
4720
4946
|
/**
|
@@ -4737,7 +4963,7 @@
|
|
4737
4963
|
@param {DS.Model} record
|
4738
4964
|
*/
|
4739
4965
|
removeRecord: function(record) {
|
4740
|
-
ember$data$lib$system$
|
4966
|
+
ember$data$lib$system$record$arrays$record$array$$get(this, 'content').removeObject(record);
|
4741
4967
|
},
|
4742
4968
|
|
4743
4969
|
/**
|
@@ -4758,12 +4984,12 @@
|
|
4758
4984
|
*/
|
4759
4985
|
save: function() {
|
4760
4986
|
var recordArray = this;
|
4761
|
-
var promiseLabel = "DS: RecordArray#save " + ember$data$lib$system$
|
4987
|
+
var promiseLabel = "DS: RecordArray#save " + ember$data$lib$system$record$arrays$record$array$$get(this, 'type');
|
4762
4988
|
var promise = Ember.RSVP.all(this.invoke("save"), promiseLabel).then(function(array) {
|
4763
4989
|
return recordArray;
|
4764
4990
|
}, null, "DS: RecordArray#save return RecordArray");
|
4765
4991
|
|
4766
|
-
return ember$data$lib$system$
|
4992
|
+
return ember$data$lib$system$promise$proxies$$PromiseArray.create({ promise: promise });
|
4767
4993
|
},
|
4768
4994
|
|
4769
4995
|
_dissociateFromOwnRecords: function() {
|
@@ -4783,7 +5009,7 @@
|
|
4783
5009
|
@private
|
4784
5010
|
*/
|
4785
5011
|
_unregisterFromManager: function() {
|
4786
|
-
var manager = ember$data$lib$system$
|
5012
|
+
var manager = ember$data$lib$system$record$arrays$record$array$$get(this, 'manager');
|
4787
5013
|
//We will stop needing this stupid if statement soon, once manyArray are refactored to not be RecordArrays
|
4788
5014
|
if (manager) {
|
4789
5015
|
manager.unregisterFilteredRecordArray(this);
|
@@ -4793,7 +5019,7 @@
|
|
4793
5019
|
willDestroy: function() {
|
4794
5020
|
this._unregisterFromManager();
|
4795
5021
|
this._dissociateFromOwnRecords();
|
4796
|
-
ember$data$lib$system$
|
5022
|
+
ember$data$lib$system$record$arrays$record$array$$set(this, 'content', undefined);
|
4797
5023
|
this._super.apply(this, arguments);
|
4798
5024
|
}
|
4799
5025
|
});
|
@@ -4802,9 +5028,9 @@
|
|
4802
5028
|
@module ember-data
|
4803
5029
|
*/
|
4804
5030
|
|
4805
|
-
var ember$data$lib$system$
|
5031
|
+
var ember$data$lib$system$record$arrays$filtered$record$array$$get = Ember.get;
|
4806
5032
|
|
4807
|
-
var ember$data$lib$system$
|
5033
|
+
var ember$data$lib$system$record$arrays$filtered$record$array$$default = ember$data$lib$system$record$arrays$record$array$$default.extend({
|
4808
5034
|
/**
|
4809
5035
|
The filterFunction is a function used to test records from the store to
|
4810
5036
|
determine if they should be part of the record array.
|
@@ -4835,7 +5061,7 @@
|
|
4835
5061
|
isLoaded: true,
|
4836
5062
|
|
4837
5063
|
replace: function() {
|
4838
|
-
var type = ember$data$lib$system$
|
5064
|
+
var type = ember$data$lib$system$record$arrays$filtered$record$array$$get(this, 'type').toString();
|
4839
5065
|
throw new Error("The result of a client-side filter (on " + type + ") is immutable.");
|
4840
5066
|
},
|
4841
5067
|
|
@@ -4844,8 +5070,8 @@
|
|
4844
5070
|
@private
|
4845
5071
|
*/
|
4846
5072
|
_updateFilter: function() {
|
4847
|
-
var manager = ember$data$lib$system$
|
4848
|
-
manager.updateFilter(this, ember$data$lib$system$
|
5073
|
+
var manager = ember$data$lib$system$record$arrays$filtered$record$array$$get(this, 'manager');
|
5074
|
+
manager.updateFilter(this, ember$data$lib$system$record$arrays$filtered$record$array$$get(this, 'type'), ember$data$lib$system$record$arrays$filtered$record$array$$get(this, 'filterFunction'));
|
4849
5075
|
},
|
4850
5076
|
|
4851
5077
|
updateFilter: Ember.observer(function() {
|
@@ -4857,9 +5083,9 @@
|
|
4857
5083
|
@module ember-data
|
4858
5084
|
*/
|
4859
5085
|
|
4860
|
-
var ember$data$lib$system$
|
5086
|
+
var ember$data$lib$system$record$arrays$adapter$populated$record$array$$get = Ember.get;
|
4861
5087
|
|
4862
|
-
function ember$data$lib$system$
|
5088
|
+
function ember$data$lib$system$record$arrays$adapter$populated$record$array$$cloneNull(source) {
|
4863
5089
|
var clone = Ember.create(null);
|
4864
5090
|
for (var key in source) {
|
4865
5091
|
clone[key] = source[key];
|
@@ -4867,11 +5093,11 @@
|
|
4867
5093
|
return clone;
|
4868
5094
|
}
|
4869
5095
|
|
4870
|
-
var ember$data$lib$system$
|
5096
|
+
var ember$data$lib$system$record$arrays$adapter$populated$record$array$$default = ember$data$lib$system$record$arrays$record$array$$default.extend({
|
4871
5097
|
query: null,
|
4872
5098
|
|
4873
5099
|
replace: function() {
|
4874
|
-
var type = ember$data$lib$system$
|
5100
|
+
var type = ember$data$lib$system$record$arrays$adapter$populated$record$array$$get(this, 'type').toString();
|
4875
5101
|
throw new Error("The result of a server query (on " + type + ") is immutable.");
|
4876
5102
|
},
|
4877
5103
|
|
@@ -4881,15 +5107,15 @@
|
|
4881
5107
|
@param {Array} data
|
4882
5108
|
*/
|
4883
5109
|
load: function(data) {
|
4884
|
-
var store = ember$data$lib$system$
|
4885
|
-
var type = ember$data$lib$system$
|
5110
|
+
var store = ember$data$lib$system$record$arrays$adapter$populated$record$array$$get(this, 'store');
|
5111
|
+
var type = ember$data$lib$system$record$arrays$adapter$populated$record$array$$get(this, 'type');
|
4886
5112
|
var records = store.pushMany(type, data);
|
4887
5113
|
var meta = store.metadataFor(type);
|
4888
5114
|
|
4889
5115
|
this.setProperties({
|
4890
5116
|
content: Ember.A(records),
|
4891
5117
|
isLoaded: true,
|
4892
|
-
meta: ember$data$lib$system$
|
5118
|
+
meta: ember$data$lib$system$record$arrays$adapter$populated$record$array$$cloneNull(meta)
|
4893
5119
|
});
|
4894
5120
|
|
4895
5121
|
records.forEach(function(record) {
|
@@ -4901,226 +5127,50 @@
|
|
4901
5127
|
}
|
4902
5128
|
});
|
4903
5129
|
|
4904
|
-
var ember$data$lib$system$
|
4905
|
-
var ember$data$lib$system$
|
4906
|
-
|
4907
|
-
var ember$data$lib$system$record_arrays$many_array$$default = Ember.Object.extend(Ember.MutableArray, Ember.Evented, {
|
4908
|
-
init: function() {
|
4909
|
-
this.currentState = Ember.A([]);
|
4910
|
-
},
|
4911
|
-
|
4912
|
-
record: null,
|
4913
|
-
|
4914
|
-
canonicalState: null,
|
4915
|
-
currentState: null,
|
4916
|
-
|
4917
|
-
length: 0,
|
4918
|
-
|
4919
|
-
objectAt: function(index) {
|
4920
|
-
if (this.currentState[index]) {
|
4921
|
-
return this.currentState[index];
|
4922
|
-
} else {
|
4923
|
-
return this.canonicalState[index];
|
4924
|
-
}
|
4925
|
-
},
|
4926
|
-
|
4927
|
-
flushCanonical: function() {
|
4928
|
-
//TODO make this smarter, currently its plenty stupid
|
4929
|
-
var toSet = this.canonicalState.slice(0);
|
4930
|
-
//a hack for not removing new records
|
4931
|
-
//TODO remove once we have proper diffing
|
4932
|
-
var newRecords = this.currentState.filter(function(record) {
|
4933
|
-
return record.get('isNew');
|
4934
|
-
});
|
4935
|
-
toSet = toSet.concat(newRecords);
|
4936
|
-
var oldLength = this.length;
|
4937
|
-
this.arrayContentWillChange(0, this.length, toSet.length);
|
4938
|
-
this.set('length', toSet.length);
|
4939
|
-
this.currentState = toSet;
|
4940
|
-
this.arrayContentDidChange(0, oldLength, this.length);
|
4941
|
-
//TODO Figure out to notify only on additions and maybe only if unloaded
|
4942
|
-
this.relationship.notifyHasManyChanged();
|
4943
|
-
this.record.updateRecordArrays();
|
4944
|
-
},
|
4945
|
-
/**
|
4946
|
-
`true` if the relationship is polymorphic, `false` otherwise.
|
5130
|
+
var ember$data$lib$system$ordered$set$$EmberOrderedSet = Ember.OrderedSet;
|
5131
|
+
var ember$data$lib$system$ordered$set$$guidFor = Ember.guidFor;
|
4947
5132
|
|
4948
|
-
|
4949
|
-
|
4950
|
-
|
4951
|
-
isPolymorphic: false,
|
4952
|
-
|
4953
|
-
/**
|
4954
|
-
The loading state of this array
|
4955
|
-
|
4956
|
-
@property {Boolean} isLoaded
|
4957
|
-
*/
|
4958
|
-
isLoaded: false,
|
4959
|
-
|
4960
|
-
/**
|
4961
|
-
The relationship which manages this array.
|
4962
|
-
|
4963
|
-
@property {ManyRelationship} relationship
|
4964
|
-
@private
|
4965
|
-
*/
|
4966
|
-
relationship: null,
|
4967
|
-
|
4968
|
-
internalReplace: function(idx, amt, objects) {
|
4969
|
-
if (!objects) {
|
4970
|
-
objects = [];
|
4971
|
-
}
|
4972
|
-
this.arrayContentWillChange(idx, amt, objects.length);
|
4973
|
-
this.currentState.splice.apply(this.currentState, [idx, amt].concat(objects));
|
4974
|
-
this.set('length', this.currentState.length);
|
4975
|
-
this.arrayContentDidChange(idx, amt, objects.length);
|
4976
|
-
if (objects) {
|
4977
|
-
//TODO(Igor) probably needed only for unloaded records
|
4978
|
-
this.relationship.notifyHasManyChanged();
|
4979
|
-
}
|
4980
|
-
this.record.updateRecordArrays();
|
4981
|
-
},
|
4982
|
-
|
4983
|
-
//TODO(Igor) optimize
|
4984
|
-
internalRemoveRecords: function(records) {
|
4985
|
-
var index;
|
4986
|
-
for (var i=0; i < records.length; i++) {
|
4987
|
-
index = this.currentState.indexOf(records[i]);
|
4988
|
-
this.internalReplace(index, 1);
|
4989
|
-
}
|
4990
|
-
},
|
4991
|
-
|
4992
|
-
//TODO(Igor) optimize
|
4993
|
-
internalAddRecords: function(records, idx) {
|
4994
|
-
if (idx === undefined) {
|
4995
|
-
idx = this.currentState.length;
|
4996
|
-
}
|
4997
|
-
this.internalReplace(idx, 0, records);
|
4998
|
-
},
|
4999
|
-
|
5000
|
-
replace: function(idx, amt, objects) {
|
5001
|
-
var records;
|
5002
|
-
if (amt > 0) {
|
5003
|
-
records = this.currentState.slice(idx, idx+amt);
|
5004
|
-
this.get('relationship').removeRecords(records);
|
5005
|
-
}
|
5006
|
-
if (objects) {
|
5007
|
-
this.get('relationship').addRecords(objects, idx);
|
5008
|
-
}
|
5009
|
-
},
|
5010
|
-
/**
|
5011
|
-
Used for async `hasMany` arrays
|
5012
|
-
to keep track of when they will resolve.
|
5013
|
-
|
5014
|
-
@property {Ember.RSVP.Promise} promise
|
5015
|
-
@private
|
5016
|
-
*/
|
5017
|
-
promise: null,
|
5018
|
-
|
5019
|
-
/**
|
5020
|
-
@method loadingRecordsCount
|
5021
|
-
@param {Number} count
|
5022
|
-
@private
|
5023
|
-
*/
|
5024
|
-
loadingRecordsCount: function(count) {
|
5025
|
-
this.loadingRecordsCount = count;
|
5026
|
-
},
|
5027
|
-
|
5028
|
-
/**
|
5029
|
-
@method loadedRecord
|
5030
|
-
@private
|
5031
|
-
*/
|
5032
|
-
loadedRecord: function() {
|
5033
|
-
this.loadingRecordsCount--;
|
5034
|
-
if (this.loadingRecordsCount === 0) {
|
5035
|
-
ember$data$lib$system$record_arrays$many_array$$set(this, 'isLoaded', true);
|
5036
|
-
this.trigger('didLoad');
|
5037
|
-
}
|
5038
|
-
},
|
5039
|
-
|
5040
|
-
/**
|
5041
|
-
@method reload
|
5042
|
-
@public
|
5043
|
-
*/
|
5044
|
-
reload: function() {
|
5045
|
-
return this.relationship.reload();
|
5046
|
-
},
|
5047
|
-
|
5048
|
-
/**
|
5049
|
-
Saves all of the records in the `ManyArray`.
|
5050
|
-
|
5051
|
-
Example
|
5052
|
-
|
5053
|
-
```javascript
|
5054
|
-
store.find('inbox', 1).then(function(inbox) {
|
5055
|
-
inbox.get('messages').then(function(messages) {
|
5056
|
-
messages.forEach(function(message) {
|
5057
|
-
message.set('isRead', true);
|
5058
|
-
});
|
5059
|
-
messages.save()
|
5060
|
-
});
|
5061
|
-
});
|
5062
|
-
```
|
5063
|
-
|
5064
|
-
@method save
|
5065
|
-
@return {DS.PromiseArray} promise
|
5066
|
-
*/
|
5067
|
-
save: function() {
|
5068
|
-
var manyArray = this;
|
5069
|
-
var promiseLabel = "DS: ManyArray#save " + ember$data$lib$system$record_arrays$many_array$$get(this, 'type');
|
5070
|
-
var promise = Ember.RSVP.all(this.invoke("save"), promiseLabel).then(function(array) {
|
5071
|
-
return manyArray;
|
5072
|
-
}, null, "DS: ManyArray#save return ManyArray");
|
5073
|
-
|
5074
|
-
return ember$data$lib$system$promise_proxies$$PromiseArray.create({ promise: promise });
|
5075
|
-
},
|
5076
|
-
|
5077
|
-
/**
|
5078
|
-
Create a child record within the owner
|
5079
|
-
|
5080
|
-
@method createRecord
|
5081
|
-
@private
|
5082
|
-
@param {Object} hash
|
5083
|
-
@return {DS.Model} record
|
5084
|
-
*/
|
5085
|
-
createRecord: function(hash) {
|
5086
|
-
var store = ember$data$lib$system$record_arrays$many_array$$get(this, 'store');
|
5087
|
-
var type = ember$data$lib$system$record_arrays$many_array$$get(this, 'type');
|
5088
|
-
var record;
|
5133
|
+
var ember$data$lib$system$ordered$set$$OrderedSet = function() {
|
5134
|
+
this._super$constructor();
|
5135
|
+
};
|
5089
5136
|
|
5090
|
-
|
5137
|
+
ember$data$lib$system$ordered$set$$OrderedSet.create = function() {
|
5138
|
+
var Constructor = this;
|
5139
|
+
return new Constructor();
|
5140
|
+
};
|
5091
5141
|
|
5092
|
-
|
5093
|
-
|
5142
|
+
ember$data$lib$system$ordered$set$$OrderedSet.prototype = Ember.create(ember$data$lib$system$ordered$set$$EmberOrderedSet.prototype);
|
5143
|
+
ember$data$lib$system$ordered$set$$OrderedSet.prototype.constructor = ember$data$lib$system$ordered$set$$OrderedSet;
|
5144
|
+
ember$data$lib$system$ordered$set$$OrderedSet.prototype._super$constructor = ember$data$lib$system$ordered$set$$EmberOrderedSet;
|
5094
5145
|
|
5095
|
-
|
5096
|
-
|
5146
|
+
ember$data$lib$system$ordered$set$$OrderedSet.prototype.addWithIndex = function(obj, idx) {
|
5147
|
+
var guid = ember$data$lib$system$ordered$set$$guidFor(obj);
|
5148
|
+
var presenceSet = this.presenceSet;
|
5149
|
+
var list = this.list;
|
5097
5150
|
|
5098
|
-
|
5099
|
-
|
5100
|
-
@param {DS.Model} record
|
5101
|
-
@deprecated Use `addObject()` instead
|
5102
|
-
*/
|
5103
|
-
addRecord: function(record) {
|
5104
|
-
Ember.deprecate('Using manyArray.addRecord() has been deprecated. You should use manyArray.addObject() instead.');
|
5105
|
-
this.addObject(record);
|
5106
|
-
},
|
5107
|
-
|
5108
|
-
/**
|
5109
|
-
@method removeRecord
|
5110
|
-
@param {DS.Model} record
|
5111
|
-
@deprecated Use `removeObject()` instead
|
5112
|
-
*/
|
5113
|
-
removeRecord: function(record) {
|
5114
|
-
Ember.deprecate('Using manyArray.removeRecord() has been deprecated. You should use manyArray.removeObject() instead.');
|
5115
|
-
this.removeObject(record);
|
5151
|
+
if (presenceSet[guid] === true) {
|
5152
|
+
return;
|
5116
5153
|
}
|
5117
|
-
});
|
5118
5154
|
|
5119
|
-
|
5120
|
-
|
5121
|
-
|
5155
|
+
presenceSet[guid] = true;
|
5156
|
+
|
5157
|
+
if (idx === undefined || idx == null) {
|
5158
|
+
list.push(obj);
|
5159
|
+
} else {
|
5160
|
+
list.splice(idx, 0, obj);
|
5161
|
+
}
|
5162
|
+
|
5163
|
+
this.size += 1;
|
5164
|
+
|
5165
|
+
return this;
|
5166
|
+
};
|
5167
|
+
|
5168
|
+
var ember$data$lib$system$ordered$set$$default = ember$data$lib$system$ordered$set$$OrderedSet;
|
5169
|
+
var ember$data$lib$system$record$array$manager$$get = Ember.get;
|
5170
|
+
var ember$data$lib$system$record$array$manager$$forEach = Ember.EnumerableUtils.forEach;
|
5171
|
+
var ember$data$lib$system$record$array$manager$$indexOf = Ember.EnumerableUtils.indexOf;
|
5122
5172
|
|
5123
|
-
var ember$data$lib$system$
|
5173
|
+
var ember$data$lib$system$record$array$manager$$default = Ember.Object.extend({
|
5124
5174
|
init: function() {
|
5125
5175
|
this.filteredRecordArrays = ember$data$lib$system$map$$MapWithDefault.create({
|
5126
5176
|
defaultValue: function() { return []; }
|
@@ -5137,7 +5187,7 @@
|
|
5137
5187
|
},
|
5138
5188
|
|
5139
5189
|
recordArraysForRecord: function(record) {
|
5140
|
-
record._recordArrays = record._recordArrays || ember$data$lib$system$
|
5190
|
+
record._recordArrays = record._recordArrays || ember$data$lib$system$ordered$set$$default.create();
|
5141
5191
|
return record._recordArrays;
|
5142
5192
|
},
|
5143
5193
|
|
@@ -5154,8 +5204,8 @@
|
|
5154
5204
|
@param {Number|String} clientId
|
5155
5205
|
*/
|
5156
5206
|
updateRecordArrays: function() {
|
5157
|
-
ember$data$lib$system$
|
5158
|
-
if (ember$data$lib$system$
|
5207
|
+
ember$data$lib$system$record$array$manager$$forEach(this.changedRecords, function(record) {
|
5208
|
+
if (ember$data$lib$system$record$array$manager$$get(record, 'isDeleted')) {
|
5159
5209
|
this._recordWasDeleted(record);
|
5160
5210
|
} else {
|
5161
5211
|
this._recordWasChanged(record);
|
@@ -5184,8 +5234,8 @@
|
|
5184
5234
|
var recordArrays = this.filteredRecordArrays.get(type);
|
5185
5235
|
var filter;
|
5186
5236
|
|
5187
|
-
ember$data$lib$system$
|
5188
|
-
filter = ember$data$lib$system$
|
5237
|
+
ember$data$lib$system$record$array$manager$$forEach(recordArrays, function(array) {
|
5238
|
+
filter = ember$data$lib$system$record$array$manager$$get(array, 'filterFunction');
|
5189
5239
|
if (filter) {
|
5190
5240
|
this.updateRecordArray(array, filter, type, record);
|
5191
5241
|
}
|
@@ -5198,8 +5248,8 @@
|
|
5198
5248
|
var recordArrays = this.filteredRecordArrays.get(type);
|
5199
5249
|
var filter;
|
5200
5250
|
|
5201
|
-
ember$data$lib$system$
|
5202
|
-
filter = ember$data$lib$system$
|
5251
|
+
ember$data$lib$system$record$array$manager$$forEach(recordArrays, function(array) {
|
5252
|
+
filter = ember$data$lib$system$record$array$manager$$get(array, 'filterFunction');
|
5203
5253
|
this.updateRecordArray(array, filter, type, record);
|
5204
5254
|
}, this);
|
5205
5255
|
},
|
@@ -5254,7 +5304,7 @@
|
|
5254
5304
|
for (var i = 0, l = records.length; i < l; i++) {
|
5255
5305
|
record = records[i];
|
5256
5306
|
|
5257
|
-
if (!ember$data$lib$system$
|
5307
|
+
if (!ember$data$lib$system$record$array$manager$$get(record, 'isDeleted') && !ember$data$lib$system$record$array$manager$$get(record, 'isEmpty')) {
|
5258
5308
|
this.updateRecordArray(array, filter, type, record);
|
5259
5309
|
}
|
5260
5310
|
}
|
@@ -5268,7 +5318,7 @@
|
|
5268
5318
|
@return {DS.RecordArray}
|
5269
5319
|
*/
|
5270
5320
|
createRecordArray: function(type) {
|
5271
|
-
var array = ember$data$lib$system$
|
5321
|
+
var array = ember$data$lib$system$record$arrays$record$array$$default.create({
|
5272
5322
|
type: type,
|
5273
5323
|
content: Ember.A(),
|
5274
5324
|
store: this.store,
|
@@ -5291,7 +5341,7 @@
|
|
5291
5341
|
@return {DS.FilteredRecordArray}
|
5292
5342
|
*/
|
5293
5343
|
createFilteredRecordArray: function(type, filter, query) {
|
5294
|
-
var array = ember$data$lib$system$
|
5344
|
+
var array = ember$data$lib$system$record$arrays$filtered$record$array$$default.create({
|
5295
5345
|
query: query,
|
5296
5346
|
type: type,
|
5297
5347
|
content: Ember.A(),
|
@@ -5314,7 +5364,7 @@
|
|
5314
5364
|
@return {DS.AdapterPopulatedRecordArray}
|
5315
5365
|
*/
|
5316
5366
|
createAdapterPopulatedRecordArray: function(type, query) {
|
5317
|
-
var array = ember$data$lib$system$
|
5367
|
+
var array = ember$data$lib$system$record$arrays$adapter$populated$record$array$$default.create({
|
5318
5368
|
type: type,
|
5319
5369
|
query: query,
|
5320
5370
|
content: Ember.A(),
|
@@ -5354,7 +5404,7 @@
|
|
5354
5404
|
*/
|
5355
5405
|
unregisterFilteredRecordArray: function(array) {
|
5356
5406
|
var recordArrays = this.filteredRecordArrays.get(array.type);
|
5357
|
-
var index = ember$data$lib$system$
|
5407
|
+
var index = ember$data$lib$system$record$array$manager$$indexOf(recordArrays, array);
|
5358
5408
|
recordArrays.splice(index, 1);
|
5359
5409
|
},
|
5360
5410
|
|
@@ -5362,17 +5412,17 @@
|
|
5362
5412
|
this._super.apply(this, arguments);
|
5363
5413
|
|
5364
5414
|
this.filteredRecordArrays.forEach(function(value) {
|
5365
|
-
ember$data$lib$system$
|
5415
|
+
ember$data$lib$system$record$array$manager$$forEach(ember$data$lib$system$record$array$manager$$flatten(value), ember$data$lib$system$record$array$manager$$destroy);
|
5366
5416
|
});
|
5367
|
-
ember$data$lib$system$
|
5417
|
+
ember$data$lib$system$record$array$manager$$forEach(this._adapterPopulatedRecordArrays, ember$data$lib$system$record$array$manager$$destroy);
|
5368
5418
|
}
|
5369
5419
|
});
|
5370
5420
|
|
5371
|
-
function ember$data$lib$system$
|
5421
|
+
function ember$data$lib$system$record$array$manager$$destroy(entry) {
|
5372
5422
|
entry.destroy();
|
5373
5423
|
}
|
5374
5424
|
|
5375
|
-
function ember$data$lib$system$
|
5425
|
+
function ember$data$lib$system$record$array$manager$$flatten(list) {
|
5376
5426
|
var length = list.length;
|
5377
5427
|
var result = Ember.A();
|
5378
5428
|
|
@@ -5382,9 +5432,6 @@
|
|
5382
5432
|
|
5383
5433
|
return result;
|
5384
5434
|
}
|
5385
|
-
/**
|
5386
|
-
@module ember-data
|
5387
|
-
*/
|
5388
5435
|
|
5389
5436
|
var ember$data$lib$system$model$states$$get = Ember.get;
|
5390
5437
|
var ember$data$lib$system$model$states$$set = Ember.set;
|
@@ -5794,6 +5841,7 @@
|
|
5794
5841
|
ember$data$lib$system$model$states$$createdState.uncommitted.deleteRecord = function(record) {
|
5795
5842
|
record.disconnectRelationships();
|
5796
5843
|
record.transitionTo('deleted.saved');
|
5844
|
+
record.send('invokeLifecycleCallbacks');
|
5797
5845
|
};
|
5798
5846
|
|
5799
5847
|
ember$data$lib$system$model$states$$createdState.uncommitted.rollback = function(record) {
|
@@ -6048,6 +6096,11 @@
|
|
6048
6096
|
becameError: function(record) {
|
6049
6097
|
record.transitionTo('uncommitted');
|
6050
6098
|
record.triggerLater('becameError', record);
|
6099
|
+
},
|
6100
|
+
|
6101
|
+
becameInvalid: function(record) {
|
6102
|
+
record.transitionTo('invalid');
|
6103
|
+
record.triggerLater('becameInvalid', record);
|
6051
6104
|
}
|
6052
6105
|
},
|
6053
6106
|
|
@@ -6071,6 +6124,32 @@
|
|
6071
6124
|
willCommit: Ember.K,
|
6072
6125
|
|
6073
6126
|
didCommit: Ember.K
|
6127
|
+
},
|
6128
|
+
|
6129
|
+
invalid: {
|
6130
|
+
isValid: false,
|
6131
|
+
|
6132
|
+
didSetProperty: function(record, context) {
|
6133
|
+
ember$data$lib$system$model$states$$get(record, 'errors').remove(context.name);
|
6134
|
+
|
6135
|
+
ember$data$lib$system$model$states$$didSetProperty(record, context);
|
6136
|
+
},
|
6137
|
+
|
6138
|
+
deleteRecord: Ember.K,
|
6139
|
+
becomeDirty: Ember.K,
|
6140
|
+
willCommit: Ember.K,
|
6141
|
+
|
6142
|
+
|
6143
|
+
rolledBack: function(record) {
|
6144
|
+
ember$data$lib$system$model$states$$get(record, 'errors').clear();
|
6145
|
+
record.transitionTo('loaded.saved');
|
6146
|
+
record.triggerLater('ready');
|
6147
|
+
},
|
6148
|
+
|
6149
|
+
becameValid: function(record) {
|
6150
|
+
record.transitionTo('uncommitted');
|
6151
|
+
}
|
6152
|
+
|
6074
6153
|
}
|
6075
6154
|
},
|
6076
6155
|
|
@@ -6394,8 +6473,8 @@
|
|
6394
6473
|
var ember$data$lib$system$relationships$state$relationship$$forEach = Ember.EnumerableUtils.forEach;
|
6395
6474
|
|
6396
6475
|
var ember$data$lib$system$relationships$state$relationship$$Relationship = function(store, record, inverseKey, relationshipMeta) {
|
6397
|
-
this.members = new ember$data$lib$system$
|
6398
|
-
this.canonicalMembers = new ember$data$lib$system$
|
6476
|
+
this.members = new ember$data$lib$system$ordered$set$$default();
|
6477
|
+
this.canonicalMembers = new ember$data$lib$system$ordered$set$$default();
|
6399
6478
|
this.store = store;
|
6400
6479
|
this.key = relationshipMeta.key;
|
6401
6480
|
this.inverseKey = inverseKey;
|
@@ -6503,7 +6582,7 @@
|
|
6503
6582
|
|
6504
6583
|
addRecord: function(record, idx) {
|
6505
6584
|
if (!this.members.has(record)) {
|
6506
|
-
this.members.
|
6585
|
+
this.members.addWithIndex(record, idx);
|
6507
6586
|
this.notifyRecordRelationshipAdded(record, idx);
|
6508
6587
|
if (this.inverseKey) {
|
6509
6588
|
record._relationships[this.inverseKey].addRecord(this.record);
|
@@ -6629,11 +6708,230 @@
|
|
6629
6708
|
|
6630
6709
|
var ember$data$lib$system$relationships$state$relationship$$default = ember$data$lib$system$relationships$state$relationship$$Relationship;
|
6631
6710
|
|
6632
|
-
var ember$data$lib$system$
|
6711
|
+
var ember$data$lib$system$many$array$$get = Ember.get;
|
6712
|
+
var ember$data$lib$system$many$array$$set = Ember.set;
|
6713
|
+
var ember$data$lib$system$many$array$$filter = Ember.ArrayPolyfills.filter;
|
6714
|
+
|
6715
|
+
var ember$data$lib$system$many$array$$default = Ember.Object.extend(Ember.MutableArray, Ember.Evented, {
|
6716
|
+
init: function() {
|
6717
|
+
this.currentState = Ember.A([]);
|
6718
|
+
},
|
6719
|
+
|
6720
|
+
record: null,
|
6721
|
+
|
6722
|
+
canonicalState: null,
|
6723
|
+
currentState: null,
|
6724
|
+
|
6725
|
+
length: 0,
|
6726
|
+
|
6727
|
+
objectAt: function(index) {
|
6728
|
+
if (this.currentState[index]) {
|
6729
|
+
return this.currentState[index];
|
6730
|
+
} else {
|
6731
|
+
return this.canonicalState[index];
|
6732
|
+
}
|
6733
|
+
},
|
6734
|
+
|
6735
|
+
flushCanonical: function() {
|
6736
|
+
//TODO make this smarter, currently its plenty stupid
|
6737
|
+
var toSet = ember$data$lib$system$many$array$$filter.call(this.canonicalState, function(record) {
|
6738
|
+
return !record.get('isDeleted');
|
6739
|
+
});
|
6740
|
+
|
6741
|
+
//a hack for not removing new records
|
6742
|
+
//TODO remove once we have proper diffing
|
6743
|
+
var newRecords = this.currentState.filter(function(record) {
|
6744
|
+
return record.get('isNew');
|
6745
|
+
});
|
6746
|
+
toSet = toSet.concat(newRecords);
|
6747
|
+
var oldLength = this.length;
|
6748
|
+
this.arrayContentWillChange(0, this.length, toSet.length);
|
6749
|
+
this.set('length', toSet.length);
|
6750
|
+
this.currentState = toSet;
|
6751
|
+
this.arrayContentDidChange(0, oldLength, this.length);
|
6752
|
+
//TODO Figure out to notify only on additions and maybe only if unloaded
|
6753
|
+
this.relationship.notifyHasManyChanged();
|
6754
|
+
this.record.updateRecordArrays();
|
6755
|
+
},
|
6756
|
+
/**
|
6757
|
+
`true` if the relationship is polymorphic, `false` otherwise.
|
6758
|
+
|
6759
|
+
@property {Boolean} isPolymorphic
|
6760
|
+
@private
|
6761
|
+
*/
|
6762
|
+
isPolymorphic: false,
|
6763
|
+
|
6764
|
+
/**
|
6765
|
+
The loading state of this array
|
6766
|
+
|
6767
|
+
@property {Boolean} isLoaded
|
6768
|
+
*/
|
6769
|
+
isLoaded: false,
|
6770
|
+
|
6771
|
+
/**
|
6772
|
+
The relationship which manages this array.
|
6773
|
+
|
6774
|
+
@property {ManyRelationship} relationship
|
6775
|
+
@private
|
6776
|
+
*/
|
6777
|
+
relationship: null,
|
6778
|
+
|
6779
|
+
internalReplace: function(idx, amt, objects) {
|
6780
|
+
if (!objects) {
|
6781
|
+
objects = [];
|
6782
|
+
}
|
6783
|
+
this.arrayContentWillChange(idx, amt, objects.length);
|
6784
|
+
this.currentState.splice.apply(this.currentState, [idx, amt].concat(objects));
|
6785
|
+
this.set('length', this.currentState.length);
|
6786
|
+
this.arrayContentDidChange(idx, amt, objects.length);
|
6787
|
+
if (objects) {
|
6788
|
+
//TODO(Igor) probably needed only for unloaded records
|
6789
|
+
this.relationship.notifyHasManyChanged();
|
6790
|
+
}
|
6791
|
+
this.record.updateRecordArrays();
|
6792
|
+
},
|
6793
|
+
|
6794
|
+
//TODO(Igor) optimize
|
6795
|
+
internalRemoveRecords: function(records) {
|
6796
|
+
var index;
|
6797
|
+
for (var i=0; i < records.length; i++) {
|
6798
|
+
index = this.currentState.indexOf(records[i]);
|
6799
|
+
this.internalReplace(index, 1);
|
6800
|
+
}
|
6801
|
+
},
|
6802
|
+
|
6803
|
+
//TODO(Igor) optimize
|
6804
|
+
internalAddRecords: function(records, idx) {
|
6805
|
+
if (idx === undefined) {
|
6806
|
+
idx = this.currentState.length;
|
6807
|
+
}
|
6808
|
+
this.internalReplace(idx, 0, records);
|
6809
|
+
},
|
6810
|
+
|
6811
|
+
replace: function(idx, amt, objects) {
|
6812
|
+
var records;
|
6813
|
+
if (amt > 0) {
|
6814
|
+
records = this.currentState.slice(idx, idx+amt);
|
6815
|
+
this.get('relationship').removeRecords(records);
|
6816
|
+
}
|
6817
|
+
if (objects) {
|
6818
|
+
this.get('relationship').addRecords(objects, idx);
|
6819
|
+
}
|
6820
|
+
},
|
6821
|
+
/**
|
6822
|
+
Used for async `hasMany` arrays
|
6823
|
+
to keep track of when they will resolve.
|
6824
|
+
|
6825
|
+
@property {Ember.RSVP.Promise} promise
|
6826
|
+
@private
|
6827
|
+
*/
|
6828
|
+
promise: null,
|
6829
|
+
|
6830
|
+
/**
|
6831
|
+
@method loadingRecordsCount
|
6832
|
+
@param {Number} count
|
6833
|
+
@private
|
6834
|
+
*/
|
6835
|
+
loadingRecordsCount: function(count) {
|
6836
|
+
this.loadingRecordsCount = count;
|
6837
|
+
},
|
6838
|
+
|
6839
|
+
/**
|
6840
|
+
@method loadedRecord
|
6841
|
+
@private
|
6842
|
+
*/
|
6843
|
+
loadedRecord: function() {
|
6844
|
+
this.loadingRecordsCount--;
|
6845
|
+
if (this.loadingRecordsCount === 0) {
|
6846
|
+
ember$data$lib$system$many$array$$set(this, 'isLoaded', true);
|
6847
|
+
this.trigger('didLoad');
|
6848
|
+
}
|
6849
|
+
},
|
6850
|
+
|
6851
|
+
/**
|
6852
|
+
@method reload
|
6853
|
+
@public
|
6854
|
+
*/
|
6855
|
+
reload: function() {
|
6856
|
+
return this.relationship.reload();
|
6857
|
+
},
|
6858
|
+
|
6859
|
+
/**
|
6860
|
+
Saves all of the records in the `ManyArray`.
|
6861
|
+
|
6862
|
+
Example
|
6863
|
+
|
6864
|
+
```javascript
|
6865
|
+
store.find('inbox', 1).then(function(inbox) {
|
6866
|
+
inbox.get('messages').then(function(messages) {
|
6867
|
+
messages.forEach(function(message) {
|
6868
|
+
message.set('isRead', true);
|
6869
|
+
});
|
6870
|
+
messages.save()
|
6871
|
+
});
|
6872
|
+
});
|
6873
|
+
```
|
6874
|
+
|
6875
|
+
@method save
|
6876
|
+
@return {DS.PromiseArray} promise
|
6877
|
+
*/
|
6878
|
+
save: function() {
|
6879
|
+
var manyArray = this;
|
6880
|
+
var promiseLabel = "DS: ManyArray#save " + ember$data$lib$system$many$array$$get(this, 'type');
|
6881
|
+
var promise = Ember.RSVP.all(this.invoke("save"), promiseLabel).then(function(array) {
|
6882
|
+
return manyArray;
|
6883
|
+
}, null, "DS: ManyArray#save return ManyArray");
|
6884
|
+
|
6885
|
+
return ember$data$lib$system$promise$proxies$$PromiseArray.create({ promise: promise });
|
6886
|
+
},
|
6887
|
+
|
6888
|
+
/**
|
6889
|
+
Create a child record within the owner
|
6890
|
+
|
6891
|
+
@method createRecord
|
6892
|
+
@private
|
6893
|
+
@param {Object} hash
|
6894
|
+
@return {DS.Model} record
|
6895
|
+
*/
|
6896
|
+
createRecord: function(hash) {
|
6897
|
+
var store = ember$data$lib$system$many$array$$get(this, 'store');
|
6898
|
+
var type = ember$data$lib$system$many$array$$get(this, 'type');
|
6899
|
+
var record;
|
6900
|
+
|
6901
|
+
Ember.assert("You cannot add '" + type.typeKey + "' records to this polymorphic relationship.", !ember$data$lib$system$many$array$$get(this, 'isPolymorphic'));
|
6902
|
+
|
6903
|
+
record = store.createRecord(type, hash);
|
6904
|
+
this.pushObject(record);
|
6905
|
+
|
6906
|
+
return record;
|
6907
|
+
},
|
6908
|
+
|
6909
|
+
/**
|
6910
|
+
@method addRecord
|
6911
|
+
@param {DS.Model} record
|
6912
|
+
@deprecated Use `addObject()` instead
|
6913
|
+
*/
|
6914
|
+
addRecord: function(record) {
|
6915
|
+
Ember.deprecate('Using manyArray.addRecord() has been deprecated. You should use manyArray.addObject() instead.');
|
6916
|
+
this.addObject(record);
|
6917
|
+
},
|
6918
|
+
|
6919
|
+
/**
|
6920
|
+
@method removeRecord
|
6921
|
+
@param {DS.Model} record
|
6922
|
+
@deprecated Use `removeObject()` instead
|
6923
|
+
*/
|
6924
|
+
removeRecord: function(record) {
|
6925
|
+
Ember.deprecate('Using manyArray.removeRecord() has been deprecated. You should use manyArray.removeObject() instead.');
|
6926
|
+
this.removeObject(record);
|
6927
|
+
}
|
6928
|
+
});
|
6929
|
+
|
6930
|
+
var ember$data$lib$system$relationships$state$has$many$$ManyRelationship = function(store, record, inverseKey, relationshipMeta) {
|
6633
6931
|
this._super$constructor(store, record, inverseKey, relationshipMeta);
|
6634
6932
|
this.belongsToType = relationshipMeta.type;
|
6635
6933
|
this.canonicalState = [];
|
6636
|
-
this.manyArray = ember$data$lib$system$
|
6934
|
+
this.manyArray = ember$data$lib$system$many$array$$default.create({
|
6637
6935
|
canonicalState: this.canonicalState,
|
6638
6936
|
store: this.store,
|
6639
6937
|
relationship: this,
|
@@ -6644,16 +6942,16 @@
|
|
6644
6942
|
this.manyArray.isPolymorphic = this.isPolymorphic;
|
6645
6943
|
};
|
6646
6944
|
|
6647
|
-
ember$data$lib$system$relationships$state$
|
6648
|
-
ember$data$lib$system$relationships$state$
|
6649
|
-
ember$data$lib$system$relationships$state$
|
6945
|
+
ember$data$lib$system$relationships$state$has$many$$ManyRelationship.prototype = Ember.create(ember$data$lib$system$relationships$state$relationship$$default.prototype);
|
6946
|
+
ember$data$lib$system$relationships$state$has$many$$ManyRelationship.prototype.constructor = ember$data$lib$system$relationships$state$has$many$$ManyRelationship;
|
6947
|
+
ember$data$lib$system$relationships$state$has$many$$ManyRelationship.prototype._super$constructor = ember$data$lib$system$relationships$state$relationship$$default;
|
6650
6948
|
|
6651
|
-
ember$data$lib$system$relationships$state$
|
6949
|
+
ember$data$lib$system$relationships$state$has$many$$ManyRelationship.prototype.destroy = function() {
|
6652
6950
|
this.manyArray.destroy();
|
6653
6951
|
};
|
6654
6952
|
|
6655
|
-
ember$data$lib$system$relationships$state$
|
6656
|
-
ember$data$lib$system$relationships$state$
|
6953
|
+
ember$data$lib$system$relationships$state$has$many$$ManyRelationship.prototype._super$addCanonicalRecord = ember$data$lib$system$relationships$state$relationship$$default.prototype.addCanonicalRecord;
|
6954
|
+
ember$data$lib$system$relationships$state$has$many$$ManyRelationship.prototype.addCanonicalRecord = function(record, idx) {
|
6657
6955
|
if (this.canonicalMembers.has(record)) {
|
6658
6956
|
return;
|
6659
6957
|
}
|
@@ -6665,8 +6963,8 @@
|
|
6665
6963
|
this._super$addCanonicalRecord(record, idx);
|
6666
6964
|
};
|
6667
6965
|
|
6668
|
-
ember$data$lib$system$relationships$state$
|
6669
|
-
ember$data$lib$system$relationships$state$
|
6966
|
+
ember$data$lib$system$relationships$state$has$many$$ManyRelationship.prototype._super$addRecord = ember$data$lib$system$relationships$state$relationship$$default.prototype.addRecord;
|
6967
|
+
ember$data$lib$system$relationships$state$has$many$$ManyRelationship.prototype.addRecord = function(record, idx) {
|
6670
6968
|
if (this.members.has(record)) {
|
6671
6969
|
return;
|
6672
6970
|
}
|
@@ -6674,8 +6972,8 @@
|
|
6674
6972
|
this.manyArray.internalAddRecords([record], idx);
|
6675
6973
|
};
|
6676
6974
|
|
6677
|
-
ember$data$lib$system$relationships$state$
|
6678
|
-
ember$data$lib$system$relationships$state$
|
6975
|
+
ember$data$lib$system$relationships$state$has$many$$ManyRelationship.prototype._super$removeCanonicalRecordFromOwn = ember$data$lib$system$relationships$state$relationship$$default.prototype.removeCanonicalRecordFromOwn;
|
6976
|
+
ember$data$lib$system$relationships$state$has$many$$ManyRelationship.prototype.removeCanonicalRecordFromOwn = function(record, idx) {
|
6679
6977
|
var i = idx;
|
6680
6978
|
if (!this.canonicalMembers.has(record)) {
|
6681
6979
|
return;
|
@@ -6689,14 +6987,14 @@
|
|
6689
6987
|
this._super$removeCanonicalRecordFromOwn(record, idx);
|
6690
6988
|
};
|
6691
6989
|
|
6692
|
-
ember$data$lib$system$relationships$state$
|
6693
|
-
ember$data$lib$system$relationships$state$
|
6990
|
+
ember$data$lib$system$relationships$state$has$many$$ManyRelationship.prototype._super$flushCanonical = ember$data$lib$system$relationships$state$relationship$$default.prototype.flushCanonical;
|
6991
|
+
ember$data$lib$system$relationships$state$has$many$$ManyRelationship.prototype.flushCanonical = function() {
|
6694
6992
|
this.manyArray.flushCanonical();
|
6695
6993
|
this._super$flushCanonical();
|
6696
6994
|
};
|
6697
6995
|
|
6698
|
-
ember$data$lib$system$relationships$state$
|
6699
|
-
ember$data$lib$system$relationships$state$
|
6996
|
+
ember$data$lib$system$relationships$state$has$many$$ManyRelationship.prototype._super$removeRecordFromOwn = ember$data$lib$system$relationships$state$relationship$$default.prototype.removeRecordFromOwn;
|
6997
|
+
ember$data$lib$system$relationships$state$has$many$$ManyRelationship.prototype.removeRecordFromOwn = function(record, idx) {
|
6700
6998
|
if (!this.members.has(record)) {
|
6701
6999
|
return;
|
6702
7000
|
}
|
@@ -6709,22 +7007,22 @@
|
|
6709
7007
|
}
|
6710
7008
|
};
|
6711
7009
|
|
6712
|
-
ember$data$lib$system$relationships$state$
|
7010
|
+
ember$data$lib$system$relationships$state$has$many$$ManyRelationship.prototype.notifyRecordRelationshipAdded = function(record, idx) {
|
6713
7011
|
var type = this.relationshipMeta.type;
|
6714
7012
|
Ember.assert("You cannot add '" + record.constructor.typeKey + "' records to the " + this.record.constructor.typeKey + "." + this.key + " relationship (only '" + this.belongsToType.typeKey + "' allowed)", (function () {
|
6715
|
-
if (
|
6716
|
-
return
|
6717
|
-
} else if (Ember.MODEL_FACTORY_INJECTIONS) {
|
6718
|
-
return record instanceof type.superclass;
|
7013
|
+
if (type.__isMixin) {
|
7014
|
+
return type.__mixin.detect(record);
|
6719
7015
|
}
|
6720
|
-
|
6721
|
-
|
7016
|
+
if (Ember.MODEL_FACTORY_INJECTIONS) {
|
7017
|
+
type = type.superclass;
|
7018
|
+
}
|
7019
|
+
return record instanceof type;
|
6722
7020
|
})());
|
6723
7021
|
|
6724
7022
|
this.record.notifyHasManyAdded(this.key, record, idx);
|
6725
7023
|
};
|
6726
7024
|
|
6727
|
-
ember$data$lib$system$relationships$state$
|
7025
|
+
ember$data$lib$system$relationships$state$has$many$$ManyRelationship.prototype.reload = function() {
|
6728
7026
|
var self = this;
|
6729
7027
|
if (this.link) {
|
6730
7028
|
return this.fetchLink();
|
@@ -6737,14 +7035,14 @@
|
|
6737
7035
|
}
|
6738
7036
|
};
|
6739
7037
|
|
6740
|
-
ember$data$lib$system$relationships$state$
|
7038
|
+
ember$data$lib$system$relationships$state$has$many$$ManyRelationship.prototype.computeChanges = function(records) {
|
6741
7039
|
var members = this.canonicalMembers;
|
6742
7040
|
var recordsToRemove = [];
|
6743
7041
|
var length;
|
6744
7042
|
var record;
|
6745
7043
|
var i;
|
6746
7044
|
|
6747
|
-
records = ember$data$lib$system$relationships$state$
|
7045
|
+
records = ember$data$lib$system$relationships$state$has$many$$setForArray(records);
|
6748
7046
|
|
6749
7047
|
members.forEach(function(member) {
|
6750
7048
|
if (records.has(member)) { return; }
|
@@ -6767,15 +7065,17 @@
|
|
6767
7065
|
}
|
6768
7066
|
};
|
6769
7067
|
|
6770
|
-
ember$data$lib$system$relationships$state$
|
7068
|
+
ember$data$lib$system$relationships$state$has$many$$ManyRelationship.prototype.fetchLink = function() {
|
6771
7069
|
var self = this;
|
6772
7070
|
return this.store.findHasMany(this.record, this.link, this.relationshipMeta).then(function(records) {
|
6773
|
-
self.
|
7071
|
+
self.store._backburner.join(function() {
|
7072
|
+
self.updateRecordsFromAdapter(records);
|
7073
|
+
});
|
6774
7074
|
return self.manyArray;
|
6775
7075
|
});
|
6776
7076
|
};
|
6777
7077
|
|
6778
|
-
ember$data$lib$system$relationships$state$
|
7078
|
+
ember$data$lib$system$relationships$state$has$many$$ManyRelationship.prototype.findRecords = function() {
|
6779
7079
|
var manyArray = this.manyArray;
|
6780
7080
|
return this.store.findMany(manyArray.toArray()).then(function() {
|
6781
7081
|
//Goes away after the manyArray refactor
|
@@ -6783,11 +7083,11 @@
|
|
6783
7083
|
return manyArray;
|
6784
7084
|
});
|
6785
7085
|
};
|
6786
|
-
ember$data$lib$system$relationships$state$
|
7086
|
+
ember$data$lib$system$relationships$state$has$many$$ManyRelationship.prototype.notifyHasManyChanged = function() {
|
6787
7087
|
this.record.notifyHasManyAdded(this.key);
|
6788
7088
|
};
|
6789
7089
|
|
6790
|
-
ember$data$lib$system$relationships$state$
|
7090
|
+
ember$data$lib$system$relationships$state$has$many$$ManyRelationship.prototype.getRecords = function() {
|
6791
7091
|
//TODO(Igor) sync server here, once our syncing is not stupid
|
6792
7092
|
if (this.isAsync) {
|
6793
7093
|
var self = this;
|
@@ -6799,7 +7099,7 @@
|
|
6799
7099
|
} else {
|
6800
7100
|
promise = this.findRecords();
|
6801
7101
|
}
|
6802
|
-
return ember$data$lib$system$
|
7102
|
+
return ember$data$lib$system$promise$proxies$$PromiseManyArray.create({
|
6803
7103
|
content: this.manyArray,
|
6804
7104
|
promise: promise
|
6805
7105
|
});
|
@@ -6814,8 +7114,8 @@
|
|
6814
7114
|
}
|
6815
7115
|
};
|
6816
7116
|
|
6817
|
-
function ember$data$lib$system$relationships$state$
|
6818
|
-
var set = new ember$data$lib$system$
|
7117
|
+
function ember$data$lib$system$relationships$state$has$many$$setForArray(array) {
|
7118
|
+
var set = new ember$data$lib$system$ordered$set$$default();
|
6819
7119
|
|
6820
7120
|
if (array) {
|
6821
7121
|
for (var i=0, l=array.length; i<l; i++) {
|
@@ -6826,9 +7126,9 @@
|
|
6826
7126
|
return set;
|
6827
7127
|
}
|
6828
7128
|
|
6829
|
-
var ember$data$lib$system$relationships$state$
|
7129
|
+
var ember$data$lib$system$relationships$state$has$many$$default = ember$data$lib$system$relationships$state$has$many$$ManyRelationship;
|
6830
7130
|
|
6831
|
-
var ember$data$lib$system$relationships$state$
|
7131
|
+
var ember$data$lib$system$relationships$state$belongs$to$$BelongsToRelationship = function(store, record, inverseKey, relationshipMeta) {
|
6832
7132
|
this._super$constructor(store, record, inverseKey, relationshipMeta);
|
6833
7133
|
this.record = record;
|
6834
7134
|
this.key = relationshipMeta.key;
|
@@ -6836,11 +7136,11 @@
|
|
6836
7136
|
this.canonicalState = null;
|
6837
7137
|
};
|
6838
7138
|
|
6839
|
-
ember$data$lib$system$relationships$state$
|
6840
|
-
ember$data$lib$system$relationships$state$
|
6841
|
-
ember$data$lib$system$relationships$state$
|
7139
|
+
ember$data$lib$system$relationships$state$belongs$to$$BelongsToRelationship.prototype = Ember.create(ember$data$lib$system$relationships$state$relationship$$default.prototype);
|
7140
|
+
ember$data$lib$system$relationships$state$belongs$to$$BelongsToRelationship.prototype.constructor = ember$data$lib$system$relationships$state$belongs$to$$BelongsToRelationship;
|
7141
|
+
ember$data$lib$system$relationships$state$belongs$to$$BelongsToRelationship.prototype._super$constructor = ember$data$lib$system$relationships$state$relationship$$default;
|
6842
7142
|
|
6843
|
-
ember$data$lib$system$relationships$state$
|
7143
|
+
ember$data$lib$system$relationships$state$belongs$to$$BelongsToRelationship.prototype.setRecord = function(newRecord) {
|
6844
7144
|
if (newRecord) {
|
6845
7145
|
this.addRecord(newRecord);
|
6846
7146
|
} else if (this.inverseRecord) {
|
@@ -6848,7 +7148,7 @@
|
|
6848
7148
|
}
|
6849
7149
|
};
|
6850
7150
|
|
6851
|
-
ember$data$lib$system$relationships$state$
|
7151
|
+
ember$data$lib$system$relationships$state$belongs$to$$BelongsToRelationship.prototype.setCanonicalRecord = function(newRecord) {
|
6852
7152
|
if (newRecord) {
|
6853
7153
|
this.addCanonicalRecord(newRecord);
|
6854
7154
|
} else if (this.inverseRecord) {
|
@@ -6856,8 +7156,8 @@
|
|
6856
7156
|
}
|
6857
7157
|
};
|
6858
7158
|
|
6859
|
-
ember$data$lib$system$relationships$state$
|
6860
|
-
ember$data$lib$system$relationships$state$
|
7159
|
+
ember$data$lib$system$relationships$state$belongs$to$$BelongsToRelationship.prototype._super$addCanonicalRecord = ember$data$lib$system$relationships$state$relationship$$default.prototype.addCanonicalRecord;
|
7160
|
+
ember$data$lib$system$relationships$state$belongs$to$$BelongsToRelationship.prototype.addCanonicalRecord = function(newRecord) {
|
6861
7161
|
if (this.canonicalMembers.has(newRecord)) { return;}
|
6862
7162
|
|
6863
7163
|
if (this.canonicalState) {
|
@@ -6868,8 +7168,8 @@
|
|
6868
7168
|
this._super$addCanonicalRecord(newRecord);
|
6869
7169
|
};
|
6870
7170
|
|
6871
|
-
ember$data$lib$system$relationships$state$
|
6872
|
-
ember$data$lib$system$relationships$state$
|
7171
|
+
ember$data$lib$system$relationships$state$belongs$to$$BelongsToRelationship.prototype._super$flushCanonical = ember$data$lib$system$relationships$state$relationship$$default.prototype.flushCanonical;
|
7172
|
+
ember$data$lib$system$relationships$state$belongs$to$$BelongsToRelationship.prototype.flushCanonical = function() {
|
6873
7173
|
//temporary fix to not remove newly created records if server returned null.
|
6874
7174
|
//TODO remove once we have proper diffing
|
6875
7175
|
if (this.inverseRecord && this.inverseRecord.get('isNew') && !this.canonicalState) {
|
@@ -6880,18 +7180,18 @@
|
|
6880
7180
|
this._super$flushCanonical();
|
6881
7181
|
};
|
6882
7182
|
|
6883
|
-
ember$data$lib$system$relationships$state$
|
6884
|
-
ember$data$lib$system$relationships$state$
|
7183
|
+
ember$data$lib$system$relationships$state$belongs$to$$BelongsToRelationship.prototype._super$addRecord = ember$data$lib$system$relationships$state$relationship$$default.prototype.addRecord;
|
7184
|
+
ember$data$lib$system$relationships$state$belongs$to$$BelongsToRelationship.prototype.addRecord = function(newRecord) {
|
6885
7185
|
if (this.members.has(newRecord)) { return;}
|
6886
7186
|
var type = this.relationshipMeta.type;
|
6887
|
-
Ember.assert("You can only add a '" + type.typeKey + "' record to this relationship", (function () {
|
6888
|
-
if (
|
6889
|
-
return
|
6890
|
-
} else if (Ember.MODEL_FACTORY_INJECTIONS) {
|
6891
|
-
return newRecord instanceof type.superclass;
|
7187
|
+
Ember.assert("You cannot add a '" + newRecord.constructor.typeKey + "' record to the '" + this.record.constructor.typeKey + "." + this.key +"'. " + "You can only add a '" + type.typeKey + "' record to this relationship.", (function () {
|
7188
|
+
if (type.__isMixin) {
|
7189
|
+
return type.__mixin.detect(newRecord);
|
6892
7190
|
}
|
6893
|
-
|
6894
|
-
|
7191
|
+
if (Ember.MODEL_FACTORY_INJECTIONS) {
|
7192
|
+
type = type.superclass;
|
7193
|
+
}
|
7194
|
+
return newRecord instanceof type;
|
6895
7195
|
})());
|
6896
7196
|
|
6897
7197
|
if (this.inverseRecord) {
|
@@ -6903,28 +7203,28 @@
|
|
6903
7203
|
this.record.notifyBelongsToChanged(this.key);
|
6904
7204
|
};
|
6905
7205
|
|
6906
|
-
ember$data$lib$system$relationships$state$
|
7206
|
+
ember$data$lib$system$relationships$state$belongs$to$$BelongsToRelationship.prototype.setRecordPromise = function(newPromise) {
|
6907
7207
|
var content = newPromise.get && newPromise.get('content');
|
6908
7208
|
Ember.assert("You passed in a promise that did not originate from an EmberData relationship. You can only pass promises that come from a belongsTo or hasMany relationship to the get call.", content !== undefined);
|
6909
7209
|
this.setRecord(content);
|
6910
7210
|
};
|
6911
7211
|
|
6912
|
-
ember$data$lib$system$relationships$state$
|
6913
|
-
ember$data$lib$system$relationships$state$
|
7212
|
+
ember$data$lib$system$relationships$state$belongs$to$$BelongsToRelationship.prototype._super$removeRecordFromOwn = ember$data$lib$system$relationships$state$relationship$$default.prototype.removeRecordFromOwn;
|
7213
|
+
ember$data$lib$system$relationships$state$belongs$to$$BelongsToRelationship.prototype.removeRecordFromOwn = function(record) {
|
6914
7214
|
if (!this.members.has(record)) { return;}
|
6915
7215
|
this.inverseRecord = null;
|
6916
7216
|
this._super$removeRecordFromOwn(record);
|
6917
7217
|
this.record.notifyBelongsToChanged(this.key);
|
6918
7218
|
};
|
6919
7219
|
|
6920
|
-
ember$data$lib$system$relationships$state$
|
6921
|
-
ember$data$lib$system$relationships$state$
|
7220
|
+
ember$data$lib$system$relationships$state$belongs$to$$BelongsToRelationship.prototype._super$removeCanonicalRecordFromOwn = ember$data$lib$system$relationships$state$relationship$$default.prototype.removeCanonicalRecordFromOwn;
|
7221
|
+
ember$data$lib$system$relationships$state$belongs$to$$BelongsToRelationship.prototype.removeCanonicalRecordFromOwn = function(record) {
|
6922
7222
|
if (!this.canonicalMembers.has(record)) { return;}
|
6923
7223
|
this.canonicalState = null;
|
6924
7224
|
this._super$removeCanonicalRecordFromOwn(record);
|
6925
7225
|
};
|
6926
7226
|
|
6927
|
-
ember$data$lib$system$relationships$state$
|
7227
|
+
ember$data$lib$system$relationships$state$belongs$to$$BelongsToRelationship.prototype.findRecord = function() {
|
6928
7228
|
if (this.inverseRecord) {
|
6929
7229
|
return this.store._findByRecord(this.inverseRecord);
|
6930
7230
|
} else {
|
@@ -6932,7 +7232,7 @@
|
|
6932
7232
|
}
|
6933
7233
|
};
|
6934
7234
|
|
6935
|
-
ember$data$lib$system$relationships$state$
|
7235
|
+
ember$data$lib$system$relationships$state$belongs$to$$BelongsToRelationship.prototype.fetchLink = function() {
|
6936
7236
|
var self = this;
|
6937
7237
|
return this.store.findBelongsTo(this.record, this.link, this.relationshipMeta).then(function(record) {
|
6938
7238
|
if (record) {
|
@@ -6942,7 +7242,7 @@
|
|
6942
7242
|
});
|
6943
7243
|
};
|
6944
7244
|
|
6945
|
-
ember$data$lib$system$relationships$state$
|
7245
|
+
ember$data$lib$system$relationships$state$belongs$to$$BelongsToRelationship.prototype.getRecord = function() {
|
6946
7246
|
//TODO(Igor) flushCanonical here once our syncing is not stupid
|
6947
7247
|
if (this.isAsync) {
|
6948
7248
|
var promise;
|
@@ -6955,7 +7255,7 @@
|
|
6955
7255
|
promise = this.findRecord();
|
6956
7256
|
}
|
6957
7257
|
|
6958
|
-
return ember$data$lib$system$
|
7258
|
+
return ember$data$lib$system$promise$proxies$$PromiseObject.create({
|
6959
7259
|
promise: promise,
|
6960
7260
|
content: this.inverseRecord
|
6961
7261
|
});
|
@@ -6965,7 +7265,7 @@
|
|
6965
7265
|
}
|
6966
7266
|
};
|
6967
7267
|
|
6968
|
-
var ember$data$lib$system$relationships$state$
|
7268
|
+
var ember$data$lib$system$relationships$state$belongs$to$$default = ember$data$lib$system$relationships$state$belongs$to$$BelongsToRelationship;
|
6969
7269
|
|
6970
7270
|
var ember$data$lib$system$relationships$state$create$$createRelationshipFor = function(record, relationshipMeta, store) {
|
6971
7271
|
var inverseKey;
|
@@ -6976,16 +7276,13 @@
|
|
6976
7276
|
}
|
6977
7277
|
|
6978
7278
|
if (relationshipMeta.kind === 'hasMany') {
|
6979
|
-
return new ember$data$lib$system$relationships$state$
|
7279
|
+
return new ember$data$lib$system$relationships$state$has$many$$default(store, record, inverseKey, relationshipMeta);
|
6980
7280
|
} else {
|
6981
|
-
return new ember$data$lib$system$relationships$state$
|
7281
|
+
return new ember$data$lib$system$relationships$state$belongs$to$$default(store, record, inverseKey, relationshipMeta);
|
6982
7282
|
}
|
6983
7283
|
};
|
6984
7284
|
|
6985
7285
|
var ember$data$lib$system$relationships$state$create$$default = ember$data$lib$system$relationships$state$create$$createRelationshipFor;
|
6986
|
-
/**
|
6987
|
-
@module ember-data
|
6988
|
-
*/
|
6989
7286
|
|
6990
7287
|
var ember$data$lib$system$snapshot$$get = Ember.get;
|
6991
7288
|
|
@@ -7050,10 +7347,9 @@
|
|
7050
7347
|
Example
|
7051
7348
|
|
7052
7349
|
```javascript
|
7053
|
-
|
7054
|
-
var snapshot = post._createSnapshot();
|
7350
|
+
// store.push('post', { id: 1, author: 'Tomster', title: 'Ember.js rocks' });
|
7055
7351
|
|
7056
|
-
|
7352
|
+
postSnapshot.id; // => '1'
|
7057
7353
|
```
|
7058
7354
|
|
7059
7355
|
@property id
|
@@ -7098,11 +7394,10 @@
|
|
7098
7394
|
Example
|
7099
7395
|
|
7100
7396
|
```javascript
|
7101
|
-
|
7102
|
-
var snapshot = post._createSnapshot();
|
7397
|
+
// store.push('post', { id: 1, author: 'Tomster', title: 'Ember.js rocks' });
|
7103
7398
|
|
7104
|
-
|
7105
|
-
|
7399
|
+
postSnapshot.attr('author'); // => 'Tomster'
|
7400
|
+
postSnapshot.attr('title'); // => 'Ember.js rocks'
|
7106
7401
|
```
|
7107
7402
|
|
7108
7403
|
Note: Values are loaded eagerly and cached when the snapshot is created.
|
@@ -7124,10 +7419,9 @@
|
|
7124
7419
|
Example
|
7125
7420
|
|
7126
7421
|
```javascript
|
7127
|
-
|
7128
|
-
var snapshot = post._createSnapshot();
|
7422
|
+
// store.push('post', { id: 1, author: 'Tomster', title: 'Hello World' });
|
7129
7423
|
|
7130
|
-
|
7424
|
+
postSnapshot.attributes(); // => { author: 'Tomster', title: 'Ember.js rocks' }
|
7131
7425
|
```
|
7132
7426
|
|
7133
7427
|
@method attributes
|
@@ -7149,12 +7443,11 @@
|
|
7149
7443
|
Example
|
7150
7444
|
|
7151
7445
|
```javascript
|
7152
|
-
|
7153
|
-
|
7154
|
-
var snapshot = comment._createSnapshot();
|
7446
|
+
// store.push('post', { id: 1, title: 'Hello World' });
|
7447
|
+
// store.createRecord('comment', { body: 'Lorem ipsum', post: post });
|
7155
7448
|
|
7156
|
-
|
7157
|
-
|
7449
|
+
commentSnapshot.belongsTo('post'); // => DS.Snapshot
|
7450
|
+
commentSnapshot.belongsTo('post', { id: true }); // => '1'
|
7158
7451
|
```
|
7159
7452
|
|
7160
7453
|
Calling `belongsTo` will return a new Snapshot as long as there's any
|
@@ -7214,11 +7507,10 @@
|
|
7214
7507
|
Example
|
7215
7508
|
|
7216
7509
|
```javascript
|
7217
|
-
|
7218
|
-
var snapshot = post._createSnapshot();
|
7510
|
+
// store.push('post', { id: 1, title: 'Hello World', comments: [2, 3] });
|
7219
7511
|
|
7220
|
-
|
7221
|
-
|
7512
|
+
postSnapshot.hasMany('comments'); // => [DS.Snapshot, DS.Snapshot]
|
7513
|
+
postSnapshot.hasMany('comments', { ids: true }); // => ['2', '3']
|
7222
7514
|
```
|
7223
7515
|
|
7224
7516
|
Note: Relationships are loaded lazily and cached upon first access.
|
@@ -7340,6 +7632,15 @@
|
|
7340
7632
|
*/
|
7341
7633
|
unknownProperty: function(keyName) {
|
7342
7634
|
return this.get(keyName);
|
7635
|
+
},
|
7636
|
+
|
7637
|
+
/**
|
7638
|
+
@method _createSnapshot
|
7639
|
+
@private
|
7640
|
+
*/
|
7641
|
+
_createSnapshot: function() {
|
7642
|
+
Ember.deprecate("You called _createSnapshot on what's already a DS.Snapshot. You shouldn't manually create snapshots in your adapter since the store passes snapshots to adapters by default.");
|
7643
|
+
return this;
|
7343
7644
|
}
|
7344
7645
|
};
|
7345
7646
|
|
@@ -7354,6 +7655,12 @@
|
|
7354
7655
|
var ember$data$lib$system$model$model$$Promise = Ember.RSVP.Promise;
|
7355
7656
|
var ember$data$lib$system$model$model$$forEach = Ember.ArrayPolyfills.forEach;
|
7356
7657
|
var ember$data$lib$system$model$model$$map = Ember.ArrayPolyfills.map;
|
7658
|
+
var ember$data$lib$system$model$model$$intersection = Ember.EnumerableUtils.intersection;
|
7659
|
+
var ember$data$lib$system$model$model$$RESERVED_MODEL_PROPS = [
|
7660
|
+
'attributes', 'currentState', 'data',
|
7661
|
+
'relatedTypes', 'relationshipNames', 'relationships',
|
7662
|
+
'relationshipsByName', 'transformedAttributes', 'store'
|
7663
|
+
];
|
7357
7664
|
|
7358
7665
|
var ember$data$lib$system$model$model$$retrieveFromCurrentState = Ember.computed('currentState', function(key, value) {
|
7359
7666
|
return ember$data$lib$system$model$model$$get(ember$data$lib$system$model$model$$get(this, 'currentState'), key);
|
@@ -7413,6 +7720,9 @@
|
|
7413
7720
|
var ember$data$lib$system$model$model$$Model = Ember.Object.extend(Ember.Evented, {
|
7414
7721
|
_recordArrays: undefined,
|
7415
7722
|
_relationships: undefined,
|
7723
|
+
|
7724
|
+
store: null,
|
7725
|
+
|
7416
7726
|
/**
|
7417
7727
|
If this property is `true` the record is in the `empty`
|
7418
7728
|
state. Empty is the first state all records enter after they have
|
@@ -7679,17 +7989,51 @@
|
|
7679
7989
|
/**
|
7680
7990
|
When the record is in the `invalid` state this object will contain
|
7681
7991
|
any errors returned by the adapter. When present the errors hash
|
7682
|
-
|
7683
|
-
and values which are
|
7992
|
+
contains keys corresponding to the invalid property names
|
7993
|
+
and values which are arrays of Javascript objects with two keys:
|
7994
|
+
|
7995
|
+
- `message` A string containing the error message from the backend
|
7996
|
+
- `attribute` The name of the property associated with this error message
|
7684
7997
|
|
7685
7998
|
```javascript
|
7686
7999
|
record.get('errors.length'); // 0
|
7687
8000
|
record.set('foo', 'invalid value');
|
7688
|
-
record.save().
|
7689
|
-
record.get('errors').get('foo');
|
8001
|
+
record.save().catch(function() {
|
8002
|
+
record.get('errors').get('foo');
|
8003
|
+
// [{message: 'foo should be a number.', attribute: 'foo'}]
|
7690
8004
|
});
|
7691
8005
|
```
|
7692
8006
|
|
8007
|
+
The `errors` property us useful for displaying error messages to
|
8008
|
+
the user.
|
8009
|
+
|
8010
|
+
```handlebars
|
8011
|
+
<label>Username: {{input value=username}} </label>
|
8012
|
+
{{#each error in model.errors.username}}
|
8013
|
+
<div class="error">
|
8014
|
+
{{error.message}}
|
8015
|
+
</div>
|
8016
|
+
{{/each}}
|
8017
|
+
<label>Email: {{input value=email}} </label>
|
8018
|
+
{{#each error in model.errors.email}}
|
8019
|
+
<div class="error">
|
8020
|
+
{{error.message}}
|
8021
|
+
</div>
|
8022
|
+
{{/each}}
|
8023
|
+
```
|
8024
|
+
|
8025
|
+
|
8026
|
+
You can also access the special `messages` property on the error
|
8027
|
+
object to get an array of all the error strings.
|
8028
|
+
|
8029
|
+
```handlebars
|
8030
|
+
{{#each message in model.errors.messages}}
|
8031
|
+
<div class="error">
|
8032
|
+
{{message}}
|
8033
|
+
</div>
|
8034
|
+
{{/each}}
|
8035
|
+
```
|
8036
|
+
|
7693
8037
|
@property errors
|
7694
8038
|
@type {DS.Errors}
|
7695
8039
|
*/
|
@@ -7720,8 +8064,7 @@
|
|
7720
8064
|
@return {Object} an object whose values are primitive JSON values only
|
7721
8065
|
*/
|
7722
8066
|
serialize: function(options) {
|
7723
|
-
|
7724
|
-
return store.serialize(this, options);
|
8067
|
+
return this.store.serialize(this, options);
|
7725
8068
|
},
|
7726
8069
|
|
7727
8070
|
/**
|
@@ -7740,7 +8083,7 @@
|
|
7740
8083
|
*/
|
7741
8084
|
toJSON: function(options) {
|
7742
8085
|
// container is for lazy transform lookups
|
7743
|
-
var serializer = ember$data$lib$serializers$
|
8086
|
+
var serializer = ember$data$lib$serializers$json$serializer$$default.create({ container: this.container });
|
7744
8087
|
var snapshot = this._createSnapshot();
|
7745
8088
|
|
7746
8089
|
return serializer.serialize(snapshot, options);
|
@@ -7770,7 +8113,7 @@
|
|
7770
8113
|
didUpdate: Ember.K,
|
7771
8114
|
|
7772
8115
|
/**
|
7773
|
-
Fired when
|
8116
|
+
Fired when a new record is commited to the server.
|
7774
8117
|
|
7775
8118
|
@event didCreate
|
7776
8119
|
*/
|
@@ -8039,6 +8382,11 @@
|
|
8039
8382
|
rel.destroy();
|
8040
8383
|
}
|
8041
8384
|
}, this);
|
8385
|
+
var model = this;
|
8386
|
+
ember$data$lib$system$model$model$$forEach.call(Ember.keys(this._implicitRelationships), function(key) {
|
8387
|
+
model._implicitRelationships[key].clear();
|
8388
|
+
model._implicitRelationships[key].destroy();
|
8389
|
+
});
|
8042
8390
|
},
|
8043
8391
|
|
8044
8392
|
disconnectRelationships: function() {
|
@@ -8068,7 +8416,7 @@
|
|
8068
8416
|
*/
|
8069
8417
|
updateRecordArrays: function() {
|
8070
8418
|
this._updatingRecordArraysLater = false;
|
8071
|
-
|
8419
|
+
this.store.dataWasUpdated(this.constructor, this);
|
8072
8420
|
},
|
8073
8421
|
|
8074
8422
|
/**
|
@@ -8350,11 +8698,11 @@
|
|
8350
8698
|
var promiseLabel = "DS: Model#save " + this;
|
8351
8699
|
var resolver = Ember.RSVP.defer(promiseLabel);
|
8352
8700
|
|
8353
|
-
this.
|
8701
|
+
this.store.scheduleSave(this, resolver);
|
8354
8702
|
this._inFlightAttributes = this._attributes;
|
8355
8703
|
this._attributes = Ember.create(null);
|
8356
8704
|
|
8357
|
-
return ember$data$lib$system$
|
8705
|
+
return ember$data$lib$system$promise$proxies$$PromiseObject.create({
|
8358
8706
|
promise: resolver.promise
|
8359
8707
|
});
|
8360
8708
|
},
|
@@ -8403,7 +8751,7 @@
|
|
8403
8751
|
record.updateRecordArrays();
|
8404
8752
|
});
|
8405
8753
|
|
8406
|
-
return ember$data$lib$system$
|
8754
|
+
return ember$data$lib$system$promise$proxies$$PromiseObject.create({
|
8407
8755
|
promise: promise
|
8408
8756
|
});
|
8409
8757
|
},
|
@@ -8496,7 +8844,20 @@
|
|
8496
8844
|
// This is a temporary solution until we refactor DS.Model to not
|
8497
8845
|
// rely on the data property.
|
8498
8846
|
willMergeMixin: function(props) {
|
8499
|
-
|
8847
|
+
var constructor = this.constructor;
|
8848
|
+
Ember.assert('`' + ember$data$lib$system$model$model$$intersection(Ember.keys(props), ember$data$lib$system$model$model$$RESERVED_MODEL_PROPS)[0] + '` is a reserved property name on DS.Model objects. Please choose a different property name for ' + constructor.toString(), !ember$data$lib$system$model$model$$intersection(Ember.keys(props), ember$data$lib$system$model$model$$RESERVED_MODEL_PROPS)[0]);
|
8849
|
+
},
|
8850
|
+
|
8851
|
+
attr: function() {
|
8852
|
+
Ember.assert("The `attr` method is not available on DS.Model, a DS.Snapshot was probably expected. Are you passing a DS.Model instead of a DS.Snapshot to your serializer?", false);
|
8853
|
+
},
|
8854
|
+
|
8855
|
+
belongsTo: function() {
|
8856
|
+
Ember.assert("The `belongsTo` method is not available on DS.Model, a DS.Snapshot was probably expected. Are you passing a DS.Model instead of a DS.Snapshot to your serializer?", false);
|
8857
|
+
},
|
8858
|
+
|
8859
|
+
hasMany: function() {
|
8860
|
+
Ember.assert("The `hasMany` method is not available on DS.Model, a DS.Snapshot was probably expected. Are you passing a DS.Model instead of a DS.Snapshot to your serializer?", false);
|
8500
8861
|
}
|
8501
8862
|
});
|
8502
8863
|
|
@@ -8803,6 +9164,7 @@
|
|
8803
9164
|
}).meta(meta);
|
8804
9165
|
}
|
8805
9166
|
var ember$data$lib$system$model$attributes$$default = ember$data$lib$system$model$attributes$$attr;
|
9167
|
+
var ember$data$lib$system$model$$default = ember$data$lib$system$model$model$$default;
|
8806
9168
|
//Stanley told me to do this
|
8807
9169
|
var ember$data$lib$system$store$$Backburner = Ember.__loader.require('backburner')['default'] || Ember.__loader.require('backburner')['Backburner'];
|
8808
9170
|
|
@@ -8860,6 +9222,11 @@
|
|
8860
9222
|
|
8861
9223
|
var ember$data$lib$system$store$$camelize = Ember.String.camelize;
|
8862
9224
|
|
9225
|
+
var ember$data$lib$system$store$$Service = Ember.Service;
|
9226
|
+
if (!ember$data$lib$system$store$$Service) {
|
9227
|
+
ember$data$lib$system$store$$Service = Ember.Object;
|
9228
|
+
}
|
9229
|
+
|
8863
9230
|
// Implementors Note:
|
8864
9231
|
//
|
8865
9232
|
// The variables in this file are consistently named according to the following
|
@@ -8950,9 +9317,9 @@
|
|
8950
9317
|
|
8951
9318
|
@class Store
|
8952
9319
|
@namespace DS
|
8953
|
-
@extends Ember.
|
9320
|
+
@extends Ember.Service
|
8954
9321
|
*/
|
8955
|
-
ember$data$lib$system$store$$Store =
|
9322
|
+
ember$data$lib$system$store$$Store = ember$data$lib$system$store$$Service.extend({
|
8956
9323
|
|
8957
9324
|
/**
|
8958
9325
|
@method init
|
@@ -8962,10 +9329,11 @@
|
|
8962
9329
|
this._backburner = new ember$data$lib$system$store$$Backburner(['normalizeRelationships', 'syncRelationships', 'finished']);
|
8963
9330
|
// internal bookkeeping; not observable
|
8964
9331
|
this.typeMaps = {};
|
8965
|
-
this.recordArrayManager = ember$data$lib$system$
|
9332
|
+
this.recordArrayManager = ember$data$lib$system$record$array$manager$$default.create({
|
8966
9333
|
store: this
|
8967
9334
|
});
|
8968
9335
|
this._pendingSave = [];
|
9336
|
+
this._containerCache = Ember.create(null);
|
8969
9337
|
//Used to keep track of all the find requests that need to be coalesced
|
8970
9338
|
this._pendingFetch = ember$data$lib$system$map$$Map.create();
|
8971
9339
|
},
|
@@ -9032,7 +9400,8 @@
|
|
9032
9400
|
|
9033
9401
|
if (DS.Adapter.detect(adapter)) {
|
9034
9402
|
adapter = adapter.create({
|
9035
|
-
container: this.container
|
9403
|
+
container: this.container,
|
9404
|
+
store: this
|
9036
9405
|
});
|
9037
9406
|
}
|
9038
9407
|
|
@@ -9292,7 +9661,7 @@
|
|
9292
9661
|
```javascript
|
9293
9662
|
App.PostRoute = Ember.Route.extend({
|
9294
9663
|
model: function(params) {
|
9295
|
-
return this.store.
|
9664
|
+
return this.store.fetchById('post', params.post_id);
|
9296
9665
|
}
|
9297
9666
|
});
|
9298
9667
|
```
|
@@ -9370,7 +9739,7 @@
|
|
9370
9739
|
fetchedRecord = record._loadingPromise;
|
9371
9740
|
}
|
9372
9741
|
|
9373
|
-
return ember$data$lib$system$
|
9742
|
+
return ember$data$lib$system$promise$proxies$$promiseObject(fetchedRecord || record, "DS: Store#findByRecord " + record.typeKey + " with id: " + ember$data$lib$system$store$$get(record, 'id'));
|
9374
9743
|
},
|
9375
9744
|
|
9376
9745
|
/**
|
@@ -9386,7 +9755,7 @@
|
|
9386
9755
|
findByIds: function(type, ids) {
|
9387
9756
|
var store = this;
|
9388
9757
|
|
9389
|
-
return ember$data$lib$system$
|
9758
|
+
return ember$data$lib$system$promise$proxies$$promiseArray(Ember.RSVP.all(ember$data$lib$system$store$$map(ids, function(id) {
|
9390
9759
|
return store.findById(type, id);
|
9391
9760
|
})).then(Ember.A, null, "DS: Store#findByIds of " + type + " complete"));
|
9392
9761
|
},
|
@@ -9409,7 +9778,7 @@
|
|
9409
9778
|
Ember.assert("You tried to find a record but you have no adapter (for " + type + ")", adapter);
|
9410
9779
|
Ember.assert("You tried to find a record but your adapter (for " + type + ") does not implement 'find'", typeof adapter.find === 'function');
|
9411
9780
|
|
9412
|
-
var promise = ember$data$lib$system$store$$_find(adapter, this, type, id, record);
|
9781
|
+
var promise = ember$data$lib$system$store$finders$$_find(adapter, this, type, id, record);
|
9413
9782
|
return promise;
|
9414
9783
|
},
|
9415
9784
|
|
@@ -9468,11 +9837,18 @@
|
|
9468
9837
|
resolver.resolve(record);
|
9469
9838
|
}
|
9470
9839
|
});
|
9840
|
+
return records;
|
9471
9841
|
}
|
9472
9842
|
|
9473
9843
|
function makeMissingRecordsRejector(requestedRecords) {
|
9474
9844
|
return function rejectMissingRecords(resolvedRecords) {
|
9475
|
-
|
9845
|
+
resolvedRecords = Ember.A(resolvedRecords);
|
9846
|
+
var missingRecords = requestedRecords.reject(function(record) {
|
9847
|
+
return resolvedRecords.contains(record);
|
9848
|
+
});
|
9849
|
+
if (missingRecords.length) {
|
9850
|
+
Ember.warn('Ember Data expected to find records with the following ids in the adapter response but they were missing: ' + Ember.inspect(Ember.A(missingRecords).mapBy('id')), false);
|
9851
|
+
}
|
9476
9852
|
rejectRecords(missingRecords);
|
9477
9853
|
};
|
9478
9854
|
}
|
@@ -9496,12 +9872,26 @@
|
|
9496
9872
|
if (recordResolverPairs.length === 1) {
|
9497
9873
|
_fetchRecord(recordResolverPairs[0]);
|
9498
9874
|
} else if (shouldCoalesce) {
|
9499
|
-
|
9500
|
-
|
9875
|
+
|
9876
|
+
// TODO: Improve records => snapshots => records => snapshots
|
9877
|
+
//
|
9878
|
+
// We want to provide records to all store methods and snapshots to all
|
9879
|
+
// adapter methods. To make sure we're doing that we're providing an array
|
9880
|
+
// of snapshots to adapter.groupRecordsForFindMany(), which in turn will
|
9881
|
+
// return grouped snapshots instead of grouped records.
|
9882
|
+
//
|
9883
|
+
// But since the _findMany() finder is a store method we need to get the
|
9884
|
+
// records from the grouped snapshots even though the _findMany() finder
|
9885
|
+
// will once again convert the records to snapshots for adapter.findMany()
|
9886
|
+
|
9887
|
+
var snapshots = Ember.A(records).invoke('_createSnapshot');
|
9888
|
+
var groups = adapter.groupRecordsForFindMany(this, snapshots);
|
9889
|
+
ember$data$lib$system$store$$forEach(groups, function (groupOfSnapshots) {
|
9890
|
+
var groupOfRecords = Ember.A(groupOfSnapshots).mapBy('record');
|
9501
9891
|
var requestedRecords = Ember.A(groupOfRecords);
|
9502
9892
|
var ids = requestedRecords.mapBy('id');
|
9503
9893
|
if (ids.length > 1) {
|
9504
|
-
ember$data$lib$system$store$$_findMany(adapter, store, type, ids, requestedRecords).
|
9894
|
+
ember$data$lib$system$store$finders$$_findMany(adapter, store, type, ids, requestedRecords).
|
9505
9895
|
then(resolveFoundRecords).
|
9506
9896
|
then(makeMissingRecordsRejector(requestedRecords)).
|
9507
9897
|
then(null, makeRecordsRejector(requestedRecords));
|
@@ -9580,7 +9970,8 @@
|
|
9580
9970
|
hasRecordForId: function(typeName, inputId) {
|
9581
9971
|
var type = this.modelFor(typeName);
|
9582
9972
|
var id = ember$data$lib$system$store$$coerceId(inputId);
|
9583
|
-
|
9973
|
+
var record = this.typeMapFor(type).idToRecord[id];
|
9974
|
+
return !!record && ember$data$lib$system$store$$get(record, 'isLoaded');
|
9584
9975
|
},
|
9585
9976
|
|
9586
9977
|
/**
|
@@ -9647,7 +10038,7 @@
|
|
9647
10038
|
Ember.assert("You tried to load a hasMany relationship but you have no adapter (for " + owner.constructor + ")", adapter);
|
9648
10039
|
Ember.assert("You tried to load a hasMany relationship from a specified `link` in the original payload but your adapter does not implement `findHasMany`", typeof adapter.findHasMany === 'function');
|
9649
10040
|
|
9650
|
-
return ember$data$lib$system$store$$_findHasMany(adapter, this, owner, link, type);
|
10041
|
+
return ember$data$lib$system$store$finders$$_findHasMany(adapter, this, owner, link, type);
|
9651
10042
|
},
|
9652
10043
|
|
9653
10044
|
/**
|
@@ -9664,7 +10055,7 @@
|
|
9664
10055
|
Ember.assert("You tried to load a belongsTo relationship but you have no adapter (for " + owner.constructor + ")", adapter);
|
9665
10056
|
Ember.assert("You tried to load a belongsTo relationship from a specified `link` in the original payload but your adapter does not implement `findBelongsTo`", typeof adapter.findBelongsTo === 'function');
|
9666
10057
|
|
9667
|
-
return ember$data$lib$system$store$$_findBelongsTo(adapter, this, owner, link, relationship);
|
10058
|
+
return ember$data$lib$system$store$finders$$_findBelongsTo(adapter, this, owner, link, relationship);
|
9668
10059
|
},
|
9669
10060
|
|
9670
10061
|
/**
|
@@ -9694,7 +10085,7 @@
|
|
9694
10085
|
Ember.assert("You tried to load a query but you have no adapter (for " + type + ")", adapter);
|
9695
10086
|
Ember.assert("You tried to load a query but your adapter does not implement `findQuery`", typeof adapter.findQuery === 'function');
|
9696
10087
|
|
9697
|
-
return ember$data$lib$system$
|
10088
|
+
return ember$data$lib$system$promise$proxies$$promiseArray(ember$data$lib$system$store$finders$$_findQuery(adapter, this, type, query, array));
|
9698
10089
|
},
|
9699
10090
|
|
9700
10091
|
/**
|
@@ -9727,7 +10118,7 @@
|
|
9727
10118
|
Ember.assert("You tried to load all records but you have no adapter (for " + type + ")", adapter);
|
9728
10119
|
Ember.assert("You tried to load all records but your adapter does not implement `findAll`", typeof adapter.findAll === 'function');
|
9729
10120
|
|
9730
|
-
return ember$data$lib$system$
|
10121
|
+
return ember$data$lib$system$promise$proxies$$promiseArray(ember$data$lib$system$store$finders$$_findAll(adapter, this, type, sinceToken));
|
9731
10122
|
},
|
9732
10123
|
|
9733
10124
|
/**
|
@@ -9879,7 +10270,7 @@
|
|
9879
10270
|
|
9880
10271
|
promise = promise || ember$data$lib$system$store$$Promise.cast(array);
|
9881
10272
|
|
9882
|
-
return ember$data$lib$system$
|
10273
|
+
return ember$data$lib$system$promise$proxies$$promiseArray(promise.then(function() {
|
9883
10274
|
return array;
|
9884
10275
|
}, null, "DS: Store#filter of " + type));
|
9885
10276
|
},
|
@@ -9941,7 +10332,6 @@
|
|
9941
10332
|
If the adapter updates attributes the record will notify
|
9942
10333
|
the store to update its membership in any filters.
|
9943
10334
|
To avoid thrashing, this method is invoked only once per
|
9944
|
-
|
9945
10335
|
run loop per record.
|
9946
10336
|
|
9947
10337
|
@method dataWasUpdated
|
@@ -10129,6 +10519,38 @@
|
|
10129
10519
|
return record;
|
10130
10520
|
},
|
10131
10521
|
|
10522
|
+
/*
|
10523
|
+
In case someone defined a relationship to a mixin, for example:
|
10524
|
+
```
|
10525
|
+
var Comment = DS.Model.extend({
|
10526
|
+
owner: belongsTo('commentable'. { polymorphic: true})
|
10527
|
+
});
|
10528
|
+
var Commentable = Ember.Mixin.create({
|
10529
|
+
comments: hasMany('comment')
|
10530
|
+
});
|
10531
|
+
```
|
10532
|
+
we want to look up a Commentable class which has all the necessary
|
10533
|
+
relationship metadata. Thus, we look up the mixin and create a mock
|
10534
|
+
DS.Model, so we can access the relationship CPs of the mixin (`comments`)
|
10535
|
+
in this case
|
10536
|
+
*/
|
10537
|
+
|
10538
|
+
_modelForMixin: function(key) {
|
10539
|
+
var registry = this.container._registry ? this.container._registry : this.container;
|
10540
|
+
var mixin = registry.resolve('mixin:' + key);
|
10541
|
+
if (mixin) {
|
10542
|
+
//Cache the class as a model
|
10543
|
+
registry.register('model:' + key, DS.Model.extend(mixin));
|
10544
|
+
}
|
10545
|
+
var factory = this.modelFactoryFor(key);
|
10546
|
+
if (factory) {
|
10547
|
+
factory.__isMixin = true;
|
10548
|
+
factory.__mixin = mixin;
|
10549
|
+
}
|
10550
|
+
|
10551
|
+
return factory;
|
10552
|
+
},
|
10553
|
+
|
10132
10554
|
/**
|
10133
10555
|
Returns a model class for a particular key. Used by
|
10134
10556
|
methods that take a type key (like `find`, `createRecord`,
|
@@ -10143,6 +10565,10 @@
|
|
10143
10565
|
|
10144
10566
|
if (typeof key === 'string') {
|
10145
10567
|
factory = this.modelFactoryFor(key);
|
10568
|
+
if (!factory) {
|
10569
|
+
//Support looking up mixins as base types for polymorphic relationships
|
10570
|
+
factory = this._modelForMixin(key);
|
10571
|
+
}
|
10146
10572
|
if (!factory) {
|
10147
10573
|
throw new Ember.Error("No model was found for '" + key + "'");
|
10148
10574
|
}
|
@@ -10335,7 +10761,7 @@
|
|
10335
10761
|
serializer = this.serializerFor(type);
|
10336
10762
|
}
|
10337
10763
|
var store = this;
|
10338
|
-
|
10764
|
+
this._adapterRun(function() {
|
10339
10765
|
serializer.pushPayload(store, payload);
|
10340
10766
|
});
|
10341
10767
|
},
|
@@ -10498,24 +10924,34 @@
|
|
10498
10924
|
// ......................
|
10499
10925
|
|
10500
10926
|
/**
|
10501
|
-
Returns the adapter for a given type.
|
10927
|
+
Returns an instance of the adapter for a given type. For
|
10928
|
+
example, `adapterFor('person')` will return an instance of
|
10929
|
+
`App.PersonAdapter`.
|
10930
|
+
|
10931
|
+
If no `App.PersonAdapter` is found, this method will look
|
10932
|
+
for an `App.ApplicationAdapter` (the default adapter for
|
10933
|
+
your entire application).
|
10934
|
+
|
10935
|
+
If no `App.ApplicationAdapter` is found, it will return
|
10936
|
+
the value of the `defaultAdapter`.
|
10502
10937
|
|
10503
10938
|
@method adapterFor
|
10504
10939
|
@private
|
10505
|
-
@param {subclass of DS.Model} type
|
10940
|
+
@param {String or subclass of DS.Model} type
|
10506
10941
|
@return DS.Adapter
|
10507
10942
|
*/
|
10508
10943
|
adapterFor: function(type) {
|
10509
|
-
|
10510
|
-
var container = this.container;
|
10944
|
+
type = this.modelFor(type);
|
10511
10945
|
|
10512
|
-
|
10513
|
-
adapter = container.lookup('adapter:' + type.typeKey) || container.lookup('adapter:application');
|
10514
|
-
}
|
10946
|
+
var adapter = this.lookupAdapter(type.typeKey) || this.lookupAdapter('application');
|
10515
10947
|
|
10516
10948
|
return adapter || ember$data$lib$system$store$$get(this, 'defaultAdapter');
|
10517
10949
|
},
|
10518
10950
|
|
10951
|
+
_adapterRun: function (fn) {
|
10952
|
+
return this._backburner.run(fn);
|
10953
|
+
},
|
10954
|
+
|
10519
10955
|
// ..............................
|
10520
10956
|
// . RECORD CHANGE NOTIFICATION .
|
10521
10957
|
// ..............................
|
@@ -10529,19 +10965,70 @@
|
|
10529
10965
|
for an `App.ApplicationSerializer` (the default serializer for
|
10530
10966
|
your entire application).
|
10531
10967
|
|
10532
|
-
|
10968
|
+
if no `App.ApplicationSerializer` is found, it will attempt
|
10969
|
+
to get the `defaultSerializer` from the `PersonAdapter`
|
10970
|
+
(`adapterFor('person')`).
|
10971
|
+
|
10972
|
+
If a serializer cannot be found on the adapter, it will fall back
|
10533
10973
|
to an instance of `DS.JSONSerializer`.
|
10534
10974
|
|
10535
10975
|
@method serializerFor
|
10536
10976
|
@private
|
10537
|
-
@param {String} type the record to serialize
|
10977
|
+
@param {String or subclass of DS.Model} type the record to serialize
|
10538
10978
|
@return {DS.Serializer}
|
10539
10979
|
*/
|
10540
10980
|
serializerFor: function(type) {
|
10541
10981
|
type = this.modelFor(type);
|
10542
|
-
var adapter = this.adapterFor(type);
|
10543
10982
|
|
10544
|
-
|
10983
|
+
var serializer = this.lookupSerializer(type.typeKey) || this.lookupSerializer('application');
|
10984
|
+
|
10985
|
+
if (!serializer) {
|
10986
|
+
var adapter = this.adapterFor(type);
|
10987
|
+
serializer = this.lookupSerializer(ember$data$lib$system$store$$get(adapter, 'defaultSerializer'));
|
10988
|
+
}
|
10989
|
+
|
10990
|
+
if (!serializer) {
|
10991
|
+
serializer = this.lookupSerializer('-default');
|
10992
|
+
}
|
10993
|
+
|
10994
|
+
return serializer;
|
10995
|
+
},
|
10996
|
+
|
10997
|
+
/**
|
10998
|
+
Retrieve a particular instance from the
|
10999
|
+
container cache. If not found, creates it and
|
11000
|
+
placing it in the cache.
|
11001
|
+
|
11002
|
+
Enabled a store to manage local instances of
|
11003
|
+
adapters and serializers.
|
11004
|
+
|
11005
|
+
@method retrieveManagedInstance
|
11006
|
+
@private
|
11007
|
+
@param {String} type the object type
|
11008
|
+
@param {String} type the object name
|
11009
|
+
@return {Ember.Object}
|
11010
|
+
*/
|
11011
|
+
retrieveManagedInstance: function(type, name) {
|
11012
|
+
var key = type+":"+name;
|
11013
|
+
|
11014
|
+
if (!this._containerCache[key]) {
|
11015
|
+
var instance = this.container.lookup(key);
|
11016
|
+
|
11017
|
+
if (instance) {
|
11018
|
+
ember$data$lib$system$store$$set(instance, 'store', this);
|
11019
|
+
this._containerCache[key] = instance;
|
11020
|
+
}
|
11021
|
+
}
|
11022
|
+
|
11023
|
+
return this._containerCache[key];
|
11024
|
+
},
|
11025
|
+
|
11026
|
+
lookupAdapter: function(name) {
|
11027
|
+
return this.retrieveManagedInstance('adapter', name);
|
11028
|
+
},
|
11029
|
+
|
11030
|
+
lookupSerializer: function(name) {
|
11031
|
+
return this.retrieveManagedInstance('serializer', name);
|
10545
11032
|
},
|
10546
11033
|
|
10547
11034
|
willDestroy: function() {
|
@@ -10558,6 +11045,12 @@
|
|
10558
11045
|
return typeMaps[entry]['type'];
|
10559
11046
|
}
|
10560
11047
|
|
11048
|
+
for (var cacheKey in this._containerCache) {
|
11049
|
+
this._containerCache[cacheKey].destroy();
|
11050
|
+
delete this._containerCache[cacheKey];
|
11051
|
+
}
|
11052
|
+
|
11053
|
+
delete this._containerCache;
|
10561
11054
|
},
|
10562
11055
|
|
10563
11056
|
/**
|
@@ -10590,7 +11083,7 @@
|
|
10590
11083
|
}
|
10591
11084
|
|
10592
11085
|
function ember$data$lib$system$store$$deserializeRecordId(store, data, key, relationship, id) {
|
10593
|
-
if (ember$data$lib$system$store$$isNone(id) || id instanceof ember$data$lib$system$model
|
11086
|
+
if (ember$data$lib$system$store$$isNone(id) || id instanceof ember$data$lib$system$model$$default) {
|
10594
11087
|
return;
|
10595
11088
|
}
|
10596
11089
|
Ember.assert("A " + relationship.parentType + " record was pushed into the store with the value of " + key + " being " + Ember.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.", !Ember.isArray(id));
|
@@ -10629,217 +11122,29 @@
|
|
10629
11122
|
// Delegation to the adapter and promise management
|
10630
11123
|
|
10631
11124
|
|
10632
|
-
function ember$data$lib$system$store$$serializerFor(container, type, defaultSerializer) {
|
10633
|
-
return container.lookup('serializer:'+type) ||
|
10634
|
-
container.lookup('serializer:application') ||
|
10635
|
-
container.lookup('serializer:' + defaultSerializer) ||
|
10636
|
-
container.lookup('serializer:-default');
|
10637
|
-
}
|
10638
11125
|
|
10639
11126
|
function ember$data$lib$system$store$$defaultSerializer(container) {
|
10640
11127
|
return container.lookup('serializer:application') ||
|
10641
11128
|
container.lookup('serializer:-default');
|
10642
11129
|
}
|
10643
11130
|
|
10644
|
-
function ember$data$lib$system$store$$serializerForAdapter(adapter, type) {
|
10645
|
-
var serializer = adapter.serializer;
|
10646
|
-
var defaultSerializer = adapter.defaultSerializer;
|
10647
|
-
var container = adapter.container;
|
10648
|
-
|
10649
|
-
if (container && serializer === undefined) {
|
10650
|
-
serializer = ember$data$lib$system$store$$serializerFor(container, type.typeKey, defaultSerializer);
|
10651
|
-
}
|
10652
|
-
|
10653
|
-
if (serializer === null || serializer === undefined) {
|
10654
|
-
serializer = {
|
10655
|
-
extract: function(store, type, payload) { return payload; }
|
10656
|
-
};
|
10657
|
-
}
|
10658
|
-
|
10659
|
-
return serializer;
|
10660
|
-
}
|
10661
|
-
|
10662
|
-
function ember$data$lib$system$store$$_objectIsAlive(object) {
|
10663
|
-
return !(ember$data$lib$system$store$$get(object, "isDestroyed") || ember$data$lib$system$store$$get(object, "isDestroying"));
|
10664
|
-
}
|
10665
|
-
|
10666
|
-
function ember$data$lib$system$store$$_guard(promise, test) {
|
10667
|
-
var guarded = promise['finally'](function() {
|
10668
|
-
if (!test()) {
|
10669
|
-
guarded._subscribers.length = 0;
|
10670
|
-
}
|
10671
|
-
});
|
10672
|
-
|
10673
|
-
return guarded;
|
10674
|
-
}
|
10675
|
-
|
10676
|
-
function ember$data$lib$system$store$$_adapterRun(store, fn) {
|
10677
|
-
return store._backburner.run(fn);
|
10678
|
-
}
|
10679
|
-
|
10680
|
-
function ember$data$lib$system$store$$_bind(fn) {
|
10681
|
-
var args = Array.prototype.slice.call(arguments, 1);
|
10682
|
-
|
10683
|
-
return function() {
|
10684
|
-
return fn.apply(undefined, args);
|
10685
|
-
};
|
10686
|
-
}
|
10687
|
-
|
10688
|
-
function ember$data$lib$system$store$$_find(adapter, store, type, id, record) {
|
10689
|
-
var promise = adapter.find(store, type, id, record);
|
10690
|
-
var serializer = ember$data$lib$system$store$$serializerForAdapter(adapter, type);
|
10691
|
-
var label = "DS: Handle Adapter#find of " + type + " with id: " + id;
|
10692
|
-
|
10693
|
-
promise = ember$data$lib$system$store$$Promise.cast(promise, label);
|
10694
|
-
promise = ember$data$lib$system$store$$_guard(promise, ember$data$lib$system$store$$_bind(ember$data$lib$system$store$$_objectIsAlive, store));
|
10695
|
-
|
10696
|
-
return promise.then(function(adapterPayload) {
|
10697
|
-
Ember.assert("You made a request for a " + type.typeKey + " with id " + id + ", but the adapter's response did not have any data", adapterPayload);
|
10698
|
-
return ember$data$lib$system$store$$_adapterRun(store, function() {
|
10699
|
-
var payload = serializer.extract(store, type, adapterPayload, id, 'find');
|
10700
|
-
|
10701
|
-
return store.push(type, payload);
|
10702
|
-
});
|
10703
|
-
}, function(error) {
|
10704
|
-
var record = store.getById(type, id);
|
10705
|
-
if (record) {
|
10706
|
-
record.notFound();
|
10707
|
-
if (ember$data$lib$system$store$$get(record, 'isEmpty')) {
|
10708
|
-
store.unloadRecord(record);
|
10709
|
-
}
|
10710
|
-
}
|
10711
|
-
throw error;
|
10712
|
-
}, "DS: Extract payload of '" + type + "'");
|
10713
|
-
}
|
10714
|
-
|
10715
|
-
|
10716
|
-
function ember$data$lib$system$store$$_findMany(adapter, store, type, ids, records) {
|
10717
|
-
var promise = adapter.findMany(store, type, ids, records);
|
10718
|
-
var serializer = ember$data$lib$system$store$$serializerForAdapter(adapter, type);
|
10719
|
-
var label = "DS: Handle Adapter#findMany of " + type;
|
10720
|
-
|
10721
|
-
if (promise === undefined) {
|
10722
|
-
throw new Error('adapter.findMany returned undefined, this was very likely a mistake');
|
10723
|
-
}
|
10724
|
-
|
10725
|
-
promise = ember$data$lib$system$store$$Promise.cast(promise, label);
|
10726
|
-
promise = ember$data$lib$system$store$$_guard(promise, ember$data$lib$system$store$$_bind(ember$data$lib$system$store$$_objectIsAlive, store));
|
10727
|
-
|
10728
|
-
return promise.then(function(adapterPayload) {
|
10729
|
-
return ember$data$lib$system$store$$_adapterRun(store, function() {
|
10730
|
-
var payload = serializer.extract(store, type, adapterPayload, null, 'findMany');
|
10731
|
-
|
10732
|
-
Ember.assert("The response from a findMany must be an Array, not " + Ember.inspect(payload), Ember.typeOf(payload) === 'array');
|
10733
|
-
|
10734
|
-
return store.pushMany(type, payload);
|
10735
|
-
});
|
10736
|
-
}, null, "DS: Extract payload of " + type);
|
10737
|
-
}
|
10738
|
-
|
10739
|
-
function ember$data$lib$system$store$$_findHasMany(adapter, store, record, link, relationship) {
|
10740
|
-
var promise = adapter.findHasMany(store, record, link, relationship);
|
10741
|
-
var serializer = ember$data$lib$system$store$$serializerForAdapter(adapter, relationship.type);
|
10742
|
-
var label = "DS: Handle Adapter#findHasMany of " + record + " : " + relationship.type;
|
10743
|
-
|
10744
|
-
promise = ember$data$lib$system$store$$Promise.cast(promise, label);
|
10745
|
-
promise = ember$data$lib$system$store$$_guard(promise, ember$data$lib$system$store$$_bind(ember$data$lib$system$store$$_objectIsAlive, store));
|
10746
|
-
promise = ember$data$lib$system$store$$_guard(promise, ember$data$lib$system$store$$_bind(ember$data$lib$system$store$$_objectIsAlive, record));
|
10747
|
-
|
10748
|
-
return promise.then(function(adapterPayload) {
|
10749
|
-
return ember$data$lib$system$store$$_adapterRun(store, function() {
|
10750
|
-
var payload = serializer.extract(store, relationship.type, adapterPayload, null, 'findHasMany');
|
10751
|
-
|
10752
|
-
Ember.assert("The response from a findHasMany must be an Array, not " + Ember.inspect(payload), Ember.typeOf(payload) === 'array');
|
10753
|
-
|
10754
|
-
var records = store.pushMany(relationship.type, payload);
|
10755
|
-
return records;
|
10756
|
-
});
|
10757
|
-
}, null, "DS: Extract payload of " + record + " : hasMany " + relationship.type);
|
10758
|
-
}
|
10759
|
-
|
10760
|
-
function ember$data$lib$system$store$$_findBelongsTo(adapter, store, record, link, relationship) {
|
10761
|
-
var promise = adapter.findBelongsTo(store, record, link, relationship);
|
10762
|
-
var serializer = ember$data$lib$system$store$$serializerForAdapter(adapter, relationship.type);
|
10763
|
-
var label = "DS: Handle Adapter#findBelongsTo of " + record + " : " + relationship.type;
|
10764
|
-
|
10765
|
-
promise = ember$data$lib$system$store$$Promise.cast(promise, label);
|
10766
|
-
promise = ember$data$lib$system$store$$_guard(promise, ember$data$lib$system$store$$_bind(ember$data$lib$system$store$$_objectIsAlive, store));
|
10767
|
-
promise = ember$data$lib$system$store$$_guard(promise, ember$data$lib$system$store$$_bind(ember$data$lib$system$store$$_objectIsAlive, record));
|
10768
|
-
|
10769
|
-
return promise.then(function(adapterPayload) {
|
10770
|
-
return ember$data$lib$system$store$$_adapterRun(store, function() {
|
10771
|
-
var payload = serializer.extract(store, relationship.type, adapterPayload, null, 'findBelongsTo');
|
10772
|
-
|
10773
|
-
if (!payload) {
|
10774
|
-
return null;
|
10775
|
-
}
|
10776
|
-
|
10777
|
-
var record = store.push(relationship.type, payload);
|
10778
|
-
return record;
|
10779
|
-
});
|
10780
|
-
}, null, "DS: Extract payload of " + record + " : " + relationship.type);
|
10781
|
-
}
|
10782
|
-
|
10783
|
-
function ember$data$lib$system$store$$_findAll(adapter, store, type, sinceToken) {
|
10784
|
-
var promise = adapter.findAll(store, type, sinceToken);
|
10785
|
-
var serializer = ember$data$lib$system$store$$serializerForAdapter(adapter, type);
|
10786
|
-
var label = "DS: Handle Adapter#findAll of " + type;
|
10787
|
-
|
10788
|
-
promise = ember$data$lib$system$store$$Promise.cast(promise, label);
|
10789
|
-
promise = ember$data$lib$system$store$$_guard(promise, ember$data$lib$system$store$$_bind(ember$data$lib$system$store$$_objectIsAlive, store));
|
10790
|
-
|
10791
|
-
return promise.then(function(adapterPayload) {
|
10792
|
-
ember$data$lib$system$store$$_adapterRun(store, function() {
|
10793
|
-
var payload = serializer.extract(store, type, adapterPayload, null, 'findAll');
|
10794
|
-
|
10795
|
-
Ember.assert("The response from a findAll must be an Array, not " + Ember.inspect(payload), Ember.typeOf(payload) === 'array');
|
10796
|
-
|
10797
|
-
store.pushMany(type, payload);
|
10798
|
-
});
|
10799
|
-
|
10800
|
-
store.didUpdateAll(type);
|
10801
|
-
return store.all(type);
|
10802
|
-
}, null, "DS: Extract payload of findAll " + type);
|
10803
|
-
}
|
10804
|
-
|
10805
|
-
function ember$data$lib$system$store$$_findQuery(adapter, store, type, query, recordArray) {
|
10806
|
-
var promise = adapter.findQuery(store, type, query, recordArray);
|
10807
|
-
var serializer = ember$data$lib$system$store$$serializerForAdapter(adapter, type);
|
10808
|
-
var label = "DS: Handle Adapter#findQuery of " + type;
|
10809
|
-
|
10810
|
-
promise = ember$data$lib$system$store$$Promise.cast(promise, label);
|
10811
|
-
promise = ember$data$lib$system$store$$_guard(promise, ember$data$lib$system$store$$_bind(ember$data$lib$system$store$$_objectIsAlive, store));
|
10812
|
-
|
10813
|
-
return promise.then(function(adapterPayload) {
|
10814
|
-
var payload;
|
10815
|
-
ember$data$lib$system$store$$_adapterRun(store, function() {
|
10816
|
-
payload = serializer.extract(store, type, adapterPayload, null, 'findQuery');
|
10817
|
-
|
10818
|
-
Ember.assert("The response from a findQuery must be an Array, not " + Ember.inspect(payload), Ember.typeOf(payload) === 'array');
|
10819
|
-
});
|
10820
|
-
|
10821
|
-
recordArray.load(payload);
|
10822
|
-
return recordArray;
|
10823
|
-
|
10824
|
-
}, null, "DS: Extract payload of findQuery " + type);
|
10825
|
-
}
|
10826
|
-
|
10827
11131
|
function ember$data$lib$system$store$$_commit(adapter, store, operation, record) {
|
10828
11132
|
var type = record.constructor;
|
10829
|
-
var
|
10830
|
-
var
|
11133
|
+
var snapshot = record._createSnapshot();
|
11134
|
+
var promise = adapter[operation](store, type, snapshot);
|
11135
|
+
var serializer = ember$data$lib$system$store$serializers$$serializerForAdapter(store, adapter, type);
|
10831
11136
|
var label = "DS: Extract and notify about " + operation + " completion of " + record;
|
10832
11137
|
|
10833
11138
|
Ember.assert("Your adapter's '" + operation + "' method must return a value, but it returned `undefined", promise !==undefined);
|
10834
11139
|
|
10835
11140
|
promise = ember$data$lib$system$store$$Promise.cast(promise, label);
|
10836
|
-
promise = ember$data$lib$system$store$$_guard(promise, ember$data$lib$system$store$$_bind(ember$data$lib$system$store$$_objectIsAlive, store));
|
10837
|
-
promise = ember$data$lib$system$store$$_guard(promise, ember$data$lib$system$store$$_bind(ember$data$lib$system$store$$_objectIsAlive, record));
|
11141
|
+
promise = ember$data$lib$system$store$common$$_guard(promise, ember$data$lib$system$store$common$$_bind(ember$data$lib$system$store$common$$_objectIsAlive, store));
|
11142
|
+
promise = ember$data$lib$system$store$common$$_guard(promise, ember$data$lib$system$store$common$$_bind(ember$data$lib$system$store$common$$_objectIsAlive, record));
|
10838
11143
|
|
10839
11144
|
return promise.then(function(adapterPayload) {
|
10840
11145
|
var payload;
|
10841
11146
|
|
10842
|
-
|
11147
|
+
store._adapterRun(function() {
|
10843
11148
|
if (adapterPayload) {
|
10844
11149
|
payload = serializer.extract(store, type, adapterPayload, ember$data$lib$system$store$$get(record, 'id'), operation);
|
10845
11150
|
} else {
|
@@ -10886,15 +11191,18 @@
|
|
10886
11191
|
}
|
10887
11192
|
|
10888
11193
|
var ember$data$lib$system$store$$default = ember$data$lib$system$store$$Store;
|
10889
|
-
function ember$data$lib$initializers$store$$initializeStore(
|
11194
|
+
function ember$data$lib$initializers$store$$initializeStore(registry, application) {
|
10890
11195
|
Ember.deprecate('Specifying a custom Store for Ember Data on your global namespace as `App.Store` ' +
|
10891
11196
|
'has been deprecated. Please use `App.ApplicationStore` instead.', !(application && application.Store));
|
10892
11197
|
|
10893
|
-
|
11198
|
+
registry.optionsForType('serializer', { singleton: false });
|
11199
|
+
registry.optionsForType('adapter', { singleton: false });
|
11200
|
+
|
11201
|
+
registry.register('store:main', registry.lookupFactory('store:application') || (application && application.Store) || ember$data$lib$system$store$$default);
|
10894
11202
|
|
10895
11203
|
// allow older names to be looked up
|
10896
11204
|
|
10897
|
-
var proxy = new ember$data$lib$system$
|
11205
|
+
var proxy = new ember$data$lib$system$container$proxy$$default(registry);
|
10898
11206
|
proxy.registerDeprecations([
|
10899
11207
|
{ deprecated: 'serializer:_default', valid: 'serializer:-default' },
|
10900
11208
|
{ deprecated: 'serializer:_rest', valid: 'serializer:-rest' },
|
@@ -10902,13 +11210,14 @@
|
|
10902
11210
|
]);
|
10903
11211
|
|
10904
11212
|
// new go forward paths
|
10905
|
-
|
10906
|
-
|
10907
|
-
|
11213
|
+
registry.register('serializer:-default', ember$data$lib$serializers$json$serializer$$default);
|
11214
|
+
registry.register('serializer:-rest', ember$data$lib$serializers$rest$serializer$$default);
|
11215
|
+
registry.register('adapter:-rest', ember$data$lib$adapters$rest$adapter$$default);
|
10908
11216
|
|
10909
11217
|
// Eagerly generate the store so defaultStore is populated.
|
10910
11218
|
// TODO: Do this in a finisher hook
|
10911
|
-
|
11219
|
+
var store = registry.lookup('store:main');
|
11220
|
+
registry.register('service:store', store, { instantiate: false });
|
10912
11221
|
}
|
10913
11222
|
var ember$data$lib$initializers$store$$default = ember$data$lib$initializers$store$$initializeStore;
|
10914
11223
|
|
@@ -10929,7 +11238,7 @@
|
|
10929
11238
|
@param {mixed} deserialized The deserialized value
|
10930
11239
|
@return {mixed} The serialized value
|
10931
11240
|
*/
|
10932
|
-
serialize:
|
11241
|
+
serialize: null,
|
10933
11242
|
|
10934
11243
|
/**
|
10935
11244
|
When given a serialize value from a JSON object this method must
|
@@ -10947,7 +11256,7 @@
|
|
10947
11256
|
@param {mixed} serialized The serialized value
|
10948
11257
|
@return {mixed} The deserialized value
|
10949
11258
|
*/
|
10950
|
-
deserialize:
|
11259
|
+
deserialize: null
|
10951
11260
|
});
|
10952
11261
|
|
10953
11262
|
var ember$data$lib$transforms$number$$empty = Ember.isEmpty;
|
@@ -11065,25 +11374,24 @@
|
|
11065
11374
|
}
|
11066
11375
|
});
|
11067
11376
|
|
11068
|
-
function ember$data$lib$initializers$transforms$$initializeTransforms(
|
11069
|
-
|
11070
|
-
|
11071
|
-
|
11072
|
-
|
11377
|
+
function ember$data$lib$initializers$transforms$$initializeTransforms(registry) {
|
11378
|
+
registry.register('transform:boolean', ember$data$lib$transforms$boolean$$default);
|
11379
|
+
registry.register('transform:date', ember$data$lib$transforms$date$$default);
|
11380
|
+
registry.register('transform:number', ember$data$lib$transforms$number$$default);
|
11381
|
+
registry.register('transform:string', ember$data$lib$transforms$string$$default);
|
11073
11382
|
}
|
11074
11383
|
var ember$data$lib$initializers$transforms$$default = ember$data$lib$initializers$transforms$$initializeTransforms;
|
11075
|
-
function ember$data$lib$initializers$
|
11076
|
-
|
11077
|
-
|
11078
|
-
|
11079
|
-
container.injection('data-adapter', 'store', 'store:main');
|
11384
|
+
function ember$data$lib$initializers$store$injections$$initializeStoreInjections(registry) {
|
11385
|
+
registry.injection('controller', 'store', 'store:main');
|
11386
|
+
registry.injection('route', 'store', 'store:main');
|
11387
|
+
registry.injection('data-adapter', 'store', 'store:main');
|
11080
11388
|
}
|
11081
|
-
var ember$data$lib$initializers$
|
11082
|
-
var ember$data$lib$system$debug$
|
11083
|
-
var ember$data$lib$system$debug$
|
11084
|
-
var ember$data$lib$system$debug$
|
11389
|
+
var ember$data$lib$initializers$store$injections$$default = ember$data$lib$initializers$store$injections$$initializeStoreInjections;
|
11390
|
+
var ember$data$lib$system$debug$debug$adapter$$get = Ember.get;
|
11391
|
+
var ember$data$lib$system$debug$debug$adapter$$capitalize = Ember.String.capitalize;
|
11392
|
+
var ember$data$lib$system$debug$debug$adapter$$underscore = Ember.String.underscore;
|
11085
11393
|
|
11086
|
-
var ember$data$lib$system$debug$
|
11394
|
+
var ember$data$lib$system$debug$debug$adapter$$default = Ember.DataAdapter.extend({
|
11087
11395
|
getFilters: function() {
|
11088
11396
|
return [
|
11089
11397
|
{ name: 'isNew', desc: 'New' },
|
@@ -11093,7 +11401,7 @@
|
|
11093
11401
|
},
|
11094
11402
|
|
11095
11403
|
detect: function(klass) {
|
11096
|
-
return klass !== ember$data$lib$system$model
|
11404
|
+
return klass !== ember$data$lib$system$model$$default && ember$data$lib$system$model$$default.detect(klass);
|
11097
11405
|
},
|
11098
11406
|
|
11099
11407
|
columnsForType: function(type) {
|
@@ -11103,9 +11411,9 @@
|
|
11103
11411
|
}];
|
11104
11412
|
var count = 0;
|
11105
11413
|
var self = this;
|
11106
|
-
ember$data$lib$system$debug$
|
11414
|
+
ember$data$lib$system$debug$debug$adapter$$get(type, 'attributes').forEach(function(meta, name) {
|
11107
11415
|
if (count++ > self.attributeLimit) { return false; }
|
11108
|
-
var desc = ember$data$lib$system$debug$
|
11416
|
+
var desc = ember$data$lib$system$debug$debug$adapter$$capitalize(ember$data$lib$system$debug$debug$adapter$$underscore(name).replace('_', ' '));
|
11109
11417
|
columns.push({ name: name, desc: desc });
|
11110
11418
|
});
|
11111
11419
|
return columns;
|
@@ -11118,13 +11426,13 @@
|
|
11118
11426
|
getRecordColumnValues: function(record) {
|
11119
11427
|
var self = this;
|
11120
11428
|
var count = 0;
|
11121
|
-
var columnValues = { id: ember$data$lib$system$debug$
|
11429
|
+
var columnValues = { id: ember$data$lib$system$debug$debug$adapter$$get(record, 'id') };
|
11122
11430
|
|
11123
11431
|
record.eachAttribute(function(key) {
|
11124
11432
|
if (count++ > self.attributeLimit) {
|
11125
11433
|
return false;
|
11126
11434
|
}
|
11127
|
-
var value = ember$data$lib$system$debug$
|
11435
|
+
var value = ember$data$lib$system$debug$debug$adapter$$get(record, key);
|
11128
11436
|
columnValues[key] = value;
|
11129
11437
|
});
|
11130
11438
|
return columnValues;
|
@@ -11137,7 +11445,7 @@
|
|
11137
11445
|
keys.push(key);
|
11138
11446
|
});
|
11139
11447
|
keys.forEach(function(key) {
|
11140
|
-
keywords.push(ember$data$lib$system$debug$
|
11448
|
+
keywords.push(ember$data$lib$system$debug$debug$adapter$$get(record, key));
|
11141
11449
|
});
|
11142
11450
|
return keywords;
|
11143
11451
|
},
|
@@ -11188,18 +11496,18 @@
|
|
11188
11496
|
|
11189
11497
|
});
|
11190
11498
|
|
11191
|
-
function ember$data$lib$initializers$
|
11192
|
-
|
11499
|
+
function ember$data$lib$initializers$data$adapter$$initializeDebugAdapter(registry) {
|
11500
|
+
registry.register('data-adapter:main', ember$data$lib$system$debug$debug$adapter$$default);
|
11193
11501
|
}
|
11194
|
-
var ember$data$lib$initializers$
|
11502
|
+
var ember$data$lib$initializers$data$adapter$$default = ember$data$lib$initializers$data$adapter$$initializeDebugAdapter;
|
11195
11503
|
function ember$data$lib$setup$container$$setupContainer(container, application) {
|
11196
11504
|
// application is not a required argument. This ensures
|
11197
11505
|
// testing setups can setup a container without booting an
|
11198
11506
|
// entire ember application.
|
11199
11507
|
|
11200
|
-
ember$data$lib$initializers$
|
11508
|
+
ember$data$lib$initializers$data$adapter$$default(container, application);
|
11201
11509
|
ember$data$lib$initializers$transforms$$default(container, application);
|
11202
|
-
ember$data$lib$initializers$
|
11510
|
+
ember$data$lib$initializers$store$injections$$default(container, application);
|
11203
11511
|
ember$data$lib$initializers$store$$default(container, application);
|
11204
11512
|
activemodel$adapter$lib$setup$container$$default(container, application);
|
11205
11513
|
}
|
@@ -11282,21 +11590,6 @@
|
|
11282
11590
|
initialize: ember$data$lib$ember$initializer$$K
|
11283
11591
|
});
|
11284
11592
|
});
|
11285
|
-
/**
|
11286
|
-
@module ember-data
|
11287
|
-
*/
|
11288
|
-
|
11289
|
-
/**
|
11290
|
-
Date.parse with progressive enhancement for ISO 8601 <https://github.com/csnover/js-iso8601>
|
11291
|
-
|
11292
|
-
© 2011 Colin Snover <http://zetafleet.com>
|
11293
|
-
|
11294
|
-
Released under MIT license.
|
11295
|
-
|
11296
|
-
@class Date
|
11297
|
-
@namespace Ember
|
11298
|
-
@static
|
11299
|
-
*/
|
11300
11593
|
Ember.Date = Ember.Date || {};
|
11301
11594
|
|
11302
11595
|
var origParse = Date.parse;
|
@@ -11345,7 +11638,7 @@
|
|
11345
11638
|
Date.parse = Ember.Date.parse;
|
11346
11639
|
}
|
11347
11640
|
|
11348
|
-
ember$data$lib$system$model
|
11641
|
+
ember$data$lib$system$model$$default.reopen({
|
11349
11642
|
|
11350
11643
|
/**
|
11351
11644
|
Provides info about the model for debugging purposes
|
@@ -11411,11 +11704,11 @@
|
|
11411
11704
|
}
|
11412
11705
|
});
|
11413
11706
|
|
11414
|
-
var ember$data$lib$system$debug$
|
11415
|
-
var ember$data$lib$system$debug$$default = ember$data$lib$system$debug$
|
11416
|
-
var ember$data$lib$serializers$
|
11417
|
-
var ember$data$lib$serializers$
|
11418
|
-
var ember$data$lib$serializers$
|
11707
|
+
var ember$data$lib$system$debug$debug$info$$default = ember$data$lib$system$model$$default;
|
11708
|
+
var ember$data$lib$system$debug$$default = ember$data$lib$system$debug$debug$adapter$$default;
|
11709
|
+
var ember$data$lib$serializers$embedded$records$mixin$$get = Ember.get;
|
11710
|
+
var ember$data$lib$serializers$embedded$records$mixin$$forEach = Ember.EnumerableUtils.forEach;
|
11711
|
+
var ember$data$lib$serializers$embedded$records$mixin$$camelize = Ember.String.camelize;
|
11419
11712
|
|
11420
11713
|
/**
|
11421
11714
|
## Using Embedded Records
|
@@ -11504,7 +11797,7 @@
|
|
11504
11797
|
@class EmbeddedRecordsMixin
|
11505
11798
|
@namespace DS
|
11506
11799
|
*/
|
11507
|
-
var ember$data$lib$serializers$
|
11800
|
+
var ember$data$lib$serializers$embedded$records$mixin$$EmbeddedRecordsMixin = Ember.Mixin.create({
|
11508
11801
|
|
11509
11802
|
/**
|
11510
11803
|
Normalize the record and recursively normalize/extract all the embedded records
|
@@ -11535,7 +11828,7 @@
|
|
11535
11828
|
**/
|
11536
11829
|
normalize: function(type, hash, prop) {
|
11537
11830
|
var normalizedHash = this._super(type, hash, prop);
|
11538
|
-
return ember$data$lib$serializers$
|
11831
|
+
return ember$data$lib$serializers$embedded$records$mixin$$extractEmbeddedRecords(this, this.store, type, normalizedHash);
|
11539
11832
|
},
|
11540
11833
|
|
11541
11834
|
keyForRelationship: function(key, type) {
|
@@ -11794,29 +12087,29 @@
|
|
11794
12087
|
|
11795
12088
|
attrsOption: function(attr) {
|
11796
12089
|
var attrs = this.get('attrs');
|
11797
|
-
return attrs && (attrs[ember$data$lib$serializers$
|
12090
|
+
return attrs && (attrs[ember$data$lib$serializers$embedded$records$mixin$$camelize(attr)] || attrs[attr]);
|
11798
12091
|
}
|
11799
12092
|
});
|
11800
12093
|
|
11801
12094
|
// chooses a relationship kind to branch which function is used to update payload
|
11802
12095
|
// does not change payload if attr is not embedded
|
11803
|
-
function ember$data$lib$serializers$
|
12096
|
+
function ember$data$lib$serializers$embedded$records$mixin$$extractEmbeddedRecords(serializer, store, type, partial) {
|
11804
12097
|
|
11805
12098
|
type.eachRelationship(function(key, relationship) {
|
11806
12099
|
if (serializer.hasDeserializeRecordsOption(key)) {
|
11807
12100
|
var embeddedType = store.modelFor(relationship.type.typeKey);
|
11808
12101
|
if (relationship.kind === "hasMany") {
|
11809
12102
|
if (relationship.options.polymorphic) {
|
11810
|
-
ember$data$lib$serializers$
|
12103
|
+
ember$data$lib$serializers$embedded$records$mixin$$extractEmbeddedHasManyPolymorphic(store, key, partial);
|
11811
12104
|
} else {
|
11812
|
-
ember$data$lib$serializers$
|
12105
|
+
ember$data$lib$serializers$embedded$records$mixin$$extractEmbeddedHasMany(store, key, embeddedType, partial);
|
11813
12106
|
}
|
11814
12107
|
}
|
11815
12108
|
if (relationship.kind === "belongsTo") {
|
11816
12109
|
if (relationship.options.polymorphic) {
|
11817
|
-
ember$data$lib$serializers$
|
12110
|
+
ember$data$lib$serializers$embedded$records$mixin$$extractEmbeddedBelongsToPolymorphic(store, key, partial);
|
11818
12111
|
} else {
|
11819
|
-
ember$data$lib$serializers$
|
12112
|
+
ember$data$lib$serializers$embedded$records$mixin$$extractEmbeddedBelongsTo(store, key, embeddedType, partial);
|
11820
12113
|
}
|
11821
12114
|
}
|
11822
12115
|
}
|
@@ -11826,7 +12119,7 @@
|
|
11826
12119
|
}
|
11827
12120
|
|
11828
12121
|
// handles embedding for `hasMany` relationship
|
11829
|
-
function ember$data$lib$serializers$
|
12122
|
+
function ember$data$lib$serializers$embedded$records$mixin$$extractEmbeddedHasMany(store, key, embeddedType, hash) {
|
11830
12123
|
if (!hash[key]) {
|
11831
12124
|
return hash;
|
11832
12125
|
}
|
@@ -11834,7 +12127,7 @@
|
|
11834
12127
|
var ids = [];
|
11835
12128
|
|
11836
12129
|
var embeddedSerializer = store.serializerFor(embeddedType.typeKey);
|
11837
|
-
ember$data$lib$serializers$
|
12130
|
+
ember$data$lib$serializers$embedded$records$mixin$$forEach(hash[key], function(data) {
|
11838
12131
|
var embeddedRecord = embeddedSerializer.normalize(embeddedType, data, null);
|
11839
12132
|
store.push(embeddedType, embeddedRecord);
|
11840
12133
|
ids.push(embeddedRecord.id);
|
@@ -11844,18 +12137,18 @@
|
|
11844
12137
|
return hash;
|
11845
12138
|
}
|
11846
12139
|
|
11847
|
-
function ember$data$lib$serializers$
|
12140
|
+
function ember$data$lib$serializers$embedded$records$mixin$$extractEmbeddedHasManyPolymorphic(store, key, hash) {
|
11848
12141
|
if (!hash[key]) {
|
11849
12142
|
return hash;
|
11850
12143
|
}
|
11851
12144
|
|
11852
12145
|
var ids = [];
|
11853
12146
|
|
11854
|
-
ember$data$lib$serializers$
|
12147
|
+
ember$data$lib$serializers$embedded$records$mixin$$forEach(hash[key], function(data) {
|
11855
12148
|
var typeKey = data.type;
|
11856
12149
|
var embeddedSerializer = store.serializerFor(typeKey);
|
11857
12150
|
var embeddedType = store.modelFor(typeKey);
|
11858
|
-
var primaryKey = ember$data$lib$serializers$
|
12151
|
+
var primaryKey = ember$data$lib$serializers$embedded$records$mixin$$get(embeddedSerializer, 'primaryKey');
|
11859
12152
|
|
11860
12153
|
var embeddedRecord = embeddedSerializer.normalize(embeddedType, data, null);
|
11861
12154
|
store.push(embeddedType, embeddedRecord);
|
@@ -11866,7 +12159,7 @@
|
|
11866
12159
|
return hash;
|
11867
12160
|
}
|
11868
12161
|
|
11869
|
-
function ember$data$lib$serializers$
|
12162
|
+
function ember$data$lib$serializers$embedded$records$mixin$$extractEmbeddedBelongsTo(store, key, embeddedType, hash) {
|
11870
12163
|
if (!hash[key]) {
|
11871
12164
|
return hash;
|
11872
12165
|
}
|
@@ -11880,7 +12173,7 @@
|
|
11880
12173
|
return hash;
|
11881
12174
|
}
|
11882
12175
|
|
11883
|
-
function ember$data$lib$serializers$
|
12176
|
+
function ember$data$lib$serializers$embedded$records$mixin$$extractEmbeddedBelongsToPolymorphic(store, key, hash) {
|
11884
12177
|
if (!hash[key]) {
|
11885
12178
|
return hash;
|
11886
12179
|
}
|
@@ -11889,7 +12182,7 @@
|
|
11889
12182
|
var typeKey = data.type;
|
11890
12183
|
var embeddedSerializer = store.serializerFor(typeKey);
|
11891
12184
|
var embeddedType = store.modelFor(typeKey);
|
11892
|
-
var primaryKey = ember$data$lib$serializers$
|
12185
|
+
var primaryKey = ember$data$lib$serializers$embedded$records$mixin$$get(embeddedSerializer, 'primaryKey');
|
11893
12186
|
|
11894
12187
|
var embeddedRecord = embeddedSerializer.normalize(embeddedType, data, null);
|
11895
12188
|
store.push(embeddedType, embeddedRecord);
|
@@ -11899,7 +12192,7 @@
|
|
11899
12192
|
return hash;
|
11900
12193
|
}
|
11901
12194
|
|
11902
|
-
var ember$data$lib$serializers$
|
12195
|
+
var ember$data$lib$serializers$embedded$records$mixin$$default = ember$data$lib$serializers$embedded$records$mixin$$EmbeddedRecordsMixin;
|
11903
12196
|
|
11904
12197
|
/**
|
11905
12198
|
`DS.belongsTo` is used to define One-To-One and One-To-Many
|
@@ -11959,7 +12252,7 @@
|
|
11959
12252
|
@param {Object} options (optional) a hash of options
|
11960
12253
|
@return {Ember.computed} relationship
|
11961
12254
|
*/
|
11962
|
-
function ember$data$lib$system$relationships$
|
12255
|
+
function ember$data$lib$system$relationships$belongs$to$$belongsTo(type, options) {
|
11963
12256
|
if (typeof type === 'object') {
|
11964
12257
|
options = type;
|
11965
12258
|
type = undefined;
|
@@ -11997,13 +12290,13 @@
|
|
11997
12290
|
These observers observe all `belongsTo` relationships on the record. See
|
11998
12291
|
`relationships/ext` to see how these observers get their dependencies.
|
11999
12292
|
*/
|
12000
|
-
ember$data$lib$system$model
|
12293
|
+
ember$data$lib$system$model$$default.reopen({
|
12001
12294
|
notifyBelongsToChanged: function(key) {
|
12002
12295
|
this.notifyPropertyChange(key);
|
12003
12296
|
}
|
12004
12297
|
});
|
12005
12298
|
|
12006
|
-
var ember$data$lib$system$relationships$
|
12299
|
+
var ember$data$lib$system$relationships$belongs$to$$default = ember$data$lib$system$relationships$belongs$to$$belongsTo;
|
12007
12300
|
|
12008
12301
|
/**
|
12009
12302
|
`DS.hasMany` is used to define One-To-Many and Many-To-Many
|
@@ -12094,7 +12387,7 @@
|
|
12094
12387
|
@param {Object} options (optional) a hash of options
|
12095
12388
|
@return {Ember.computed} relationship
|
12096
12389
|
*/
|
12097
|
-
function ember$data$lib$system$relationships$
|
12390
|
+
function ember$data$lib$system$relationships$has$many$$hasMany(type, options) {
|
12098
12391
|
if (typeof type === 'object') {
|
12099
12392
|
options = type;
|
12100
12393
|
type = undefined;
|
@@ -12122,7 +12415,7 @@
|
|
12122
12415
|
}).meta(meta).readOnly();
|
12123
12416
|
}
|
12124
12417
|
|
12125
|
-
ember$data$lib$system$model
|
12418
|
+
ember$data$lib$system$model$$default.reopen({
|
12126
12419
|
notifyHasManyAdded: function(key) {
|
12127
12420
|
//We need to notifyPropertyChange in the adding case because we need to make sure
|
12128
12421
|
//we fetch the newly added record in case it is unloaded
|
@@ -12134,7 +12427,7 @@
|
|
12134
12427
|
});
|
12135
12428
|
|
12136
12429
|
|
12137
|
-
var ember$data$lib$system$relationships$
|
12430
|
+
var ember$data$lib$system$relationships$has$many$$default = ember$data$lib$system$relationships$has$many$$hasMany;
|
12138
12431
|
function ember$data$lib$system$relationship$meta$$typeForRelationshipMeta(store, meta) {
|
12139
12432
|
var typeKey, type;
|
12140
12433
|
|
@@ -12252,7 +12545,7 @@
|
|
12252
12545
|
@class Model
|
12253
12546
|
@namespace DS
|
12254
12547
|
*/
|
12255
|
-
ember$data$lib$system$model
|
12548
|
+
ember$data$lib$system$model$$default.reopen({
|
12256
12549
|
|
12257
12550
|
/**
|
12258
12551
|
This Ember.js hook allows an object to be notified when a property
|
@@ -12311,7 +12604,7 @@
|
|
12311
12604
|
extensively.
|
12312
12605
|
*/
|
12313
12606
|
|
12314
|
-
ember$data$lib$system$model
|
12607
|
+
ember$data$lib$system$model$$default.reopenClass({
|
12315
12608
|
|
12316
12609
|
/**
|
12317
12610
|
For a given relationship name, returns the model type of the relationship.
|
@@ -12711,7 +13004,7 @@
|
|
12711
13004
|
|
12712
13005
|
});
|
12713
13006
|
|
12714
|
-
ember$data$lib$system$model
|
13007
|
+
ember$data$lib$system$model$$default.reopen({
|
12715
13008
|
/**
|
12716
13009
|
Given a callback, iterates over each of the relationships in the model,
|
12717
13010
|
invoking the callback with the name of each relationship and its relationship
|
@@ -12775,13 +13068,6 @@
|
|
12775
13068
|
}
|
12776
13069
|
|
12777
13070
|
});
|
12778
|
-
/**
|
12779
|
-
Ember Data
|
12780
|
-
@module ember-data
|
12781
|
-
@main ember-data
|
12782
|
-
*/
|
12783
|
-
|
12784
|
-
// support RSVP 2.x via resolve, but prefer RSVP 3.x's Promise.cast
|
12785
13071
|
Ember.RSVP.Promise.cast = Ember.RSVP.Promise.cast || Ember.RSVP.resolve;
|
12786
13072
|
|
12787
13073
|
Ember.runInDebug(function() {
|
@@ -12793,12 +13079,12 @@
|
|
12793
13079
|
});
|
12794
13080
|
|
12795
13081
|
ember$data$lib$core$$default.Store = ember$data$lib$system$store$$Store;
|
12796
|
-
ember$data$lib$core$$default.PromiseArray = ember$data$lib$system$
|
12797
|
-
ember$data$lib$core$$default.PromiseObject = ember$data$lib$system$
|
13082
|
+
ember$data$lib$core$$default.PromiseArray = ember$data$lib$system$promise$proxies$$PromiseArray;
|
13083
|
+
ember$data$lib$core$$default.PromiseObject = ember$data$lib$system$promise$proxies$$PromiseObject;
|
12798
13084
|
|
12799
|
-
ember$data$lib$core$$default.PromiseManyArray = ember$data$lib$system$
|
13085
|
+
ember$data$lib$core$$default.PromiseManyArray = ember$data$lib$system$promise$proxies$$PromiseManyArray;
|
12800
13086
|
|
12801
|
-
ember$data$lib$core$$default.Model = ember$data$lib$system$model
|
13087
|
+
ember$data$lib$core$$default.Model = ember$data$lib$system$model$$default;
|
12802
13088
|
ember$data$lib$core$$default.RootState = ember$data$lib$system$model$states$$default;
|
12803
13089
|
ember$data$lib$core$$default.attr = ember$data$lib$system$model$attributes$$default;
|
12804
13090
|
ember$data$lib$core$$default.Errors = ember$data$lib$system$model$errors$$default;
|
@@ -12812,18 +13098,19 @@
|
|
12812
13098
|
|
12813
13099
|
ember$data$lib$core$$default.DebugAdapter = ember$data$lib$system$debug$$default;
|
12814
13100
|
|
12815
|
-
ember$data$lib$core$$default.RecordArray = ember$data$lib$system$
|
12816
|
-
ember$data$lib$core$$default.FilteredRecordArray = ember$data$lib$system$
|
12817
|
-
ember$data$lib$core$$default.AdapterPopulatedRecordArray = ember$data$lib$system$
|
12818
|
-
ember$data$lib$core$$default.ManyArray = ember$data$lib$system$
|
13101
|
+
ember$data$lib$core$$default.RecordArray = ember$data$lib$system$record$arrays$record$array$$default;
|
13102
|
+
ember$data$lib$core$$default.FilteredRecordArray = ember$data$lib$system$record$arrays$filtered$record$array$$default;
|
13103
|
+
ember$data$lib$core$$default.AdapterPopulatedRecordArray = ember$data$lib$system$record$arrays$adapter$populated$record$array$$default;
|
13104
|
+
ember$data$lib$core$$default.ManyArray = ember$data$lib$system$many$array$$default;
|
12819
13105
|
|
12820
|
-
ember$data$lib$core$$default.RecordArrayManager = ember$data$lib$system$
|
13106
|
+
ember$data$lib$core$$default.RecordArrayManager = ember$data$lib$system$record$array$manager$$default;
|
12821
13107
|
|
12822
|
-
ember$data$lib$core$$default.RESTAdapter = ember$data$lib$adapters$
|
12823
|
-
ember$data$lib$core$$default.
|
13108
|
+
ember$data$lib$core$$default.RESTAdapter = ember$data$lib$adapters$rest$adapter$$default;
|
13109
|
+
ember$data$lib$core$$default.BuildURLMixin = ember$data$lib$adapters$build$url$mixin$$default;
|
13110
|
+
ember$data$lib$core$$default.FixtureAdapter = ember$data$lib$adapters$fixture$adapter$$default;
|
12824
13111
|
|
12825
|
-
ember$data$lib$core$$default.RESTSerializer = ember$data$lib$serializers$
|
12826
|
-
ember$data$lib$core$$default.JSONSerializer = ember$data$lib$serializers$
|
13112
|
+
ember$data$lib$core$$default.RESTSerializer = ember$data$lib$serializers$rest$serializer$$default;
|
13113
|
+
ember$data$lib$core$$default.JSONSerializer = ember$data$lib$serializers$json$serializer$$default;
|
12827
13114
|
|
12828
13115
|
ember$data$lib$core$$default.Transform = ember$data$lib$transforms$base$$default;
|
12829
13116
|
ember$data$lib$core$$default.DateTransform = ember$data$lib$transforms$date$$default;
|
@@ -12831,16 +13118,16 @@
|
|
12831
13118
|
ember$data$lib$core$$default.NumberTransform = ember$data$lib$transforms$number$$default;
|
12832
13119
|
ember$data$lib$core$$default.BooleanTransform = ember$data$lib$transforms$boolean$$default;
|
12833
13120
|
|
12834
|
-
ember$data$lib$core$$default.ActiveModelAdapter = activemodel$adapter$lib$system$
|
12835
|
-
ember$data$lib$core$$default.ActiveModelSerializer = activemodel$adapter$lib$system$
|
12836
|
-
ember$data$lib$core$$default.EmbeddedRecordsMixin = ember$data$lib$serializers$
|
13121
|
+
ember$data$lib$core$$default.ActiveModelAdapter = activemodel$adapter$lib$system$active$model$adapter$$default;
|
13122
|
+
ember$data$lib$core$$default.ActiveModelSerializer = activemodel$adapter$lib$system$active$model$serializer$$default;
|
13123
|
+
ember$data$lib$core$$default.EmbeddedRecordsMixin = ember$data$lib$serializers$embedded$records$mixin$$default;
|
12837
13124
|
|
12838
|
-
ember$data$lib$core$$default.belongsTo = ember$data$lib$system$relationships$
|
12839
|
-
ember$data$lib$core$$default.hasMany = ember$data$lib$system$relationships$
|
13125
|
+
ember$data$lib$core$$default.belongsTo = ember$data$lib$system$relationships$belongs$to$$default;
|
13126
|
+
ember$data$lib$core$$default.hasMany = ember$data$lib$system$relationships$has$many$$default;
|
12840
13127
|
|
12841
13128
|
ember$data$lib$core$$default.Relationship = ember$data$lib$system$relationships$state$relationship$$default;
|
12842
13129
|
|
12843
|
-
ember$data$lib$core$$default.ContainerProxy = ember$data$lib$system$
|
13130
|
+
ember$data$lib$core$$default.ContainerProxy = ember$data$lib$system$container$proxy$$default;
|
12844
13131
|
|
12845
13132
|
ember$data$lib$core$$default._setupContainer = ember$data$lib$setup$container$$default;
|
12846
13133
|
|