ember-data-source 2.1.0 → 2.2.0.beta.1
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 +267 -52
- data/dist/ember-data.js +63 -128
- data/dist/ember-data.js.map +1 -1
- data/dist/ember-data.min.js +4 -4
- data/dist/ember-data.prod.js +63 -129
- data/package.json +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4b0d9026f83ded0e4079534260c2348ec0e75bb1
|
4
|
+
data.tar.gz: 5f797710c8eeb1f0705a4d349b5c3830f39b1ada
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a56fb9757405c7a8d1783774627ca30d0e417f1d3055836d02d8782297b31e2e46a907a6aab76208f11538128f52548d37d2e23b9d1882e626102bd80085cdc3
|
7
|
+
data.tar.gz: 25eea0b246c05bb969dc44b5bd0461b412ec55d575f8acb2bdec3891364ce8e535815b06cb5c4e6b76c7861fe666a99ea54441ddfb9ff1f50409b23b978d67f8
|
data/dist/ember-data-tests.js
CHANGED
@@ -7610,6 +7610,157 @@ define(
|
|
7610
7610
|
);
|
7611
7611
|
|
7612
7612
|
|
7613
|
+
define(
|
7614
|
+
"ember-data/tests/integration/polymorphic-belongs-to-test",
|
7615
|
+
["exports"],
|
7616
|
+
function(__exports__) {
|
7617
|
+
"use strict";
|
7618
|
+
|
7619
|
+
function __es6_export__(name, value) {
|
7620
|
+
__exports__[name] = value;
|
7621
|
+
}
|
7622
|
+
|
7623
|
+
var _DS = DS;
|
7624
|
+
var attr = _DS.attr;
|
7625
|
+
var belongsTo = _DS.belongsTo;
|
7626
|
+
var _Ember = Ember;
|
7627
|
+
var run = _Ember.run;
|
7628
|
+
|
7629
|
+
var store = undefined;
|
7630
|
+
|
7631
|
+
var Book = DS.Model.extend({
|
7632
|
+
title: attr(),
|
7633
|
+
author: belongsTo('person', { polymorphic: true, async: false })
|
7634
|
+
});
|
7635
|
+
|
7636
|
+
var Author = DS.Model.extend({
|
7637
|
+
name: attr()
|
7638
|
+
});
|
7639
|
+
|
7640
|
+
var AsyncBook = DS.Model.extend({
|
7641
|
+
author: belongsTo('person', { polymorphic: true })
|
7642
|
+
});
|
7643
|
+
|
7644
|
+
module('integration/polymorphic-belongs-to - Polymorphic BelongsTo', {
|
7645
|
+
setup: function () {
|
7646
|
+
var env = setupStore({
|
7647
|
+
book: Book,
|
7648
|
+
author: Author,
|
7649
|
+
'async-book': AsyncBook,
|
7650
|
+
person: DS.Model.extend()
|
7651
|
+
});
|
7652
|
+
store = env.store;
|
7653
|
+
},
|
7654
|
+
|
7655
|
+
teardown: function () {
|
7656
|
+
run(store, 'destroy');
|
7657
|
+
}
|
7658
|
+
});
|
7659
|
+
|
7660
|
+
test('using store.push with a null value for a payload in relationships sets the Models relationship to null - sync relationship', function () {
|
7661
|
+
var payload = {
|
7662
|
+
data: {
|
7663
|
+
type: 'book',
|
7664
|
+
id: 1,
|
7665
|
+
title: 'Yes, Please',
|
7666
|
+
relationships: {
|
7667
|
+
author: {
|
7668
|
+
data: {
|
7669
|
+
type: 'author',
|
7670
|
+
id: 1
|
7671
|
+
}
|
7672
|
+
}
|
7673
|
+
}
|
7674
|
+
},
|
7675
|
+
included: [{
|
7676
|
+
id: 1,
|
7677
|
+
name: 'Amy Poehler',
|
7678
|
+
type: 'author'
|
7679
|
+
}]
|
7680
|
+
};
|
7681
|
+
|
7682
|
+
var book = run(function () {
|
7683
|
+
store.push(payload);
|
7684
|
+
return store.peekRecord('book', 1);
|
7685
|
+
});
|
7686
|
+
|
7687
|
+
equal(book.get('author.id'), 1);
|
7688
|
+
|
7689
|
+
var payloadThatResetsBelongToRelationship = {
|
7690
|
+
data: {
|
7691
|
+
type: 'book',
|
7692
|
+
id: 1,
|
7693
|
+
title: 'Yes, Please',
|
7694
|
+
relationships: {
|
7695
|
+
author: {
|
7696
|
+
data: null
|
7697
|
+
}
|
7698
|
+
}
|
7699
|
+
}
|
7700
|
+
};
|
7701
|
+
|
7702
|
+
run(function () {
|
7703
|
+
return store.push(payloadThatResetsBelongToRelationship);
|
7704
|
+
});
|
7705
|
+
equal(book.get('author'), null);
|
7706
|
+
});
|
7707
|
+
|
7708
|
+
test('using store.push with a null value for a payload in relationships sets the Models relationship to null - async relationship', function () {
|
7709
|
+
var payload = {
|
7710
|
+
data: {
|
7711
|
+
type: 'async-book',
|
7712
|
+
id: 1,
|
7713
|
+
title: 'Yes, Please',
|
7714
|
+
relationships: {
|
7715
|
+
author: {
|
7716
|
+
data: {
|
7717
|
+
type: 'author',
|
7718
|
+
id: 1
|
7719
|
+
}
|
7720
|
+
}
|
7721
|
+
}
|
7722
|
+
},
|
7723
|
+
included: [{
|
7724
|
+
id: 1,
|
7725
|
+
name: 'Amy Poehler',
|
7726
|
+
type: 'author'
|
7727
|
+
}]
|
7728
|
+
};
|
7729
|
+
|
7730
|
+
var book = run(function () {
|
7731
|
+
store.push(payload);
|
7732
|
+
return store.peekRecord('async-book', 1);
|
7733
|
+
});
|
7734
|
+
|
7735
|
+
var payloadThatResetsBelongToRelationship = {
|
7736
|
+
data: {
|
7737
|
+
type: 'async-book',
|
7738
|
+
id: 1,
|
7739
|
+
title: 'Yes, Please',
|
7740
|
+
relationships: {
|
7741
|
+
author: {
|
7742
|
+
data: null
|
7743
|
+
}
|
7744
|
+
}
|
7745
|
+
}
|
7746
|
+
};
|
7747
|
+
|
7748
|
+
stop();
|
7749
|
+
book.get('author').then(function (author) {
|
7750
|
+
equal(author.get('id'), 1);
|
7751
|
+
run(function () {
|
7752
|
+
return store.push(payloadThatResetsBelongToRelationship);
|
7753
|
+
});
|
7754
|
+
return book.get('author');
|
7755
|
+
}).then(function (author) {
|
7756
|
+
start();
|
7757
|
+
equal(author, null);
|
7758
|
+
});
|
7759
|
+
});
|
7760
|
+
}
|
7761
|
+
);
|
7762
|
+
|
7763
|
+
|
7613
7764
|
define(
|
7614
7765
|
"ember-data/tests/integration/record-array-manager-test",
|
7615
7766
|
["exports"],
|
@@ -17395,6 +17546,41 @@ define(
|
|
17395
17546
|
});
|
17396
17547
|
});
|
17397
17548
|
|
17549
|
+
test("serialize with embedded objects and a custom keyForAttribute (hasMany relationship)", function () {
|
17550
|
+
var tom, league;
|
17551
|
+
run(function () {
|
17552
|
+
league = env.store.createRecord('home-planet', { name: "Villain League", id: "123" });
|
17553
|
+
tom = env.store.createRecord('super-villain', { firstName: "Tom", lastName: "Dale", homePlanet: league, id: '1' });
|
17554
|
+
});
|
17555
|
+
|
17556
|
+
env.registry.register('serializer:home-planet', DS.RESTSerializer.extend(DS.EmbeddedRecordsMixin, {
|
17557
|
+
keyForAttribute: function (key) {
|
17558
|
+
return key + '-custom';
|
17559
|
+
},
|
17560
|
+
attrs: {
|
17561
|
+
villains: { embedded: 'always' }
|
17562
|
+
}
|
17563
|
+
}));
|
17564
|
+
|
17565
|
+
var serializer, json;
|
17566
|
+
run(function () {
|
17567
|
+
serializer = env.store.serializerFor("home-planet");
|
17568
|
+
|
17569
|
+
json = serializer.serialize(league._createSnapshot());
|
17570
|
+
});
|
17571
|
+
|
17572
|
+
deepEqual(json, {
|
17573
|
+
"name-custom": "Villain League",
|
17574
|
+
"villains-custom": [{
|
17575
|
+
id: get(tom, "id"),
|
17576
|
+
firstName: "Tom",
|
17577
|
+
lastName: "Dale",
|
17578
|
+
homePlanet: get(league, "id"),
|
17579
|
+
secretLab: null
|
17580
|
+
}]
|
17581
|
+
});
|
17582
|
+
});
|
17583
|
+
|
17398
17584
|
test("serialize with embedded objects (unknown hasMany relationship)", function () {
|
17399
17585
|
var league;
|
17400
17586
|
run(function () {
|
@@ -21273,37 +21459,34 @@ define(
|
|
21273
21459
|
};
|
21274
21460
|
}
|
21275
21461
|
|
21276
|
-
module("integration/store - findRecord
|
21277
|
-
setup: function () {
|
21278
|
-
initializeStore(DS.RESTAdapter.extend());
|
21279
|
-
}
|
21280
|
-
});
|
21462
|
+
module("integration/store - findRecord");
|
21281
21463
|
|
21282
|
-
test("
|
21464
|
+
test("store#findRecord fetches record from server when cached record is not present", function () {
|
21283
21465
|
expect(2);
|
21284
21466
|
|
21467
|
+
initializeStore(DS.RESTAdapter.extend());
|
21468
|
+
|
21285
21469
|
env.registry.register('serializer:application', DS.RESTSerializer);
|
21286
21470
|
ajaxResponse({
|
21287
21471
|
cars: [{
|
21288
21472
|
id: 20,
|
21289
|
-
make: '
|
21473
|
+
make: 'BMC',
|
21290
21474
|
model: 'Mini'
|
21291
21475
|
}]
|
21292
21476
|
});
|
21293
21477
|
|
21294
|
-
var
|
21295
|
-
ok(!
|
21478
|
+
var cachedRecordIsPresent = store.hasRecordForId('car', 20);
|
21479
|
+
ok(!cachedRecordIsPresent, 'Car with id=20 should not exist');
|
21296
21480
|
|
21297
21481
|
run(function () {
|
21298
|
-
store.findRecord('car', 20
|
21299
|
-
equal(car.get('make'), '
|
21482
|
+
store.findRecord('car', 20).then(function (car) {
|
21483
|
+
equal(car.get('make'), 'BMC', 'Car with id=20 is now loaded');
|
21300
21484
|
});
|
21301
21485
|
});
|
21302
21486
|
});
|
21303
21487
|
|
21304
|
-
test("
|
21488
|
+
test("store#findRecord returns cached record immediately and reloads record in the background", function () {
|
21305
21489
|
expect(2);
|
21306
|
-
var car;
|
21307
21490
|
|
21308
21491
|
run(function () {
|
21309
21492
|
store.push({
|
@@ -21316,22 +21499,81 @@ define(
|
|
21316
21499
|
}
|
21317
21500
|
}
|
21318
21501
|
});
|
21319
|
-
car = store.peekRecord('car', 1);
|
21320
21502
|
});
|
21321
21503
|
|
21322
21504
|
ajaxResponse({
|
21323
21505
|
cars: [{
|
21324
21506
|
id: 1,
|
21325
|
-
make: '
|
21326
|
-
model: '
|
21507
|
+
make: 'BMC',
|
21508
|
+
model: 'Princess'
|
21509
|
+
}]
|
21510
|
+
});
|
21511
|
+
|
21512
|
+
run(function () {
|
21513
|
+
store.findRecord('car', 1).then(function (car) {
|
21514
|
+
equal(car.get('model'), 'Mini', 'cached car record is returned');
|
21515
|
+
});
|
21516
|
+
});
|
21517
|
+
|
21518
|
+
run(function () {
|
21519
|
+
var car = store.peekRecord('car', 1);
|
21520
|
+
equal(car.get('model'), 'Princess', 'car record was reloaded');
|
21521
|
+
});
|
21522
|
+
});
|
21523
|
+
|
21524
|
+
test("store#findRecord { reload: true } ignores cached record and reloads record from server", function () {
|
21525
|
+
expect(2);
|
21526
|
+
|
21527
|
+
var testAdapter = DS.RESTAdapter.extend({
|
21528
|
+
shouldReloadRecord: function (store, type, id, snapshot) {
|
21529
|
+
ok(false, 'shouldReloadRecord should not be called when { reload: true }');
|
21530
|
+
}
|
21531
|
+
});
|
21532
|
+
|
21533
|
+
initializeStore(testAdapter);
|
21534
|
+
|
21535
|
+
run(function () {
|
21536
|
+
store.push({
|
21537
|
+
data: {
|
21538
|
+
type: 'car',
|
21539
|
+
id: '1',
|
21540
|
+
attributes: {
|
21541
|
+
make: 'BMC',
|
21542
|
+
model: 'Mini'
|
21543
|
+
}
|
21544
|
+
}
|
21545
|
+
});
|
21546
|
+
});
|
21547
|
+
|
21548
|
+
ajaxResponse({
|
21549
|
+
cars: [{
|
21550
|
+
id: 1,
|
21551
|
+
make: 'BMC',
|
21552
|
+
model: 'Princess'
|
21327
21553
|
}]
|
21328
21554
|
});
|
21329
21555
|
|
21330
|
-
|
21556
|
+
var cachedCar = store.peekRecord('car', 1);
|
21557
|
+
equal(cachedCar.get('model'), 'Mini', 'cached car has expected model');
|
21331
21558
|
|
21332
21559
|
run(function () {
|
21333
21560
|
store.findRecord('car', 1, { reload: true }).then(function (car) {
|
21334
|
-
equal(car.get('
|
21561
|
+
equal(car.get('model'), 'Princess', 'cached record ignored, record reloaded via server');
|
21562
|
+
});
|
21563
|
+
});
|
21564
|
+
});
|
21565
|
+
|
21566
|
+
test('store#findRecord call with `id` of type different than non-empty string or number should trigger an assertion', function (assert) {
|
21567
|
+
var badValues = ['', undefined, null, NaN, false];
|
21568
|
+
assert.expect(badValues.length);
|
21569
|
+
|
21570
|
+
initializeStore(DS.RESTAdapter.extend());
|
21571
|
+
|
21572
|
+
run(function () {
|
21573
|
+
badValues.map(function (item) {
|
21574
|
+
expectAssertion(function () {
|
21575
|
+
store.findRecord('car', item);
|
21576
|
+
}, '`id` has to be non-empty string or number');
|
21335
21577
|
});
|
21336
21578
|
});
|
21337
21579
|
});
|
@@ -28644,33 +28886,6 @@ define(
|
|
28644
28886
|
store.adapterFor(Person);
|
28645
28887
|
}, /Passing classes to store.adapterFor has been removed/);
|
28646
28888
|
});
|
28647
|
-
|
28648
|
-
module("unit/store/adapter_interop - find preload deprecations", {
|
28649
|
-
setup: function () {
|
28650
|
-
var Person = DS.Model.extend({
|
28651
|
-
name: DS.attr('string')
|
28652
|
-
});
|
28653
|
-
|
28654
|
-
var TestAdapter = DS.Adapter.extend({
|
28655
|
-
findRecord: function (store, type, id, snapshot) {
|
28656
|
-
equal(snapshot.attr('name'), 'Tom');
|
28657
|
-
return Ember.RSVP.resolve({ id: id });
|
28658
|
-
}
|
28659
|
-
});
|
28660
|
-
|
28661
|
-
store = createStore({
|
28662
|
-
adapter: TestAdapter,
|
28663
|
-
person: Person
|
28664
|
-
});
|
28665
|
-
},
|
28666
|
-
teardown: function () {
|
28667
|
-
run(function () {
|
28668
|
-
if (store) {
|
28669
|
-
store.destroy();
|
28670
|
-
}
|
28671
|
-
});
|
28672
|
-
}
|
28673
|
-
});
|
28674
28889
|
}
|
28675
28890
|
);
|
28676
28891
|
|
@@ -30673,13 +30888,6 @@ QUnit.test('ember-data/lib/system/many-array.js should pass jshint', function(as
|
|
30673
30888
|
assert.ok(true, 'ember-data/lib/system/many-array.js should pass jshint.');
|
30674
30889
|
});
|
30675
30890
|
|
30676
|
-
}
|
30677
|
-
if (!QUnit.urlParams.nojshint) {
|
30678
|
-
QUnit.module('JSHint - ember-data/lib/system');
|
30679
|
-
QUnit.test('ember-data/lib/system/map.js should pass jshint', function(assert) {
|
30680
|
-
assert.ok(true, 'ember-data/lib/system/map.js should pass jshint.');
|
30681
|
-
});
|
30682
|
-
|
30683
30891
|
}
|
30684
30892
|
if (!QUnit.urlParams.nojshint) {
|
30685
30893
|
QUnit.module('JSHint - ember-data/lib/system');
|
@@ -31107,6 +31315,13 @@ QUnit.test('ember-data/tests/integration/peek-all-test.js should pass jshint', f
|
|
31107
31315
|
assert.ok(true, 'ember-data/tests/integration/peek-all-test.js should pass jshint.');
|
31108
31316
|
});
|
31109
31317
|
|
31318
|
+
}
|
31319
|
+
if (!QUnit.urlParams.nojshint) {
|
31320
|
+
QUnit.module('JSHint - ember-data/tests/integration');
|
31321
|
+
QUnit.test('ember-data/tests/integration/polymorphic-belongs-to-test.js should pass jshint', function(assert) {
|
31322
|
+
assert.ok(true, 'ember-data/tests/integration/polymorphic-belongs-to-test.js should pass jshint.');
|
31323
|
+
});
|
31324
|
+
|
31110
31325
|
}
|
31111
31326
|
if (!QUnit.urlParams.nojshint) {
|
31112
31327
|
QUnit.module('JSHint - ember-data/tests/integration');
|
data/dist/ember-data.js
CHANGED
@@ -878,10 +878,6 @@
|
|
878
878
|
});
|
879
879
|
|
880
880
|
var ember$data$lib$system$adapter$$default = ember$data$lib$system$adapter$$Adapter;
|
881
|
-
var ember$data$lib$system$map$$Map = Ember.Map;
|
882
|
-
var ember$data$lib$system$map$$MapWithDefault = Ember.MapWithDefault;
|
883
|
-
|
884
|
-
var ember$data$lib$system$map$$default = ember$data$lib$system$map$$Map;
|
885
881
|
var ember$data$lib$system$empty$object$$default = ember$data$lib$system$empty$object$$EmptyObject;
|
886
882
|
// This exists because `Object.create(null)` is absurdly slow compared
|
887
883
|
// to `new EmptyObject()`. In either case, you want a null prototype
|
@@ -1075,7 +1071,8 @@
|
|
1075
1071
|
@extends DS.Adapter
|
1076
1072
|
@uses DS.BuildURLMixin
|
1077
1073
|
*/
|
1078
|
-
var ember$data$lib$adapters$rest$adapter$$get = Ember.get;
|
1074
|
+
var ember$data$lib$adapters$rest$adapter$$get = Ember.get;
|
1075
|
+
var ember$data$lib$adapters$rest$adapter$$MapWithDefault = Ember.MapWithDefault;var ember$data$lib$adapters$rest$adapter$$RESTAdapter = ember$data$lib$system$adapter$$default.extend(ember$data$lib$adapters$build$url$mixin$$default, {
|
1079
1076
|
defaultSerializer: '-rest',
|
1080
1077
|
|
1081
1078
|
/**
|
@@ -1490,7 +1487,7 @@
|
|
1490
1487
|
loaded separately by `findMany`.
|
1491
1488
|
*/
|
1492
1489
|
groupRecordsForFindMany: function (store, snapshots) {
|
1493
|
-
var groups = ember$data$lib$
|
1490
|
+
var groups = ember$data$lib$adapters$rest$adapter$$MapWithDefault.create({ defaultValue: function () {
|
1494
1491
|
return [];
|
1495
1492
|
} });
|
1496
1493
|
var adapter = this;
|
@@ -1871,7 +1868,7 @@
|
|
1871
1868
|
});
|
1872
1869
|
|
1873
1870
|
var ember$data$lib$core$$DS = Ember.Namespace.create({
|
1874
|
-
VERSION: '2.
|
1871
|
+
VERSION: '2.2.0-beta.1'
|
1875
1872
|
});
|
1876
1873
|
|
1877
1874
|
if (Ember.libraries) {
|
@@ -2070,99 +2067,13 @@
|
|
2070
2067
|
|
2071
2068
|
function ember$data$lib$system$store$common$$_objectIsAlive(object) {
|
2072
2069
|
return !(ember$data$lib$system$store$common$$get(object, "isDestroyed") || ember$data$lib$system$store$common$$get(object, "isDestroying"));
|
2073
|
-
}
|
2074
|
-
|
2075
|
-
/**
|
2076
|
-
@module ember-data
|
2077
|
-
*/
|
2078
|
-
|
2079
|
-
/**
|
2080
|
-
Holds validation errors for a given record organized by attribute names.
|
2081
|
-
|
2082
|
-
Every DS.Model has an `errors` property that is an instance of
|
2083
|
-
`DS.Errors`. This can be used to display validation error
|
2084
|
-
messages returned from the server when a `record.save()` rejects.
|
2085
|
-
This works automatically with `DS.ActiveModelAdapter`, but you
|
2086
|
-
can implement [ajaxError](/api/data/classes/DS.RESTAdapter.html#method_ajaxError)
|
2087
|
-
in other adapters as well.
|
2088
|
-
|
2089
|
-
For Example, if you had an `User` model that looked like this:
|
2090
|
-
|
2091
|
-
```app/models/user.js
|
2092
|
-
import DS from 'ember-data';
|
2093
|
-
|
2094
|
-
export default DS.Model.extend({
|
2095
|
-
username: attr('string'),
|
2096
|
-
email: attr('string')
|
2097
|
-
});
|
2098
|
-
```
|
2099
|
-
And you attempted to save a record that did not validate on the backend.
|
2100
|
-
|
2101
|
-
```javascript
|
2102
|
-
var user = store.createRecord('user', {
|
2103
|
-
username: 'tomster',
|
2104
|
-
email: 'invalidEmail'
|
2105
|
-
});
|
2106
|
-
user.save();
|
2107
|
-
```
|
2108
|
-
|
2109
|
-
Your backend data store might return a response that looks like
|
2110
|
-
this. This response will be used to populate the error object.
|
2111
|
-
|
2112
|
-
```javascript
|
2113
|
-
{
|
2114
|
-
"errors": {
|
2115
|
-
"username": ["This username is already taken!"],
|
2116
|
-
"email": ["Doesn't look like a valid email."]
|
2117
|
-
}
|
2118
|
-
}
|
2119
|
-
```
|
2120
|
-
|
2121
|
-
Errors can be displayed to the user by accessing their property name
|
2122
|
-
to get an array of all the error objects for that property. Each
|
2123
|
-
error object is a JavaScript object with two keys:
|
2124
|
-
|
2125
|
-
- `message` A string containing the error message from the backend
|
2126
|
-
- `attribute` The name of the property associated with this error message
|
2127
|
-
|
2128
|
-
```handlebars
|
2129
|
-
<label>Username: {{input value=username}} </label>
|
2130
|
-
{{#each model.errors.username as |error|}}
|
2131
|
-
<div class="error">
|
2132
|
-
{{error.message}}
|
2133
|
-
</div>
|
2134
|
-
{{/each}}
|
2135
|
-
|
2136
|
-
<label>Email: {{input value=email}} </label>
|
2137
|
-
{{#each model.errors.email as |error|}}
|
2138
|
-
<div class="error">
|
2139
|
-
{{error.message}}
|
2140
|
-
</div>
|
2141
|
-
{{/each}}
|
2142
|
-
```
|
2143
|
-
|
2144
|
-
You can also access the special `messages` property on the error
|
2145
|
-
object to get an array of all the error strings.
|
2146
|
-
|
2147
|
-
```handlebars
|
2148
|
-
{{#each model.errors.messages as |message|}}
|
2149
|
-
<div class="error">
|
2150
|
-
{{message}}
|
2151
|
-
</div>
|
2152
|
-
{{/each}}
|
2153
|
-
```
|
2154
|
-
|
2155
|
-
@class Errors
|
2156
|
-
@namespace DS
|
2157
|
-
@extends Ember.Object
|
2158
|
-
@uses Ember.Enumerable
|
2159
|
-
@uses Ember.Evented
|
2160
|
-
*/
|
2161
|
-
var ember$data$lib$system$model$errors$$get = Ember.get;
|
2070
|
+
}var ember$data$lib$system$model$errors$$get = Ember.get;
|
2162
2071
|
var ember$data$lib$system$model$errors$$set = Ember.set;
|
2163
2072
|
var ember$data$lib$system$model$errors$$isEmpty = Ember.isEmpty;
|
2164
2073
|
var ember$data$lib$system$model$errors$$makeArray = Ember.makeArray;
|
2165
2074
|
|
2075
|
+
var ember$data$lib$system$model$errors$$MapWithDefault = Ember.MapWithDefault;
|
2076
|
+
|
2166
2077
|
var ember$data$lib$system$model$errors$$default = Ember.ArrayProxy.extend(Ember.Evented, {
|
2167
2078
|
/**
|
2168
2079
|
Register with target handler
|
@@ -2182,7 +2093,7 @@
|
|
2182
2093
|
@private
|
2183
2094
|
*/
|
2184
2095
|
errorsByAttributeName: Ember.computed(function () {
|
2185
|
-
return ember$data$lib$system$
|
2096
|
+
return ember$data$lib$system$model$errors$$MapWithDefault.create({
|
2186
2097
|
defaultValue: function () {
|
2187
2098
|
return Ember.A();
|
2188
2099
|
}
|
@@ -4007,19 +3918,19 @@
|
|
4007
3918
|
|
4008
3919
|
return this;
|
4009
3920
|
};
|
4010
|
-
var ember$data$lib$system$record$array$manager$$get = Ember.get;
|
3921
|
+
var ember$data$lib$system$record$array$manager$$MapWithDefault = Ember.MapWithDefault;var ember$data$lib$system$record$array$manager$$get = Ember.get;
|
4011
3922
|
|
4012
3923
|
var ember$data$lib$system$record$array$manager$$default = Ember.Object.extend({
|
4013
3924
|
init: function () {
|
4014
3925
|
var _this = this;
|
4015
3926
|
|
4016
|
-
this.filteredRecordArrays = ember$data$lib$system$
|
3927
|
+
this.filteredRecordArrays = ember$data$lib$system$record$array$manager$$MapWithDefault.create({
|
4017
3928
|
defaultValue: function () {
|
4018
3929
|
return [];
|
4019
3930
|
}
|
4020
3931
|
});
|
4021
3932
|
|
4022
|
-
this.liveRecordArrays = ember$data$lib$system$
|
3933
|
+
this.liveRecordArrays = ember$data$lib$system$record$array$manager$$MapWithDefault.create({
|
4023
3934
|
defaultValue: function (typeClass) {
|
4024
3935
|
return _this.createRecordArray(typeClass);
|
4025
3936
|
}
|
@@ -6456,6 +6367,7 @@
|
|
6456
6367
|
this.isReloading = false;
|
6457
6368
|
this.isError = false;
|
6458
6369
|
this.error = null;
|
6370
|
+
this.__ember_meta__ = null;
|
6459
6371
|
this[Ember.GUID_KEY] = ember$data$lib$system$model$internal$model$$guid++ + 'internal-model';
|
6460
6372
|
/*
|
6461
6373
|
implicit relationships are relationship which have not been declared but the inverse side exists on
|
@@ -7134,7 +7046,10 @@
|
|
7134
7046
|
}
|
7135
7047
|
};
|
7136
7048
|
|
7049
|
+
var ember$data$lib$system$store$$badIdFormatAssertion = '`id` has to be non-empty string or number';
|
7050
|
+
|
7137
7051
|
var ember$data$lib$system$store$$Backburner = Ember._Backburner || Ember.Backburner || Ember.__loader.require('backburner')['default'] || Ember.__loader.require('backburner')['Backburner'];
|
7052
|
+
var ember$data$lib$system$store$$Map = Ember.Map;
|
7138
7053
|
|
7139
7054
|
//Shim Backburner.join
|
7140
7055
|
if (!ember$data$lib$system$store$$Backburner.prototype.join) {
|
@@ -7304,7 +7219,7 @@
|
|
7304
7219
|
this._pendingSave = [];
|
7305
7220
|
this._instanceCache = new ember$data$lib$system$store$container$instance$cache$$default(this.container);
|
7306
7221
|
//Used to keep track of all the find requests that need to be coalesced
|
7307
|
-
this._pendingFetch = ember$data$lib$system$
|
7222
|
+
this._pendingFetch = ember$data$lib$system$store$$Map.create();
|
7308
7223
|
},
|
7309
7224
|
|
7310
7225
|
/**
|
@@ -7546,6 +7461,8 @@
|
|
7546
7461
|
*/
|
7547
7462
|
findRecord: function (modelName, id, options) {
|
7548
7463
|
Ember.assert('Passing classes to store methods has been removed. Please pass a dasherized string instead of ' + Ember.inspect(modelName), typeof modelName === 'string');
|
7464
|
+
Ember.assert(ember$data$lib$system$store$$badIdFormatAssertion, typeof id === 'string' && id.length > 0 || typeof id === 'number' && !isNaN(id));
|
7465
|
+
|
7549
7466
|
var internalModel = this._internalModelForId(modelName, id);
|
7550
7467
|
options = options || {};
|
7551
7468
|
|
@@ -7687,7 +7604,7 @@
|
|
7687
7604
|
}
|
7688
7605
|
|
7689
7606
|
this._pendingFetch.forEach(this._flushPendingFetchForType, this);
|
7690
|
-
this._pendingFetch = ember$data$lib$system$
|
7607
|
+
this._pendingFetch = ember$data$lib$system$store$$Map.create();
|
7691
7608
|
},
|
7692
7609
|
|
7693
7610
|
_flushPendingFetchForType: function (pendingFetchItems, typeClass) {
|
@@ -12010,6 +11927,7 @@
|
|
12010
11927
|
*/
|
12011
11928
|
|
12012
11929
|
var ember$data$lib$system$model$attributes$$get = Ember.get;
|
11930
|
+
var ember$data$lib$system$model$attributes$$Map = Ember.Map;
|
12013
11931
|
|
12014
11932
|
/**
|
12015
11933
|
@class Model
|
@@ -12049,7 +11967,7 @@
|
|
12049
11967
|
attributes: Ember.computed(function () {
|
12050
11968
|
var _this = this;
|
12051
11969
|
|
12052
|
-
var map = ember$data$lib$system$
|
11970
|
+
var map = ember$data$lib$system$model$attributes$$Map.create();
|
12053
11971
|
|
12054
11972
|
this.eachComputedProperty(function (name, meta) {
|
12055
11973
|
if (meta.isAttribute) {
|
@@ -12094,7 +12012,7 @@
|
|
12094
12012
|
@readOnly
|
12095
12013
|
*/
|
12096
12014
|
transformedAttributes: Ember.computed(function () {
|
12097
|
-
var map = ember$data$lib$system$
|
12015
|
+
var map = ember$data$lib$system$model$attributes$$Map.create();
|
12098
12016
|
|
12099
12017
|
this.eachAttribute(function (key, meta) {
|
12100
12018
|
if (meta.type) {
|
@@ -12887,13 +12805,18 @@
|
|
12887
12805
|
json[key] = embeddedSnapshot.id;
|
12888
12806
|
}
|
12889
12807
|
} else if (includeRecords) {
|
12890
|
-
|
12891
|
-
|
12892
|
-
|
12893
|
-
|
12894
|
-
|
12895
|
-
|
12896
|
-
|
12808
|
+
this._serializeEmbeddedBelongsTo(snapshot, json, relationship);
|
12809
|
+
}
|
12810
|
+
},
|
12811
|
+
|
12812
|
+
_serializeEmbeddedBelongsTo: function (snapshot, json, relationship) {
|
12813
|
+
var embeddedSnapshot = snapshot.belongsTo(relationship.key);
|
12814
|
+
var serializedKey = this.keyForAttribute(relationship.key, 'serialize');
|
12815
|
+
if (!embeddedSnapshot) {
|
12816
|
+
json[serializedKey] = null;
|
12817
|
+
} else {
|
12818
|
+
json[serializedKey] = embeddedSnapshot.record.serialize({ includeId: true });
|
12819
|
+
this.removeEmbeddedForeignKey(snapshot, embeddedSnapshot, relationship, json[serializedKey]);
|
12897
12820
|
}
|
12898
12821
|
},
|
12899
12822
|
|
@@ -12968,8 +12891,6 @@
|
|
12968
12891
|
@param {Object} relationship
|
12969
12892
|
*/
|
12970
12893
|
serializeHasMany: function (snapshot, json, relationship) {
|
12971
|
-
var _this = this;
|
12972
|
-
|
12973
12894
|
var attr = relationship.key;
|
12974
12895
|
if (this.noSerializeOptionSpecified(attr)) {
|
12975
12896
|
this._super(snapshot, json, relationship);
|
@@ -12977,22 +12898,34 @@
|
|
12977
12898
|
}
|
12978
12899
|
var includeIds = this.hasSerializeIdsOption(attr);
|
12979
12900
|
var includeRecords = this.hasSerializeRecordsOption(attr);
|
12980
|
-
var key, hasMany;
|
12981
12901
|
if (includeIds) {
|
12982
|
-
|
12983
|
-
json[
|
12902
|
+
var serializedKey = this.keyForRelationship(attr, relationship.kind, 'serialize');
|
12903
|
+
json[serializedKey] = snapshot.hasMany(attr, { ids: true });
|
12984
12904
|
} else if (includeRecords) {
|
12985
|
-
|
12986
|
-
|
12905
|
+
this._serializeEmbeddedHasMany(snapshot, json, relationship);
|
12906
|
+
}
|
12907
|
+
},
|
12987
12908
|
|
12988
|
-
|
12909
|
+
_serializeEmbeddedHasMany: function (snapshot, json, relationship) {
|
12910
|
+
var serializedKey = this.keyForAttribute(relationship.key, 'serialize');
|
12989
12911
|
|
12990
|
-
|
12991
|
-
|
12992
|
-
|
12993
|
-
|
12994
|
-
|
12995
|
-
|
12912
|
+
Ember.warn('The embedded relationship \'' + serializedKey + '\' is undefined for \'' + snapshot.modelName + '\' with id \'' + snapshot.id + '\'. Please include it in your original payload.', Ember.typeOf(snapshot.hasMany(relationship.key)) !== 'undefined', { id: 'ds.serializer.embedded-relationship-undefined' });
|
12913
|
+
|
12914
|
+
json[serializedKey] = this._generateSerializedHasMany(snapshot, relationship);
|
12915
|
+
},
|
12916
|
+
|
12917
|
+
/*
|
12918
|
+
Returns an array of embedded records serialized to JSON
|
12919
|
+
*/
|
12920
|
+
_generateSerializedHasMany: function (snapshot, relationship) {
|
12921
|
+
var _this = this;
|
12922
|
+
|
12923
|
+
var hasMany = snapshot.hasMany(relationship.key);
|
12924
|
+
return Ember.A(hasMany).map(function (embeddedSnapshot) {
|
12925
|
+
var embeddedJson = embeddedSnapshot.record.serialize({ includeId: true });
|
12926
|
+
_this.removeEmbeddedForeignKey(snapshot, embeddedSnapshot, relationship, embeddedJson);
|
12927
|
+
return embeddedJson;
|
12928
|
+
});
|
12996
12929
|
},
|
12997
12930
|
|
12998
12931
|
/**
|
@@ -13519,13 +13452,15 @@
|
|
13519
13452
|
}
|
13520
13453
|
|
13521
13454
|
var ember$data$lib$system$relationships$ext$$get = Ember.get;
|
13455
|
+
var ember$data$lib$system$relationships$ext$$Map = Ember.Map;
|
13456
|
+
var ember$data$lib$system$relationships$ext$$MapWithDefault = Ember.MapWithDefault;
|
13522
13457
|
|
13523
13458
|
var ember$data$lib$system$relationships$ext$$relationshipsDescriptor = Ember.computed(function () {
|
13524
13459
|
if (Ember.testing === true && ember$data$lib$system$relationships$ext$$relationshipsDescriptor._cacheable === true) {
|
13525
13460
|
ember$data$lib$system$relationships$ext$$relationshipsDescriptor._cacheable = false;
|
13526
13461
|
}
|
13527
13462
|
|
13528
|
-
var map = new ember$data$lib$system$
|
13463
|
+
var map = new ember$data$lib$system$relationships$ext$$MapWithDefault({
|
13529
13464
|
defaultValue: function () {
|
13530
13465
|
return [];
|
13531
13466
|
}
|
@@ -13584,7 +13519,7 @@
|
|
13584
13519
|
ember$data$lib$system$relationships$ext$$relationshipsByNameDescriptor._cacheable = false;
|
13585
13520
|
}
|
13586
13521
|
|
13587
|
-
var map = ember$data$lib$system$
|
13522
|
+
var map = ember$data$lib$system$relationships$ext$$Map.create();
|
13588
13523
|
|
13589
13524
|
this.eachComputedProperty(function (name, meta) {
|
13590
13525
|
if (meta.isRelationship) {
|
@@ -13986,7 +13921,7 @@
|
|
13986
13921
|
@readOnly
|
13987
13922
|
*/
|
13988
13923
|
fields: Ember.computed(function () {
|
13989
|
-
var map = ember$data$lib$system$
|
13924
|
+
var map = ember$data$lib$system$relationships$ext$$Map.create();
|
13990
13925
|
|
13991
13926
|
this.eachComputedProperty(function (name, meta) {
|
13992
13927
|
if (meta.isRelationship) {
|