ember-data-source 2.2.0.beta.3 → 2.2.0.beta.4
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 +318 -10
- data/dist/ember-data.js +241 -113
- data/dist/ember-data.js.map +1 -1
- data/dist/ember-data.min.js +4 -4
- data/dist/ember-data.prod.js +241 -115
- data/package.json +1 -1
- metadata +2 -2
data/dist/ember-data.js
CHANGED
@@ -261,6 +261,8 @@
|
|
261
261
|
var ember$data$lib$adapters$errors$$EmberError = Ember.Error;
|
262
262
|
|
263
263
|
var ember$data$lib$adapters$errors$$SOURCE_POINTER_REGEXP = /^\/?data\/(attributes|relationships)\/(.*)/;
|
264
|
+
var ember$data$lib$adapters$errors$$SOURCE_POINTER_PRIMARY_REGEXP = /^\/?data/;
|
265
|
+
var ember$data$lib$adapters$errors$$PRIMARY_ATTRIBUTE_KEY = 'base';
|
264
266
|
|
265
267
|
/**
|
266
268
|
@class AdapterError
|
@@ -318,11 +320,11 @@
|
|
318
320
|
return Ember.RSVP.reject(new DS.InvalidError([
|
319
321
|
{
|
320
322
|
detail: 'Must be unique',
|
321
|
-
source: { pointer: 'data/attributes/title' }
|
323
|
+
source: { pointer: '/data/attributes/title' }
|
322
324
|
},
|
323
325
|
{
|
324
326
|
detail: 'Must not be blank',
|
325
|
-
source: { pointer: 'data/attributes/content'}
|
327
|
+
source: { pointer: '/data/attributes/content'}
|
326
328
|
}
|
327
329
|
]));
|
328
330
|
}
|
@@ -380,11 +382,17 @@
|
|
380
382
|
Object.keys(errors).forEach(function (key) {
|
381
383
|
var messages = Ember.makeArray(errors[key]);
|
382
384
|
for (var i = 0; i < messages.length; i++) {
|
385
|
+
var title = 'Invalid Attribute';
|
386
|
+
var pointer = '/data/attributes/' + key;
|
387
|
+
if (key === ember$data$lib$adapters$errors$$PRIMARY_ATTRIBUTE_KEY) {
|
388
|
+
title = 'Invalid Document';
|
389
|
+
pointer = '/data';
|
390
|
+
}
|
383
391
|
out.push({
|
384
|
-
title:
|
392
|
+
title: title,
|
385
393
|
detail: messages[i],
|
386
394
|
source: {
|
387
|
-
pointer:
|
395
|
+
pointer: pointer
|
388
396
|
}
|
389
397
|
});
|
390
398
|
}
|
@@ -409,6 +417,11 @@
|
|
409
417
|
|
410
418
|
if (key) {
|
411
419
|
key = key[2];
|
420
|
+
} else if (error.source.pointer.search(ember$data$lib$adapters$errors$$SOURCE_POINTER_PRIMARY_REGEXP) !== -1) {
|
421
|
+
key = ember$data$lib$adapters$errors$$PRIMARY_ATTRIBUTE_KEY;
|
422
|
+
}
|
423
|
+
|
424
|
+
if (key) {
|
412
425
|
out[key] = out[key] || [];
|
413
426
|
out[key].push(error.detail || error.title);
|
414
427
|
}
|
@@ -1868,7 +1881,7 @@
|
|
1868
1881
|
});
|
1869
1882
|
|
1870
1883
|
var ember$data$lib$core$$DS = Ember.Namespace.create({
|
1871
|
-
VERSION: '2.2.0-beta.
|
1884
|
+
VERSION: '2.2.0-beta.4'
|
1872
1885
|
});
|
1873
1886
|
|
1874
1887
|
if (Ember.libraries) {
|
@@ -2344,6 +2357,90 @@
|
|
2344
2357
|
return record;
|
2345
2358
|
}, null, "DS: Extract payload of queryRecord " + typeClass);
|
2346
2359
|
}
|
2360
|
+
|
2361
|
+
var ember$data$lib$utils$$get = ember$lib$main$$default.get;
|
2362
|
+
|
2363
|
+
/**
|
2364
|
+
Assert that `addedRecord` has a valid type so it can be added to the
|
2365
|
+
relationship of the `record`.
|
2366
|
+
|
2367
|
+
The assert basically checks if the `addedRecord` can be added to the
|
2368
|
+
relationship (specified via `relationshipMeta`) of the `record`.
|
2369
|
+
|
2370
|
+
This utility should only be used internally, as both record parameters must
|
2371
|
+
be an InternalModel and the `relationshipMeta` needs to be the meta
|
2372
|
+
information about the relationship, retrieved via
|
2373
|
+
`record.relationshipFor(key)`.
|
2374
|
+
|
2375
|
+
@method assertPolymorphicType
|
2376
|
+
@param {InternalModel} record
|
2377
|
+
@param {RelationshipMeta} relationshipMeta retrieved via
|
2378
|
+
`record.relationshipFor(key)`
|
2379
|
+
@param {InternalModel} addedRecord record which
|
2380
|
+
should be added/set for the relationship
|
2381
|
+
*/
|
2382
|
+
var ember$data$lib$utils$$assertPolymorphicType = function (record, relationshipMeta, addedRecord) {
|
2383
|
+
var addedType = addedRecord.type.modelName;
|
2384
|
+
var recordType = record.type.modelName;
|
2385
|
+
var key = relationshipMeta.key;
|
2386
|
+
var typeClass = record.store.modelFor(relationshipMeta.type);
|
2387
|
+
|
2388
|
+
var assertionMessage = 'You cannot add a record of type \'' + addedType + '\' to the \'' + recordType + '.' + key + '\' relationship (only \'' + typeClass.modelName + '\' allowed)';
|
2389
|
+
|
2390
|
+
ember$lib$main$$default.assert(assertionMessage, ember$data$lib$utils$$checkPolymorphic(typeClass, addedRecord));
|
2391
|
+
};
|
2392
|
+
|
2393
|
+
function ember$data$lib$utils$$checkPolymorphic(typeClass, addedRecord) {
|
2394
|
+
if (typeClass.__isMixin) {
|
2395
|
+
//TODO Need to do this in order to support mixins, should convert to public api
|
2396
|
+
//once it exists in Ember
|
2397
|
+
return typeClass.__mixin.detect(addedRecord.type.PrototypeMixin);
|
2398
|
+
}
|
2399
|
+
if (ember$lib$main$$default.MODEL_FACTORY_INJECTIONS) {
|
2400
|
+
typeClass = typeClass.superclass;
|
2401
|
+
}
|
2402
|
+
return typeClass.detect(addedRecord.type);
|
2403
|
+
}
|
2404
|
+
|
2405
|
+
/**
|
2406
|
+
Check if the passed model has a `type` attribute or a relationship named `type`.
|
2407
|
+
|
2408
|
+
@method modelHasAttributeOrRelationshipNamedType
|
2409
|
+
@param modelClass
|
2410
|
+
*/
|
2411
|
+
function ember$data$lib$utils$$modelHasAttributeOrRelationshipNamedType(modelClass) {
|
2412
|
+
return ember$data$lib$utils$$get(modelClass, 'attributes').has('type') || ember$data$lib$utils$$get(modelClass, 'relationshipsByName').has('type');
|
2413
|
+
}
|
2414
|
+
|
2415
|
+
/*
|
2416
|
+
ember-container-inject-owner is a new feature in Ember 2.3 that finally provides a public
|
2417
|
+
API for looking items up. This function serves as a super simple polyfill to avoid
|
2418
|
+
triggering deprecations.
|
2419
|
+
*/
|
2420
|
+
function ember$data$lib$utils$$getOwner(context) {
|
2421
|
+
var owner;
|
2422
|
+
|
2423
|
+
if (ember$lib$main$$default.getOwner) {
|
2424
|
+
owner = ember$lib$main$$default.getOwner(context);
|
2425
|
+
}
|
2426
|
+
|
2427
|
+
if (!owner && context.container) {
|
2428
|
+
owner = context.container;
|
2429
|
+
}
|
2430
|
+
|
2431
|
+
if (owner && owner.lookupFactory && !owner._lookupFactory) {
|
2432
|
+
// `owner` is a container, we are just making this work
|
2433
|
+
owner._lookupFactory = owner.lookupFactory;
|
2434
|
+
owner.register = function () {
|
2435
|
+
var registry = owner.registry || owner._registry || owner;
|
2436
|
+
|
2437
|
+
return registry.register.apply(registry, arguments);
|
2438
|
+
};
|
2439
|
+
}
|
2440
|
+
|
2441
|
+
return owner;
|
2442
|
+
}
|
2443
|
+
|
2347
2444
|
var ember$data$lib$system$coerce$id$$default = ember$data$lib$system$coerce$id$$coerceId;
|
2348
2445
|
// Used by the store to normalize IDs entering the store. Despite the fact
|
2349
2446
|
// that developers may provide IDs as numbers (e.g., `store.find(Person, 1)`),
|
@@ -3079,8 +3176,8 @@
|
|
3079
3176
|
* @class ContainerInstanceCache
|
3080
3177
|
*
|
3081
3178
|
*/
|
3082
|
-
function ember$data$lib$system$store$container$instance$cache$$ContainerInstanceCache(
|
3083
|
-
this.
|
3179
|
+
function ember$data$lib$system$store$container$instance$cache$$ContainerInstanceCache(owner) {
|
3180
|
+
this._owner = owner;
|
3084
3181
|
this._cache = new ember$data$lib$system$empty$object$$default();
|
3085
3182
|
}
|
3086
3183
|
|
@@ -3115,7 +3212,7 @@
|
|
3115
3212
|
instanceFor: function (key) {
|
3116
3213
|
var cache = this._cache;
|
3117
3214
|
if (!cache[key]) {
|
3118
|
-
var instance = this.
|
3215
|
+
var instance = this._owner.lookup(key);
|
3119
3216
|
if (instance) {
|
3120
3217
|
cache[key] = instance;
|
3121
3218
|
}
|
@@ -3134,7 +3231,7 @@
|
|
3134
3231
|
cacheEntry.destroy();
|
3135
3232
|
}
|
3136
3233
|
}
|
3137
|
-
this.
|
3234
|
+
this._owner = null;
|
3138
3235
|
},
|
3139
3236
|
|
3140
3237
|
constructor: ember$data$lib$system$store$container$instance$cache$$ContainerInstanceCache,
|
@@ -3405,15 +3502,18 @@
|
|
3405
3502
|
loadingData: Ember.K,
|
3406
3503
|
|
3407
3504
|
propertyWasReset: function (internalModel, name) {
|
3408
|
-
|
3409
|
-
var stillDirty = length > 0;
|
3410
|
-
|
3411
|
-
if (!stillDirty) {
|
3505
|
+
if (!internalModel.hasChangedAttributes()) {
|
3412
3506
|
internalModel.send('rolledBack');
|
3413
3507
|
}
|
3414
3508
|
},
|
3415
3509
|
|
3416
|
-
pushedData:
|
3510
|
+
pushedData: function (internalModel) {
|
3511
|
+
internalModel.updateChangedAttributes();
|
3512
|
+
|
3513
|
+
if (!internalModel.hasChangedAttributes()) {
|
3514
|
+
internalModel.transitionTo('loaded.saved');
|
3515
|
+
}
|
3516
|
+
},
|
3417
3517
|
|
3418
3518
|
becomeDirty: Ember.K,
|
3419
3519
|
|
@@ -3699,10 +3799,7 @@
|
|
3699
3799
|
// in the `saved` state.
|
3700
3800
|
saved: {
|
3701
3801
|
setup: function (internalModel) {
|
3702
|
-
|
3703
|
-
var isDirty = Object.keys(attrs).length > 0;
|
3704
|
-
|
3705
|
-
if (isDirty) {
|
3802
|
+
if (internalModel.hasChangedAttributes()) {
|
3706
3803
|
internalModel.adapterDidDirty();
|
3707
3804
|
}
|
3708
3805
|
},
|
@@ -4393,60 +4490,6 @@
|
|
4393
4490
|
}
|
4394
4491
|
});
|
4395
4492
|
|
4396
|
-
var ember$data$lib$utils$$get = ember$lib$main$$default.get;
|
4397
|
-
|
4398
|
-
/**
|
4399
|
-
Assert that `addedRecord` has a valid type so it can be added to the
|
4400
|
-
relationship of the `record`.
|
4401
|
-
|
4402
|
-
The assert basically checks if the `addedRecord` can be added to the
|
4403
|
-
relationship (specified via `relationshipMeta`) of the `record`.
|
4404
|
-
|
4405
|
-
This utility should only be used internally, as both record parameters must
|
4406
|
-
be an InternalModel and the `relationshipMeta` needs to be the meta
|
4407
|
-
information about the relationship, retrieved via
|
4408
|
-
`record.relationshipFor(key)`.
|
4409
|
-
|
4410
|
-
@method assertPolymorphicType
|
4411
|
-
@param {InternalModel} record
|
4412
|
-
@param {RelationshipMeta} relationshipMeta retrieved via
|
4413
|
-
`record.relationshipFor(key)`
|
4414
|
-
@param {InternalModel} addedRecord record which
|
4415
|
-
should be added/set for the relationship
|
4416
|
-
*/
|
4417
|
-
var ember$data$lib$utils$$assertPolymorphicType = function (record, relationshipMeta, addedRecord) {
|
4418
|
-
var addedType = addedRecord.type.modelName;
|
4419
|
-
var recordType = record.type.modelName;
|
4420
|
-
var key = relationshipMeta.key;
|
4421
|
-
var typeClass = record.store.modelFor(relationshipMeta.type);
|
4422
|
-
|
4423
|
-
var assertionMessage = 'You cannot add a record of type \'' + addedType + '\' to the \'' + recordType + '.' + key + '\' relationship (only \'' + typeClass.modelName + '\' allowed)';
|
4424
|
-
|
4425
|
-
ember$lib$main$$default.assert(assertionMessage, ember$data$lib$utils$$checkPolymorphic(typeClass, addedRecord));
|
4426
|
-
};
|
4427
|
-
|
4428
|
-
function ember$data$lib$utils$$checkPolymorphic(typeClass, addedRecord) {
|
4429
|
-
if (typeClass.__isMixin) {
|
4430
|
-
//TODO Need to do this in order to support mixins, should convert to public api
|
4431
|
-
//once it exists in Ember
|
4432
|
-
return typeClass.__mixin.detect(addedRecord.type.PrototypeMixin);
|
4433
|
-
}
|
4434
|
-
if (ember$lib$main$$default.MODEL_FACTORY_INJECTIONS) {
|
4435
|
-
typeClass = typeClass.superclass;
|
4436
|
-
}
|
4437
|
-
return typeClass.detect(addedRecord.type);
|
4438
|
-
}
|
4439
|
-
|
4440
|
-
/**
|
4441
|
-
Check if the passed model has a `type` attribute or a relationship named `type`.
|
4442
|
-
|
4443
|
-
@method modelHasAttributeOrRelationshipNamedType
|
4444
|
-
@param modelClass
|
4445
|
-
*/
|
4446
|
-
function ember$data$lib$utils$$modelHasAttributeOrRelationshipNamedType(modelClass) {
|
4447
|
-
return ember$data$lib$utils$$get(modelClass, 'attributes').has('type') || ember$data$lib$utils$$get(modelClass, 'relationshipsByName').has('type');
|
4448
|
-
}
|
4449
|
-
|
4450
4493
|
var ember$data$lib$system$relationships$state$has$many$$default = ember$data$lib$system$relationships$state$has$many$$ManyRelationship;
|
4451
4494
|
function ember$data$lib$system$relationships$state$has$many$$ManyRelationship(store, record, inverseKey, relationshipMeta) {
|
4452
4495
|
this._super$constructor(store, record, inverseKey, relationshipMeta);
|
@@ -5161,6 +5204,7 @@
|
|
5161
5204
|
var ember$data$lib$system$model$internal$model$$Promise = Ember.RSVP.Promise;
|
5162
5205
|
var ember$data$lib$system$model$internal$model$$get = Ember.get;
|
5163
5206
|
var ember$data$lib$system$model$internal$model$$set = Ember.set;
|
5207
|
+
var ember$data$lib$system$model$internal$model$$copy = Ember.copy;
|
5164
5208
|
|
5165
5209
|
var ember$data$lib$system$model$internal$model$$_extractPivotNameCache = new ember$data$lib$system$empty$object$$default();
|
5166
5210
|
var ember$data$lib$system$model$internal$model$$_splitOnDotCache = new ember$data$lib$system$empty$object$$default();
|
@@ -5195,11 +5239,10 @@
|
|
5195
5239
|
|
5196
5240
|
@class InternalModel
|
5197
5241
|
*/
|
5198
|
-
function ember$data$lib$system$model$internal$model$$InternalModel(type, id, store,
|
5242
|
+
function ember$data$lib$system$model$internal$model$$InternalModel(type, id, store, _, data) {
|
5199
5243
|
this.type = type;
|
5200
5244
|
this.id = id;
|
5201
5245
|
this.store = store;
|
5202
|
-
this.container = container;
|
5203
5246
|
this._data = data || new ember$data$lib$system$empty$object$$default();
|
5204
5247
|
this.modelName = type.modelName;
|
5205
5248
|
this.dataHasInitialized = false;
|
@@ -5253,17 +5296,27 @@
|
|
5253
5296
|
constructor: ember$data$lib$system$model$internal$model$$InternalModel,
|
5254
5297
|
materializeRecord: function () {
|
5255
5298
|
Ember.assert("Materialized " + this.modelName + " record with id:" + this.id + "more than once", this.record === null || this.record === undefined);
|
5299
|
+
|
5256
5300
|
// lookupFactory should really return an object that creates
|
5257
5301
|
// instances with the injections applied
|
5258
|
-
|
5302
|
+
var createOptions = {
|
5259
5303
|
store: this.store,
|
5260
|
-
container: this.container,
|
5261
5304
|
_internalModel: this,
|
5262
5305
|
id: this.id,
|
5263
5306
|
currentState: ember$data$lib$system$model$internal$model$$get(this, 'currentState'),
|
5264
5307
|
isError: this.isError,
|
5265
5308
|
adapterError: this.error
|
5266
|
-
}
|
5309
|
+
};
|
5310
|
+
|
5311
|
+
if (Ember.setOwner) {
|
5312
|
+
// ensure that `Ember.getOwner(this)` works inside a model instance
|
5313
|
+
Ember.setOwner(createOptions, ember$data$lib$utils$$getOwner(this.store));
|
5314
|
+
} else {
|
5315
|
+
createOptions.container = this.store.container;
|
5316
|
+
}
|
5317
|
+
|
5318
|
+
this.record = this.type._create(createOptions);
|
5319
|
+
|
5267
5320
|
this._triggerDeferredTriggers();
|
5268
5321
|
},
|
5269
5322
|
|
@@ -5415,6 +5468,53 @@
|
|
5415
5468
|
this._attributes = new ember$data$lib$system$empty$object$$default();
|
5416
5469
|
},
|
5417
5470
|
|
5471
|
+
hasChangedAttributes: function () {
|
5472
|
+
return Object.keys(this._attributes).length > 0;
|
5473
|
+
},
|
5474
|
+
|
5475
|
+
/**
|
5476
|
+
Checks if the attributes which are considered as changed are still
|
5477
|
+
different to the state which is acknowledged by the server.
|
5478
|
+
This method is needed when data for the internal model is pushed and the
|
5479
|
+
pushed data might acknowledge dirty attributes as confirmed.
|
5480
|
+
*/
|
5481
|
+
updateChangedAttributes: function () {
|
5482
|
+
var changedAttributes = this.changedAttributes();
|
5483
|
+
var changedAttributeNames = Object.keys(changedAttributes);
|
5484
|
+
|
5485
|
+
for (var i = 0, _length = changedAttributeNames.length; i < _length; i++) {
|
5486
|
+
var attribute = changedAttributeNames[i];
|
5487
|
+
var _changedAttributes$attribute = changedAttributes[attribute];
|
5488
|
+
var oldData = _changedAttributes$attribute[0];
|
5489
|
+
var newData = _changedAttributes$attribute[1];
|
5490
|
+
|
5491
|
+
if (oldData === newData) {
|
5492
|
+
delete this._attributes[attribute];
|
5493
|
+
}
|
5494
|
+
}
|
5495
|
+
},
|
5496
|
+
|
5497
|
+
/**
|
5498
|
+
Returns an object, whose keys are changed properties, and value is an
|
5499
|
+
[oldProp, newProp] array.
|
5500
|
+
*/
|
5501
|
+
changedAttributes: function () {
|
5502
|
+
var oldData = this._data;
|
5503
|
+
var currentData = this._attributes;
|
5504
|
+
var inFlightData = this._inFlightAttributes;
|
5505
|
+
var newData = ember$data$lib$system$merge$$default(ember$data$lib$system$model$internal$model$$copy(inFlightData), currentData);
|
5506
|
+
var diffData = new ember$data$lib$system$empty$object$$default();
|
5507
|
+
|
5508
|
+
var newDataKeys = Object.keys(newData);
|
5509
|
+
|
5510
|
+
for (var i = 0, _length2 = newDataKeys.length; i < _length2; i++) {
|
5511
|
+
var key = newDataKeys[i];
|
5512
|
+
diffData[key] = [oldData[key], newData[key]];
|
5513
|
+
}
|
5514
|
+
|
5515
|
+
return diffData;
|
5516
|
+
},
|
5517
|
+
|
5418
5518
|
/**
|
5419
5519
|
@method adapterWillCommit
|
5420
5520
|
@private
|
@@ -6065,7 +6165,7 @@
|
|
6065
6165
|
store: this
|
6066
6166
|
});
|
6067
6167
|
this._pendingSave = [];
|
6068
|
-
this._instanceCache = new ember$data$lib$system$store$container$instance$cache$$default(this
|
6168
|
+
this._instanceCache = new ember$data$lib$system$store$container$instance$cache$$default(ember$data$lib$utils$$getOwner(this));
|
6069
6169
|
//Used to keep track of all the find requests that need to be coalesced
|
6070
6170
|
this._pendingFetch = ember$data$lib$system$store$$Map.create();
|
6071
6171
|
},
|
@@ -7233,11 +7333,12 @@
|
|
7233
7333
|
// container.registry = 2.1
|
7234
7334
|
// container._registry = 1.11 - 2.0
|
7235
7335
|
// container = < 1.11
|
7236
|
-
var
|
7237
|
-
|
7336
|
+
var owner = ember$data$lib$utils$$getOwner(this);
|
7337
|
+
|
7338
|
+
var mixin = owner._lookupFactory('mixin:' + normalizedModelName);
|
7238
7339
|
if (mixin) {
|
7239
7340
|
//Cache the class as a model
|
7240
|
-
|
7341
|
+
owner.register('model:' + normalizedModelName, DS.Model.extend(mixin));
|
7241
7342
|
}
|
7242
7343
|
var factory = this.modelFactoryFor(normalizedModelName);
|
7243
7344
|
if (factory) {
|
@@ -7275,7 +7376,10 @@
|
|
7275
7376
|
modelFactoryFor: function (modelName) {
|
7276
7377
|
Ember.assert('Passing classes to store methods has been removed. Please pass a dasherized string instead of ' + Ember.inspect(modelName), typeof modelName === 'string');
|
7277
7378
|
var normalizedKey = ember$data$lib$system$normalize$model$name$$default(modelName);
|
7278
|
-
|
7379
|
+
|
7380
|
+
var owner = ember$data$lib$utils$$getOwner(this);
|
7381
|
+
|
7382
|
+
return owner._lookupFactory('model:' + normalizedKey);
|
7279
7383
|
},
|
7280
7384
|
|
7281
7385
|
/**
|
@@ -7431,7 +7535,7 @@
|
|
7431
7535
|
},
|
7432
7536
|
|
7433
7537
|
_hasModelFor: function (type) {
|
7434
|
-
return this.
|
7538
|
+
return ember$data$lib$utils$$getOwner(this)._lookupFactory("model:" + type);
|
7435
7539
|
},
|
7436
7540
|
|
7437
7541
|
_pushInternalModel: function (data) {
|
@@ -7582,7 +7686,7 @@
|
|
7582
7686
|
|
7583
7687
|
// lookupFactory should really return an object that creates
|
7584
7688
|
// instances with the injections applied
|
7585
|
-
var internalModel = new ember$data$lib$system$model$internal$model$$default(type, id, this,
|
7689
|
+
var internalModel = new ember$data$lib$system$model$internal$model$$default(type, id, this, null, data);
|
7586
7690
|
|
7587
7691
|
// if we're creating an item, this process will be done
|
7588
7692
|
// later, once the object has been persisted.
|
@@ -8612,19 +8716,28 @@
|
|
8612
8716
|
@method normalizeUsingDeclaredMapping
|
8613
8717
|
@private
|
8614
8718
|
*/
|
8615
|
-
normalizeUsingDeclaredMapping: function (
|
8719
|
+
normalizeUsingDeclaredMapping: function (modelClass, hash) {
|
8616
8720
|
var attrs = ember$data$lib$serializers$json$serializer$$get(this, 'attrs');
|
8617
|
-
var payloadKey, key;
|
8721
|
+
var payloadKey, normalizedKey, key;
|
8618
8722
|
|
8619
8723
|
if (attrs) {
|
8620
8724
|
for (key in attrs) {
|
8621
|
-
payloadKey = this._getMappedKey(key);
|
8725
|
+
payloadKey = this._getMappedKey(key, modelClass);
|
8726
|
+
|
8622
8727
|
if (!hash.hasOwnProperty(payloadKey)) {
|
8623
8728
|
continue;
|
8624
8729
|
}
|
8625
8730
|
|
8626
|
-
if (
|
8627
|
-
|
8731
|
+
if (ember$data$lib$serializers$json$serializer$$get(modelClass, 'attributes').has(key)) {
|
8732
|
+
normalizedKey = this.keyForAttribute(key);
|
8733
|
+
}
|
8734
|
+
|
8735
|
+
if (ember$data$lib$serializers$json$serializer$$get(modelClass, 'relationshipsByName').has(key)) {
|
8736
|
+
normalizedKey = this.keyForRelationship(key);
|
8737
|
+
}
|
8738
|
+
|
8739
|
+
if (payloadKey !== normalizedKey) {
|
8740
|
+
hash[normalizedKey] = hash[payloadKey];
|
8628
8741
|
delete hash[payloadKey];
|
8629
8742
|
}
|
8630
8743
|
}
|
@@ -8654,7 +8767,9 @@
|
|
8654
8767
|
@param {String} key
|
8655
8768
|
@return {String} key
|
8656
8769
|
*/
|
8657
|
-
_getMappedKey: function (key) {
|
8770
|
+
_getMappedKey: function (key, modelClass) {
|
8771
|
+
Ember.assert('There is no attribute or relationship with the name `' + key + '` on `' + modelClass.modelName + '`. Check your serializers attrs hash.', ember$data$lib$serializers$json$serializer$$get(modelClass, 'attributes').has(key) || ember$data$lib$serializers$json$serializer$$get(modelClass, 'relationshipsByName').has(key));
|
8772
|
+
|
8658
8773
|
var attrs = ember$data$lib$serializers$json$serializer$$get(this, 'attrs');
|
8659
8774
|
var mappedKey;
|
8660
8775
|
if (attrs && attrs[key]) {
|
@@ -8919,7 +9034,7 @@
|
|
8919
9034
|
|
8920
9035
|
// if provided, use the mapping provided by `attrs` in
|
8921
9036
|
// the serializer
|
8922
|
-
var payloadKey = this._getMappedKey(key);
|
9037
|
+
var payloadKey = this._getMappedKey(key, snapshot.type);
|
8923
9038
|
|
8924
9039
|
if (payloadKey === key && this.keyForAttribute) {
|
8925
9040
|
payloadKey = this.keyForAttribute(key, 'serialize');
|
@@ -8957,7 +9072,7 @@
|
|
8957
9072
|
|
8958
9073
|
// if provided, use the mapping provided by `attrs` in
|
8959
9074
|
// the serializer
|
8960
|
-
var payloadKey = this._getMappedKey(key);
|
9075
|
+
var payloadKey = this._getMappedKey(key, snapshot.type);
|
8961
9076
|
if (payloadKey === key && this.keyForRelationship) {
|
8962
9077
|
payloadKey = this.keyForRelationship(key, "belongsTo", "serialize");
|
8963
9078
|
}
|
@@ -9005,7 +9120,7 @@
|
|
9005
9120
|
if (hasMany !== undefined) {
|
9006
9121
|
// if provided, use the mapping provided by `attrs` in
|
9007
9122
|
// the serializer
|
9008
|
-
var payloadKey = this._getMappedKey(key);
|
9123
|
+
var payloadKey = this._getMappedKey(key, snapshot.type);
|
9009
9124
|
if (payloadKey === key && this.keyForRelationship) {
|
9010
9125
|
payloadKey = this.keyForRelationship(key, "hasMany", "serialize");
|
9011
9126
|
}
|
@@ -9192,8 +9307,10 @@
|
|
9192
9307
|
@return {DS.Transform} transform
|
9193
9308
|
*/
|
9194
9309
|
transformFor: function (attributeType, skipAssertion) {
|
9195
|
-
var transform = this.
|
9310
|
+
var transform = ember$data$lib$utils$$getOwner(this).lookup('transform:' + attributeType);
|
9311
|
+
|
9196
9312
|
Ember.assert("Unable to find transform for '" + attributeType + "'", skipAssertion || !!transform);
|
9313
|
+
|
9197
9314
|
return transform;
|
9198
9315
|
}
|
9199
9316
|
});
|
@@ -9938,7 +10055,8 @@
|
|
9938
10055
|
value = transform.serialize(value);
|
9939
10056
|
}
|
9940
10057
|
|
9941
|
-
var payloadKey = this._getMappedKey(key);
|
10058
|
+
var payloadKey = this._getMappedKey(key, snapshot.type);
|
10059
|
+
|
9942
10060
|
if (payloadKey === key) {
|
9943
10061
|
payloadKey = this.keyForAttribute(key, 'serialize');
|
9944
10062
|
}
|
@@ -9962,7 +10080,7 @@
|
|
9962
10080
|
|
9963
10081
|
json.relationships = json.relationships || {};
|
9964
10082
|
|
9965
|
-
var payloadKey = this._getMappedKey(key);
|
10083
|
+
var payloadKey = this._getMappedKey(key, snapshot.type);
|
9966
10084
|
if (payloadKey === key) {
|
9967
10085
|
payloadKey = this.keyForRelationship(key, 'belongsTo', 'serialize');
|
9968
10086
|
}
|
@@ -9997,7 +10115,7 @@
|
|
9997
10115
|
|
9998
10116
|
json.relationships = json.relationships || {};
|
9999
10117
|
|
10000
|
-
var payloadKey = this._getMappedKey(key);
|
10118
|
+
var payloadKey = this._getMappedKey(key, snapshot.type);
|
10001
10119
|
if (payloadKey === key && this.keyForRelationship) {
|
10002
10120
|
payloadKey = this.keyForRelationship(key, 'hasMany', 'serialize');
|
10003
10121
|
}
|
@@ -11197,8 +11315,6 @@
|
|
11197
11315
|
*/
|
11198
11316
|
|
11199
11317
|
var ember$data$lib$system$model$model$$get = Ember.get;
|
11200
|
-
var ember$data$lib$system$model$model$$merge = Ember.merge;
|
11201
|
-
var ember$data$lib$system$model$model$$copy = Ember.copy;
|
11202
11318
|
|
11203
11319
|
function ember$data$lib$system$model$model$$intersection(array1, array2) {
|
11204
11320
|
var result = [];
|
@@ -11723,20 +11839,7 @@
|
|
11723
11839
|
and value is an [oldProp, newProp] array.
|
11724
11840
|
*/
|
11725
11841
|
changedAttributes: function () {
|
11726
|
-
|
11727
|
-
var currentData = ember$data$lib$system$model$model$$get(this._internalModel, '_attributes');
|
11728
|
-
var inFlightData = ember$data$lib$system$model$model$$get(this._internalModel, '_inFlightAttributes');
|
11729
|
-
var newData = ember$data$lib$system$model$model$$merge(ember$data$lib$system$model$model$$copy(inFlightData), currentData);
|
11730
|
-
var diffData = new ember$data$lib$system$empty$object$$default();
|
11731
|
-
|
11732
|
-
var newDataKeys = Object.keys(newData);
|
11733
|
-
|
11734
|
-
for (var i = 0, _length = newDataKeys.length; i < _length; i++) {
|
11735
|
-
var key = newDataKeys[i];
|
11736
|
-
diffData[key] = [oldData[key], newData[key]];
|
11737
|
-
}
|
11738
|
-
|
11739
|
-
return diffData;
|
11842
|
+
return this._internalModel.changedAttributes();
|
11740
11843
|
},
|
11741
11844
|
|
11742
11845
|
//TODO discuss with tomhuda about events/hooks
|
@@ -11947,6 +12050,23 @@
|
|
11947
12050
|
modelName: null
|
11948
12051
|
});
|
11949
12052
|
|
12053
|
+
// if `Ember.setOwner` is defined, accessing `this.container` is
|
12054
|
+
// deprecated (but functional). In "standard" Ember usage, this
|
12055
|
+
// deprecation is actually created via an `.extend` of the factory
|
12056
|
+
// inside the container itself, but that only happens on models
|
12057
|
+
// with MODEL_FACTORY_INJECTIONS enabled :(
|
12058
|
+
if (Ember.setOwner) {
|
12059
|
+
Object.defineProperty(ember$data$lib$system$model$model$$Model.prototype, 'container', {
|
12060
|
+
configurable: true,
|
12061
|
+
enumerable: false,
|
12062
|
+
get: function () {
|
12063
|
+
Ember.deprecate('Using the injected `container` is deprecated. Please use the `getOwner` helper instead to access the owner of this object.', false, { id: 'ember-application.injected-container', until: '3.0.0' });
|
12064
|
+
|
12065
|
+
return this.store.container;
|
12066
|
+
}
|
12067
|
+
});
|
12068
|
+
}
|
12069
|
+
|
11950
12070
|
var ember$data$lib$system$model$model$$default = ember$data$lib$system$model$model$$Model;
|
11951
12071
|
var ember$data$lib$system$model$attributes$$default = ember$data$lib$system$model$attributes$$attr;
|
11952
12072
|
|
@@ -12784,6 +12904,10 @@
|
|
12784
12904
|
json[key] = null;
|
12785
12905
|
} else {
|
12786
12906
|
json[key] = embeddedSnapshot.id;
|
12907
|
+
|
12908
|
+
if (relationship.options.polymorphic) {
|
12909
|
+
this.serializePolymorphicType(snapshot, json, relationship);
|
12910
|
+
}
|
12787
12911
|
}
|
12788
12912
|
} else if (includeRecords) {
|
12789
12913
|
this._serializeEmbeddedBelongsTo(snapshot, json, relationship);
|
@@ -12798,6 +12922,10 @@
|
|
12798
12922
|
} else {
|
12799
12923
|
json[serializedKey] = embeddedSnapshot.record.serialize({ includeId: true });
|
12800
12924
|
this.removeEmbeddedForeignKey(snapshot, embeddedSnapshot, relationship, json[serializedKey]);
|
12925
|
+
|
12926
|
+
if (relationship.options.polymorphic) {
|
12927
|
+
this.serializePolymorphicType(snapshot, json, relationship);
|
12928
|
+
}
|
12801
12929
|
}
|
12802
12930
|
},
|
12803
12931
|
|