@ember-data/legacy-compat 5.6.0-alpha.2 → 5.6.0-alpha.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (35) hide show
  1. package/dist/{-private-Bnt-3W7M.js → -private-CVvkihLY.js} +16 -35
  2. package/dist/-private-CVvkihLY.js.map +1 -0
  3. package/dist/-private.js +1 -1
  4. package/dist/builders.js +0 -31
  5. package/dist/builders.js.map +1 -1
  6. package/dist/index.js +5 -14
  7. package/dist/index.js.map +1 -1
  8. package/dist/utils.js +1 -23
  9. package/dist/utils.js.map +1 -1
  10. package/package.json +15 -18
  11. package/unstable-preview-types/-private.d.ts +1 -2
  12. package/unstable-preview-types/-private.d.ts.map +1 -1
  13. package/unstable-preview-types/builders/find-all.d.ts +0 -6
  14. package/unstable-preview-types/builders/find-all.d.ts.map +1 -1
  15. package/unstable-preview-types/builders/find-record.d.ts +0 -6
  16. package/unstable-preview-types/builders/find-record.d.ts.map +1 -1
  17. package/unstable-preview-types/builders/query.d.ts +0 -9
  18. package/unstable-preview-types/builders/query.d.ts.map +1 -1
  19. package/unstable-preview-types/builders/save-record.d.ts +0 -6
  20. package/unstable-preview-types/builders/save-record.d.ts.map +1 -1
  21. package/unstable-preview-types/builders.d.ts +1 -2
  22. package/unstable-preview-types/builders.d.ts.map +1 -1
  23. package/unstable-preview-types/index.d.ts +12 -20
  24. package/unstable-preview-types/index.d.ts.map +1 -1
  25. package/unstable-preview-types/legacy-network-handler/minimum-adapter-interface.d.ts +1 -21
  26. package/unstable-preview-types/legacy-network-handler/minimum-adapter-interface.d.ts.map +1 -1
  27. package/unstable-preview-types/legacy-network-handler/minimum-serializer-interface.d.ts +1 -10
  28. package/unstable-preview-types/legacy-network-handler/minimum-serializer-interface.d.ts.map +1 -1
  29. package/unstable-preview-types/legacy-network-handler/snapshot-record-array.d.ts +2 -7
  30. package/unstable-preview-types/legacy-network-handler/snapshot-record-array.d.ts.map +1 -1
  31. package/unstable-preview-types/legacy-network-handler/snapshot.d.ts +1 -10
  32. package/unstable-preview-types/legacy-network-handler/snapshot.d.ts.map +1 -1
  33. package/unstable-preview-types/utils.d.ts +0 -21
  34. package/unstable-preview-types/utils.d.ts.map +1 -1
  35. package/dist/-private-Bnt-3W7M.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"builders.js","sources":["../src/builders/utils.ts","../src/builders/find-all.ts","../src/builders/find-record.ts","../src/builders/query.ts","../src/builders/save-record.ts"],"sourcesContent":["import { deprecate } from '@ember/debug';\n\nimport { dasherize } from '@ember-data/request-utils/string';\nimport { DEPRECATE_NON_STRICT_TYPES } from '@warp-drive/build-config/deprecations';\nimport type { ResourceIdentifierObject } from '@warp-drive/core-types/spec/json-api-raw';\n\nexport function isMaybeIdentifier(\n maybeIdentifier: string | ResourceIdentifierObject\n): maybeIdentifier is ResourceIdentifierObject {\n return Boolean(\n maybeIdentifier !== null &&\n typeof maybeIdentifier === 'object' &&\n (('id' in maybeIdentifier && 'type' in maybeIdentifier && maybeIdentifier.id && maybeIdentifier.type) ||\n maybeIdentifier.lid)\n );\n}\n\nexport function normalizeModelName(type: string): string {\n if (DEPRECATE_NON_STRICT_TYPES) {\n const result = 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: '4.13',\n enabled: '5.3',\n },\n }\n );\n\n return result;\n }\n\n return type;\n}\n","/**\n * @module @ember-data/legacy-compat/builders\n */\nimport type { StoreRequestInput } from '@ember-data/store';\nimport type { FindAllOptions } from '@ember-data/store/types';\nimport { assert } from '@warp-drive/build-config/macros';\nimport type { TypedRecordInstance, TypeFromInstance } from '@warp-drive/core-types/record';\nimport { SkipCache } from '@warp-drive/core-types/request';\nimport type { RequestSignature } from '@warp-drive/core-types/symbols';\n\nimport { normalizeModelName } from './utils';\n\ntype FindAllRequestInput<T extends string = string, RT = unknown[]> = StoreRequestInput & {\n op: 'findAll';\n data: {\n type: T;\n options: FindAllBuilderOptions;\n };\n [RequestSignature]?: RT;\n};\n\ntype FindAllBuilderOptions<T = unknown> = FindAllOptions<T>;\n\n/**\n This function builds a request config to perform a `findAll` request for the given type.\n When passed to `store.request`, this config will result in the same behavior as a `store.findAll` request.\n Additionally, it takes the same options as `store.findAll`.\n\n All `@ember-data/legacy-compat` builders exist to enable you to migrate your codebase to using the correct syntax for `store.request` while temporarily preserving legacy behaviors.\n This is useful for quickly upgrading an entire app to a unified syntax while a longer incremental migration is made to shift off of adapters and serializers.\n To that end, these builders are deprecated and will be removed in a future version of Ember Data.\n\n @method findAll\n @deprecated\n @public\n @static\n @for @ember-data/legacy-compat/builders\n @param {String} type the name of the resource\n @param {Object} query a query to be used by the adapter\n @param {FindAllBuilderOptions} [options] optional, may include `adapterOptions` hash which will be passed to adapter.findAll\n @return {FindAllRequestInput} request config\n*/\nexport function findAllBuilder<T extends TypedRecordInstance>(\n type: TypeFromInstance<T>,\n options?: FindAllBuilderOptions<T>\n): FindAllRequestInput<TypeFromInstance<T>, T[]>;\nexport function findAllBuilder(type: string, options?: FindAllBuilderOptions): FindAllRequestInput;\nexport function findAllBuilder(type: string, options: FindAllBuilderOptions = {}): FindAllRequestInput {\n assert(`You need to pass a model name to the findAll builder`, type);\n assert(\n `Model name passed to the findAll builder must be a dasherized string instead of ${type}`,\n typeof type === 'string'\n );\n\n return {\n op: 'findAll',\n data: {\n type: normalizeModelName(type),\n options: options || {},\n },\n cacheOptions: { [SkipCache]: true },\n };\n}\n","/**\n * @module @ember-data/legacy-compat/builders\n */\nimport type { StoreRequestInput } from '@ember-data/store';\nimport { constructResource, ensureStringId } from '@ember-data/store/-private';\nimport type { BaseFinderOptions, FindRecordOptions } from '@ember-data/store/types';\nimport { assert } from '@warp-drive/build-config/macros';\nimport type { TypedRecordInstance, TypeFromInstance } from '@warp-drive/core-types/record';\nimport { SkipCache } from '@warp-drive/core-types/request';\nimport type { ResourceIdentifierObject } from '@warp-drive/core-types/spec/json-api-raw';\nimport type { RequestSignature } from '@warp-drive/core-types/symbols';\n\nimport { isMaybeIdentifier, normalizeModelName } from './utils';\n\ntype FindRecordRequestInput<T extends string = string, RT = unknown> = StoreRequestInput & {\n op: 'findRecord';\n data: {\n record: ResourceIdentifierObject<T>;\n options: FindRecordBuilderOptions;\n };\n [RequestSignature]?: RT;\n};\n\ntype FindRecordBuilderOptions = Omit<FindRecordOptions, 'preload'>;\n\n/**\n This function builds a request config to find the record for a given identifier or type and id combination.\n When passed to `store.request`, this config will result in the same behavior as a `store.findRecord` request.\n Additionally, it takes the same options as `store.findRecord`, with the exception of `preload` (which is unsupported).\n\n **Example 1**\n\n ```ts\n import { findRecord } from '@ember-data/legacy-compat/builders';\n const { content: post } = await store.request<Post>(findRecord<Post>('post', '1'));\n ```\n\n **Example 2**\n\n `findRecord` can be called with a single identifier argument instead of the combination\n of `type` (modelName) and `id` as separate arguments. You may recognize this combo as\n the typical pairing from [JSON:API](https://jsonapi.org/format/#document-resource-object-identification)\n\n ```ts\n import { findRecord } from '@ember-data/legacy-compat/builders';\n const { content: post } = await store.request<Post>(findRecord<Post>({ type: 'post', id }));\n ```\n\n All `@ember-data/legacy-compat` builders exist to enable you to migrate your codebase to using the correct syntax for `store.request` while temporarily preserving legacy behaviors.\n This is useful for quickly upgrading an entire app to a unified syntax while a longer incremental migration is made to shift off of adapters and serializers.\n To that end, these builders are deprecated and will be removed in a future version of Ember Data.\n\n @method findRecord\n @deprecated\n @public\n @static\n @for @ember-data/legacy-compat/builders\n @param {string|object} resource - either a string representing the name of the resource or a ResourceIdentifier object containing both the type (a string) and the id (a string) for the record or an lid (a string) of an existing record\n @param {string|number|object} id - optional object with options for the request only if the first param is a ResourceIdentifier, else the string id of the record to be retrieved\n @param {FindRecordBuilderOptions} [options] - if the first param is a string this will be the optional options for the request. See examples for available options.\n @return {FindRecordRequestInput} request config\n*/\nexport function findRecordBuilder<T extends TypedRecordInstance>(\n type: TypeFromInstance<T>,\n id: string,\n options?: FindRecordBuilderOptions\n): FindRecordRequestInput<TypeFromInstance<T>, T>;\nexport function findRecordBuilder(type: string, id: string, options?: FindRecordBuilderOptions): FindRecordRequestInput;\nexport function findRecordBuilder<T extends TypedRecordInstance>(\n resource: ResourceIdentifierObject<TypeFromInstance<T>>,\n options?: FindRecordBuilderOptions\n): FindRecordRequestInput<TypeFromInstance<T>, T>;\nexport function findRecordBuilder(\n resource: ResourceIdentifierObject,\n options?: FindRecordBuilderOptions\n): FindRecordRequestInput;\nexport function findRecordBuilder(\n resource: string | ResourceIdentifierObject,\n idOrOptions?: string | FindRecordBuilderOptions,\n options?: FindRecordBuilderOptions\n): FindRecordRequestInput {\n assert(\n `You need to pass a modelName or resource identifier as the first argument to the findRecord builder`,\n resource\n );\n if (isMaybeIdentifier(resource)) {\n options = idOrOptions as BaseFinderOptions | undefined;\n } else {\n assert(\n `You need to pass a modelName or resource identifier as the first argument to the findRecord builder (passed ${resource})`,\n typeof resource === 'string'\n );\n const type = normalizeModelName(resource);\n const normalizedId = ensureStringId(idOrOptions as string | number);\n resource = constructResource(type, normalizedId);\n }\n\n options = options || {};\n\n assert('findRecord builder does not support options.preload', !(options as FindRecordOptions).preload);\n\n return {\n op: 'findRecord' as const,\n data: {\n record: resource,\n options,\n },\n cacheOptions: { [SkipCache]: true },\n };\n}\n","/**\n * @module @ember-data/legacy-compat/builders\n */\nimport type { StoreRequestInput } from '@ember-data/store';\nimport type { LegacyResourceQuery, QueryOptions } from '@ember-data/store/types';\nimport { assert } from '@warp-drive/build-config/macros';\nimport type { TypedRecordInstance, TypeFromInstance } from '@warp-drive/core-types/record';\nimport { SkipCache } from '@warp-drive/core-types/request';\nimport type { RequestSignature } from '@warp-drive/core-types/symbols';\n\nimport { normalizeModelName } from './utils';\n\ntype QueryRequestInput<T extends string = string, RT = unknown[]> = StoreRequestInput & {\n op: 'query';\n data: {\n type: T;\n query: LegacyResourceQuery;\n options: QueryBuilderOptions;\n };\n [RequestSignature]?: RT;\n};\n\ntype QueryBuilderOptions = QueryOptions;\n\n/**\n This function builds a request config for a given type and query object.\n When passed to `store.request`, this config will result in the same behavior as a `store.query` request.\n Additionally, it takes the same options as `store.query`.\n\n All `@ember-data/legacy-compat` builders exist to enable you to migrate your codebase to using the correct syntax for `store.request` while temporarily preserving legacy behaviors.\n This is useful for quickly upgrading an entire app to a unified syntax while a longer incremental migration is made to shift off of adapters and serializers.\n To that end, these builders are deprecated and will be removed in a future version of Ember Data.\n\n @method query\n @deprecated\n @public\n @static\n @for @ember-data/legacy-compat/builders\n @param {String} type the name of the resource\n @param {Object} query a query to be used by the adapter\n @param {QueryBuilderOptions} [options] optional, may include `adapterOptions` hash which will be passed to adapter.query\n @return {QueryRequestInput} request config\n*/\nexport function queryBuilder<T extends TypedRecordInstance>(\n type: TypeFromInstance<T>,\n query: LegacyResourceQuery<T>,\n options?: QueryBuilderOptions\n): QueryRequestInput<TypeFromInstance<T>, T[]>;\nexport function queryBuilder(\n type: string,\n query: LegacyResourceQuery,\n options?: QueryBuilderOptions\n): QueryRequestInput;\nexport function queryBuilder(\n type: string,\n query: LegacyResourceQuery,\n options: QueryBuilderOptions = {}\n): QueryRequestInput {\n assert(`You need to pass a model name to the query builder`, type);\n assert(`You need to pass a query hash to the query builder`, query);\n assert(\n `Model name passed to the query builder must be a dasherized string instead of ${type}`,\n typeof type === 'string'\n );\n\n return {\n op: 'query' as const,\n data: {\n type: normalizeModelName(type),\n query,\n options: options,\n },\n cacheOptions: { [SkipCache]: true },\n };\n}\n\ntype QueryRecordRequestInput<T extends string = string, RT = unknown> = StoreRequestInput & {\n op: 'queryRecord';\n data: {\n type: T;\n query: LegacyResourceQuery;\n options: QueryBuilderOptions;\n };\n [RequestSignature]?: RT;\n};\n\n/**\n This function builds a request config for a given type and query object.\n When passed to `store.request`, this config will result in the same behavior as a `store.queryRecord` request.\n Additionally, it takes the same options as `store.queryRecord`.\n\n All `@ember-data/legacy-compat` builders exist to enable you to migrate your codebase to using the correct syntax for `store.request` while temporarily preserving legacy behaviors.\n This is useful for quickly upgrading an entire app to a unified syntax while a longer incremental migration is made to shift off of adapters and serializers.\n To that end, these builders are deprecated and will be removed in a future version of Ember Data.\n\n @method queryRecord\n @deprecated\n @public\n @static\n @for @ember-data/legacy-compat/builders\n @param {String} type the name of the resource\n @param {Object} query a query to be used by the adapter\n @param {QueryBuilderOptions} [options] optional, may include `adapterOptions` hash which will be passed to adapter.query\n @return {QueryRecordRequestInput} request config\n*/\nexport function queryRecordBuilder<T extends TypedRecordInstance>(\n type: TypeFromInstance<T>,\n query: LegacyResourceQuery<T>,\n options?: QueryBuilderOptions\n): QueryRecordRequestInput<TypeFromInstance<T>, T | null>;\nexport function queryRecordBuilder(\n type: string,\n query: LegacyResourceQuery,\n options?: QueryBuilderOptions\n): QueryRecordRequestInput;\nexport function queryRecordBuilder(\n type: string,\n query: LegacyResourceQuery,\n options?: QueryBuilderOptions\n): QueryRecordRequestInput {\n assert(`You need to pass a model name to the queryRecord builder`, type);\n assert(`You need to pass a query hash to the queryRecord builder`, query);\n assert(\n `Model name passed to the queryRecord builder must be a dasherized string instead of ${type}`,\n typeof type === 'string'\n );\n\n return {\n op: 'queryRecord',\n data: {\n type: normalizeModelName(type),\n query,\n options: options || {},\n },\n cacheOptions: { [SkipCache]: true },\n };\n}\n","/**\n * @module @ember-data/legacy-compat/builders\n */\nimport { recordIdentifierFor, storeFor, type StoreRequestInput } from '@ember-data/store';\nimport type { InstanceCache } 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 { TypedRecordInstance, TypeFromInstance } from '@warp-drive/core-types/record';\nimport { SkipCache } from '@warp-drive/core-types/request';\nimport type { RequestSignature } from '@warp-drive/core-types/symbols';\n\ntype SaveRecordRequestInput<T extends string = string, RT = unknown> = StoreRequestInput & {\n op: 'createRecord' | 'deleteRecord' | 'updateRecord';\n data: {\n record: StableRecordIdentifier<T>;\n options: SaveRecordBuilderOptions;\n };\n records: [StableRecordIdentifier<T>];\n [RequestSignature]?: RT;\n};\n\ntype SaveRecordBuilderOptions = Record<string, unknown>;\n\nfunction _resourceIsFullDeleted(identifier: StableRecordIdentifier, cache: Cache): boolean {\n return cache.isDeletionCommitted(identifier) || (cache.isNew(identifier) && cache.isDeleted(identifier));\n}\n\nfunction resourceIsFullyDeleted(instanceCache: InstanceCache, identifier: StableRecordIdentifier): boolean {\n const cache = instanceCache.cache;\n return !cache || _resourceIsFullDeleted(identifier, cache);\n}\n\n/**\n This function builds a request config for saving the given record (e.g. creating, updating, or deleting the record).\n When passed to `store.request`, this config will result in the same behavior as a legacy `store.saveRecord` request.\n Additionally, it takes the same options as `store.saveRecord`.\n\n All `@ember-data/legacy-compat` builders exist to enable you to migrate your codebase to using the correct syntax for `store.request` while temporarily preserving legacy behaviors.\n This is useful for quickly upgrading an entire app to a unified syntax while a longer incremental migration is made to shift off of adapters and serializers.\n To that end, these builders are deprecated and will be removed in a future version of Ember Data.\n\n @method saveRecord\n @deprecated\n @public\n @static\n @for @ember-data/legacy-compat/builders\n @param {Object} record a record to save\n @param {SaveRecordBuilderOptions} options optional, may include `adapterOptions` hash which will be passed to adapter.saveRecord\n @return {SaveRecordRequestInput} request config\n*/\nexport function saveRecordBuilder<T extends TypedRecordInstance>(\n record: T,\n options: Record<string, unknown> = {}\n): SaveRecordRequestInput<TypeFromInstance<T>, T> {\n const store = storeFor(record);\n assert(`Unable to initiate save for a record in a disconnected state`, store);\n const identifier = recordIdentifierFor<T>(record);\n\n if (!identifier) {\n // this commonly means we're disconnected\n // but just in case we throw here to prevent bad things.\n throw new Error(`Record Is Disconnected`);\n }\n assert(\n `Cannot initiate a save request for an unloaded record: ${identifier.lid}`,\n store._instanceCache.recordIsLoaded(identifier)\n );\n if (resourceIsFullyDeleted(store._instanceCache, identifier)) {\n throw new Error('cannot build saveRecord request for deleted record');\n }\n\n if (!options) {\n options = {};\n }\n let operation: 'createRecord' | 'deleteRecord' | 'updateRecord' = 'updateRecord';\n\n const cache = store.cache;\n if (cache.isNew(identifier)) {\n operation = 'createRecord';\n } else if (cache.isDeleted(identifier)) {\n operation = 'deleteRecord';\n }\n\n return {\n op: operation,\n data: {\n options,\n record: identifier,\n },\n records: [identifier],\n cacheOptions: { [SkipCache]: true },\n };\n}\n"],"names":["isMaybeIdentifier","maybeIdentifier","Boolean","id","type","lid","normalizeModelName","macroCondition","getGlobalConfig","WarpDrive","deprecations","DEPRECATE_NON_STRICT_TYPES","result","dasherize","deprecate","until","for","since","available","enabled","findAllBuilder","options","env","DEBUG","test","Error","op","data","cacheOptions","SkipCache","findRecordBuilder","resource","idOrOptions","normalizedId","ensureStringId","constructResource","preload","record","queryBuilder","query","queryRecordBuilder","_resourceIsFullDeleted","identifier","cache","isDeletionCommitted","isNew","isDeleted","resourceIsFullyDeleted","instanceCache","saveRecordBuilder","store","storeFor","recordIdentifierFor","_instanceCache","recordIsLoaded","operation","records"],"mappings":"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"}
