Skip to content

Commit

Permalink
Merge pull request #4962 from rwjblue/strip-assertions
Browse files Browse the repository at this point in the history
Update to use built-in debug code stripping functionality.
  • Loading branch information
bmac committed May 3, 2017
2 parents 2caf05e + 6ec617e commit e6cb564
Show file tree
Hide file tree
Showing 39 changed files with 152 additions and 151 deletions.
80 changes: 30 additions & 50 deletions addon/-debug/index.js
Original file line number Diff line number Diff line change
@@ -1,49 +1,11 @@
import Ember from 'ember';

export function assert() {
return Ember.assert(...arguments);
}

export function debug() {
return Ember.debug(...arguments);
}

export function deprecate() {
return Ember.deprecate(...arguments);
}

export function info() {
return Ember.info(...arguments);
}

export function runInDebug() {
return Ember.runInDebug(...arguments);
}
import { assert } from '@ember/debug';
import { DEBUG } from '@glimmer/env';

export function instrument(method) {
return method();
}

export function warn() {
return Ember.warn(...arguments);
}

export function debugSeal() {
return Ember.debugSeal(...arguments);
}

function checkPolymorphic(modelClass, addedModelClass) {
if (modelClass.__isMixin) {
//TODO Need to do this in order to support mixins, should convert to public api
//once it exists in Ember
return modelClass.__mixin.detect(addedModelClass.PrototypeMixin);
}
if (Ember.MODEL_FACTORY_INJECTIONS) {
modelClass = modelClass.superclass;
}
return modelClass.detect(addedModelClass);
}

/*
Assert that `addedRecord` has a valid type so it can be added to the
relationship of the `record`.
Expand All @@ -63,13 +25,31 @@ function checkPolymorphic(modelClass, addedModelClass) {
@param {InternalModel} addedRecord record which
should be added/set for the relationship
*/
export function assertPolymorphicType(parentInternalModel, relationshipMeta, addedInternalModel) {
let addedModelName = addedInternalModel.modelName;
let parentModelName = parentInternalModel.modelName;
let key = relationshipMeta.key;
let relationshipModelName = relationshipMeta.type;
let relationshipClass = parentInternalModel.store.modelFor(relationshipModelName);
let assertionMessage = `You cannot add a record of modelClass '${addedModelName}' to the '${parentModelName}.${key}' relationship (only '${relationshipModelName}' allowed)`;

assert(assertionMessage, checkPolymorphic(relationshipClass, addedInternalModel.modelClass));
}
let assertPolymorphicType;

if (DEBUG) {
let checkPolymorphic = function checkPolymorphic(modelClass, addedModelClass) {
if (modelClass.__isMixin) {
//TODO Need to do this in order to support mixins, should convert to public api
//once it exists in Ember
return modelClass.__mixin.detect(addedModelClass.PrototypeMixin);
}
if (Ember.MODEL_FACTORY_INJECTIONS) {
modelClass = modelClass.superclass;
}
return modelClass.detect(addedModelClass);
};

assertPolymorphicType = function assertPolymorphicType(parentInternalModel, relationshipMeta, addedInternalModel) {
let addedModelName = addedInternalModel.modelName;
let parentModelName = parentInternalModel.modelName;
let key = relationshipMeta.key;
let relationshipModelName = relationshipMeta.type;
let relationshipClass = parentInternalModel.store.modelFor(relationshipModelName);
let assertionMessage = `You cannot add a record of modelClass '${addedModelName}' to the '${parentModelName}.${key}' relationship (only '${relationshipModelName}' allowed)`;

assert(assertionMessage, checkPolymorphic(relationshipClass, addedInternalModel.modelClass));
};
}

export { assertPolymorphicType }
2 changes: 1 addition & 1 deletion addon/-private/adapters/errors.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import Ember from 'ember';
import { assert } from 'ember-data/-debug';
import { assert } from '@ember/debug';

import isEnabled from '../features';

Expand Down
2 changes: 1 addition & 1 deletion addon/-private/system/internal-model-map.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { assert, deprecate } from 'ember-data/-debug';
import { assert, deprecate } from '@ember/debug';
import InternalModel from './model/internal-model';

/**
Expand Down
2 changes: 1 addition & 1 deletion addon/-private/system/many-array.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
@module ember-data
*/
import Ember from 'ember';
import { assert } from 'ember-data/-debug';
import { assert } from '@ember/debug';
import { PromiseArray } from "./promise-proxies";
import { _objectIsAlive } from "./store/common";
import diffArray from './diff-array';
Expand Down
2 changes: 1 addition & 1 deletion addon/-private/system/model/errors.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import Ember from 'ember';
import { deprecate, warn } from 'ember-data/-debug';
import { deprecate, warn } from '@ember/debug';

