@ember-data/model 5.4.0-alpha.154 → 5.4.0-alpha.156

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.
@@ -1,6 +1,6 @@
1
1
  import { setOwner, getOwner } from '@ember/application';
2
2
  import { setRecordIdentifier, StoreMap, setCacheFor } from '@ember-data/store/-private';
3
- import { g as getModelFactory } from "./schema-provider-CWr9BR0O.js";
3
+ import { g as getModelFactory } from "./schema-provider-Bvogtzx9.js";
4
4
  import { n as normalizeModelName } from "./model-rk3atPqV.js";
5
5
  import { macroCondition, getGlobalConfig } from '@embroider/macros';
6
6
  function instantiateRecord(identifier, createRecordArgs) {
@@ -1 +1 @@
1
- {"version":3,"file":"hooks-BMl7pX91.js","sources":["../src/-private/hooks.ts"],"sourcesContent":["import { getOwner, setOwner } from '@ember/application';\n\nimport { setCacheFor, setRecordIdentifier, type Store, StoreMap } from '@ember-data/store/-private';\nimport { assert } from '@warp-drive/build-config/macros';\nimport type { StableRecordIdentifier } from '@warp-drive/core-types';\nimport type { Cache } from '@warp-drive/core-types/cache';\nimport type { TypeFromInstance, TypeFromInstanceOrString } from '@warp-drive/core-types/record';\n\nimport type { Model, ModelStore } from './model';\nimport { getModelFactory } from './schema-provider';\nimport { normalizeModelName } from './util';\n\nfunction recast(context: Store): asserts context is ModelStore {}\n\nexport function instantiateRecord(\n this: Store,\n identifier: StableRecordIdentifier,\n createRecordArgs: { [key: string]: unknown }\n): Model {\n const type = identifier.type;\n\n recast(this);\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<T>(type: TypeFromInstance<T>): typeof Model | void;\nexport function modelFor(type: string): typeof Model | void;\nexport function modelFor<T>(this: Store, modelName: TypeFromInstanceOrString<T>): typeof Model | void {\n assert(\n `Attempted to call store.modelFor(), but the store instance has already been destroyed.`,\n !this.isDestroyed && !this.isDestroying\n );\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 recast(this);\n\n const type = normalizeModelName(modelName);\n const maybeFactory = getModelFactory(this, 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(`No model was found for '${type}' and no schema handles the type`, this.schema.hasResource({ type }));\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":["instantiateRecord","identifier","createRecordArgs","type","cache","createOptions","_createProps","_secretInit","store","cb","secretInit","setOwner","getOwner","factory","getModelFactory","macroCondition","getGlobalConfig","WarpDrive","env","DEBUG","test","Error","class","create","teardownRecord","record","destroy","modelFor","modelName","isDestroyed","isDestroying","length","normalizeModelName","maybeFactory","klass","ignoreType","isModel","_forceShim","schema","hasResource","setRecordIdentifier","StoreMap","set","setCacheFor"],"mappings":"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"}
1
+ {"version":3,"file":"hooks-CNY5g4Ab.js","sources":["../src/-private/hooks.ts"],"sourcesContent":["import { getOwner, setOwner } from '@ember/application';\n\nimport { setCacheFor, setRecordIdentifier, type Store, StoreMap } from '@ember-data/store/-private';\nimport { assert } from '@warp-drive/build-config/macros';\nimport type { StableRecordIdentifier } from '@warp-drive/core-types';\nimport type { Cache } from '@warp-drive/core-types/cache';\nimport type { TypeFromInstance, TypeFromInstanceOrString } from '@warp-drive/core-types/record';\n\nimport type { Model, ModelStore } from './model';\nimport { getModelFactory } from './schema-provider';\nimport { normalizeModelName } from './util';\n\nfunction recast(context: Store): asserts context is ModelStore {}\n\nexport function instantiateRecord(\n this: Store,\n identifier: StableRecordIdentifier,\n createRecordArgs: { [key: string]: unknown }\n): Model {\n const type = identifier.type;\n\n recast(this);\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<T>(type: TypeFromInstance<T>): typeof Model | void;\nexport function modelFor(type: string): typeof Model | void;\nexport function modelFor<T>(this: Store, modelName: TypeFromInstanceOrString<T>): typeof Model | void {\n assert(\n `Attempted to call store.modelFor(), but the store instance has already been destroyed.`,\n !this.isDestroyed && !this.isDestroying\n );\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 recast(this);\n\n const type = normalizeModelName(modelName);\n const maybeFactory = getModelFactory(this, 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(`No model was found for '${type}' and no schema handles the type`, this.schema.hasResource({ type }));\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":["instantiateRecord","identifier","createRecordArgs","type","cache","createOptions","_createProps","_secretInit","store","cb","secretInit","setOwner","getOwner","factory","getModelFactory","macroCondition","getGlobalConfig","WarpDrive","env","DEBUG","test","Error","class","create","teardownRecord","record","destroy","modelFor","modelName","isDestroyed","isDestroying","length","normalizeModelName","maybeFactory","klass","ignoreType","isModel","_forceShim","schema","hasResource","setRecordIdentifier","StoreMap","set","setCacheFor"],"mappings":"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"}
package/dist/hooks.js CHANGED
@@ -1,2 +1,2 @@
1
- export { i as instantiateRecord, m as modelFor, t as teardownRecord } from "./hooks-BMl7pX91.js";
2
- export { b as buildSchema } from "./schema-provider-CWr9BR0O.js";
1
+ export { i as instantiateRecord, m as modelFor, t as teardownRecord } from "./hooks-CNY5g4Ab.js";
2
+ export { b as buildSchema } from "./schema-provider-Bvogtzx9.js";
package/dist/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  export { a as attr, b as belongsTo, h as hasMany } from "./has-many-DT3JBYYG.js";
2
2
  export { M as default } from "./model-rk3atPqV.js";
3
3
  import '@ember-data/store/-private';
4
- export { i as instantiateRecord, m as modelFor, t as teardownRecord } from "./hooks-BMl7pX91.js";
5
- export { M as ModelSchemaProvider } from "./schema-provider-CWr9BR0O.js";
4
+ export { i as instantiateRecord, m as modelFor, t as teardownRecord } from "./hooks-CNY5g4Ab.js";
5
+ export { M as ModelSchemaProvider } from "./schema-provider-Bvogtzx9.js";
@@ -8,7 +8,7 @@ import '@ember-data/request-utils/string';
8
8
  import { macroCondition, getGlobalConfig } from '@embroider/macros';
9
9
  import { u as unloadRecord, s as serialize, b as save, r as rollbackAttributes, c as reload, h as hasMany, E as Errors, d as destroyRecord, e as deleteRecord, R as RecordState, f as changedAttributes, g as belongsTo, i as createSnapshot } from "./model-rk3atPqV.js";
10
10
  import '@ember/application';
11
- import { b as buildSchema } from "./schema-provider-CWr9BR0O.js";
11
+ import { b as buildSchema } from "./schema-provider-Bvogtzx9.js";
12
12
 
13
13
  // 'isDestroying', 'isDestroyed'
14
14
  const LegacyFields = ['_createSnapshot', 'adapterError', 'belongsTo', 'changedAttributes', 'constructor', 'currentState', 'deleteRecord', 'destroyRecord', 'dirtyType', 'errors', 'hasDirtyAttributes', 'hasMany', 'isDeleted', 'isEmpty', 'isError', 'isLoaded', 'isLoading', 'isNew', 'isSaving', 'isValid', 'reload', 'rollbackAttributes', 'save', 'serialize', 'unloadRecord'];
@@ -136,6 +136,9 @@ class DelegatingSchemaService {
136
136
  this._preferred = schema;
137
137
  this._secondary = buildSchema(store);
138
138
  }
139
+ resourceTypes() {
140
+ return Array.from(new Set(this._preferred.resourceTypes().concat(this._secondary.resourceTypes())));
141
+ }
139
142
  hasResource(resource) {
140
143
  return this._preferred.hasResource(resource) || this._secondary.hasResource(resource);
141
144
  }
@@ -1 +1 @@
1
- {"version":3,"file":"migration-support.js","sources":["../src/migration-support.ts"],"sourcesContent":["import type Store from '@ember-data/store';\nimport { recordIdentifierFor } from '@ember-data/store';\nimport type { SchemaService } from '@ember-data/store/types';\nimport { ENABLE_LEGACY_SCHEMA_SERVICE } from '@warp-drive/build-config/deprecations';\nimport { assert } from '@warp-drive/build-config/macros';\nimport type { StableRecordIdentifier } from '@warp-drive/core-types';\nimport { getOrSetGlobal } from '@warp-drive/core-types/-private';\nimport type { ObjectValue } from '@warp-drive/core-types/json/raw';\nimport type { TypedRecordInstance } from '@warp-drive/core-types/record';\nimport type { Derivation, HashFn, Transformation } from '@warp-drive/core-types/schema/concepts';\nimport type {\n ArrayField,\n DerivedField,\n FieldSchema,\n GenericField,\n HashField,\n ObjectField,\n ObjectSchema,\n ResourceSchema,\n} from '@warp-drive/core-types/schema/fields';\nimport { Type } from '@warp-drive/core-types/symbols';\nimport type { WithPartial } from '@warp-drive/core-types/utils';\n\nimport { Errors } from './-private';\nimport type { MinimalLegacyRecord } from './-private/model-methods';\nimport {\n belongsTo,\n changedAttributes,\n createSnapshot,\n deleteRecord,\n destroyRecord,\n hasMany,\n reload,\n rollbackAttributes,\n save,\n serialize,\n unloadRecord,\n} from './-private/model-methods';\nimport RecordState from './-private/record-state';\nimport { buildSchema } from './hooks';\n\nexport type WithLegacyDerivations<T extends TypedRecordInstance> = T &\n MinimalLegacyRecord & {\n belongsTo: typeof belongsTo;\n hasMany: typeof hasMany;\n };\n\ntype AttributesSchema = ReturnType<Exclude<SchemaService['attributesDefinitionFor'], undefined>>;\ntype RelationshipsSchema = ReturnType<Exclude<SchemaService['relationshipsDefinitionFor'], undefined>>;\n\n// 'isDestroying', 'isDestroyed'\nconst LegacyFields = [\n '_createSnapshot',\n 'adapterError',\n 'belongsTo',\n 'changedAttributes',\n 'constructor',\n 'currentState',\n 'deleteRecord',\n 'destroyRecord',\n 'dirtyType',\n 'errors',\n 'hasDirtyAttributes',\n 'hasMany',\n 'isDeleted',\n 'isEmpty',\n 'isError',\n 'isLoaded',\n 'isLoading',\n 'isNew',\n 'isSaving',\n 'isValid',\n 'reload',\n 'rollbackAttributes',\n 'save',\n 'serialize',\n 'unloadRecord',\n];\n\nconst LegacySupport = getOrSetGlobal('LegacySupport', new WeakMap<MinimalLegacyRecord, Record<string, unknown>>());\n\nfunction legacySupport(record: MinimalLegacyRecord, options: ObjectValue | null, prop: string): unknown {\n let state = LegacySupport.get(record);\n if (!state) {\n state = {};\n LegacySupport.set(record, state);\n }\n\n switch (prop) {\n case '_createSnapshot':\n return createSnapshot;\n case 'adapterError':\n return record.currentState.adapterError;\n case 'belongsTo':\n return belongsTo;\n case 'changedAttributes':\n return changedAttributes;\n case 'constructor':\n return (state._constructor = state._constructor || {\n isModel: true,\n name: `Record<${recordIdentifierFor(record).type}>`,\n modelName: recordIdentifierFor(record).type,\n });\n case 'currentState':\n return (state.recordState = state.recordState || new RecordState(record));\n case 'deleteRecord':\n return deleteRecord;\n case 'destroyRecord':\n return destroyRecord;\n case 'dirtyType':\n return record.currentState.dirtyType;\n case 'errors':\n // @ts-expect-error\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n return (state.errors = state.errors || Errors.create({ __record: record }));\n case 'hasDirtyAttributes':\n return record.currentState.isDirty;\n case 'hasMany':\n return hasMany;\n case 'isDeleted':\n return record.currentState.isDeleted;\n case 'isEmpty':\n return record.currentState.isEmpty;\n case 'isError':\n return record.currentState.isError;\n case 'isLoaded':\n return record.currentState.isLoaded;\n case 'isLoading':\n return record.currentState.isLoading;\n case 'isNew':\n return record.currentState.isNew;\n case 'isSaving':\n return record.currentState.isSaving;\n case 'isValid':\n return record.currentState.isValid;\n case 'reload':\n return reload;\n case 'rollbackAttributes':\n return rollbackAttributes;\n case 'save':\n return save;\n case 'serialize':\n return serialize;\n case 'unloadRecord':\n return unloadRecord;\n default:\n assert(`${prop} is not a supported legacy field`, false);\n }\n}\nlegacySupport[Type] = '@legacy';\n\nexport function withDefaults(schema: WithPartial<ResourceSchema, 'legacy' | 'identity'>): ResourceSchema {\n schema.legacy = true;\n schema.identity = { kind: '@id', name: 'id' };\n\n LegacyFields.forEach((field) => {\n schema.fields.push({\n type: '@legacy',\n name: field,\n kind: 'derived',\n });\n });\n schema.fields.push({\n name: 'isReloading',\n kind: '@local',\n type: 'boolean',\n options: { defaultValue: false },\n });\n schema.fields.push({\n name: 'isDestroying',\n kind: '@local',\n type: 'boolean',\n options: { defaultValue: false },\n });\n schema.fields.push({\n name: 'isDestroyed',\n kind: '@local',\n type: 'boolean',\n options: { defaultValue: false },\n });\n return schema as ResourceSchema;\n}\n\nexport function registerDerivations(schema: SchemaService) {\n schema.registerDerivation(legacySupport);\n}\n\nexport interface DelegatingSchemaService {\n attributesDefinitionFor?(resource: StableRecordIdentifier | { type: string }): AttributesSchema;\n relationshipsDefinitionFor?(resource: StableRecordIdentifier | { type: string }): RelationshipsSchema;\n doesTypeExist?(type: string): boolean;\n}\nexport class DelegatingSchemaService implements SchemaService {\n _preferred!: SchemaService;\n _secondary!: SchemaService;\n\n constructor(store: Store, schema: SchemaService) {\n this._preferred = schema;\n this._secondary = buildSchema(store);\n }\n hasResource(resource: StableRecordIdentifier | { type: string }): boolean {\n return this._preferred.hasResource(resource) || this._secondary.hasResource(resource);\n }\n hasTrait(type: string): boolean {\n if (this._preferred.hasResource({ type })) {\n return this._preferred.hasTrait(type);\n }\n return this._secondary.hasTrait(type);\n }\n resourceHasTrait(resource: StableRecordIdentifier | { type: string }, trait: string): boolean {\n if (this._preferred.hasResource(resource)) {\n return this._preferred.resourceHasTrait(resource, trait);\n }\n return this._secondary.resourceHasTrait(resource, trait);\n }\n fields(resource: StableRecordIdentifier | { type: string }): Map<string, FieldSchema> {\n if (this._preferred.hasResource(resource)) {\n return this._preferred.fields(resource);\n }\n return this._secondary.fields(resource);\n }\n transformation(field: GenericField | ObjectField | ArrayField | { type: string }): Transformation {\n return this._preferred.transformation(field);\n }\n hashFn(field: HashField | { type: string }): HashFn {\n return this._preferred.hashFn(field);\n }\n derivation(field: DerivedField | { type: string }): Derivation {\n return this._preferred.derivation(field);\n }\n resource(resource: StableRecordIdentifier | { type: string }): ResourceSchema | ObjectSchema {\n if (this._preferred.hasResource(resource)) {\n return this._preferred.resource(resource);\n }\n return this._secondary.resource(resource);\n }\n registerResources(schemas: Array<ResourceSchema | ObjectSchema>): void {\n this._preferred.registerResources(schemas);\n }\n registerResource(schema: ResourceSchema | ObjectSchema): void {\n this._preferred.registerResource(schema);\n }\n registerTransformation(transform: Transformation): void {\n this._preferred.registerTransformation(transform);\n }\n registerDerivation<R, T, FM extends ObjectValue | null>(derivation: Derivation<R, T, FM>): void {\n this._preferred.registerDerivation(derivation);\n }\n registerHashFn(hashFn: HashFn): void {\n this._preferred.registerHashFn(hashFn);\n }\n}\n\nif (ENABLE_LEGACY_SCHEMA_SERVICE) {\n DelegatingSchemaService.prototype.attributesDefinitionFor = function (\n resource: StableRecordIdentifier | { type: string }\n ) {\n if (this._preferred.hasResource(resource)) {\n return this._preferred.attributesDefinitionFor!(resource);\n }\n\n return this._secondary.attributesDefinitionFor!(resource);\n };\n DelegatingSchemaService.prototype.relationshipsDefinitionFor = function (\n resource: StableRecordIdentifier | { type: string }\n ) {\n if (this._preferred.hasResource(resource)) {\n return this._preferred.relationshipsDefinitionFor!(resource);\n }\n\n return this._secondary.relationshipsDefinitionFor!(resource);\n };\n DelegatingSchemaService.prototype.doesTypeExist = function (type: string) {\n return this._preferred.doesTypeExist?.(type) || this._secondary.doesTypeExist?.(type) || false;\n };\n}\n"],"names":["LegacyFields","LegacySupport","getOrSetGlobal","WeakMap","legacySupport","record","options","prop","state","get","set","createSnapshot","currentState","adapterError","belongsTo","changedAttributes","_constructor","isModel","name","recordIdentifierFor","type","modelName","recordState","RecordState","deleteRecord","destroyRecord","dirtyType","errors","Errors","create","__record","isDirty","hasMany","isDeleted","isEmpty","isError","isLoaded","isLoading","isNew","isSaving","isValid","reload","rollbackAttributes","save","serialize","unloadRecord","macroCondition","getGlobalConfig","WarpDrive","env","DEBUG","test","Error","Type","withDefaults","schema","legacy","identity","kind","forEach","field","fields","push","defaultValue","registerDerivations","registerDerivation","DelegatingSchemaService","_preferred","_secondary","constructor","store","buildSchema","hasResource","resource","hasTrait","resourceHasTrait","trait","transformation","hashFn","derivation","registerResources","schemas","registerResource","registerTransformation","transform","registerHashFn","deprecations","ENABLE_LEGACY_SCHEMA_SERVICE","prototype","attributesDefinitionFor","relationshipsDefinitionFor","doesTypeExist"],"mappings":"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"}
1
+ {"version":3,"file":"migration-support.js","sources":["../src/migration-support.ts"],"sourcesContent":["import type Store from '@ember-data/store';\nimport { recordIdentifierFor } from '@ember-data/store';\nimport type { SchemaService } from '@ember-data/store/types';\nimport { ENABLE_LEGACY_SCHEMA_SERVICE } from '@warp-drive/build-config/deprecations';\nimport { assert } from '@warp-drive/build-config/macros';\nimport type { StableRecordIdentifier } from '@warp-drive/core-types';\nimport { getOrSetGlobal } from '@warp-drive/core-types/-private';\nimport type { ObjectValue } from '@warp-drive/core-types/json/raw';\nimport type { TypedRecordInstance } from '@warp-drive/core-types/record';\nimport type { Derivation, HashFn, Transformation } from '@warp-drive/core-types/schema/concepts';\nimport type {\n ArrayField,\n DerivedField,\n FieldSchema,\n GenericField,\n HashField,\n ObjectField,\n ObjectSchema,\n ResourceSchema,\n} from '@warp-drive/core-types/schema/fields';\nimport { Type } from '@warp-drive/core-types/symbols';\nimport type { WithPartial } from '@warp-drive/core-types/utils';\n\nimport { Errors } from './-private';\nimport type { MinimalLegacyRecord } from './-private/model-methods';\nimport {\n belongsTo,\n changedAttributes,\n createSnapshot,\n deleteRecord,\n destroyRecord,\n hasMany,\n reload,\n rollbackAttributes,\n save,\n serialize,\n unloadRecord,\n} from './-private/model-methods';\nimport RecordState from './-private/record-state';\nimport { buildSchema } from './hooks';\n\nexport type WithLegacyDerivations<T extends TypedRecordInstance> = T &\n MinimalLegacyRecord & {\n belongsTo: typeof belongsTo;\n hasMany: typeof hasMany;\n };\n\ntype AttributesSchema = ReturnType<Exclude<SchemaService['attributesDefinitionFor'], undefined>>;\ntype RelationshipsSchema = ReturnType<Exclude<SchemaService['relationshipsDefinitionFor'], undefined>>;\n\n// 'isDestroying', 'isDestroyed'\nconst LegacyFields = [\n '_createSnapshot',\n 'adapterError',\n 'belongsTo',\n 'changedAttributes',\n 'constructor',\n 'currentState',\n 'deleteRecord',\n 'destroyRecord',\n 'dirtyType',\n 'errors',\n 'hasDirtyAttributes',\n 'hasMany',\n 'isDeleted',\n 'isEmpty',\n 'isError',\n 'isLoaded',\n 'isLoading',\n 'isNew',\n 'isSaving',\n 'isValid',\n 'reload',\n 'rollbackAttributes',\n 'save',\n 'serialize',\n 'unloadRecord',\n];\n\nconst LegacySupport = getOrSetGlobal('LegacySupport', new WeakMap<MinimalLegacyRecord, Record<string, unknown>>());\n\nfunction legacySupport(record: MinimalLegacyRecord, options: ObjectValue | null, prop: string): unknown {\n let state = LegacySupport.get(record);\n if (!state) {\n state = {};\n LegacySupport.set(record, state);\n }\n\n switch (prop) {\n case '_createSnapshot':\n return createSnapshot;\n case 'adapterError':\n return record.currentState.adapterError;\n case 'belongsTo':\n return belongsTo;\n case 'changedAttributes':\n return changedAttributes;\n case 'constructor':\n return (state._constructor = state._constructor || {\n isModel: true,\n name: `Record<${recordIdentifierFor(record).type}>`,\n modelName: recordIdentifierFor(record).type,\n });\n case 'currentState':\n return (state.recordState = state.recordState || new RecordState(record));\n case 'deleteRecord':\n return deleteRecord;\n case 'destroyRecord':\n return destroyRecord;\n case 'dirtyType':\n return record.currentState.dirtyType;\n case 'errors':\n // @ts-expect-error\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n return (state.errors = state.errors || Errors.create({ __record: record }));\n case 'hasDirtyAttributes':\n return record.currentState.isDirty;\n case 'hasMany':\n return hasMany;\n case 'isDeleted':\n return record.currentState.isDeleted;\n case 'isEmpty':\n return record.currentState.isEmpty;\n case 'isError':\n return record.currentState.isError;\n case 'isLoaded':\n return record.currentState.isLoaded;\n case 'isLoading':\n return record.currentState.isLoading;\n case 'isNew':\n return record.currentState.isNew;\n case 'isSaving':\n return record.currentState.isSaving;\n case 'isValid':\n return record.currentState.isValid;\n case 'reload':\n return reload;\n case 'rollbackAttributes':\n return rollbackAttributes;\n case 'save':\n return save;\n case 'serialize':\n return serialize;\n case 'unloadRecord':\n return unloadRecord;\n default:\n assert(`${prop} is not a supported legacy field`, false);\n }\n}\nlegacySupport[Type] = '@legacy';\n\nexport function withDefaults(schema: WithPartial<ResourceSchema, 'legacy' | 'identity'>): ResourceSchema {\n schema.legacy = true;\n schema.identity = { kind: '@id', name: 'id' };\n\n LegacyFields.forEach((field) => {\n schema.fields.push({\n type: '@legacy',\n name: field,\n kind: 'derived',\n });\n });\n schema.fields.push({\n name: 'isReloading',\n kind: '@local',\n type: 'boolean',\n options: { defaultValue: false },\n });\n schema.fields.push({\n name: 'isDestroying',\n kind: '@local',\n type: 'boolean',\n options: { defaultValue: false },\n });\n schema.fields.push({\n name: 'isDestroyed',\n kind: '@local',\n type: 'boolean',\n options: { defaultValue: false },\n });\n return schema as ResourceSchema;\n}\n\nexport function registerDerivations(schema: SchemaService) {\n schema.registerDerivation(legacySupport);\n}\n\nexport interface DelegatingSchemaService {\n attributesDefinitionFor?(resource: StableRecordIdentifier | { type: string }): AttributesSchema;\n relationshipsDefinitionFor?(resource: StableRecordIdentifier | { type: string }): RelationshipsSchema;\n doesTypeExist?(type: string): boolean;\n}\nexport class DelegatingSchemaService implements SchemaService {\n _preferred!: SchemaService;\n _secondary!: SchemaService;\n\n constructor(store: Store, schema: SchemaService) {\n this._preferred = schema;\n this._secondary = buildSchema(store);\n }\n\n resourceTypes(): Readonly<string[]> {\n return Array.from(new Set(this._preferred.resourceTypes().concat(this._secondary.resourceTypes())));\n }\n\n hasResource(resource: StableRecordIdentifier | { type: string }): boolean {\n return this._preferred.hasResource(resource) || this._secondary.hasResource(resource);\n }\n hasTrait(type: string): boolean {\n if (this._preferred.hasResource({ type })) {\n return this._preferred.hasTrait(type);\n }\n return this._secondary.hasTrait(type);\n }\n resourceHasTrait(resource: StableRecordIdentifier | { type: string }, trait: string): boolean {\n if (this._preferred.hasResource(resource)) {\n return this._preferred.resourceHasTrait(resource, trait);\n }\n return this._secondary.resourceHasTrait(resource, trait);\n }\n fields(resource: StableRecordIdentifier | { type: string }): Map<string, FieldSchema> {\n if (this._preferred.hasResource(resource)) {\n return this._preferred.fields(resource);\n }\n return this._secondary.fields(resource);\n }\n transformation(field: GenericField | ObjectField | ArrayField | { type: string }): Transformation {\n return this._preferred.transformation(field);\n }\n hashFn(field: HashField | { type: string }): HashFn {\n return this._preferred.hashFn(field);\n }\n derivation(field: DerivedField | { type: string }): Derivation {\n return this._preferred.derivation(field);\n }\n resource(resource: StableRecordIdentifier | { type: string }): ResourceSchema | ObjectSchema {\n if (this._preferred.hasResource(resource)) {\n return this._preferred.resource(resource);\n }\n return this._secondary.resource(resource);\n }\n registerResources(schemas: Array<ResourceSchema | ObjectSchema>): void {\n this._preferred.registerResources(schemas);\n }\n registerResource(schema: ResourceSchema | ObjectSchema): void {\n this._preferred.registerResource(schema);\n }\n registerTransformation(transform: Transformation): void {\n this._preferred.registerTransformation(transform);\n }\n registerDerivation<R, T, FM extends ObjectValue | null>(derivation: Derivation<R, T, FM>): void {\n this._preferred.registerDerivation(derivation);\n }\n registerHashFn(hashFn: HashFn): void {\n this._preferred.registerHashFn(hashFn);\n }\n}\n\nif (ENABLE_LEGACY_SCHEMA_SERVICE) {\n DelegatingSchemaService.prototype.attributesDefinitionFor = function (\n resource: StableRecordIdentifier | { type: string }\n ) {\n if (this._preferred.hasResource(resource)) {\n return this._preferred.attributesDefinitionFor!(resource);\n }\n\n return this._secondary.attributesDefinitionFor!(resource);\n };\n DelegatingSchemaService.prototype.relationshipsDefinitionFor = function (\n resource: StableRecordIdentifier | { type: string }\n ) {\n if (this._preferred.hasResource(resource)) {\n return this._preferred.relationshipsDefinitionFor!(resource);\n }\n\n return this._secondary.relationshipsDefinitionFor!(resource);\n };\n DelegatingSchemaService.prototype.doesTypeExist = function (type: string) {\n return this._preferred.doesTypeExist?.(type) || this._secondary.doesTypeExist?.(type) || false;\n };\n}\n"],"names":["LegacyFields","LegacySupport","getOrSetGlobal","WeakMap","legacySupport","record","options","prop","state","get","set","createSnapshot","currentState","adapterError","belongsTo","changedAttributes","_constructor","isModel","name","recordIdentifierFor","type","modelName","recordState","RecordState","deleteRecord","destroyRecord","dirtyType","errors","Errors","create","__record","isDirty","hasMany","isDeleted","isEmpty","isError","isLoaded","isLoading","isNew","isSaving","isValid","reload","rollbackAttributes","save","serialize","unloadRecord","macroCondition","getGlobalConfig","WarpDrive","env","DEBUG","test","Error","Type","withDefaults","schema","legacy","identity","kind","forEach","field","fields","push","defaultValue","registerDerivations","registerDerivation","DelegatingSchemaService","_preferred","_secondary","constructor","store","buildSchema","resourceTypes","Array","from","Set","concat","hasResource","resource","hasTrait","resourceHasTrait","trait","transformation","hashFn","derivation","registerResources","schemas","registerResource","registerTransformation","transform","registerHashFn","deprecations","ENABLE_LEGACY_SCHEMA_SERVICE","prototype","attributesDefinitionFor","relationshipsDefinitionFor","doesTypeExist"],"mappings":"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"}
@@ -38,6 +38,9 @@ class ModelSchemaProvider {
38
38
  this._schemas = new Map();
39
39
  this._typeMisses = new Set();
40
40
  }
41
+ resourceTypes() {
42
+ return Array.from(this._schemas.keys());
43
+ }
41
44
  hasTrait(type) {
42
45
  macroCondition(getGlobalConfig().WarpDrive.env.DEBUG) ? (test => {
43
46
  {
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema-provider-Bvogtzx9.js","sources":["../src/-private/model-for-mixin.ts","../src/-private/schema-provider.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 ```ts\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 const owner = getOwner(store)!;\n const MaybeMixin = owner.factoryFor(`mixin:${normalizedModelName}`);\n const mixin = MaybeMixin && MaybeMixin.class;\n if (mixin) {\n const ModelForMixin = Model.extend(mixin) as unknown as { __isMixin: boolean; __mixin: typeof 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}`) as ModelFactory | undefined;\n}\n","import { getOwner } from '@ember/application';\nimport { deprecate } from '@ember/debug';\n\nimport type Store from '@ember-data/store';\nimport type { SchemaService } from '@ember-data/store/types';\nimport { ENABLE_LEGACY_SCHEMA_SERVICE } from '@warp-drive/build-config/deprecations';\nimport { assert } from '@warp-drive/build-config/macros';\nimport type { RecordIdentifier, StableRecordIdentifier } from '@warp-drive/core-types/identifier';\nimport type { ObjectValue } from '@warp-drive/core-types/json/raw';\nimport type { Derivation, HashFn, Transformation } from '@warp-drive/core-types/schema/concepts';\nimport type {\n ArrayField,\n DerivedField,\n GenericField,\n HashField,\n LegacyAttributeField,\n LegacyField,\n LegacyRelationshipField,\n ObjectField,\n ObjectSchema,\n ResourceSchema,\n} from '@warp-drive/core-types/schema/fields';\n\nimport type { FactoryCache, Model, ModelFactory, ModelStore } from './model';\nimport _modelForMixin from './model-for-mixin';\nimport { normalizeModelName } from './util';\n\ntype AttributesSchema = ReturnType<Exclude<SchemaService['attributesDefinitionFor'], undefined>>;\ntype RelationshipsSchema = ReturnType<Exclude<SchemaService['relationshipsDefinitionFor'], undefined>>;\n\ntype InternalSchema = {\n schema: ResourceSchema;\n fields: Map<string, LegacyAttributeField | LegacyRelationshipField>;\n attributes: Record<string, LegacyAttributeField>;\n relationships: Record<string, LegacyRelationshipField>;\n};\n\nexport interface ModelSchemaProvider {\n attributesDefinitionFor(resource: RecordIdentifier | { type: string }): AttributesSchema;\n\n relationshipsDefinitionFor(resource: RecordIdentifier | { type: string }): RelationshipsSchema;\n\n doesTypeExist(type: string): boolean;\n}\nexport class ModelSchemaProvider implements SchemaService {\n declare store: ModelStore;\n declare _schemas: Map<string, InternalSchema>;\n declare _typeMisses: Set<string>;\n\n constructor(store: ModelStore) {\n this.store = store;\n this._schemas = new Map();\n this._typeMisses = new Set();\n }\n\n resourceTypes(): Readonly<string[]> {\n return Array.from(this._schemas.keys());\n }\n\n hasTrait(type: string): boolean {\n assert(`hasTrait is not available with @ember-data/model's SchemaService`);\n return false;\n }\n resourceHasTrait(resource: StableRecordIdentifier | { type: string }, trait: string): boolean {\n assert(`resourceHasTrait is not available with @ember-data/model's SchemaService`);\n return false;\n }\n transformation(field: GenericField | ObjectField | ArrayField | { type: string }): Transformation {\n assert(`transformation is not available with @ember-data/model's SchemaService`);\n }\n derivation(field: DerivedField | { type: string }): Derivation {\n assert(`derivation is not available with @ember-data/model's SchemaService`);\n }\n hashFn(field: HashField | { type: string }): HashFn {\n assert(`hashFn is not available with @ember-data/model's SchemaService`);\n }\n resource(resource: StableRecordIdentifier | { type: string }): ResourceSchema | ObjectSchema {\n const type = normalizeModelName(resource.type);\n\n if (!this._schemas.has(type)) {\n this._loadModelSchema(type);\n }\n\n return this._schemas.get(type)!.schema;\n }\n registerResources(schemas: Array<ResourceSchema | ObjectSchema>): void {\n assert(`registerResources is not available with @ember-data/model's SchemaService`);\n }\n registerResource(schema: ResourceSchema | ObjectSchema): void {\n assert(`registerResource is not available with @ember-data/model's SchemaService`);\n }\n registerTransformation(transform: Transformation): void {\n assert(`registerTransformation is not available with @ember-data/model's SchemaService`);\n }\n registerDerivation<R, T, FM extends ObjectValue | null>(derivation: Derivation<R, T, FM>): void {\n assert(`registerDerivation is not available with @ember-data/model's SchemaService`);\n }\n registerHashFn(hashFn: HashFn): void {\n assert(`registerHashFn is not available with @ember-data/model's SchemaService`);\n }\n _loadModelSchema(type: string) {\n const modelClass = this.store.modelFor(type) as typeof Model;\n const attributeMap = modelClass.attributes;\n\n const attributes = Object.create(null) as AttributesSchema;\n attributeMap.forEach((meta, name) => (attributes[name] = meta));\n const relationships = modelClass.relationshipsObject || null;\n const fields = new Map<string, LegacyAttributeField | LegacyRelationshipField>();\n\n for (const attr of Object.values(attributes)) {\n fields.set(attr.name, attr);\n }\n\n for (const rel of Object.values(relationships)) {\n fields.set(rel.name, rel);\n }\n\n const schema: ResourceSchema = {\n legacy: true,\n identity: { name: 'id', kind: '@id' },\n type,\n fields: Array.from(fields.values()),\n };\n\n const internalSchema: InternalSchema = {\n schema,\n attributes,\n relationships,\n fields,\n };\n\n this._schemas.set(type, internalSchema);\n\n return internalSchema;\n }\n\n fields(resource: RecordIdentifier | { type: string }): Map<string, LegacyField> {\n const type = normalizeModelName(resource.type);\n\n if (!this._schemas.has(type)) {\n this._loadModelSchema(type);\n }\n\n return this._schemas.get(type)!.fields;\n }\n\n hasResource(resource: { type: string }): boolean {\n const type = normalizeModelName(resource.type);\n\n if (this._schemas.has(type)) {\n return true;\n }\n\n if (this._typeMisses.has(type)) {\n return false;\n }\n\n const factory = getModelFactory(this.store, type);\n const exists = factory !== null;\n\n if (!exists) {\n this._typeMisses.add(type);\n return false;\n }\n\n return true;\n }\n}\n\nif (ENABLE_LEGACY_SCHEMA_SERVICE) {\n ModelSchemaProvider.prototype.doesTypeExist = function (type: string): boolean {\n deprecate(`Use \\`schema.hasResource({ type })\\` instead of \\`schema.doesTypeExist(type)\\``, false, {\n id: 'ember-data:schema-service-updates',\n until: '6.0',\n for: 'ember-data',\n since: {\n available: '4.13',\n enabled: '5.4',\n },\n });\n return this.hasResource({ type });\n };\n\n ModelSchemaProvider.prototype.attributesDefinitionFor = function (\n resource: RecordIdentifier | { type: string }\n ): AttributesSchema {\n deprecate(`Use \\`schema.fields({ type })\\` instead of \\`schema.attributesDefinitionFor({ type })\\``, false, {\n id: 'ember-data:schema-service-updates',\n until: '6.0',\n for: 'ember-data',\n since: {\n available: '4.13',\n enabled: '5.4',\n },\n });\n const type = normalizeModelName(resource.type);\n\n if (!this._schemas.has(type)) {\n this._loadModelSchema(type);\n }\n\n return this._schemas.get(type)!.attributes;\n };\n\n ModelSchemaProvider.prototype.relationshipsDefinitionFor = function (\n resource: RecordIdentifier | { type: string }\n ): RelationshipsSchema {\n deprecate(`Use \\`schema.fields({ type })\\` instead of \\`schema.relationshipsDefinitionFor({ type })\\``, false, {\n id: 'ember-data:schema-service-updates',\n until: '6.0',\n for: 'ember-data',\n since: {\n available: '4.13',\n enabled: '5.4',\n },\n });\n const type = normalizeModelName(resource.type);\n\n if (!this._schemas.has(type)) {\n this._loadModelSchema(type);\n }\n\n return this._schemas.get(type)!.relationships;\n };\n}\n\nexport function buildSchema(store: Store): SchemaService {\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 const klass = factory.class;\n\n if (klass.isModel) {\n const 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"],"names":["modelForMixin","store","normalizedModelName","owner","getOwner","MaybeMixin","factoryFor","mixin","class","ModelForMixin","Model","extend","__isMixin","__mixin","register","ModelSchemaProvider","constructor","_schemas","Map","_typeMisses","Set","resourceTypes","Array","from","keys","hasTrait","type","macroCondition","getGlobalConfig","WarpDrive","env","DEBUG","test","Error","resourceHasTrait","resource","trait","transformation","field","derivation","hashFn","normalizeModelName","has","_loadModelSchema","get","schema","registerResources","schemas","registerResource","registerTransformation","transform","registerDerivation","registerHashFn","modelClass","modelFor","attributeMap","attributes","Object","create","forEach","meta","name","relationships","relationshipsObject","fields","attr","values","set","rel","legacy","identity","kind","internalSchema","hasResource","factory","getModelFactory","exists","add","deprecations","ENABLE_LEGACY_SCHEMA_SERVICE","prototype","doesTypeExist","deprecate","id","until","for","since","available","enabled","attributesDefinitionFor","relationshipsDefinitionFor","buildSchema","_modelFactoryCache","cache","_modelForMixin","klass","isModel","hasOwnModelNameSet","modelName","hasOwnProperty","call","defineProperty","value"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ember-data/model",
3
- "version": "5.4.0-alpha.154",
3
+ "version": "5.4.0-alpha.156",
4
4
  "description": "A basic Ember implementation of a resource presentation layer for use with @ember-data/store",
5
5
  "keywords": [
6
6
  "ember-addon"
@@ -43,13 +43,13 @@
43
43
  },
44
44
  "peerDependencies": {
45
45
  "ember-source": "3.28.12 || ^4.0.4 || ^5.0.0 || ^6.0.0",
46
- "@ember-data/graph": "5.4.0-alpha.154",
47
- "@ember-data/json-api": "5.4.0-alpha.154",
48
- "@ember-data/legacy-compat": "5.4.0-alpha.154",
49
- "@ember-data/store": "5.4.0-alpha.154",
50
- "@ember-data/tracking": "5.4.0-alpha.154",
51
- "@ember-data/request-utils": "5.4.0-alpha.154",
52
- "@warp-drive/core-types": "5.4.0-alpha.154"
46
+ "@ember-data/graph": "5.4.0-alpha.156",
47
+ "@ember-data/json-api": "5.4.0-alpha.156",
48
+ "@ember-data/legacy-compat": "5.4.0-alpha.156",
49
+ "@ember-data/store": "5.4.0-alpha.156",
50
+ "@ember-data/tracking": "5.4.0-alpha.156",
51
+ "@ember-data/request-utils": "5.4.0-alpha.156",
52
+ "@warp-drive/core-types": "5.4.0-alpha.156"
53
53
  },
54
54
  "peerDependenciesMeta": {
55
55
  "@ember-data/json-api": {
@@ -65,24 +65,24 @@
65
65
  "ember-cli-string-utils": "^1.1.0",
66
66
  "ember-cli-test-info": "^1.0.0",
67
67
  "inflection": "~3.0.2",
68
- "@warp-drive/build-config": "5.4.0-alpha.154"
68
+ "@warp-drive/build-config": "5.4.0-alpha.156"
69
69
  },
70
70
  "devDependencies": {
71
71
  "@babel/core": "^7.26.10",
72
72
  "@babel/plugin-transform-typescript": "^7.27.0",
73
73
  "@babel/preset-env": "^7.26.9",
74
74
  "@babel/preset-typescript": "^7.27.0",
75
- "@ember-data/graph": "5.4.0-alpha.154",
76
- "@ember-data/json-api": "5.4.0-alpha.154",
77
- "@ember-data/legacy-compat": "5.4.0-alpha.154",
78
- "@ember-data/request": "5.4.0-alpha.154",
79
- "@ember-data/request-utils": "5.4.0-alpha.154",
80
- "@ember-data/store": "5.4.0-alpha.154",
81
- "@ember-data/tracking": "5.4.0-alpha.154",
75
+ "@ember-data/graph": "5.4.0-alpha.156",
76
+ "@ember-data/json-api": "5.4.0-alpha.156",
77
+ "@ember-data/legacy-compat": "5.4.0-alpha.156",
78
+ "@ember-data/request": "5.4.0-alpha.156",
79
+ "@ember-data/request-utils": "5.4.0-alpha.156",
80
+ "@ember-data/store": "5.4.0-alpha.156",
81
+ "@ember-data/tracking": "5.4.0-alpha.156",
82
82
  "@ember/test-waiters": "^4.1.0",
83
83
  "@glimmer/component": "^2.0.0",
84
- "@warp-drive/core-types": "5.4.0-alpha.154",
85
- "@warp-drive/internal-config": "5.4.0-alpha.154",
84
+ "@warp-drive/core-types": "5.4.0-alpha.156",
85
+ "@warp-drive/internal-config": "5.4.0-alpha.156",
86
86
  "decorator-transforms": "^2.3.0",
87
87
  "ember-source": "~6.3.0",
88
88
  "expect-type": "^1.2.0",
@@ -90,7 +90,7 @@
90
90
  "vite": "^5.4.15"
91
91
  },
92
92
  "engines": {
93
- "node": ">= 18.20.7"
93
+ "node": ">= 18.20.8"
94
94
  },
95
95
  "volta": {
96
96
  "extends": "../../package.json"
@@ -28,6 +28,7 @@ declare module '@ember-data/model/-private/schema-provider' {
28
28
  _schemas: Map<string, InternalSchema>;
29
29
  _typeMisses: Set<string>;
30
30
  constructor(store: ModelStore);
31
+ resourceTypes(): Readonly<string[]>;
31
32
  hasTrait(type: string): boolean;
32
33
  resourceHasTrait(resource: StableRecordIdentifier | {
33
34
  type: string;
@@ -1 +1 @@
1
- {"version":3,"file":"schema-provider.d.ts","sourceRoot":"","sources":["../../src/-private/schema-provider.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"schema-provider.d.ts","sourceRoot":"","sources":["../../src/-private/schema-provider.ts"],"names":[],"mappings":"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"}
@@ -30,6 +30,7 @@ declare module '@ember-data/model/migration-support' {
30
30
  _preferred: SchemaService;
31
31
  _secondary: SchemaService;
32
32
  constructor(store: Store, schema: SchemaService);
33
+ resourceTypes(): Readonly<string[]>;
33
34
  hasResource(resource: StableRecordIdentifier | {
34
35
  type: string;
35
36
  }): boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"migration-support.d.ts","sourceRoot":"","sources":["../src/migration-support.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"migration-support.d.ts","sourceRoot":"","sources":["../src/migration-support.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"schema-provider-CWr9BR0O.js","sources":["../src/-private/model-for-mixin.ts","../src/-private/schema-provider.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 ```ts\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 const owner = getOwner(store)!;\n const MaybeMixin = owner.factoryFor(`mixin:${normalizedModelName}`);\n const mixin = MaybeMixin && MaybeMixin.class;\n if (mixin) {\n const ModelForMixin = Model.extend(mixin) as unknown as { __isMixin: boolean; __mixin: typeof 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}`) as ModelFactory | undefined;\n}\n","import { getOwner } from '@ember/application';\nimport { deprecate } from '@ember/debug';\n\nimport type Store from '@ember-data/store';\nimport type { SchemaService } from '@ember-data/store/types';\nimport { ENABLE_LEGACY_SCHEMA_SERVICE } from '@warp-drive/build-config/deprecations';\nimport { assert } from '@warp-drive/build-config/macros';\nimport type { RecordIdentifier, StableRecordIdentifier } from '@warp-drive/core-types/identifier';\nimport type { ObjectValue } from '@warp-drive/core-types/json/raw';\nimport type { Derivation, HashFn, Transformation } from '@warp-drive/core-types/schema/concepts';\nimport type {\n ArrayField,\n DerivedField,\n GenericField,\n HashField,\n LegacyAttributeField,\n LegacyField,\n LegacyRelationshipField,\n ObjectField,\n ObjectSchema,\n ResourceSchema,\n} from '@warp-drive/core-types/schema/fields';\n\nimport type { FactoryCache, Model, ModelFactory, ModelStore } from './model';\nimport _modelForMixin from './model-for-mixin';\nimport { normalizeModelName } from './util';\n\ntype AttributesSchema = ReturnType<Exclude<SchemaService['attributesDefinitionFor'], undefined>>;\ntype RelationshipsSchema = ReturnType<Exclude<SchemaService['relationshipsDefinitionFor'], undefined>>;\n\ntype InternalSchema = {\n schema: ResourceSchema;\n fields: Map<string, LegacyAttributeField | LegacyRelationshipField>;\n attributes: Record<string, LegacyAttributeField>;\n relationships: Record<string, LegacyRelationshipField>;\n};\n\nexport interface ModelSchemaProvider {\n attributesDefinitionFor(resource: RecordIdentifier | { type: string }): AttributesSchema;\n\n relationshipsDefinitionFor(resource: RecordIdentifier | { type: string }): RelationshipsSchema;\n\n doesTypeExist(type: string): boolean;\n}\nexport class ModelSchemaProvider implements SchemaService {\n declare store: ModelStore;\n declare _schemas: Map<string, InternalSchema>;\n declare _typeMisses: Set<string>;\n\n constructor(store: ModelStore) {\n this.store = store;\n this._schemas = new Map();\n this._typeMisses = new Set();\n }\n\n hasTrait(type: string): boolean {\n assert(`hasTrait is not available with @ember-data/model's SchemaService`);\n return false;\n }\n resourceHasTrait(resource: StableRecordIdentifier | { type: string }, trait: string): boolean {\n assert(`resourceHasTrait is not available with @ember-data/model's SchemaService`);\n return false;\n }\n transformation(field: GenericField | ObjectField | ArrayField | { type: string }): Transformation {\n assert(`transformation is not available with @ember-data/model's SchemaService`);\n }\n derivation(field: DerivedField | { type: string }): Derivation {\n assert(`derivation is not available with @ember-data/model's SchemaService`);\n }\n hashFn(field: HashField | { type: string }): HashFn {\n assert(`hashFn is not available with @ember-data/model's SchemaService`);\n }\n resource(resource: StableRecordIdentifier | { type: string }): ResourceSchema | ObjectSchema {\n const type = normalizeModelName(resource.type);\n\n if (!this._schemas.has(type)) {\n this._loadModelSchema(type);\n }\n\n return this._schemas.get(type)!.schema;\n }\n registerResources(schemas: Array<ResourceSchema | ObjectSchema>): void {\n assert(`registerResources is not available with @ember-data/model's SchemaService`);\n }\n registerResource(schema: ResourceSchema | ObjectSchema): void {\n assert(`registerResource is not available with @ember-data/model's SchemaService`);\n }\n registerTransformation(transform: Transformation): void {\n assert(`registerTransformation is not available with @ember-data/model's SchemaService`);\n }\n registerDerivation<R, T, FM extends ObjectValue | null>(derivation: Derivation<R, T, FM>): void {\n assert(`registerDerivation is not available with @ember-data/model's SchemaService`);\n }\n registerHashFn(hashFn: HashFn): void {\n assert(`registerHashFn is not available with @ember-data/model's SchemaService`);\n }\n _loadModelSchema(type: string) {\n const modelClass = this.store.modelFor(type) as typeof Model;\n const attributeMap = modelClass.attributes;\n\n const attributes = Object.create(null) as AttributesSchema;\n attributeMap.forEach((meta, name) => (attributes[name] = meta));\n const relationships = modelClass.relationshipsObject || null;\n const fields = new Map<string, LegacyAttributeField | LegacyRelationshipField>();\n\n for (const attr of Object.values(attributes)) {\n fields.set(attr.name, attr);\n }\n\n for (const rel of Object.values(relationships)) {\n fields.set(rel.name, rel);\n }\n\n const schema: ResourceSchema = {\n legacy: true,\n identity: { name: 'id', kind: '@id' },\n type,\n fields: Array.from(fields.values()),\n };\n\n const internalSchema: InternalSchema = {\n schema,\n attributes,\n relationships,\n fields,\n };\n\n this._schemas.set(type, internalSchema);\n\n return internalSchema;\n }\n\n fields(resource: RecordIdentifier | { type: string }): Map<string, LegacyField> {\n const type = normalizeModelName(resource.type);\n\n if (!this._schemas.has(type)) {\n this._loadModelSchema(type);\n }\n\n return this._schemas.get(type)!.fields;\n }\n\n hasResource(resource: { type: string }): boolean {\n const type = normalizeModelName(resource.type);\n\n if (this._schemas.has(type)) {\n return true;\n }\n\n if (this._typeMisses.has(type)) {\n return false;\n }\n\n const factory = getModelFactory(this.store, type);\n const exists = factory !== null;\n\n if (!exists) {\n this._typeMisses.add(type);\n return false;\n }\n\n return true;\n }\n}\n\nif (ENABLE_LEGACY_SCHEMA_SERVICE) {\n ModelSchemaProvider.prototype.doesTypeExist = function (type: string): boolean {\n deprecate(`Use \\`schema.hasResource({ type })\\` instead of \\`schema.doesTypeExist(type)\\``, false, {\n id: 'ember-data:schema-service-updates',\n until: '6.0',\n for: 'ember-data',\n since: {\n available: '4.13',\n enabled: '5.4',\n },\n });\n return this.hasResource({ type });\n };\n\n ModelSchemaProvider.prototype.attributesDefinitionFor = function (\n resource: RecordIdentifier | { type: string }\n ): AttributesSchema {\n deprecate(`Use \\`schema.fields({ type })\\` instead of \\`schema.attributesDefinitionFor({ type })\\``, false, {\n id: 'ember-data:schema-service-updates',\n until: '6.0',\n for: 'ember-data',\n since: {\n available: '4.13',\n enabled: '5.4',\n },\n });\n const type = normalizeModelName(resource.type);\n\n if (!this._schemas.has(type)) {\n this._loadModelSchema(type);\n }\n\n return this._schemas.get(type)!.attributes;\n };\n\n ModelSchemaProvider.prototype.relationshipsDefinitionFor = function (\n resource: RecordIdentifier | { type: string }\n ): RelationshipsSchema {\n deprecate(`Use \\`schema.fields({ type })\\` instead of \\`schema.relationshipsDefinitionFor({ type })\\``, false, {\n id: 'ember-data:schema-service-updates',\n until: '6.0',\n for: 'ember-data',\n since: {\n available: '4.13',\n enabled: '5.4',\n },\n });\n const type = normalizeModelName(resource.type);\n\n if (!this._schemas.has(type)) {\n this._loadModelSchema(type);\n }\n\n return this._schemas.get(type)!.relationships;\n };\n}\n\nexport function buildSchema(store: Store): SchemaService {\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 const klass = factory.class;\n\n if (klass.isModel) {\n const 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"],"names":["modelForMixin","store","normalizedModelName","owner","getOwner","MaybeMixin","factoryFor","mixin","class","ModelForMixin","Model","extend","__isMixin","__mixin","register","ModelSchemaProvider","constructor","_schemas","Map","_typeMisses","Set","hasTrait","type","macroCondition","getGlobalConfig","WarpDrive","env","DEBUG","test","Error","resourceHasTrait","resource","trait","transformation","field","derivation","hashFn","normalizeModelName","has","_loadModelSchema","get","schema","registerResources","schemas","registerResource","registerTransformation","transform","registerDerivation","registerHashFn","modelClass","modelFor","attributeMap","attributes","Object","create","forEach","meta","name","relationships","relationshipsObject","fields","attr","values","set","rel","legacy","identity","kind","Array","from","internalSchema","hasResource","factory","getModelFactory","exists","add","deprecations","ENABLE_LEGACY_SCHEMA_SERVICE","prototype","doesTypeExist","deprecate","id","until","for","since","available","enabled","attributesDefinitionFor","relationshipsDefinitionFor","buildSchema","_modelFactoryCache","cache","_modelForMixin","klass","isModel","hasOwnModelNameSet","modelName","hasOwnProperty","call","defineProperty","value"],"mappings":"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"}