ember-data-source 2.1.0 → 2.2.0.beta.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/dist/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) {
|