const get = Ember.get;
const set = Ember.set;
Expand Down
7 changes: 4 additions & 3 deletions addon/-private/system/model/internal-model.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import Ember from 'ember';
import { assert, runInDebug } from 'ember-data/-debug';
import { DEBUG } from '@glimmer/env';
import { assert } from '@ember/debug';
import RootState from "./states";
import Relationships from "../relationships/state/create";
import Snapshot from "../snapshot";
Expand Down Expand Up @@ -1188,13 +1189,13 @@ export default class InternalModel {
if (!reference) {
let relationship = this._relationships.get(name);

runInDebug(() => {
if (DEBUG) {
let modelName = this.modelName;
assert(`There is no ${kind} relationship named '${name}' on a model of modelClass '${modelName}'`, relationship);

let actualRelationshipKind = relationship.relationshipMeta.kind;
assert(`You tried to get the '${name}' relationship on a '${modelName}' via record.${kind}('${name}'), but the relationship is of kind '${actualRelationshipKind}'. Use record.${actualRelationshipKind}('${name}') instead.`, actualRelationshipKind === kind);
});
}

if (kind === "belongsTo") {
reference = new BelongsToReference(this.store, this, relationship);
Expand Down
13 changes: 7 additions & 6 deletions addon/-private/system/model/model.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import Ember from 'ember';
import { assert, deprecate, warn, runInDebug } from 'ember-data/-debug';
import { DEBUG } from '@glimmer/env';
import { assert, deprecate, warn } from '@ember/debug';
import { PromiseObject } from "../promise-proxies";
import Errors from "../model/errors";
import isEnabled from '../../features';
Expand Down Expand Up @@ -1130,7 +1131,7 @@ Object.defineProperty(Model.prototype, 'data', {
}
});

runInDebug(function() {
if (DEBUG) {
Model.reopen({
init() {
this._super(...arguments);
Expand All @@ -1140,7 +1141,7 @@ runInDebug(function() {
}
}
});
});
}

Model.reopenClass({
isModel: true,
Expand Down Expand Up @@ -1875,7 +1876,7 @@ if (isEnabled('ds-rollback-attribute')) {
});
}

runInDebug(() => {
if (DEBUG) {
Model.reopen({
// This is a temporary solution until we refactor DS.Model to not
// rely on the data property.
Expand Down Expand Up @@ -1923,7 +1924,7 @@ runInDebug(() => {
meta.parentType = proto.constructor;
}
}
})
});
});
}

export default Model;
2 changes: 1 addition & 1 deletion addon/-private/system/model/states.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
/**
@module ember-data
*/
import { assert } from 'ember-data/-debug';
import { assert } from '@ember/debug';

/*
This file encapsulates the various states that a record can transition
Expand Down
2 changes: 1 addition & 1 deletion addon/-private/system/promise-proxies.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import Ember from 'ember';
import { assert } from 'ember-data/-debug';
import { assert } from '@ember/debug';

const { get , RSVP: { Promise }} = Ember;

Expand Down
2 changes: 1 addition & 1 deletion addon/-private/system/record-array-manager.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import {
FilteredRecordArray,
AdapterPopulatedRecordArray
} from "./record-arrays";
import { assert } from 'ember-data/-debug';
import { assert } from '@ember/debug';

const {
get,
Expand Down
4 changes: 2 additions & 2 deletions addon/-private/system/references/belongs-to.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@ import Ember from 'ember';
import Reference from './reference';

import isEnabled from '../../features';
import { assertPolymorphicType, deprecate } from 'ember-data/-debug';

import { deprecate } from '@ember/debug';
import { assertPolymorphicType } from 'ember-data/-debug';

/**
A BelongsToReference is a low level API that allows users and
Expand Down
16 changes: 7 additions & 9 deletions addon/-private/system/references/has-many.js
Original file line number Diff line number Diff line change
@@ -1,10 +1,8 @@
import Ember from 'ember';
import Reference from './reference';
import {
assertPolymorphicType,
deprecate,
runInDebug
} from 'ember-data/-debug';
import { DEBUG } from '@glimmer/env';
import { deprecate } from '@ember/debug';
import { assertPolymorphicType } from 'ember-data/-debug';

import isEnabled from '../../features';

Expand Down Expand Up @@ -278,23 +276,23 @@ HasManyReference.prototype.push = function(objectOrPromise) {
internalModels = array.map((obj) => {
let record = this.store.push(obj);

runInDebug(() => {
if (DEBUG) {
let relationshipMeta = this.hasManyRelationship.relationshipMeta;
assertPolymorphicType(this.internalModel, relationshipMeta, record._internalModel);
});
}

return record._internalModel;
});
} else {
let records = this.store.push(payload);
internalModels = Ember.A(records).mapBy('_internalModel');

runInDebug(() => {
if (DEBUG) {
internalModels.forEach((internalModel) => {
let relationshipMeta = this.hasManyRelationship.relationshipMeta;
assertPolymorphicType(this.internalModel, relationshipMeta, internalModel);
});
});
}
}

this.hasManyRelationship.computeChanges(internalModels);
Expand Down
6 changes: 4 additions & 2 deletions addon/-private/system/relationship-meta.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import {singularize} from 'ember-inflector';
import normalizeModelName from './normalize-model-name';
import { runInDebug } from 'ember-data/-debug';
import { DEBUG } from '@glimmer/env';

export function typeForRelationshipMeta(meta) {
let modelName;
Expand All @@ -23,7 +23,9 @@ export function relationshipFromMeta(meta) {
isRelationship: true
};

runInDebug(() => result.parentType = meta.parentType);
if (DEBUG) {
result.parentType = meta.parentType;
}

return result;
}
2 changes: 1 addition & 1 deletion addon/-private/system/relationships/belongs-to.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import Ember from 'ember';
import { assert, warn } from 'ember-data/-debug';
import { assert, warn } from '@ember/debug';
import normalizeModelName from "../normalize-model-name";

/**
Expand Down
2 changes: 1 addition & 1 deletion addon/-private/system/relationships/ext.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import Ember from 'ember';
import { assert } from 'ember-data/-debug';
import { assert } from '@ember/debug';
import {
typeForRelationshipMeta,
relationshipFromMeta
Expand Down
2 changes: 1 addition & 1 deletion addon/-private/system/relationships/has-many.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
*/

import Ember from 'ember';
import { assert } from 'ember-data/-debug';
import { assert } from '@ember/debug';
import normalizeModelName from "../normalize-model-name";
import isArrayLike from "../is-array-like";

Expand Down
3 changes: 1 addition & 2 deletions addon/-private/system/relationships/relationship-payloads.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { assert } from 'ember-data/-debug';
import { assert } from '@ember/debug';

/**
Manages the payloads for both sides of a single relationship, across all model
Expand Down Expand Up @@ -356,4 +356,3 @@ export default class RelationshipPayloads {
}
}
}

4 changes: 2 additions & 2 deletions addon/-private/system/relationships/state/belongs-to.js
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import Ember from 'ember';
import {
assertPolymorphicType,
assert
} from 'ember-data/-debug';
} from '@ember/debug';
import { assertPolymorphicType } from 'ember-data/-debug';
import {
PromiseObject
} from "../../promise-proxies";
Expand Down
8 changes: 3 additions & 5 deletions addon/-private/system/relationships/state/create.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import Ember from 'ember';
import ManyRelationship from "./has-many";
import BelongsToRelationship from "./belongs-to";
import { runInDebug } from 'ember-data/-debug';
import { DEBUG } from '@glimmer/env';

const { get } = Ember;

Expand All @@ -16,10 +16,8 @@ function createRelationshipFor(internalModel, relationshipMeta, store) {

if (shouldFindInverse(relationshipMeta)) {
inverse = internalModel.type.inverseFor(relationshipMeta.key, store);
} else {
runInDebug(() => {
internalModel.type.typeForRelationship(relationshipMeta.key, store);
});
} else if (DEBUG) {
internalModel.type.typeForRelationship(relationshipMeta.key, store);
}

if (inverse) {
Expand Down
3 changes: 2 additions & 1 deletion addon/-private/system/relationships/state/has-many.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import { assert, assertPolymorphicType } from 'ember-data/-debug';
import { assert } from '@ember/debug';
import { assertPolymorphicType } from 'ember-data/-debug';
import { PromiseManyArray } from '../../promise-proxies';
import Relationship from './relationship';
import OrderedSet from '../../ordered-set';
Expand Down
2 changes: 1 addition & 1 deletion addon/-private/system/relationships/state/relationship.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/* global heimdall */
import { assert, warn } from 'ember-data/-debug';
import { assert, warn } from '@ember/debug';
import OrderedSet from '../../ordered-set';
import _normalizeLink from '../../normalize-link';

Expand Down
Loading

0 comments on commit e6cb564

Please sign in to comment.