@ember-data/model 5.3.0-alpha.8 → 5.3.0-beta.0
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.
- package/addon/-private.js +2 -2
- package/addon/{has-many-435cd213.js → has-many-0759b264.js} +21 -10
- package/addon/has-many-0759b264.js.map +1 -0
- package/addon/{hooks-f9d9fb4f.js → hooks-0482f3cc.js} +2 -2
- package/addon/hooks-0482f3cc.js.map +1 -0
- package/addon/hooks.js +1 -1
- package/addon/index.js +3 -3
- package/addon/{model-99cdd629.js → model-48ae96f9.js} +48 -32
- package/addon/model-48ae96f9.js.map +1 -0
- package/package.json +23 -23
- package/addon/has-many-435cd213.js.map +0 -1
- package/addon/hooks-f9d9fb4f.js.map +0 -1
- package/addon/model-99cdd629.js.map +0 -1
package/addon/-private.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { a as attr, b as belongsTo, h as hasMany } from "./has-many-
|
|
2
|
-
export { E as Errors, L as LEGACY_SUPPORT, R as ManyArray, M as Model, P as PromiseBelongsTo, a as PromiseManyArray } from "./model-
|
|
1
|
+
export { a as attr, b as belongsTo, h as hasMany } from "./has-many-0759b264";
|
|
2
|
+
export { E as Errors, L as LEGACY_SUPPORT, R as ManyArray, M as Model, P as PromiseBelongsTo, a as PromiseManyArray } from "./model-48ae96f9";
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { macroCondition, getOwnConfig } from '@embroider/macros';
|
|
2
|
-
import { assert, warn } from '@ember/debug';
|
|
2
|
+
import { assert, warn, deprecate } from '@ember/debug';
|
|
3
3
|
import { computed } from '@ember/object';
|
|
4
4
|
import { recordIdentifierFor } from '@ember-data/store';
|
|
5
5
|
import { peekCache } from '@ember-data/store/-private';
|
|
6
|
-
import { c as computedMacroWithOptionalParams, l as lookupLegacySupport } from "./model-
|
|
7
|
-
import { dasherize } from '@ember/string';
|
|
6
|
+
import { c as computedMacroWithOptionalParams, n as normalizeModelName, l as lookupLegacySupport } from "./model-48ae96f9";
|
|
8
7
|
import { A } from '@ember/array';
|
|
8
|
+
import { dasherize } from '@ember/string';
|
|
9
9
|
import { singularize } from 'ember-inflector';
|
|
10
10
|
|
|
11
11
|
/**
|
|
@@ -153,9 +153,7 @@ function attr(type, options) {
|
|
|
153
153
|
}).meta(meta);
|
|
154
154
|
}
|
|
155
155
|
var attr$1 = computedMacroWithOptionalParams(attr);
|
|
156
|
-
|
|
157
|
-
return dasherize(type);
|
|
158
|
-
}
|
|
156
|
+
|
|
159
157
|
/**
|
|
160
158
|
@module @ember-data/model
|
|
161
159
|
*/
|
|
@@ -253,10 +251,10 @@ function normalizeType$1(type) {
|
|
|
253
251
|
function belongsTo(modelName, options) {
|
|
254
252
|
let opts = options;
|
|
255
253
|
let userEnteredModelName = modelName;
|
|
256
|
-
assert(`Expected
|
|
257
|
-
assert(`Expected
|
|
254
|
+
assert(`Expected options.async from @belongsTo('${userEnteredModelName}', options) to be a boolean`, opts && typeof opts.async === 'boolean');
|
|
255
|
+
assert(`Expected options.inverse from @belongsTo('${userEnteredModelName}', options) to be either null or the string type of the related resource.`, opts.inverse === null || typeof opts.inverse === 'string' && opts.inverse.length > 0);
|
|
258
256
|
let meta = {
|
|
259
|
-
type:
|
|
257
|
+
type: normalizeModelName(userEnteredModelName),
|
|
260
258
|
isRelationship: true,
|
|
261
259
|
options: opts,
|
|
262
260
|
kind: 'belongsTo',
|
|
@@ -305,7 +303,20 @@ function belongsTo(modelName, options) {
|
|
|
305
303
|
}
|
|
306
304
|
var belongsTo$1 = computedMacroWithOptionalParams(belongsTo);
|
|
307
305
|
function normalizeType(type) {
|
|
308
|
-
|
|
306
|
+
if (macroCondition(getOwnConfig().deprecations.DEPRECATE_NON_STRICT_TYPES)) {
|
|
307
|
+
const result = singularize(dasherize(type));
|
|
308
|
+
deprecate(`The resource type '${type}' is not normalized. Update your application code to use '${result}' instead of '${type}'.`, result === type, {
|
|
309
|
+
id: 'ember-data:deprecate-non-strict-types',
|
|
310
|
+
until: '6.0',
|
|
311
|
+
for: 'ember-data',
|
|
312
|
+
since: {
|
|
313
|
+
available: '5.3',
|
|
314
|
+
enabled: '5.3'
|
|
315
|
+
}
|
|
316
|
+
});
|
|
317
|
+
return result;
|
|
318
|
+
}
|
|
319
|
+
return type;
|
|
309
320
|
}
|
|
310
321
|
|
|
311
322
|
/**
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"has-many-0759b264.js","sources":["../src/-private/attr.js","../src/-private/belongs-to.js","../src/-private/has-many.js"],"sourcesContent":["import { assert } from '@ember/debug';\nimport { computed } from '@ember/object';\n\nimport { DEBUG } from '@ember-data/env';\nimport { recordIdentifierFor } from '@ember-data/store';\nimport { peekCache } from '@ember-data/store/-private';\n\nimport { computedMacroWithOptionalParams } from './util';\n\n/**\n @module @ember-data/model\n*/\n\n/**\n `attr` defines an attribute on a [Model](/ember-data/release/classes/Model).\n By default, attributes are passed through as-is, however you can specify an\n optional type to have the value automatically transformed.\n Ember Data ships with four basic transform types: `string`, `number`,\n `boolean` and `date`. You can define your own transforms by subclassing\n [Transform](/ember-data/release/classes/Transform).\n\n Note that you cannot use `attr` to define an attribute of `id`.\n\n `attr` takes an optional hash as a second parameter, currently\n supported options are:\n\n - `defaultValue`: Pass a string or a function to be called to set the attribute\n to a default value if and only if the key is absent from the payload response.\n\n Example\n\n ```app/models/user.js\n import Model, { attr } from '@ember-data/model';\n\n export default class UserModel extends Model {\n @attr('string') username;\n @attr('string') email;\n @attr('boolean', { defaultValue: false }) verified;\n }\n ```\n\n Default value can also be a function. This is useful it you want to return\n a new object for each attribute.\n\n ```app/models/user.js\n import Model, { attr } from '@ember-data/model';\n\n export default class UserModel extends Model {\n @attr('string') username;\n @attr('string') email;\n\n @attr({\n defaultValue() {\n return {};\n }\n })\n settings;\n }\n ```\n\n The `options` hash is passed as second argument to a transforms'\n `serialize` and `deserialize` method. This allows to configure a\n transformation and adapt the corresponding value, based on the config:\n\n ```app/models/post.js\n import Model, { attr } from '@ember-data/model';\n\n export default class PostModel extends Model {\n @attr('text', {\n uppercase: true\n })\n text;\n }\n ```\n\n ```app/transforms/text.js\n export default class TextTransform {\n serialize(value, options) {\n if (options.uppercase) {\n return value.toUpperCase();\n }\n\n return value;\n }\n\n deserialize(value) {\n return value;\n }\n\n static create() {\n return new this();\n }\n }\n ```\n\n @method attr\n @public\n @static\n @for @ember-data/model\n @param {String|Object} type the attribute type\n @param {Object} options a hash of options\n @return {Attribute}\n*/\nfunction attr(type, options) {\n if (typeof type === 'object') {\n options = type;\n type = undefined;\n } else {\n options = options || {};\n }\n\n let meta = {\n type: type,\n isAttribute: true,\n options: options,\n };\n\n return computed({\n get(key) {\n if (DEBUG) {\n if (['currentState'].indexOf(key) !== -1) {\n throw new Error(\n `'${key}' is a reserved property name on instances of classes extending Model. Please choose a different property name for your attr on ${this.constructor.toString()}`\n );\n }\n }\n if (this.isDestroyed || this.isDestroying) {\n return;\n }\n return peekCache(this).getAttr(recordIdentifierFor(this), key);\n },\n set(key, value) {\n if (DEBUG) {\n if (['currentState'].indexOf(key) !== -1) {\n throw new Error(\n `'${key}' is a reserved property name on instances of classes extending Model. Please choose a different property name for your attr on ${this.constructor.toString()}`\n );\n }\n }\n assert(\n `Attempted to set '${key}' on the deleted record ${recordIdentifierFor(this)}`,\n !this.currentState.isDeleted\n );\n const identifier = recordIdentifierFor(this);\n const cache = peekCache(this);\n\n let currentValue = cache.getAttr(identifier, key);\n if (currentValue !== value) {\n cache.setAttr(identifier, key, value);\n\n if (!this.isValid) {\n const { errors } = this;\n if (errors.get(key)) {\n errors.remove(key);\n this.currentState.cleanErrorRequests();\n }\n }\n }\n\n return value;\n },\n }).meta(meta);\n}\n\nexport default computedMacroWithOptionalParams(attr);\n","import { assert, warn } from '@ember/debug';\nimport { computed } from '@ember/object';\n\nimport { DEBUG } from '@ember-data/env';\n\nimport { lookupLegacySupport } from './model';\nimport { computedMacroWithOptionalParams, normalizeModelName } from './util';\n\n/**\n @module @ember-data/model\n*/\n\n/**\n `belongsTo` is used to define One-To-One and One-To-Many\n relationships on a [Model](/ember-data/release/classes/Model).\n\n\n `belongsTo` takes an optional hash as a second parameter, currently\n supported options are:\n\n - `async`: A boolean value used to explicitly declare this to be an async relationship. The default is true.\n - `inverse`: A string used to identify the inverse property on a\n related model in a One-To-Many relationship. See [Explicit Inverses](#explicit-inverses)\n - `polymorphic` A boolean value to mark the relationship as polymorphic\n\n #### One-To-One\n To declare a one-to-one relationship between two models, use\n `belongsTo`:\n\n ```app/models/user.js\n import Model, { belongsTo } from '@ember-data/model';\n\n export default class UserModel extends Model {\n @belongsTo('profile') profile;\n }\n ```\n\n ```app/models/profile.js\n import Model, { belongsTo } from '@ember-data/model';\n\n export default class ProfileModel extends Model {\n @belongsTo('user') user;\n }\n ```\n\n #### One-To-Many\n\n To declare a one-to-many relationship between two models, use\n `belongsTo` in combination with `hasMany`, like this:\n\n ```app/models/post.js\n import Model, { hasMany } from '@ember-data/model';\n\n export default class PostModel extends Model {\n @hasMany('comment', { async: false, inverse: 'post' }) comments;\n }\n ```\n\n ```app/models/comment.js\n import Model, { belongsTo } from '@ember-data/model';\n\n export default class CommentModel extends Model {\n @belongsTo('post', { async: false, inverse: 'comments' }) post;\n }\n ```\n\n #### Sync relationships\n\n Ember Data resolves sync relationships with the related resources\n available in its local store, hence it is expected these resources\n to be loaded before or along-side the primary resource.\n\n ```app/models/comment.js\n import Model, { belongsTo } from '@ember-data/model';\n\n export default class CommentModel extends Model {\n @belongsTo('post', {\n async: false,\n inverse: null\n })\n post;\n }\n ```\n\n In contrast to async relationship, accessing a sync relationship\n will always return the record (Model instance) for the existing\n local resource, or null. But it will error on access when\n a related resource is known to exist and it has not been loaded.\n\n ```\n let post = comment.post;\n\n ```\n\n @method belongsTo\n @public\n @static\n @for @ember-data/model\n @param {String} modelName (optional) type of the relationship\n @param {Object} options (optional) a hash of options\n @return {Ember.computed} relationship\n*/\nfunction belongsTo(modelName, options) {\n let opts = options;\n let userEnteredModelName = modelName;\n\n assert(\n `Expected options.async from @belongsTo('${userEnteredModelName}', options) to be a boolean`,\n opts && typeof opts.async === 'boolean'\n );\n assert(\n `Expected options.inverse from @belongsTo('${userEnteredModelName}', options) to be either null or the string type of the related resource.`,\n opts.inverse === null || (typeof opts.inverse === 'string' && opts.inverse.length > 0)\n );\n\n let meta = {\n type: normalizeModelName(userEnteredModelName),\n isRelationship: true,\n options: opts,\n kind: 'belongsTo',\n name: 'Belongs To',\n key: null,\n };\n\n return computed({\n get(key) {\n // this is a legacy behavior we may not carry into a new model setup\n // it's better to error on disconnected records so users find errors\n // in their logic.\n if (this.isDestroying || this.isDestroyed) {\n return null;\n }\n const support = lookupLegacySupport(this);\n\n if (DEBUG) {\n if (['currentState'].indexOf(key) !== -1) {\n throw new Error(\n `'${key}' is a reserved property name on instances of classes extending Model. Please choose a different property name for your belongsTo on ${this.constructor.toString()}`\n );\n }\n if (Object.prototype.hasOwnProperty.call(opts, 'serialize')) {\n warn(\n `You provided a serialize option on the \"${key}\" property in the \"${support.identifier.type}\" class, this belongs in the serializer. See Serializer and it's implementations https://api.emberjs.com/ember-data/release/classes/Serializer`,\n false,\n {\n id: 'ds.model.serialize-option-in-belongs-to',\n }\n );\n }\n\n if (Object.prototype.hasOwnProperty.call(opts, 'embedded')) {\n warn(\n `You provided an embedded option on the \"${key}\" property in the \"${support.identifier.type}\" class, this belongs in the serializer. See EmbeddedRecordsMixin https://api.emberjs.com/ember-data/release/classes/EmbeddedRecordsMixin`,\n false,\n {\n id: 'ds.model.embedded-option-in-belongs-to',\n }\n );\n }\n }\n\n return support.getBelongsTo(key);\n },\n set(key, value) {\n const support = lookupLegacySupport(this);\n if (DEBUG) {\n if (['currentState'].indexOf(key) !== -1) {\n throw new Error(\n `'${key}' is a reserved property name on instances of classes extending Model. Please choose a different property name for your belongsTo on ${this.constructor.toString()}`\n );\n }\n }\n this.store._join(() => {\n support.setDirtyBelongsTo(key, value);\n });\n\n return support.getBelongsTo(key);\n },\n }).meta(meta);\n}\n\nexport default computedMacroWithOptionalParams(belongsTo);\n","/**\n @module @ember-data/model\n*/\nimport { A } from '@ember/array';\nimport { assert, deprecate } from '@ember/debug';\nimport { computed } from '@ember/object';\nimport { dasherize } from '@ember/string';\n\nimport { singularize } from 'ember-inflector';\n\nimport { DEPRECATE_NON_STRICT_TYPES } from '@ember-data/deprecations';\nimport { DEBUG } from '@ember-data/env';\n\nimport { lookupLegacySupport } from './model';\nimport { computedMacroWithOptionalParams } from './util';\n\nfunction normalizeType(type) {\n if (DEPRECATE_NON_STRICT_TYPES) {\n const result = singularize(dasherize(type));\n\n deprecate(\n `The resource type '${type}' is not normalized. Update your application code to use '${result}' instead of '${type}'.`,\n result === type,\n {\n id: 'ember-data:deprecate-non-strict-types',\n until: '6.0',\n for: 'ember-data',\n since: {\n available: '5.3',\n enabled: '5.3',\n },\n }\n );\n\n return result;\n }\n\n return type;\n}\n\n/**\n `hasMany` is used to define One-To-Many and Many-To-Many\n relationships on a [Model](/ember-data/release/classes/Model).\n\n `hasMany` takes an optional hash as a second parameter, currently\n supported options are:\n\n - `async`: A boolean value used to explicitly declare this to be an async relationship. The default is true.\n - `inverse`: A string used to identify the inverse property on a related model.\n - `polymorphic` A boolean value to mark the relationship as polymorphic\n\n #### One-To-Many\n To declare a one-to-many relationship between two models, use\n `belongsTo` in combination with `hasMany`, like this:\n\n ```app/models/post.js\n import Model, { hasMany } from '@ember-data/model';\n\n export default class PostModel extends Model {\n @hasMany('comment') comments;\n }\n ```\n\n ```app/models/comment.js\n import Model, { belongsTo } from '@ember-data/model';\n\n export default class CommentModel extends Model {\n @belongsTo('post') post;\n }\n ```\n\n #### Many-To-Many\n To declare a many-to-many relationship between two models, use\n `hasMany`:\n\n ```app/models/post.js\n import Model, { hasMany } from '@ember-data/model';\n\n export default class PostModel extends Model {\n @hasMany('tag') tags;\n }\n ```\n\n ```app/models/tag.js\n import Model, { hasMany } from '@ember-data/model';\n\n export default class TagModel extends Model {\n @hasMany('post') posts;\n }\n ```\n\n You can avoid passing a string as the first parameter. In that case Ember Data\n will infer the type from the singularized key name.\n\n ```app/models/post.js\n import Model, { hasMany } from '@ember-data/model';\n\n export default class PostModel extends Model {\n @hasMany tags;\n }\n ```\n\n will lookup for a Tag type.\n\n #### Explicit Inverses\n\n Ember Data will do its best to discover which relationships map to\n one another. In the one-to-many code above, for example, Ember Data\n can figure out that changing the `comments` relationship should update\n the `post` relationship on the inverse because post is the only\n relationship to that model.\n\n However, sometimes you may have multiple `belongsTo`/`hasMany` for the\n same type. You can specify which property on the related model is\n the inverse using `hasMany`'s `inverse` option:\n\n ```app/models/comment.js\n import Model, { belongsTo } from '@ember-data/model';\n\n export default class CommentModel extends Model {\n @belongsTo('post') onePost;\n @belongsTo('post') twoPost\n @belongsTo('post') redPost;\n @belongsTo('post') bluePost;\n }\n ```\n\n ```app/models/post.js\n import Model, { hasMany } from '@ember-data/model';\n\n export default class PostModel extends Model {\n @hasMany('comment', {\n inverse: 'redPost'\n })\n comments;\n }\n ```\n\n You can also specify an inverse on a `belongsTo`, which works how\n you'd expect.\n\n #### Sync relationships\n\n Ember Data resolves sync relationships with the related resources\n available in its local store, hence it is expected these resources\n to be loaded before or along-side the primary resource.\n\n ```app/models/post.js\n import Model, { hasMany } from '@ember-data/model';\n\n export default class PostModel extends Model {\n @hasMany('comment', {\n async: false\n })\n comments;\n }\n ```\n\n In contrast to async relationship, accessing a sync relationship\n will always return a [ManyArray](/ember-data/release/classes/ManyArray) instance\n containing the existing local resources. But it will error on access\n when any of the known related resources have not been loaded.\n\n ```\n post.comments.forEach((comment) => {\n\n });\n\n ```\n\n If you are using `links` with sync relationships, you have to use\n `ref.reload` to fetch the resources.\n\n @method hasMany\n @public\n @static\n @for @ember-data/model\n @param {String} type (optional) type of the relationship\n @param {Object} options (optional) a hash of options\n @return {Ember.computed} relationship\n*/\nfunction hasMany(type, options) {\n assert(`Expected hasMany options.async to be a boolean`, options && typeof options.async === 'boolean');\n\n // Metadata about relationships is stored on the meta of\n // the relationship. This is used for introspection and\n // serialization. Note that `key` is populated lazily\n // the first time the CP is called.\n let meta = {\n type: normalizeType(type),\n options,\n isRelationship: true,\n kind: 'hasMany',\n name: 'Has Many',\n key: null,\n };\n\n return computed({\n get(key) {\n if (DEBUG) {\n if (['currentState'].indexOf(key) !== -1) {\n throw new Error(\n `'${key}' is a reserved property name on instances of classes extending Model. Please choose a different property name for your hasMany on ${this.constructor.toString()}`\n );\n }\n }\n if (this.isDestroying || this.isDestroyed) {\n return A();\n }\n return lookupLegacySupport(this).getHasMany(key);\n },\n set(key, records) {\n if (DEBUG) {\n if (['currentState'].indexOf(key) !== -1) {\n throw new Error(\n `'${key}' is a reserved property name on instances of classes extending Model. Please choose a different property name for your hasMany on ${this.constructor.toString()}`\n );\n }\n }\n const support = lookupLegacySupport(this);\n const manyArray = support.getManyArray(key);\n assert(`You must pass an array of records to set a hasMany relationship`, Array.isArray(records));\n this.store._join(() => {\n manyArray.splice(0, manyArray.length, ...records);\n });\n\n return support.getHasMany(key);\n },\n }).meta(meta);\n}\n\nexport default computedMacroWithOptionalParams(hasMany);\n"],"names":["attr","type","options","undefined","meta","isAttribute","computed","get","key","macroCondition","getOwnConfig","env","DEBUG","indexOf","Error","constructor","toString","isDestroyed","isDestroying","peekCache","getAttr","recordIdentifierFor","set","value","assert","currentState","isDeleted","identifier","cache","currentValue","setAttr","isValid","errors","remove","cleanErrorRequests","computedMacroWithOptionalParams","belongsTo","modelName","opts","userEnteredModelName","async","inverse","length","normalizeModelName","isRelationship","kind","name","support","lookupLegacySupport","Object","prototype","hasOwnProperty","call","warn","id","getBelongsTo","store","_join","setDirtyBelongsTo","normalizeType","deprecations","DEPRECATE_NON_STRICT_TYPES","result","singularize","dasherize","deprecate","until","for","since","available","enabled","hasMany","A","getHasMany","records","manyArray","getManyArray","Array","isArray","splice"],"mappings":";;;;;;;;;;AASA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASA,IAAIA,CAACC,IAAI,EAAEC,OAAO,EAAE;AAC3B,EAAA,IAAI,OAAOD,IAAI,KAAK,QAAQ,EAAE;AAC5BC,IAAAA,OAAO,GAAGD,IAAI,CAAA;AACdA,IAAAA,IAAI,GAAGE,SAAS,CAAA;AAClB,GAAC,MAAM;AACLD,IAAAA,OAAO,GAAGA,OAAO,IAAI,EAAE,CAAA;AACzB,GAAA;AAEA,EAAA,IAAIE,IAAI,GAAG;AACTH,IAAAA,IAAI,EAAEA,IAAI;AACVI,IAAAA,WAAW,EAAE,IAAI;AACjBH,IAAAA,OAAO,EAAEA,OAAAA;GACV,CAAA;AAED,EAAA,OAAOI,QAAQ,CAAC;IACdC,GAAGA,CAACC,GAAG,EAAE;AACP,MAAA,IAAAC,cAAA,CAAAC,YAAA,GAAAC,GAAA,CAAAC,KAAA,CAAW,EAAA;QACT,IAAI,CAAC,cAAc,CAAC,CAACC,OAAO,CAACL,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE;AACxC,UAAA,MAAM,IAAIM,KAAK,CACZ,CAAA,CAAA,EAAGN,GAAI,CAAkI,gIAAA,EAAA,IAAI,CAACO,WAAW,CAACC,QAAQ,EAAG,EACxK,CAAC,CAAA;AACH,SAAA;AACF,OAAA;AACA,MAAA,IAAI,IAAI,CAACC,WAAW,IAAI,IAAI,CAACC,YAAY,EAAE;AACzC,QAAA,OAAA;AACF,OAAA;AACA,MAAA,OAAOC,SAAS,CAAC,IAAI,CAAC,CAACC,OAAO,CAACC,mBAAmB,CAAC,IAAI,CAAC,EAAEb,GAAG,CAAC,CAAA;KAC/D;AACDc,IAAAA,GAAGA,CAACd,GAAG,EAAEe,KAAK,EAAE;AACd,MAAA,IAAAd,cAAA,CAAAC,YAAA,GAAAC,GAAA,CAAAC,KAAA,CAAW,EAAA;QACT,IAAI,CAAC,cAAc,CAAC,CAACC,OAAO,CAACL,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE;AACxC,UAAA,MAAM,IAAIM,KAAK,CACZ,CAAA,CAAA,EAAGN,GAAI,CAAkI,gIAAA,EAAA,IAAI,CAACO,WAAW,CAACC,QAAQ,EAAG,EACxK,CAAC,CAAA;AACH,SAAA;AACF,OAAA;AACAQ,MAAAA,MAAM,CACH,CAAoBhB,kBAAAA,EAAAA,GAAI,CAA0Ba,wBAAAA,EAAAA,mBAAmB,CAAC,IAAI,CAAE,CAAC,CAAA,EAC9E,CAAC,IAAI,CAACI,YAAY,CAACC,SACrB,CAAC,CAAA;AACD,MAAA,MAAMC,UAAU,GAAGN,mBAAmB,CAAC,IAAI,CAAC,CAAA;AAC5C,MAAA,MAAMO,KAAK,GAAGT,SAAS,CAAC,IAAI,CAAC,CAAA;MAE7B,IAAIU,YAAY,GAAGD,KAAK,CAACR,OAAO,CAACO,UAAU,EAAEnB,GAAG,CAAC,CAAA;MACjD,IAAIqB,YAAY,KAAKN,KAAK,EAAE;QAC1BK,KAAK,CAACE,OAAO,CAACH,UAAU,EAAEnB,GAAG,EAAEe,KAAK,CAAC,CAAA;AAErC,QAAA,IAAI,CAAC,IAAI,CAACQ,OAAO,EAAE;UACjB,MAAM;AAAEC,YAAAA,MAAAA;AAAO,WAAC,GAAG,IAAI,CAAA;AACvB,UAAA,IAAIA,MAAM,CAACzB,GAAG,CAACC,GAAG,CAAC,EAAE;AACnBwB,YAAAA,MAAM,CAACC,MAAM,CAACzB,GAAG,CAAC,CAAA;AAClB,YAAA,IAAI,CAACiB,YAAY,CAACS,kBAAkB,EAAE,CAAA;AACxC,WAAA;AACF,SAAA;AACF,OAAA;AAEA,MAAA,OAAOX,KAAK,CAAA;AACd,KAAA;AACF,GAAC,CAAC,CAACnB,IAAI,CAACA,IAAI,CAAC,CAAA;AACf,CAAA;AAEA,aAAe+B,+BAA+B,CAACnC,IAAI,CAAC;;AC5JpD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASoC,SAASA,CAACC,SAAS,EAAEnC,OAAO,EAAE;EACrC,IAAIoC,IAAI,GAAGpC,OAAO,CAAA;EAClB,IAAIqC,oBAAoB,GAAGF,SAAS,CAAA;AAEpCb,EAAAA,MAAM,CACH,CAAA,wCAAA,EAA0Ce,oBAAqB,CAAA,2BAAA,CAA4B,EAC5FD,IAAI,IAAI,OAAOA,IAAI,CAACE,KAAK,KAAK,SAChC,CAAC,CAAA;EACDhB,MAAM,CACH,CAA4Ce,0CAAAA,EAAAA,oBAAqB,CAA0E,yEAAA,CAAA,EAC5ID,IAAI,CAACG,OAAO,KAAK,IAAI,IAAK,OAAOH,IAAI,CAACG,OAAO,KAAK,QAAQ,IAAIH,IAAI,CAACG,OAAO,CAACC,MAAM,GAAG,CACtF,CAAC,CAAA;AAED,EAAA,IAAItC,IAAI,GAAG;AACTH,IAAAA,IAAI,EAAE0C,kBAAkB,CAACJ,oBAAoB,CAAC;AAC9CK,IAAAA,cAAc,EAAE,IAAI;AACpB1C,IAAAA,OAAO,EAAEoC,IAAI;AACbO,IAAAA,IAAI,EAAE,WAAW;AACjBC,IAAAA,IAAI,EAAE,YAAY;AAClBtC,IAAAA,GAAG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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASsE,OAAOA,CAACtE,IAAI,EAAEC,OAAO,EAAE;EAC9BsB,MAAM,CAAE,CAA+C,8CAAA,CAAA,EAAEtB,OAAO,IAAI,OAAOA,OAAO,CAACsC,KAAK,KAAK,SAAS,CAAC,CAAA;;AAEvG;AACA;AACA;AACA;AACA,EAAA,IAAIpC,IAAI,GAAG;AACTH,IAAAA,IAAI,EAAE0D,aAAa,CAAC1D,IAAI,CAAC;IACzBC,OAAO;AACP0C,IAAAA,cAAc,EAAE,IAAI;AACpBC,IAAAA,IAAI,EAAE,SAAS;AACfC,IAAAA,IAAI,EAAE,UAAU;AAChBtC,IAAAA,GAAG,EAAE,IAAA;GACN,CAAA;AAED,EAAA,OAAOF,QAAQ,CAAC;IACdC,GAAGA,CAACC,GAAG,EAAE;AACP,MAAA,IAAAC,cAAA,CAAAC,YAAA,GAAAC,GAAA,CAAAC,KAAA,CAAW,EAAA;QACT,IAAI,CAAC,cAAc,CAAC,CAACC,OAAO,CAACL,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE;AACxC,UAAA,MAAM,IAAIM,KAAK,CACZ,CAAA,CAAA,EAAGN,GAAI,CAAqI,mIAAA,EAAA,IAAI,CAACO,WAAW,CAACC,QAAQ,EAAG,EAC3K,CAAC,CAAA;AACH,SAAA;AACF,OAAA;AACA,MAAA,IAAI,IAAI,CAACE,YAAY,IAAI,IAAI,CAACD,WAAW,EAAE;QACzC,OAAOuD,CAAC,EAAE,CAAA;AACZ,OAAA;MACA,OAAOxB,mBAAmB,CAAC,IAAI,CAAC,CAACyB,UAAU,CAACjE,GAAG,CAAC,CAAA;KACjD;AACDc,IAAAA,GAAGA,CAACd,GAAG,EAAEkE,OAAO,EAAE;AAChB,MAAA,IAAAjE,cAAA,CAAAC,YAAA,GAAAC,GAAA,CAAAC,KAAA,CAAW,EAAA;QACT,IAAI,CAAC,cAAc,CAAC,CAACC,OAAO,CAACL,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE;AACxC,UAAA,MAAM,IAAIM,KAAK,CACZ,CAAA,CAAA,EAAGN,GAAI,CAAqI,mIAAA,EAAA,IAAI,CAACO,WAAW,CAACC,QAAQ,EAAG,EAC3K,CAAC,CAAA;AACH,SAAA;AACF,OAAA;AACA,MAAA,MAAM+B,OAAO,GAAGC,mBAAmB,CAAC,IAAI,CAAC,CAAA;AACzC,MAAA,MAAM2B,SAAS,GAAG5B,OAAO,CAAC6B,YAAY,CAACpE,GAAG,CAAC,CAAA;MAC3CgB,MAAM,CAAE,iEAAgE,EAAEqD,KAAK,CAACC,OAAO,CAACJ,OAAO,CAAC,CAAC,CAAA;AACjG,MAAA,IAAI,CAAClB,KAAK,CAACC,KAAK,CAAC,MAAM;QACrBkB,SAAS,CAACI,MAAM,CAAC,CAAC,EAAEJ,SAAS,CAACjC,MAAM,EAAE,GAAGgC,OAAO,CAAC,CAAA;AACnD,OAAC,CAAC,CAAA;AAEF,MAAA,OAAO3B,OAAO,CAAC0B,UAAU,CAACjE,GAAG,CAAC,CAAA;AAChC,KAAA;AACF,GAAC,CAAC,CAACJ,IAAI,CAACA,IAAI,CAAC,CAAA;AACf,CAAA;AAEA,gBAAe+B,+BAA+B,CAACoC,OAAO,CAAC;;;;"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { getOwner, setOwner } from '@ember/application';
|
|
2
2
|
import { assert } from '@ember/debug';
|
|
3
3
|
import { setRecordIdentifier, StoreMap, setCacheFor } from '@ember-data/store/-private';
|
|
4
|
-
import { M as Model, n as normalizeModelName } from "./model-
|
|
4
|
+
import { M as Model, n as normalizeModelName } from "./model-48ae96f9";
|
|
5
5
|
|
|
6
6
|
/*
|
|
7
7
|
In case someone defined a relationship to a mixin, for example:
|
|
@@ -134,7 +134,7 @@ function instantiateRecord(identifier, createRecordArgs) {
|
|
|
134
134
|
return factory.class.create(createOptions);
|
|
135
135
|
}
|
|
136
136
|
function teardownRecord(record) {
|
|
137
|
-
assert(`expected to receive an instance of
|
|
137
|
+
assert(`expected to receive an instance of Model from @ember-data/model. If using a custom model make sure you implement teardownRecord`, 'destroy' in record);
|
|
138
138
|
record.destroy();
|
|
139
139
|
}
|
|
140
140
|
function modelFor(modelName) {
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hooks-0482f3cc.js","sources":["../src/-private/model-for-mixin.ts","../src/-private/schema-provider.ts","../src/-private/hooks.ts"],"sourcesContent":["import { getOwner } from '@ember/application';\n\nimport type Store from '@ember-data/store';\n\nimport Model, { type ModelFactory } from './model';\n\n/*\n In case someone defined a relationship to a mixin, for example:\n ```\n import Model, { belongsTo, hasMany } from '@ember-data/model';\n import Mixin from '@ember/object/mixin';\n\n class CommentModel extends Model {\n @belongsTo('commentable', { polymorphic: true }) owner;\n }\n\n let Commentable = Mixin.create({\n @hasMany('comment') comments;\n });\n ```\n we want to look up a Commentable class which has all the necessary\n relationship meta data. Thus, we look up the mixin and create a mock\n Model, so we can access the relationship CPs of the mixin (`comments`)\n in this case\n */\nexport default function modelForMixin(store: Store, normalizedModelName: string): ModelFactory | undefined {\n let owner: any = getOwner(store);\n let MaybeMixin = owner.factoryFor(`mixin:${normalizedModelName}`);\n let mixin = MaybeMixin && MaybeMixin.class;\n if (mixin) {\n let ModelForMixin = Model.extend(mixin);\n ModelForMixin.__isMixin = true;\n ModelForMixin.__mixin = mixin;\n //Cache the class as a model\n owner.register('model:' + normalizedModelName, ModelForMixin);\n }\n return owner.factoryFor(`model:${normalizedModelName}`);\n}\n","import { getOwner } from '@ember/application';\n\nimport type Store from '@ember-data/store';\nimport type { RecordIdentifier } from '@ember-data/types/q/identifier';\nimport type { AttributesSchema, RelationshipsSchema } from '@ember-data/types/q/record-data-schemas';\n\nimport type { FactoryCache, ModelFactory, ModelStore } from './model';\nimport Model from './model';\nimport _modelForMixin from './model-for-mixin';\nimport { normalizeModelName } from './util';\n\nexport class ModelSchemaProvider {\n declare store: ModelStore;\n declare _relationshipsDefCache: Record<string, RelationshipsSchema>;\n declare _attributesDefCache: Record<string, AttributesSchema>;\n\n constructor(store: ModelStore) {\n this.store = store;\n this._relationshipsDefCache = Object.create(null) as Record<string, RelationshipsSchema>;\n this._attributesDefCache = Object.create(null) as Record<string, AttributesSchema>;\n }\n\n // Following the existing RD implementation\n attributesDefinitionFor(identifier: RecordIdentifier | { type: string }): AttributesSchema {\n const { type } = identifier;\n let attributes: AttributesSchema;\n\n attributes = this._attributesDefCache[type];\n\n if (attributes === undefined) {\n let modelClass = this.store.modelFor(type);\n let attributeMap = modelClass.attributes;\n\n attributes = Object.create(null) as AttributesSchema;\n attributeMap.forEach((meta, name) => (attributes[name] = meta));\n this._attributesDefCache[type] = attributes;\n }\n\n return attributes;\n }\n\n // Following the existing RD implementation\n relationshipsDefinitionFor(identifier: RecordIdentifier | { type: string }): RelationshipsSchema {\n const { type } = identifier;\n let relationships: RelationshipsSchema;\n\n relationships = this._relationshipsDefCache[type];\n\n if (relationships === undefined) {\n let modelClass = this.store.modelFor(type) as typeof Model;\n relationships = modelClass.relationshipsObject || null;\n this._relationshipsDefCache[type] = relationships;\n }\n\n return relationships;\n }\n\n doesTypeExist(modelName: string): boolean {\n const type = normalizeModelName(modelName);\n const factory = getModelFactory(this.store, type);\n\n return factory !== null;\n }\n}\n\nexport function buildSchema(store: Store) {\n return new ModelSchemaProvider(store as ModelStore);\n}\n\nexport function getModelFactory(store: ModelStore, type: string): ModelFactory | null {\n if (!store._modelFactoryCache) {\n store._modelFactoryCache = Object.create(null) as FactoryCache;\n }\n const cache = store._modelFactoryCache;\n let factory: ModelFactory | undefined = cache[type];\n\n if (!factory) {\n const owner = getOwner(store)!;\n factory = owner.factoryFor(`model:${type}`) as ModelFactory | undefined;\n\n if (!factory) {\n //Support looking up mixins as base types for polymorphic relationships\n factory = _modelForMixin(store, type);\n }\n\n if (!factory) {\n // we don't cache misses in case someone wants to register a missing model\n return null;\n }\n\n let klass = factory.class;\n\n if (klass.isModel) {\n let hasOwnModelNameSet = klass.modelName && Object.prototype.hasOwnProperty.call(klass, 'modelName');\n if (!hasOwnModelNameSet) {\n Object.defineProperty(klass, 'modelName', { value: type });\n }\n }\n\n cache[type] = factory;\n }\n\n return factory;\n}\n","import { getOwner, setOwner } from '@ember/application';\nimport { assert } from '@ember/debug';\n\nimport { setCacheFor, setRecordIdentifier, type Store, StoreMap } from '@ember-data/store/-private';\nimport type { Cache } from '@ember-data/types/cache/cache';\nimport type { StableRecordIdentifier } from '@ember-data/types/q/identifier';\n\nimport type { ModelStore } from './model';\nimport Model from './model';\nimport { getModelFactory } from './schema-provider';\nimport { normalizeModelName } from './util';\n\nexport function instantiateRecord(\n this: ModelStore,\n identifier: StableRecordIdentifier,\n createRecordArgs: { [key: string]: unknown }\n): Model {\n const type = identifier.type;\n\n const cache = this.cache;\n // TODO deprecate allowing unknown args setting\n const createOptions = {\n _createProps: createRecordArgs,\n // TODO @deprecate consider deprecating accessing record properties during init which the below is necessary for\n _secretInit: {\n identifier,\n cache,\n store: this,\n cb: secretInit,\n },\n };\n\n // ensure that `getOwner(this)` works inside a model instance\n setOwner(createOptions, getOwner(this)!);\n const factory = getModelFactory(this, type);\n\n assert(`No model was found for '${type}'`, factory);\n return factory.class.create(createOptions);\n}\n\nexport function teardownRecord(record: Model): void {\n assert(\n `expected to receive an instance of Model from @ember-data/model. If using a custom model make sure you implement teardownRecord`,\n 'destroy' in record\n );\n record.destroy();\n}\n\nexport function modelFor(this: Store, modelName: string): typeof Model | void {\n assert(`You need to pass a model name to the store's modelFor method`, modelName);\n assert(\n `Please pass a proper model name to the store's modelFor method`,\n typeof modelName === 'string' && modelName.length\n );\n const type = normalizeModelName(modelName);\n const maybeFactory = getModelFactory(this as ModelStore, type);\n const klass = maybeFactory && maybeFactory.class ? maybeFactory.class : null;\n\n const ignoreType = !klass || !klass.isModel || this._forceShim;\n if (!ignoreType) {\n return klass;\n }\n assert(\n `No model was found for '${type}' and no schema handles the type`,\n this.getSchemaDefinitionService().doesTypeExist(type)\n );\n}\n\nfunction secretInit(record: Model, cache: Cache, identifier: StableRecordIdentifier, store: Store): void {\n setRecordIdentifier(record, identifier);\n StoreMap.set(record, store);\n setCacheFor(record, cache);\n}\n"],"names":["modelForMixin","store","normalizedModelName","owner","getOwner","MaybeMixin","factoryFor","mixin","class","ModelForMixin","Model","extend","__isMixin","__mixin","register","ModelSchemaProvider","constructor","_relationshipsDefCache","Object","create","_attributesDefCache","attributesDefinitionFor","identifier","type","attributes","undefined","modelClass","modelFor","attributeMap","forEach","meta","name","relationshipsDefinitionFor","relationships","relationshipsObject","doesTypeExist","modelName","normalizeModelName","factory","getModelFactory","buildSchema","_modelFactoryCache","cache","_modelForMixin","klass","isModel","hasOwnModelNameSet","prototype","hasOwnProperty","call","defineProperty","value","instantiateRecord","createRecordArgs","createOptions","_createProps","_secretInit","cb","secretInit","setOwner","assert","teardownRecord","record","destroy","length","maybeFactory","ignoreType","_forceShim","getSchemaDefinitionService","setRecordIdentifier","StoreMap","set","setCacheFor"],"mappings":"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"}
|
package/addon/hooks.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export { b as buildSchema, i as instantiateRecord, m as modelFor, t as teardownRecord } from "./hooks-
|
|
1
|
+
export { b as buildSchema, i as instantiateRecord, m as modelFor, t as teardownRecord } from "./hooks-0482f3cc";
|
package/addon/index.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export { a as attr, b as belongsTo, h as hasMany } from "./has-many-
|
|
2
|
-
export { M as default } from "./model-
|
|
3
|
-
export { M as ModelSchemaProvider, i as instantiateRecord, m as modelFor, t as teardownRecord } from "./hooks-
|
|
1
|
+
export { a as attr, b as belongsTo, h as hasMany } from "./has-many-0759b264";
|
|
2
|
+
export { M as default } from "./model-48ae96f9";
|
|
3
|
+
export { M as ModelSchemaProvider, i as instantiateRecord, m as modelFor, t as teardownRecord } from "./hooks-0482f3cc";
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
+
import { macroCondition, getOwnConfig, importSync } from '@embroider/macros';
|
|
2
|
+
import { deprecate, assert, warn } from '@ember/debug';
|
|
1
3
|
import { dasherize } from '@ember/string';
|
|
2
|
-
import { assert, warn } from '@ember/debug';
|
|
3
4
|
import EmberObject, { computed, get } from '@ember/object';
|
|
4
5
|
import { dependentKeyCompat } from '@ember/object/compat';
|
|
5
6
|
import { run } from '@ember/runloop';
|
|
6
7
|
import { cached, tracked } from '@glimmer/tracking';
|
|
7
8
|
import Ember from 'ember';
|
|
8
|
-
import { macroCondition, getOwnConfig, importSync } from '@embroider/macros';
|
|
9
9
|
import { recordIdentifierFor as recordIdentifierFor$1, storeFor as storeFor$1 } from '@ember-data/store';
|
|
10
10
|
import { RecordArray, MUTATE, SOURCE, recordIdentifierFor, IDENTIFIER_ARRAY_TAG, notifyArray, isStableIdentifier, storeFor, peekCache, fastPush, coerceId } from '@ember-data/store/-private';
|
|
11
11
|
import { A } from '@ember/array';
|
|
@@ -33,8 +33,21 @@ function isElementDescriptor(args) {
|
|
|
33
33
|
function computedMacroWithOptionalParams(fn) {
|
|
34
34
|
return (...maybeDesc) => isElementDescriptor(maybeDesc) ? fn()(...maybeDesc) : fn(...maybeDesc);
|
|
35
35
|
}
|
|
36
|
-
function normalizeModelName(
|
|
37
|
-
|
|
36
|
+
function normalizeModelName(type) {
|
|
37
|
+
if (macroCondition(getOwnConfig().deprecations.DEPRECATE_NON_STRICT_TYPES)) {
|
|
38
|
+
const result = dasherize(type);
|
|
39
|
+
deprecate(`The resource type '${type}' is not normalized. Update your application code to use '${result}' instead of '${type}'.`, result === type, {
|
|
40
|
+
id: 'ember-data:deprecate-non-strict-types',
|
|
41
|
+
until: '6.0',
|
|
42
|
+
for: 'ember-data',
|
|
43
|
+
since: {
|
|
44
|
+
available: '5.3',
|
|
45
|
+
enabled: '5.3'
|
|
46
|
+
}
|
|
47
|
+
});
|
|
48
|
+
return result;
|
|
49
|
+
}
|
|
50
|
+
return type;
|
|
38
51
|
}
|
|
39
52
|
function _initializerDefineProperty(target, property, descriptor, context) {
|
|
40
53
|
if (!descriptor) return;
|
|
@@ -714,6 +727,9 @@ class RelatedCollection extends RecordArray {
|
|
|
714
727
|
this.push(record);
|
|
715
728
|
return record;
|
|
716
729
|
}
|
|
730
|
+
destroy() {
|
|
731
|
+
super.destroy(false);
|
|
732
|
+
}
|
|
717
733
|
}
|
|
718
734
|
RelatedCollection.prototype.isAsync = false;
|
|
719
735
|
RelatedCollection.prototype.isPolymorphic = false;
|
|
@@ -775,7 +791,7 @@ let PromiseBelongsTo = (_dec = computed(), (_class$5 = class PromiseBelongsTo ex
|
|
|
775
791
|
get meta() {
|
|
776
792
|
// eslint-disable-next-line no-constant-condition
|
|
777
793
|
{
|
|
778
|
-
assert('You attempted to access meta on the promise for the async belongsTo relationship ' + `${this.
|
|
794
|
+
assert('You attempted to access meta on the promise for the async belongsTo relationship ' + `${this._belongsToState.modelName}:${this._belongsToState.key}'.` + '\nUse `record.belongsTo(relationshipName).meta()` instead.', false);
|
|
779
795
|
}
|
|
780
796
|
return;
|
|
781
797
|
}
|
|
@@ -1081,10 +1097,7 @@ function isResourceIdentiferWithRelatedLinks$1(value) {
|
|
|
1081
1097
|
*/
|
|
1082
1098
|
let BelongsToReference = (_class$3 = class BelongsToReference {
|
|
1083
1099
|
constructor(store, graph, parentIdentifier, belongsToRelationship, key) {
|
|
1084
|
-
this.___identifier = void 0;
|
|
1085
1100
|
// unsubscribe tokens given to us by the notification manager
|
|
1086
|
-
this.___token = void 0;
|
|
1087
|
-
this.___relatedToken = null;
|
|
1088
1101
|
_initializerDefineProperty(this, "_ref", _descriptor$3, this);
|
|
1089
1102
|
this.graph = graph;
|
|
1090
1103
|
this.key = key;
|
|
@@ -1092,6 +1105,7 @@ let BelongsToReference = (_class$3 = class BelongsToReference {
|
|
|
1092
1105
|
this.type = belongsToRelationship.definition.type;
|
|
1093
1106
|
this.store = store;
|
|
1094
1107
|
this.___identifier = parentIdentifier;
|
|
1108
|
+
this.___relatedToken = null;
|
|
1095
1109
|
this.___token = store.notifications.subscribe(parentIdentifier, (_, bucket, notifiedKey) => {
|
|
1096
1110
|
if (bucket === 'relationships' && notifiedKey === key) {
|
|
1097
1111
|
this._ref++;
|
|
@@ -2055,6 +2069,10 @@ class LegacySupport {
|
|
|
2055
2069
|
this.store = storeFor(record);
|
|
2056
2070
|
this.identifier = recordIdentifierFor(record);
|
|
2057
2071
|
this.cache = peekCache(record);
|
|
2072
|
+
if (macroCondition(getOwnConfig().packages.HAS_JSON_API_PACKAGE)) {
|
|
2073
|
+
const graphFor = importSync('@ember-data/graph/-private').graphFor;
|
|
2074
|
+
this.graph = graphFor(this.store);
|
|
2075
|
+
}
|
|
2058
2076
|
this._manyArrayCache = Object.create(null);
|
|
2059
2077
|
this._relationshipPromisesCache = Object.create(null);
|
|
2060
2078
|
this._relationshipProxyCache = Object.create(null);
|
|
@@ -2091,14 +2109,14 @@ class LegacySupport {
|
|
|
2091
2109
|
if (loadingPromise) {
|
|
2092
2110
|
return loadingPromise;
|
|
2093
2111
|
}
|
|
2094
|
-
const
|
|
2095
|
-
const relationship = graphFor(this.store).get(this.identifier, key);
|
|
2112
|
+
const relationship = this.graph.get(this.identifier, key);
|
|
2096
2113
|
assert(`Expected ${key} to be a belongs-to relationship`, isBelongsTo(relationship));
|
|
2097
2114
|
let resource = this.cache.getRelationship(this.identifier, key);
|
|
2098
2115
|
relationship.state.hasFailedLoadAttempt = false;
|
|
2099
2116
|
relationship.state.shouldForceReload = true;
|
|
2100
2117
|
let promise = this._findBelongsTo(key, resource, relationship, options);
|
|
2101
2118
|
if (this._relationshipProxyCache[key]) {
|
|
2119
|
+
// @ts-expect-error
|
|
2102
2120
|
return this._updatePromiseProxyFor('belongsTo', key, {
|
|
2103
2121
|
promise
|
|
2104
2122
|
});
|
|
@@ -2114,8 +2132,7 @@ class LegacySupport {
|
|
|
2114
2132
|
let relatedIdentifier = resource && resource.data ? resource.data : null;
|
|
2115
2133
|
assert(`Expected a stable identifier`, !relatedIdentifier || isStableIdentifier(relatedIdentifier));
|
|
2116
2134
|
const store = this.store;
|
|
2117
|
-
const
|
|
2118
|
-
const relationship = graphFor(store).get(this.identifier, key);
|
|
2135
|
+
const relationship = this.graph.get(this.identifier, key);
|
|
2119
2136
|
assert(`Expected ${key} to be a belongs-to relationship`, isBelongsTo(relationship));
|
|
2120
2137
|
let isAsync = relationship.definition.isAsync;
|
|
2121
2138
|
let _belongsToState = {
|
|
@@ -2161,10 +2178,10 @@ class LegacySupport {
|
|
|
2161
2178
|
let identifiers = [];
|
|
2162
2179
|
if (jsonApi.data) {
|
|
2163
2180
|
for (let i = 0; i < jsonApi.data.length; i++) {
|
|
2164
|
-
const
|
|
2165
|
-
assert(`Expected a stable identifier`, isStableIdentifier(
|
|
2166
|
-
if (cache.recordIsLoaded(
|
|
2167
|
-
identifiers.push(
|
|
2181
|
+
const relatedIdentifier = jsonApi.data[i];
|
|
2182
|
+
assert(`Expected a stable identifier`, isStableIdentifier(relatedIdentifier));
|
|
2183
|
+
if (cache.recordIsLoaded(relatedIdentifier, true)) {
|
|
2184
|
+
identifiers.push(relatedIdentifier);
|
|
2168
2185
|
}
|
|
2169
2186
|
}
|
|
2170
2187
|
}
|
|
@@ -2174,8 +2191,7 @@ class LegacySupport {
|
|
|
2174
2191
|
if (macroCondition(getOwnConfig().packages.HAS_JSON_API_PACKAGE)) {
|
|
2175
2192
|
let manyArray = this._manyArrayCache[key];
|
|
2176
2193
|
if (!definition) {
|
|
2177
|
-
|
|
2178
|
-
definition = graphFor(this.store).get(this.identifier, key).definition;
|
|
2194
|
+
definition = this.graph.get(this.identifier, key).definition;
|
|
2179
2195
|
}
|
|
2180
2196
|
if (!manyArray) {
|
|
2181
2197
|
const [identifiers, doc] = this._getCurrentState(this.identifier, key);
|
|
@@ -2225,8 +2241,7 @@ class LegacySupport {
|
|
|
2225
2241
|
if (loadingPromise) {
|
|
2226
2242
|
return loadingPromise;
|
|
2227
2243
|
}
|
|
2228
|
-
const
|
|
2229
|
-
const relationship = graphFor(this.store).get(this.identifier, key);
|
|
2244
|
+
const relationship = this.graph.get(this.identifier, key);
|
|
2230
2245
|
const {
|
|
2231
2246
|
definition,
|
|
2232
2247
|
state
|
|
@@ -2246,8 +2261,7 @@ class LegacySupport {
|
|
|
2246
2261
|
}
|
|
2247
2262
|
getHasMany(key, options) {
|
|
2248
2263
|
if (macroCondition(getOwnConfig().packages.HAS_JSON_API_PACKAGE)) {
|
|
2249
|
-
const
|
|
2250
|
-
const relationship = graphFor(this.store).get(this.identifier, key);
|
|
2264
|
+
const relationship = this.graph.get(this.identifier, key);
|
|
2251
2265
|
const {
|
|
2252
2266
|
definition,
|
|
2253
2267
|
state
|
|
@@ -2309,21 +2323,23 @@ class LegacySupport {
|
|
|
2309
2323
|
// because of the intimate API access involved. This is something we will need to redesign.
|
|
2310
2324
|
assert(`snapshot.belongsTo only supported for @ember-data/json-api`);
|
|
2311
2325
|
}
|
|
2312
|
-
const
|
|
2313
|
-
|
|
2314
|
-
|
|
2326
|
+
const {
|
|
2327
|
+
graph,
|
|
2328
|
+
identifier
|
|
2329
|
+
} = this;
|
|
2330
|
+
const relationship = graph.get(identifier, name);
|
|
2315
2331
|
if (macroCondition(getOwnConfig().env.DEBUG)) {
|
|
2316
2332
|
if (kind) {
|
|
2317
|
-
let modelName =
|
|
2333
|
+
let modelName = identifier.type;
|
|
2318
2334
|
let actualRelationshipKind = relationship.definition.kind;
|
|
2319
2335
|
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);
|
|
2320
2336
|
}
|
|
2321
2337
|
}
|
|
2322
2338
|
let relationshipKind = relationship.definition.kind;
|
|
2323
2339
|
if (relationshipKind === 'belongsTo') {
|
|
2324
|
-
reference = new BelongsToReference(this.store, graph,
|
|
2340
|
+
reference = new BelongsToReference(this.store, graph, identifier, relationship, name);
|
|
2325
2341
|
} else if (relationshipKind === 'hasMany') {
|
|
2326
|
-
reference = new HasManyReference(this.store, graph,
|
|
2342
|
+
reference = new HasManyReference(this.store, graph, identifier, relationship, name);
|
|
2327
2343
|
}
|
|
2328
2344
|
this.references[name] = reference;
|
|
2329
2345
|
}
|
|
@@ -2587,8 +2603,8 @@ function notifyChanges(identifier, value, key, record, store) {
|
|
|
2587
2603
|
if (key) {
|
|
2588
2604
|
notifyAttribute(store, identifier, key, record);
|
|
2589
2605
|
} else {
|
|
2590
|
-
record.eachAttribute(
|
|
2591
|
-
notifyAttribute(store, identifier,
|
|
2606
|
+
record.eachAttribute(name => {
|
|
2607
|
+
notifyAttribute(store, identifier, name, record);
|
|
2592
2608
|
});
|
|
2593
2609
|
}
|
|
2594
2610
|
} else if (value === 'relationships') {
|
|
@@ -2596,8 +2612,8 @@ function notifyChanges(identifier, value, key, record, store) {
|
|
|
2596
2612
|
let meta = record.constructor.relationshipsByName.get(key);
|
|
2597
2613
|
notifyRelationship(identifier, key, record, meta);
|
|
2598
2614
|
} else {
|
|
2599
|
-
record.eachRelationship((
|
|
2600
|
-
notifyRelationship(identifier,
|
|
2615
|
+
record.eachRelationship((name, meta) => {
|
|
2616
|
+
notifyRelationship(identifier, name, record, meta);
|
|
2601
2617
|
});
|
|
2602
2618
|
}
|
|
2603
2619
|
} else if (value === 'identity') {
|