1
+ {"version":3,"file":"builders.js","sources":["../src/builders/utils.ts","../src/builders/find-all.ts","../src/builders/find-record.ts","../src/builders/query.ts","../src/builders/save-record.ts"],"sourcesContent":["import { deprecate } from '@ember/debug';\n\nimport { dasherize } from '@ember-data/request-utils/string';\nimport { DEPRECATE_NON_STRICT_TYPES } from '@warp-drive/build-config/deprecations';\nimport type { ResourceIdentifierObject } from '@warp-drive/core-types/spec/json-api-raw';\n\nexport function isMaybeIdentifier(\n maybeIdentifier: string | ResourceIdentifierObject\n): maybeIdentifier is ResourceIdentifierObject {\n return Boolean(\n maybeIdentifier !== null &&\n typeof maybeIdentifier === 'object' &&\n (('id' in maybeIdentifier && 'type' in maybeIdentifier && maybeIdentifier.id && maybeIdentifier.type) ||\n maybeIdentifier.lid)\n );\n}\n\nexport function normalizeModelName(type: string): string {\n if (DEPRECATE_NON_STRICT_TYPES) {\n const result = 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: '4.13',\n enabled: '5.3',\n },\n }\n );\n\n return result;\n }\n\n return type;\n}\n","import type { StoreRequestInput } from '@ember-data/store';\nimport type { FindAllOptions } from '@ember-data/store/types';\nimport { assert } from '@warp-drive/build-config/macros';\nimport type { TypedRecordInstance, TypeFromInstance } from '@warp-drive/core-types/record';\nimport { SkipCache } from '@warp-drive/core-types/request';\nimport type { RequestSignature } from '@warp-drive/core-types/symbols';\n\nimport { normalizeModelName } from './utils';\n\ntype FindAllRequestInput<T extends string = string, RT = unknown[]> = StoreRequestInput & {\n op: 'findAll';\n data: {\n type: T;\n options: FindAllBuilderOptions;\n };\n [RequestSignature]?: RT;\n};\n\ntype FindAllBuilderOptions<T = unknown> = FindAllOptions<T>;\n\n/**\n This function builds a request config to perform a `findAll` request for the given type.\n When passed to `store.request`, this config will result in the same behavior as a `store.findAll` request.\n Additionally, it takes the same options as `store.findAll`.\n\n All `@ember-data/legacy-compat` builders exist to enable you to migrate your codebase to using the correct syntax for `store.request` while temporarily preserving legacy behaviors.\n This is useful for quickly upgrading an entire app to a unified syntax while a longer incremental migration is made to shift off of adapters and serializers.\n To that end, these builders are deprecated and will be removed in a future version of Ember Data.\n\n @deprecated\n @public\n @param {String} type the name of the resource\n @param {Object} query a query to be used by the adapter\n @param {FindAllBuilderOptions} [options] optional, may include `adapterOptions` hash which will be passed to adapter.findAll\n @return {FindAllRequestInput} request config\n*/\nexport function findAllBuilder<T extends TypedRecordInstance>(\n type: TypeFromInstance<T>,\n options?: FindAllBuilderOptions<T>\n): FindAllRequestInput<TypeFromInstance<T>, T[]>;\nexport function findAllBuilder(type: string, options?: FindAllBuilderOptions): FindAllRequestInput;\nexport function findAllBuilder(type: string, options: FindAllBuilderOptions = {}): FindAllRequestInput {\n assert(`You need to pass a model name to the findAll builder`, type);\n assert(\n `Model name passed to the findAll builder must be a dasherized string instead of ${type}`,\n typeof type === 'string'\n );\n\n return {\n op: 'findAll',\n data: {\n type: normalizeModelName(type),\n options: options || {},\n },\n cacheOptions: { [SkipCache]: true },\n };\n}\n","import type { StoreRequestInput } from '@ember-data/store';\nimport { constructResource, ensureStringId } from '@ember-data/store/-private';\nimport type { BaseFinderOptions, FindRecordOptions } from '@ember-data/store/types';\nimport { assert } from '@warp-drive/build-config/macros';\nimport type { TypedRecordInstance, TypeFromInstance } from '@warp-drive/core-types/record';\nimport { SkipCache } from '@warp-drive/core-types/request';\nimport type { ResourceIdentifierObject } from '@warp-drive/core-types/spec/json-api-raw';\nimport type { RequestSignature } from '@warp-drive/core-types/symbols';\n\nimport { isMaybeIdentifier, normalizeModelName } from './utils';\n\ntype FindRecordRequestInput<T extends string = string, RT = unknown> = StoreRequestInput & {\n op: 'findRecord';\n data: {\n record: ResourceIdentifierObject<T>;\n options: FindRecordBuilderOptions;\n };\n [RequestSignature]?: RT;\n};\n\ntype FindRecordBuilderOptions = Omit<FindRecordOptions, 'preload'>;\n\n/**\n This function builds a request config to find the record for a given identifier or type and id combination.\n When passed to `store.request`, this config will result in the same behavior as a `store.findRecord` request.\n Additionally, it takes the same options as `store.findRecord`, with the exception of `preload` (which is unsupported).\n\n **Example 1**\n\n ```ts\n import { findRecord } from '@ember-data/legacy-compat/builders';\n const { content: post } = await store.request<Post>(findRecord<Post>('post', '1'));\n ```\n\n **Example 2**\n\n `findRecord` can be called with a single identifier argument instead of the combination\n of `type` (modelName) and `id` as separate arguments. You may recognize this combo as\n the typical pairing from [JSON:API](https://jsonapi.org/format/#document-resource-object-identification)\n\n ```ts\n import { findRecord } from '@ember-data/legacy-compat/builders';\n const { content: post } = await store.request<Post>(findRecord<Post>({ type: 'post', id }));\n ```\n\n All `@ember-data/legacy-compat` builders exist to enable you to migrate your codebase to using the correct syntax for `store.request` while temporarily preserving legacy behaviors.\n This is useful for quickly upgrading an entire app to a unified syntax while a longer incremental migration is made to shift off of adapters and serializers.\n To that end, these builders are deprecated and will be removed in a future version of Ember Data.\n\n @deprecated\n @public\n @param {string|object} resource - either a string representing the name of the resource or a ResourceIdentifier object containing both the type (a string) and the id (a string) for the record or an lid (a string) of an existing record\n @param {string|number|object} id - optional object with options for the request only if the first param is a ResourceIdentifier, else the string id of the record to be retrieved\n @param {FindRecordBuilderOptions} [options] - if the first param is a string this will be the optional options for the request. See examples for available options.\n @return {FindRecordRequestInput} request config\n*/\nexport function findRecordBuilder<T extends TypedRecordInstance>(\n type: TypeFromInstance<T>,\n id: string,\n options?: FindRecordBuilderOptions\n): FindRecordRequestInput<TypeFromInstance<T>, T>;\nexport function findRecordBuilder(type: string, id: string, options?: FindRecordBuilderOptions): FindRecordRequestInput;\nexport function findRecordBuilder<T extends TypedRecordInstance>(\n resource: ResourceIdentifierObject<TypeFromInstance<T>>,\n options?: FindRecordBuilderOptions\n): FindRecordRequestInput<TypeFromInstance<T>, T>;\nexport function findRecordBuilder(\n resource: ResourceIdentifierObject,\n options?: FindRecordBuilderOptions\n): FindRecordRequestInput;\nexport function findRecordBuilder(\n resource: string | ResourceIdentifierObject,\n idOrOptions?: string | FindRecordBuilderOptions,\n options?: FindRecordBuilderOptions\n): FindRecordRequestInput {\n assert(\n `You need to pass a modelName or resource identifier as the first argument to the findRecord builder`,\n resource\n );\n if (isMaybeIdentifier(resource)) {\n options = idOrOptions as BaseFinderOptions | undefined;\n } else {\n assert(\n `You need to pass a modelName or resource identifier as the first argument to the findRecord builder (passed ${resource})`,\n typeof resource === 'string'\n );\n const type = normalizeModelName(resource);\n const normalizedId = ensureStringId(idOrOptions as string | number);\n resource = constructResource(type, normalizedId);\n }\n\n options = options || {};\n\n assert('findRecord builder does not support options.preload', !(options as FindRecordOptions).preload);\n\n return {\n op: 'findRecord' as const,\n data: {\n record: resource,\n options,\n },\n cacheOptions: { [SkipCache]: true },\n };\n}\n","import type { StoreRequestInput } from '@ember-data/store';\nimport type { LegacyResourceQuery, QueryOptions } from '@ember-data/store/types';\nimport { assert } from '@warp-drive/build-config/macros';\nimport type { TypedRecordInstance, TypeFromInstance } from '@warp-drive/core-types/record';\nimport { SkipCache } from '@warp-drive/core-types/request';\nimport type { RequestSignature } from '@warp-drive/core-types/symbols';\n\nimport { normalizeModelName } from './utils';\n\ntype QueryRequestInput<T extends string = string, RT = unknown[]> = StoreRequestInput & {\n op: 'query';\n data: {\n type: T;\n query: LegacyResourceQuery;\n options: QueryBuilderOptions;\n };\n [RequestSignature]?: RT;\n};\n\ntype QueryBuilderOptions = QueryOptions;\n\n/**\n This function builds a request config for a given type and query object.\n When passed to `store.request`, this config will result in the same behavior as a `store.query` request.\n Additionally, it takes the same options as `store.query`.\n\n All `@ember-data/legacy-compat` builders exist to enable you to migrate your codebase to using the correct syntax for `store.request` while temporarily preserving legacy behaviors.\n This is useful for quickly upgrading an entire app to a unified syntax while a longer incremental migration is made to shift off of adapters and serializers.\n To that end, these builders are deprecated and will be removed in a future version of Ember Data.\n\n @deprecated\n @public\n @param {String} type the name of the resource\n @param {Object} query a query to be used by the adapter\n @param {QueryBuilderOptions} [options] optional, may include `adapterOptions` hash which will be passed to adapter.query\n @return {QueryRequestInput} request config\n*/\nexport function queryBuilder<T extends TypedRecordInstance>(\n type: TypeFromInstance<T>,\n query: LegacyResourceQuery<T>,\n options?: QueryBuilderOptions\n): QueryRequestInput<TypeFromInstance<T>, T[]>;\nexport function queryBuilder(\n type: string,\n query: LegacyResourceQuery,\n options?: QueryBuilderOptions\n): QueryRequestInput;\nexport function queryBuilder(\n type: string,\n query: LegacyResourceQuery,\n options: QueryBuilderOptions = {}\n): QueryRequestInput {\n assert(`You need to pass a model name to the query builder`, type);\n assert(`You need to pass a query hash to the query builder`, query);\n assert(\n `Model name passed to the query builder must be a dasherized string instead of ${type}`,\n typeof type === 'string'\n );\n\n return {\n op: 'query' as const,\n data: {\n type: normalizeModelName(type),\n query,\n options: options,\n },\n cacheOptions: { [SkipCache]: true },\n };\n}\n\ntype QueryRecordRequestInput<T extends string = string, RT = unknown> = StoreRequestInput & {\n op: 'queryRecord';\n data: {\n type: T;\n query: LegacyResourceQuery;\n options: QueryBuilderOptions;\n };\n [RequestSignature]?: RT;\n};\n\n/**\n This function builds a request config for a given type and query object.\n When passed to `store.request`, this config will result in the same behavior as a `store.queryRecord` request.\n Additionally, it takes the same options as `store.queryRecord`.\n\n All `@ember-data/legacy-compat` builders exist to enable you to migrate your codebase to using the correct syntax for `store.request` while temporarily preserving legacy behaviors.\n This is useful for quickly upgrading an entire app to a unified syntax while a longer incremental migration is made to shift off of adapters and serializers.\n To that end, these builders are deprecated and will be removed in a future version of Ember Data.\n\n @deprecated\n @public\n @param {String} type the name of the resource\n @param {Object} query a query to be used by the adapter\n @param {QueryBuilderOptions} [options] optional, may include `adapterOptions` hash which will be passed to adapter.query\n @return {QueryRecordRequestInput} request config\n*/\nexport function queryRecordBuilder<T extends TypedRecordInstance>(\n type: TypeFromInstance<T>,\n query: LegacyResourceQuery<T>,\n options?: QueryBuilderOptions\n): QueryRecordRequestInput<TypeFromInstance<T>, T | null>;\nexport function queryRecordBuilder(\n type: string,\n query: LegacyResourceQuery,\n options?: QueryBuilderOptions\n): QueryRecordRequestInput;\nexport function queryRecordBuilder(\n type: string,\n query: LegacyResourceQuery,\n options?: QueryBuilderOptions\n): QueryRecordRequestInput {\n assert(`You need to pass a model name to the queryRecord builder`, type);\n assert(`You need to pass a query hash to the queryRecord builder`, query);\n assert(\n `Model name passed to the queryRecord builder must be a dasherized string instead of ${type}`,\n typeof type === 'string'\n );\n\n return {\n op: 'queryRecord',\n data: {\n type: normalizeModelName(type),\n query,\n options: options || {},\n },\n cacheOptions: { [SkipCache]: true },\n };\n}\n","import { recordIdentifierFor, storeFor, type StoreRequestInput } from '@ember-data/store';\nimport type { InstanceCache } 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 { TypedRecordInstance, TypeFromInstance } from '@warp-drive/core-types/record';\nimport { SkipCache } from '@warp-drive/core-types/request';\nimport type { RequestSignature } from '@warp-drive/core-types/symbols';\n\ntype SaveRecordRequestInput<T extends string = string, RT = unknown> = StoreRequestInput & {\n op: 'createRecord' | 'deleteRecord' | 'updateRecord';\n data: {\n record: StableRecordIdentifier<T>;\n options: SaveRecordBuilderOptions;\n };\n records: [StableRecordIdentifier<T>];\n [RequestSignature]?: RT;\n};\n\ntype SaveRecordBuilderOptions = Record<string, unknown>;\n\nfunction _resourceIsFullDeleted(identifier: StableRecordIdentifier, cache: Cache): boolean {\n return cache.isDeletionCommitted(identifier) || (cache.isNew(identifier) && cache.isDeleted(identifier));\n}\n\nfunction resourceIsFullyDeleted(instanceCache: InstanceCache, identifier: StableRecordIdentifier): boolean {\n const cache = instanceCache.cache;\n return !cache || _resourceIsFullDeleted(identifier, cache);\n}\n\n/**\n This function builds a request config for saving the given record (e.g. creating, updating, or deleting the record).\n When passed to `store.request`, this config will result in the same behavior as a legacy `store.saveRecord` request.\n Additionally, it takes the same options as `store.saveRecord`.\n\n All `@ember-data/legacy-compat` builders exist to enable you to migrate your codebase to using the correct syntax for `store.request` while temporarily preserving legacy behaviors.\n This is useful for quickly upgrading an entire app to a unified syntax while a longer incremental migration is made to shift off of adapters and serializers.\n To that end, these builders are deprecated and will be removed in a future version of Ember Data.\n\n @deprecated\n @public\n @param {Object} record a record to save\n @param {SaveRecordBuilderOptions} options optional, may include `adapterOptions` hash which will be passed to adapter.saveRecord\n @return {SaveRecordRequestInput} request config\n*/\nexport function saveRecordBuilder<T extends TypedRecordInstance>(\n record: T,\n options: Record<string, unknown> = {}\n): SaveRecordRequestInput<TypeFromInstance<T>, T> {\n const store = storeFor(record);\n assert(`Unable to initiate save for a record in a disconnected state`, store);\n const identifier = recordIdentifierFor<T>(record);\n\n if (!identifier) {\n // this commonly means we're disconnected\n // but just in case we throw here to prevent bad things.\n throw new Error(`Record Is Disconnected`);\n }\n assert(\n `Cannot initiate a save request for an unloaded record: ${identifier.lid}`,\n store._instanceCache.recordIsLoaded(identifier)\n );\n if (resourceIsFullyDeleted(store._instanceCache, identifier)) {\n throw new Error('cannot build saveRecord request for deleted record');\n }\n\n if (!options) {\n options = {};\n }\n let operation: 'createRecord' | 'deleteRecord' | 'updateRecord' = 'updateRecord';\n\n const cache = store.cache;\n if (cache.isNew(identifier)) {\n operation = 'createRecord';\n } else if (cache.isDeleted(identifier)) {\n operation = 'deleteRecord';\n }\n\n return {\n op: operation,\n data: {\n options,\n record: identifier,\n },\n records: [identifier],\n cacheOptions: { [SkipCache]: true },\n };\n}\n"],"names":["isMaybeIdentifier","maybeIdentifier","Boolean","id","type","lid","normalizeModelName","macroCondition","getGlobalConfig","WarpDrive","deprecations","DEPRECATE_NON_STRICT_TYPES","result","dasherize","deprecate","until","for","since","available","enabled","findAllBuilder","options","env","DEBUG","test","Error","op","data","cacheOptions","SkipCache","findRecordBuilder","resource","idOrOptions","normalizedId","ensureStringId","constructResource","preload","record","queryBuilder","query","queryRecordBuilder","_resourceIsFullDeleted","identifier","cache","isDeletionCommitted","isNew","isDeleted","resourceIsFullyDeleted","instanceCache","saveRecordBuilder","store","storeFor","recordIdentifierFor","_instanceCache","recordIsLoaded","operation","records"],"mappings":"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"}
package/dist/index.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import { getOwner } from '@ember/application';
2
2
  import { recordIdentifierFor } from '@ember-data/store';
3
3
  import { _deprecatingNormalize } from '@ember-data/store/-private';
4
- import { p as payloadIsNotBlank, n as normalizeResponseHelper, i as iterateData, F as FetchManager, S as SaveOp, a as assertIdentifierHasId, b as SnapshotRecordArray } from "./-private-Bnt-3W7M.js";
4
+ import { p as payloadIsNotBlank, n as normalizeResponseHelper, i as iterateData, F as FetchManager, S as SaveOp, a as assertIdentifierHasId, b as SnapshotRecordArray } from "./-private-CVvkihLY.js";
5
5
  import { macroCondition, getGlobalConfig, importSync } from '@embroider/macros';
6
6
  function _findHasMany(adapter, store, identifier, link, relationship, options) {
7
7
  const promise = Promise.resolve().then(() => {
@@ -734,11 +734,6 @@ function queryRecord(context) {
734
734
  });
735
735
  }
736
736
 
737
- /**
738
- * @module @ember-data/store
739
- * @class Store
740
- */
741
-
742
737
  /**
743
738
  Returns an instance of the adapter for a given type. For
744
739
  example, `adapterFor('person')` will return an instance of
@@ -748,10 +743,9 @@ function queryRecord(context) {
748
743
  for an `application` adapter (the default adapter for
749
744
  your entire application).
750
745
 
751
- @method adapterFor
752
746
  @public
753
747
  @param {String} modelName
754
- @return Adapter
748
+ @return {Adapter}
755
749
  */
756
750
 
757
751
  function adapterFor(modelName, _allowMissing) {
@@ -814,7 +808,6 @@ function adapterFor(modelName, _allowMissing) {
814
808
  If a serializer cannot be found on the adapter, it will fall back
815
809
  to an instance of `JSONSerializer`.
816
810
 
817
- @method serializerFor
818
811
  @public
819
812
  @param {String} modelName the record to serialize
820
813
  @return {Serializer}
@@ -877,7 +870,6 @@ function serializerFor(modelName) {
877
870
  });
878
871
  ```
879
872
 
880
- @method normalize
881
873
  @public
882
874
  @param {String} modelName The name of the model type for this payload
883
875
  @param {Object} payload
@@ -920,7 +912,7 @@ function normalize(modelName, payload) {
920
912
  All objects should be in the format expected by the
921
913
  serializer.
922
914
 
923
- ```app/serializers/application.js
915
+ ```js [app/serializers/application.js]
924
916
  import RESTSerializer from '@ember-data/serializer/rest';
925
917
 
926
918
  export default class ApplicationSerializer extends RESTSerializer;
@@ -945,13 +937,13 @@ function normalize(modelName, payload) {
945
937
  Alternatively, `pushPayload` will accept a model type which
946
938
  will determine which serializer will process the payload.
947
939
 
948
- ```app/serializers/application.js
940
+ ```js [app/serializers/application.js]
949
941
  import RESTSerializer from '@ember-data/serializer/rest';
950
942
 
951
943
  export default class ApplicationSerializer extends RESTSerializer;
952
944
  ```
953
945
 
954
- ```app/serializers/post.js
946
+ ```js [app/serializers/post.js]
955
947
  import JSONSerializer from '@ember-data/serializer/json';
956
948
 
957
949
  export default JSONSerializer;
@@ -962,7 +954,6 @@ function normalize(modelName, payload) {
962
954
  store.pushPayload('post', pushData); // Will use the post serializer
963
955
  ```
964
956
 
965
- @method pushPayload
966
957
  @public
967
958
  @param {String} modelName Optionally, a model type used to determine which serializer will be used
968
959
  @param {Object} inputPayload