From 9ce452d484716c8d6157217ec8b2429597f5fd6f Mon Sep 17 00:00:00 2001 From: Chris Thoburn Date: Fri, 22 Mar 2024 16:24:27 -0700 Subject: [PATCH 1/4] types: improve types needed for serializers --- packages/core-types/src/spec/raw.ts | 15 +- ...acy-data-fetch.js => legacy-data-fetch.ts} | 188 ++++++++++++------ .../legacy-data-utils.ts | 6 +- packages/model/src/-private/model.d.ts | 6 +- packages/serializer/package.json | 5 + .../src/-private/transforms/boolean.ts | 4 + .../src/-private/transforms/date.ts | 4 + .../src/-private/transforms/number.ts | 4 + .../src/-private/transforms/string.ts | 4 + packages/serializer/src/index.ts | 5 +- pnpm-lock.yaml | 151 ++++++++++---- 11 files changed, 283 insertions(+), 109 deletions(-) rename packages/legacy-compat/src/legacy-network-handler/{legacy-data-fetch.js => legacy-data-fetch.ts} (54%) diff --git a/packages/core-types/src/spec/raw.ts b/packages/core-types/src/spec/raw.ts index baa93c4acae..364c5009ae1 100644 --- a/packages/core-types/src/spec/raw.ts +++ b/packages/core-types/src/spec/raw.ts @@ -96,18 +96,23 @@ export type ResourceIdentifierObject = | NewResourceIdentifierObject; // TODO disallow NewResource, make narrowable -export interface SingleResourceRelationship { - data?: ExistingResourceIdentifierObject | NewResourceIdentifierObject | null; +export interface SingleResourceRelationship { + data?: T | null; meta?: Meta; links?: Links; } -export interface CollectionResourceRelationship { - data?: Array; +export interface CollectionResourceRelationship { + data?: T[]; meta?: Meta; links?: PaginationLinks; } +export type ResourceRelationshipsObject = Record< + string, + SingleResourceRelationship | CollectionResourceRelationship +>; + /** * Contains the data for an existing resource in JSON:API format * @internal @@ -115,7 +120,7 @@ export interface CollectionResourceRelationship { export interface ExistingResourceObject extends ExistingResourceIdentifierObject { meta?: Meta; attributes?: ObjectValue; - relationships?: Record; + relationships?: ResourceRelationshipsObject; links?: Links; } diff --git a/packages/legacy-compat/src/legacy-network-handler/legacy-data-fetch.js b/packages/legacy-compat/src/legacy-network-handler/legacy-data-fetch.ts similarity index 54% rename from packages/legacy-compat/src/legacy-network-handler/legacy-data-fetch.js rename to packages/legacy-compat/src/legacy-network-handler/legacy-data-fetch.ts index 841baf2b7cb..f0f030ecf18 100644 --- a/packages/legacy-compat/src/legacy-network-handler/legacy-data-fetch.js +++ b/packages/legacy-compat/src/legacy-network-handler/legacy-data-fetch.ts @@ -1,46 +1,76 @@ import { assert } from '@ember/debug'; import { DEBUG } from '@ember-data/env'; +import type Store from '@ember-data/store'; +import type { BaseFinderOptions } from '@ember-data/store/-types/q/store'; +import type { StableRecordIdentifier } from '@warp-drive/core-types'; +import type { RelationshipSchema } from '@warp-drive/core-types/schema'; +import type { ExistingResourceObject, JsonApiDocument } from '@warp-drive/core-types/spec/raw'; +import { upgradeStore } from '../-private'; import { iterateData, payloadIsNotBlank } from './legacy-data-utils'; +import type { MinimumAdapterInterface } from './minimum-adapter-interface'; import { normalizeResponseHelper } from './serializer-response'; -export function _findHasMany(adapter, store, identifier, link, relationship, options) { - let promise = Promise.resolve().then(() => { +export function _findHasMany( + adapter: MinimumAdapterInterface, + store: Store, + identifier: StableRecordIdentifier, + link: string | null | { href: string }, + relationship: RelationshipSchema, + options: BaseFinderOptions +) { + upgradeStore(store); + const promise = Promise.resolve().then(() => { const snapshot = store._fetchManager.createSnapshot(identifier, options); const useLink = !link || typeof link === 'string'; const relatedLink = useLink ? link : link.href; + assert( + `Attempted to load a hasMany relationship from a specified 'link' in the original payload, but the specified link is empty. You must provide a valid 'link' in the original payload to use 'findHasMany'`, + relatedLink + ); + assert( + `Expected the adapter to implement 'findHasMany' but it does not`, + typeof adapter.findHasMany === 'function' + ); return adapter.findHasMany(store, snapshot, relatedLink, relationship); }); - promise = promise.then( - (adapterPayload) => { - assert( - `You made a 'findHasMany' request for a ${identifier.type}'s '${relationship.name}' relationship, using link '${link}' , but the adapter's response did not have any data`, - payloadIsNotBlank(adapterPayload) - ); - const modelClass = store.modelFor(relationship.type); - - const serializer = store.serializerFor(relationship.type); - let payload = normalizeResponseHelper(serializer, store, modelClass, adapterPayload, null, 'findHasMany'); + return promise.then((adapterPayload) => { + assert( + `You made a 'findHasMany' request for a ${identifier.type}'s '${ + relationship.name + }' relationship, using link '${JSON.stringify(link)}' , but the adapter's response did not have any data`, + payloadIsNotBlank(adapterPayload) + ); + const modelClass = store.modelFor(relationship.type); - assert( - `fetched the hasMany relationship '${relationship.name}' for ${identifier.type}:${identifier.id} with link '${link}', but no data member is present in the response. If no data exists, the response should set { data: [] }`, - 'data' in payload && Array.isArray(payload.data) - ); + const serializer = store.serializerFor(relationship.type); + let payload = normalizeResponseHelper(serializer, store, modelClass, adapterPayload, null, 'findHasMany'); - payload = syncRelationshipDataFromLink(store, payload, identifier, relationship); - return store._push(payload, true); - }, - null, - `DS: Extract payload of '${identifier.type}' : hasMany '${relationship.type}'` - ); + assert( + `fetched the hasMany relationship '${relationship.name}' for ${identifier.type}:${ + identifier.id + } with link '${JSON.stringify( + link + )}', but no data member is present in the response. If no data exists, the response should set { data: [] }`, + 'data' in payload && Array.isArray(payload.data) + ); - return promise; + payload = syncRelationshipDataFromLink(store, payload, identifier as ResourceIdentity, relationship); + return store._push(payload, true); + }, null); } -export function _findBelongsTo(store, identifier, link, relationship, options) { - let promise = Promise.resolve().then(() => { +export function _findBelongsTo( + store: Store, + identifier: StableRecordIdentifier, + link: string | null | { href: string }, + relationship: RelationshipSchema, + options: BaseFinderOptions +) { + upgradeStore(store); + const promise = Promise.resolve().then(() => { const adapter = store.adapterFor(identifier.type); assert(`You tried to load a belongsTo relationship but you have no adapter (for ${identifier.type})`, adapter); assert( @@ -50,34 +80,35 @@ export function _findBelongsTo(store, identifier, link, relationship, options) { const snapshot = store._fetchManager.createSnapshot(identifier, options); const useLink = !link || typeof link === 'string'; const relatedLink = useLink ? link : link.href; + assert( + `Attempted to load a belongsTo relationship from a specified 'link' in the original payload, but the specified link is empty. You must provide a valid 'link' in the original payload to use 'findBelongsTo'`, + relatedLink + ); return adapter.findBelongsTo(store, snapshot, relatedLink, relationship); }); - promise = promise.then( - (adapterPayload) => { - const modelClass = store.modelFor(relationship.type); - const serializer = store.serializerFor(relationship.type); - let payload = normalizeResponseHelper(serializer, store, modelClass, adapterPayload, null, 'findBelongsTo'); - - assert( - `fetched the belongsTo relationship '${relationship.name}' for ${identifier.type}:${identifier.id} with link '${link}', but no data member is present in the response. If no data exists, the response should set { data: null }`, - 'data' in payload && - (payload.data === null || (typeof payload.data === 'object' && !Array.isArray(payload.data))) - ); + return promise.then((adapterPayload) => { + const modelClass = store.modelFor(relationship.type); + const serializer = store.serializerFor(relationship.type); + let payload = normalizeResponseHelper(serializer, store, modelClass, adapterPayload, null, 'findBelongsTo'); - if (!payload.data && !payload.links && !payload.meta) { - return null; - } + assert( + `fetched the belongsTo relationship '${relationship.name}' for ${identifier.type}:${ + identifier.id + } with link '${JSON.stringify( + link + )}', but no data member is present in the response. If no data exists, the response should set { data: null }`, + 'data' in payload && (payload.data === null || (typeof payload.data === 'object' && !Array.isArray(payload.data))) + ); - payload = syncRelationshipDataFromLink(store, payload, identifier, relationship); + if (!payload.data && !payload.links && !payload.meta) { + return null; + } - return store._push(payload, true); - }, - null, - `DS: Extract payload of ${identifier.type} : ${relationship.type}` - ); + payload = syncRelationshipDataFromLink(store, payload, identifier as ResourceIdentity, relationship); - return promise; + return store._push(payload, true); + }, null); } // sync @@ -86,7 +117,12 @@ export function _findBelongsTo(store, identifier, link, relationship, options) { // assert that record.relationships[inverse] is either undefined (so we can fix it) // or provide a data: {id, type} that matches the record that requested it // return the relationship data for the parent -function syncRelationshipDataFromLink(store, payload, parentIdentifier, relationship) { +function syncRelationshipDataFromLink( + store: Store, + payload: JsonApiDocument, + parentIdentifier: ResourceIdentity, + relationship: RelationshipSchema +) { // ensure the right hand side (incoming payload) points to the parent record that // requested this relationship const relationshipData = payload.data @@ -97,7 +133,7 @@ function syncRelationshipDataFromLink(store, payload, parentIdentifier, relation }) : null; - const relatedDataHash = {}; + const relatedDataHash = {} as JsonApiDocument; if ('meta' in payload) { relatedDataHash.meta = payload.meta; @@ -127,7 +163,16 @@ function syncRelationshipDataFromLink(store, payload, parentIdentifier, relation return payload; } -function ensureRelationshipIsSetToParent(payload, parentIdentifier, store, parentRelationship, index) { +type ResourceIdentity = { id: string; type: string }; +type RelationshipData = ResourceIdentity | ResourceIdentity[] | null; + +function ensureRelationshipIsSetToParent( + payload: ExistingResourceObject, + parentIdentifier: ResourceIdentity, + store: Store, + parentRelationship: RelationshipSchema, + index: number +) { const { id, type } = payload; if (!payload.relationships) { @@ -139,14 +184,14 @@ function ensureRelationshipIsSetToParent(payload, parentIdentifier, store, paren if (inverse) { const { inverseKey, kind } = inverse; - const relationshipData = relationships[inverseKey] && relationships[inverseKey].data; + const relationshipData = relationships[inverseKey]?.data as RelationshipData | undefined; if (DEBUG) { if ( typeof relationshipData !== 'undefined' && !relationshipDataPointsToParent(relationshipData, parentIdentifier) ) { - const inspect = function inspect(thing) { + const inspect = function inspect(thing: unknown) { return `'${JSON.stringify(thing)}'`; }; const quotedType = inspect(type); @@ -159,7 +204,8 @@ function ensureRelationshipIsSetToParent(payload, parentIdentifier, store, paren const got = inspect(relationshipData); const prefix = typeof index === 'number' ? `data[${index}]` : `data`; const path = `${prefix}.relationships.${inverseKey}.data`; - const other = relationshipData ? `<${relationshipData.type}:${relationshipData.id}>` : null; + const data = Array.isArray(relationshipData) ? relationshipData[0] : relationshipData; + const other = data ? `<${data.type}:${data.id}>` : null; const relationshipFetched = `${expectedModel}.${parentRelationship.kind}("${parentRelationship.name}")`; const includedRecord = `<${type}:${id}>`; const message = [ @@ -176,12 +222,12 @@ function ensureRelationshipIsSetToParent(payload, parentIdentifier, store, paren if (kind !== 'hasMany' || typeof relationshipData !== 'undefined') { relationships[inverseKey] = relationships[inverseKey] || {}; - relationships[inverseKey].data = fixRelationshipData(relationshipData, kind, parentIdentifier); + relationships[inverseKey].data = fixRelationshipData(relationshipData ?? null, kind, parentIdentifier); } } } -function inverseForRelationship(store, identifier, key) { +function inverseForRelationship(store: Store, identifier: { type: string; id?: string }, key: string) { const definition = store.getSchemaDefinitionService().relationshipsDefinitionFor(identifier)[key]; if (!definition) { return null; @@ -195,7 +241,12 @@ function inverseForRelationship(store, identifier, key) { return definition.options.inverse; } -function getInverse(store, parentIdentifier, parentRelationship, type) { +function getInverse( + store: Store, + parentIdentifier: ResourceIdentity, + parentRelationship: RelationshipSchema, + type: string +) { const { name: lhs_relationshipName } = parentRelationship; const { type: parentType } = parentIdentifier; const inverseKey = inverseForRelationship(store, { type: parentType }, lhs_relationshipName); @@ -210,7 +261,7 @@ function getInverse(store, parentIdentifier, parentRelationship, type) { } } -function relationshipDataPointsToParent(relationshipData, identifier) { +function relationshipDataPointsToParent(relationshipData: RelationshipData, identifier: ResourceIdentity): boolean { if (relationshipData === null) { return false; } @@ -232,17 +283,22 @@ function relationshipDataPointsToParent(relationshipData, identifier) { return false; } -function fixRelationshipData(relationshipData, relationshipKind, { id, type }) { +function fixRelationshipData( + relationshipData: RelationshipData, + relationshipKind: 'hasMany' | 'belongsTo', + { id, type }: ResourceIdentity +) { const parentRelationshipData = { id, type, }; - let payload; + let payload: { type: string; id: string } | { type: string; id: string }[] | null = null; if (relationshipKind === 'hasMany') { - payload = relationshipData || []; + const relData = (relationshipData as { type: string; id: string }[]) || []; if (relationshipData) { + assert('expected the relationship data to be an array', Array.isArray(relationshipData)); // these arrays could be massive so this is better than filter // Note: this is potentially problematic if type/id are not in the // same state of normalization. @@ -250,19 +306,21 @@ function fixRelationshipData(relationshipData, relationshipKind, { id, type }) { return v.type === parentRelationshipData.type && v.id === parentRelationshipData.id; }); if (!found) { - payload.push(parentRelationshipData); + relData.push(parentRelationshipData); } } else { - payload.push(parentRelationshipData); + relData.push(parentRelationshipData); } + payload = relData; } else { - payload = relationshipData || {}; - Object.assign(payload, parentRelationshipData); + const relData = (relationshipData as { type: string; id: string }) || {}; + Object.assign(relData, parentRelationshipData); + payload = relData; } return payload; } -function validateRelationshipEntry({ id }, { id: parentModelID }) { - return id && id.toString() === parentModelID; +function validateRelationshipEntry({ id }: ResourceIdentity, { id: parentModelID }: ResourceIdentity): boolean { + return !!id && id.toString() === parentModelID; } diff --git a/packages/legacy-compat/src/legacy-network-handler/legacy-data-utils.ts b/packages/legacy-compat/src/legacy-network-handler/legacy-data-utils.ts index c69c09fbe45..58f4e031bb4 100644 --- a/packages/legacy-compat/src/legacy-network-handler/legacy-data-utils.ts +++ b/packages/legacy-compat/src/legacy-network-handler/legacy-data-utils.ts @@ -1,10 +1,12 @@ import type { AdapterPayload } from './minimum-adapter-interface'; -export function iterateData(data: T[] | T, fn: (o: T, index?: number) => T) { +type IteratorCB = ((o: T, index: number) => T) | ((o: T) => T); + +export function iterateData(data: T[] | T, fn: IteratorCB) { if (Array.isArray(data)) { return data.map(fn); } else { - return fn(data); + return fn(data, 0); } } diff --git a/packages/model/src/-private/model.d.ts b/packages/model/src/-private/model.d.ts index 931eaa5f440..d815a713782 100644 --- a/packages/model/src/-private/model.d.ts +++ b/packages/model/src/-private/model.d.ts @@ -71,9 +71,13 @@ class Model extends EmberObject { binding?: T ): void; static eachTransformedAttribute( - callback: (this: ModelSchema, key: K, type: string | null) => void, + callback: (this: ModelSchema, key: K, type: string) => void, binding?: T ): void; + static determineRelationshipType( + knownSide: RelationshipSchema, + store: Store + ): 'oneToOne' | 'manyToOne' | 'oneToMany' | 'manyToMany' | 'oneToNone' | 'manyToNone'; static toString(): string; static isModel: true; diff --git a/packages/serializer/package.json b/packages/serializer/package.json index 6ff4c0ee86b..cb8aca70c5e 100644 --- a/packages/serializer/package.json +++ b/packages/serializer/package.json @@ -49,6 +49,7 @@ "peerDependencies": { "@ember/string": "^3.1.1", "@warp-drive/core-types": "workspace:0.0.0-alpha.26", + "@ember-data/legacy-compat": "workspace:5.4.0-alpha.40", "ember-inflector": "^4.0.2" }, "dependenciesMeta": { @@ -72,6 +73,9 @@ }, "@ember-data/tracking": { "injected": true + }, + "@ember-data/legacy-compat": { + "injected": true } }, "dependencies": { @@ -94,6 +98,7 @@ "@ember-data/request": "workspace:5.4.0-alpha.40", "@ember-data/store": "workspace:5.4.0-alpha.40", "@ember-data/tracking": "workspace:5.4.0-alpha.40", + "@ember-data/legacy-compat": "workspace:5.4.0-alpha.40", "@ember/string": "^3.1.1", "@embroider/addon-dev": "^4.2.1", "@glimmer/component": "^1.1.2", diff --git a/packages/serializer/src/-private/transforms/boolean.ts b/packages/serializer/src/-private/transforms/boolean.ts index 3f9df0a6967..2efdae2bb10 100644 --- a/packages/serializer/src/-private/transforms/boolean.ts +++ b/packages/serializer/src/-private/transforms/boolean.ts @@ -2,6 +2,8 @@ @module @ember-data/serializer */ +import { TransformName } from '@warp-drive/core-types/symbols'; + /** The `BooleanTransform` class is used to serialize and deserialize boolean attributes on Ember Data record objects. This transform is @@ -62,6 +64,8 @@ export default class BooleanTransform { return Boolean(deserialized); } + [TransformName] = 'boolean' as const; + static create() { return new this(); } diff --git a/packages/serializer/src/-private/transforms/date.ts b/packages/serializer/src/-private/transforms/date.ts index 8956770297b..b4f01870330 100644 --- a/packages/serializer/src/-private/transforms/date.ts +++ b/packages/serializer/src/-private/transforms/date.ts @@ -2,6 +2,8 @@ @module @ember-data/serializer */ +import { TransformName } from '@warp-drive/core-types/symbols'; + /** The `DateTransform` class is used to serialize and deserialize date attributes on Ember Data record objects. This transform is used @@ -53,6 +55,8 @@ export default class DateTransform { } } + [TransformName] = 'date' as const; + static create() { return new this(); } diff --git a/packages/serializer/src/-private/transforms/number.ts b/packages/serializer/src/-private/transforms/number.ts index 96311570358..75cd6d52c57 100644 --- a/packages/serializer/src/-private/transforms/number.ts +++ b/packages/serializer/src/-private/transforms/number.ts @@ -2,6 +2,8 @@ @module @ember-data/serializer */ +import { TransformName } from '@warp-drive/core-types/symbols'; + function isNumber(value: number) { return value === value && value !== Infinity && value !== -Infinity; } @@ -48,6 +50,8 @@ export default class NumberTransform { } } + [TransformName] = 'number' as const; + static create() { return new this(); } diff --git a/packages/serializer/src/-private/transforms/string.ts b/packages/serializer/src/-private/transforms/string.ts index 57cb785567f..9f35c828a1e 100644 --- a/packages/serializer/src/-private/transforms/string.ts +++ b/packages/serializer/src/-private/transforms/string.ts @@ -2,6 +2,8 @@ @module @ember-data/serializer */ +import { TransformName } from '@warp-drive/core-types/symbols'; + /** The `StringTransform` class is used to serialize and deserialize string attributes on Ember Data record objects. This transform is @@ -31,6 +33,8 @@ export default class StringTransform { return !deserialized && deserialized !== '' ? null : String(deserialized); } + [TransformName] = 'string' as const; + static create() { return new this(); } diff --git a/packages/serializer/src/index.ts b/packages/serializer/src/index.ts index 4e80b8e3752..3427886ccc0 100644 --- a/packages/serializer/src/index.ts +++ b/packages/serializer/src/index.ts @@ -112,6 +112,7 @@ import { inject as service } from '@ember/service'; import type Store from '@ember-data/store'; import type { ModelSchema } from '@ember-data/store/-types/q/ds-model'; +import type { EmptyResourceDocument, SingleResourceDocument } from '@warp-drive/core-types/spec/raw'; /** > ⚠️ CAUTION you likely want the docs for [ Serializer](/ember-data/release/classes/%3CInterface%3E%20Serializer) @@ -265,7 +266,7 @@ export default class extends EmberObject { @param {Object} hash @return {Object} */ - normalize(_typeClass: ModelSchema, hash: Record): Record { - return hash; + normalize(_typeClass: ModelSchema, hash: Record): SingleResourceDocument | EmptyResourceDocument { + return hash as unknown as SingleResourceDocument; } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 01ac8b8e73b..c915d5a30cc 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -180,10 +180,10 @@ importers: version: file:packages/json-api(@babel/core@7.24.3)(@ember-data/graph@5.4.0-alpha.40)(@ember-data/request-utils@5.4.0-alpha.40)(@ember-data/store@5.4.0-alpha.40)(@glint/template@1.4.0)(@warp-drive/core-types@0.0.0-alpha.26)(ember-inflector@4.0.2) '@ember-data/legacy-compat': specifier: workspace:5.4.0-alpha.40 - version: file:packages/legacy-compat(@babel/core@7.24.3)(@ember-data/graph@5.4.0-alpha.40)(@ember-data/json-api@5.4.0-alpha.40)(@ember-data/request@5.4.0-alpha.40)(@ember-data/store@5.4.0-alpha.40)(@glint/template@1.4.0)(@warp-drive/core-types@0.0.0-alpha.26) + version: file:packages/legacy-compat(@babel/core@7.24.3)(@ember-data/graph@5.4.0-alpha.40)(@ember-data/json-api@5.4.0-alpha.40)(@ember-data/request@5.4.0-alpha.40)(@ember-data/store@5.4.0-alpha.40)(@warp-drive/core-types@0.0.0-alpha.26) '@ember-data/model': specifier: workspace:5.4.0-alpha.40 - version: file:packages/model(@babel/core@7.24.3)(@ember-data/debug@5.4.0-alpha.40)(@ember-data/graph@5.4.0-alpha.40)(@ember-data/json-api@5.4.0-alpha.40)(@ember-data/legacy-compat@5.4.0-alpha.40)(@ember-data/store@5.4.0-alpha.40)(@ember-data/tracking@5.4.0-alpha.40)(@ember/string@3.1.1)(@glint/template@1.4.0)(@warp-drive/core-types@0.0.0-alpha.26)(ember-inflector@4.0.2) + version: file:packages/model(@babel/core@7.24.3)(@ember-data/debug@5.4.0-alpha.40)(@ember-data/graph@5.4.0-alpha.40)(@ember-data/json-api@5.4.0-alpha.40)(@ember-data/legacy-compat@5.4.0-alpha.40)(@ember-data/store@5.4.0-alpha.40)(@ember-data/tracking@5.4.0-alpha.40)(@ember/string@3.1.1)(@warp-drive/core-types@0.0.0-alpha.26)(ember-inflector@4.0.2) '@ember-data/private-build-infra': specifier: workspace:5.4.0-alpha.40 version: file:packages/private-build-infra(@glint/template@1.4.0) @@ -195,7 +195,7 @@ importers: version: file:packages/request-utils(@babel/core@7.24.3)(@warp-drive/core-types@0.0.0-alpha.26) '@ember-data/serializer': specifier: workspace:5.4.0-alpha.40 - version: file:packages/serializer(@babel/core@7.24.3)(@ember/string@3.1.1)(@warp-drive/core-types@0.0.0-alpha.26)(ember-inflector@4.0.2) + version: file:packages/serializer(@babel/core@7.24.3)(@ember-data/legacy-compat@5.4.0-alpha.40)(@ember/string@3.1.1)(@warp-drive/core-types@0.0.0-alpha.26)(ember-inflector@4.0.2) '@ember-data/store': specifier: workspace:5.4.0-alpha.40 version: file:packages/store(@babel/core@7.24.3)(@ember-data/request@5.4.0-alpha.40)(@ember-data/tracking@5.4.0-alpha.40)(@ember/string@3.1.1)(@glint/template@1.4.0)(@warp-drive/core-types@0.0.0-alpha.26) @@ -439,7 +439,7 @@ importers: version: file:packages/json-api(@babel/core@7.24.3)(@ember-data/graph@5.4.0-alpha.40)(@ember-data/request-utils@5.4.0-alpha.40)(@ember-data/store@5.4.0-alpha.40)(@glint/template@1.4.0)(@warp-drive/core-types@0.0.0-alpha.26)(ember-inflector@4.0.2) '@ember-data/legacy-compat': specifier: workspace:5.4.0-alpha.40 - version: file:packages/legacy-compat(@babel/core@7.24.3)(@ember-data/graph@5.4.0-alpha.40)(@ember-data/json-api@5.4.0-alpha.40)(@ember-data/request@5.4.0-alpha.40)(@ember-data/store@5.4.0-alpha.40)(@glint/template@1.4.0)(@warp-drive/core-types@0.0.0-alpha.26) + version: file:packages/legacy-compat(@babel/core@7.24.3)(@ember-data/graph@5.4.0-alpha.40)(@ember-data/json-api@5.4.0-alpha.40)(@ember-data/request@5.4.0-alpha.40)(@ember-data/store@5.4.0-alpha.40)(@warp-drive/core-types@0.0.0-alpha.26) '@ember-data/request': specifier: workspace:5.4.0-alpha.40 version: file:packages/request(@babel/core@7.24.3)(@glint/template@1.4.0)(@warp-drive/core-types@0.0.0-alpha.26) @@ -1352,7 +1352,7 @@ importers: version: file:packages/json-api(@babel/core@7.24.3)(@ember-data/graph@5.4.0-alpha.40)(@ember-data/request-utils@5.4.0-alpha.40)(@ember-data/store@5.4.0-alpha.40)(@glint/template@1.4.0)(@warp-drive/core-types@0.0.0-alpha.26)(ember-inflector@4.0.2) '@ember-data/legacy-compat': specifier: workspace:5.4.0-alpha.40 - version: file:packages/legacy-compat(@babel/core@7.24.3)(@ember-data/graph@5.4.0-alpha.40)(@ember-data/json-api@5.4.0-alpha.40)(@ember-data/request@5.4.0-alpha.40)(@ember-data/store@5.4.0-alpha.40)(@glint/template@1.4.0)(@warp-drive/core-types@0.0.0-alpha.26) + version: file:packages/legacy-compat(@babel/core@7.24.3)(@ember-data/graph@5.4.0-alpha.40)(@ember-data/json-api@5.4.0-alpha.40)(@ember-data/request@5.4.0-alpha.40)(@ember-data/store@5.4.0-alpha.40)(@warp-drive/core-types@0.0.0-alpha.26) '@ember-data/request': specifier: workspace:5.4.0-alpha.40 version: file:packages/request(@babel/core@7.24.3)(@glint/template@1.4.0)(@warp-drive/core-types@0.0.0-alpha.26) @@ -1928,6 +1928,9 @@ importers: '@babel/runtime': specifier: ^7.24.1 version: 7.24.1 + '@ember-data/legacy-compat': + specifier: workspace:5.4.0-alpha.40 + version: file:packages/legacy-compat(@babel/core@7.24.3)(@ember-data/graph@5.4.0-alpha.40)(@ember-data/json-api@5.4.0-alpha.40)(@ember-data/request@5.4.0-alpha.40)(@ember-data/store@5.4.0-alpha.40)(@warp-drive/core-types@0.0.0-alpha.26) '@ember-data/request': specifier: workspace:5.4.0-alpha.40 version: file:packages/request(@babel/core@7.24.3)(@glint/template@1.4.0)(@warp-drive/core-types@0.0.0-alpha.26) @@ -1980,6 +1983,8 @@ importers: specifier: ^5.91.0 version: 5.91.0 dependenciesMeta: + '@ember-data/legacy-compat': + injected: true '@ember-data/private-build-infra': injected: true '@ember-data/request': @@ -2340,10 +2345,10 @@ importers: version: file:packages/json-api(@babel/core@7.24.3)(@ember-data/graph@5.4.0-alpha.40)(@ember-data/request-utils@5.4.0-alpha.40)(@ember-data/store@5.4.0-alpha.40)(@glint/template@1.4.0)(@warp-drive/core-types@0.0.0-alpha.26)(ember-inflector@4.0.2) '@ember-data/legacy-compat': specifier: workspace:5.4.0-alpha.40 - version: file:packages/legacy-compat(@babel/core@7.24.3)(@ember-data/graph@5.4.0-alpha.40)(@ember-data/json-api@5.4.0-alpha.40)(@ember-data/request@5.4.0-alpha.40)(@ember-data/store@5.4.0-alpha.40)(@glint/template@1.4.0)(@warp-drive/core-types@0.0.0-alpha.26) + version: file:packages/legacy-compat(@babel/core@7.24.3)(@ember-data/graph@5.4.0-alpha.40)(@ember-data/json-api@5.4.0-alpha.40)(@ember-data/request@5.4.0-alpha.40)(@ember-data/store@5.4.0-alpha.40)(@warp-drive/core-types@0.0.0-alpha.26) '@ember-data/model': specifier: workspace:5.4.0-alpha.40 - version: file:packages/model(@babel/core@7.24.3)(@ember-data/debug@5.4.0-alpha.40)(@ember-data/graph@5.4.0-alpha.40)(@ember-data/json-api@5.4.0-alpha.40)(@ember-data/legacy-compat@5.4.0-alpha.40)(@ember-data/store@5.4.0-alpha.40)(@ember-data/tracking@5.4.0-alpha.40)(@ember/string@3.1.1)(@glint/template@1.4.0)(@warp-drive/core-types@0.0.0-alpha.26)(ember-inflector@4.0.2) + version: file:packages/model(@babel/core@7.24.3)(@ember-data/debug@5.4.0-alpha.40)(@ember-data/graph@5.4.0-alpha.40)(@ember-data/json-api@5.4.0-alpha.40)(@ember-data/legacy-compat@5.4.0-alpha.40)(@ember-data/store@5.4.0-alpha.40)(@ember-data/tracking@5.4.0-alpha.40)(@ember/string@3.1.1)(@warp-drive/core-types@0.0.0-alpha.26)(ember-inflector@4.0.2) '@ember-data/private-build-infra': specifier: workspace:5.4.0-alpha.40 version: file:packages/private-build-infra(@glint/template@1.4.0) @@ -2355,7 +2360,7 @@ importers: version: file:packages/request-utils(@babel/core@7.24.3)(@warp-drive/core-types@0.0.0-alpha.26) '@ember-data/serializer': specifier: workspace:5.4.0-alpha.40 - version: file:packages/serializer(@babel/core@7.24.3)(@ember/string@3.1.1)(@warp-drive/core-types@0.0.0-alpha.26)(ember-inflector@4.0.2) + version: file:packages/serializer(@babel/core@7.24.3)(@ember-data/legacy-compat@5.4.0-alpha.40)(@ember/string@3.1.1)(@warp-drive/core-types@0.0.0-alpha.26)(ember-inflector@4.0.2) '@ember-data/store': specifier: workspace:5.4.0-alpha.40 version: file:packages/store(@babel/core@7.24.3)(@ember-data/request@5.4.0-alpha.40)(@ember-data/tracking@5.4.0-alpha.40)(@ember/string@3.1.1)(@glint/template@1.4.0)(@warp-drive/core-types@0.0.0-alpha.26) @@ -2461,10 +2466,10 @@ importers: version: file:packages/json-api(@babel/core@7.24.3)(@ember-data/graph@5.4.0-alpha.40)(@ember-data/request-utils@5.4.0-alpha.40)(@ember-data/store@5.4.0-alpha.40)(@glint/template@1.4.0)(@warp-drive/core-types@0.0.0-alpha.26)(ember-inflector@4.0.2) '@ember-data/legacy-compat': specifier: workspace:5.4.0-alpha.40 - version: file:packages/legacy-compat(@babel/core@7.24.3)(@ember-data/graph@5.4.0-alpha.40)(@ember-data/json-api@5.4.0-alpha.40)(@ember-data/request@5.4.0-alpha.40)(@ember-data/store@5.4.0-alpha.40)(@glint/template@1.4.0)(@warp-drive/core-types@0.0.0-alpha.26) + version: file:packages/legacy-compat(@babel/core@7.24.3)(@ember-data/graph@5.4.0-alpha.40)(@ember-data/json-api@5.4.0-alpha.40)(@ember-data/request@5.4.0-alpha.40)(@ember-data/store@5.4.0-alpha.40)(@warp-drive/core-types@0.0.0-alpha.26) '@ember-data/model': specifier: workspace:5.4.0-alpha.40 - version: file:packages/model(@babel/core@7.24.3)(@ember-data/debug@5.4.0-alpha.40)(@ember-data/graph@5.4.0-alpha.40)(@ember-data/json-api@5.4.0-alpha.40)(@ember-data/legacy-compat@5.4.0-alpha.40)(@ember-data/store@5.4.0-alpha.40)(@ember-data/tracking@5.4.0-alpha.40)(@ember/string@3.1.1)(@glint/template@1.4.0)(@warp-drive/core-types@0.0.0-alpha.26)(ember-inflector@4.0.2) + version: file:packages/model(@babel/core@7.24.3)(@ember-data/debug@5.4.0-alpha.40)(@ember-data/graph@5.4.0-alpha.40)(@ember-data/json-api@5.4.0-alpha.40)(@ember-data/legacy-compat@5.4.0-alpha.40)(@ember-data/store@5.4.0-alpha.40)(@ember-data/tracking@5.4.0-alpha.40)(@ember/string@3.1.1)(@warp-drive/core-types@0.0.0-alpha.26)(ember-inflector@4.0.2) '@ember-data/private-build-infra': specifier: workspace:5.4.0-alpha.40 version: file:packages/private-build-infra(@glint/template@1.4.0) @@ -2640,10 +2645,10 @@ importers: version: file:packages/json-api(@babel/core@7.24.3)(@ember-data/graph@5.4.0-alpha.40)(@ember-data/request-utils@5.4.0-alpha.40)(@ember-data/store@5.4.0-alpha.40)(@glint/template@1.4.0)(@warp-drive/core-types@0.0.0-alpha.26)(ember-inflector@4.0.2) '@ember-data/legacy-compat': specifier: workspace:5.4.0-alpha.40 - version: file:packages/legacy-compat(@babel/core@7.24.3)(@ember-data/graph@5.4.0-alpha.40)(@ember-data/json-api@5.4.0-alpha.40)(@ember-data/request@5.4.0-alpha.40)(@ember-data/store@5.4.0-alpha.40)(@glint/template@1.4.0)(@warp-drive/core-types@0.0.0-alpha.26) + version: file:packages/legacy-compat(@babel/core@7.24.3)(@ember-data/graph@5.4.0-alpha.40)(@ember-data/json-api@5.4.0-alpha.40)(@ember-data/request@5.4.0-alpha.40)(@ember-data/store@5.4.0-alpha.40)(@warp-drive/core-types@0.0.0-alpha.26) '@ember-data/model': specifier: workspace:5.4.0-alpha.40 - version: file:packages/model(@babel/core@7.24.3)(@ember-data/debug@5.4.0-alpha.40)(@ember-data/graph@5.4.0-alpha.40)(@ember-data/json-api@5.4.0-alpha.40)(@ember-data/legacy-compat@5.4.0-alpha.40)(@ember-data/store@5.4.0-alpha.40)(@ember-data/tracking@5.4.0-alpha.40)(@ember/string@3.1.1)(@glint/template@1.4.0)(@warp-drive/core-types@0.0.0-alpha.26)(ember-inflector@4.0.2) + version: file:packages/model(@babel/core@7.24.3)(@ember-data/debug@5.4.0-alpha.40)(@ember-data/graph@5.4.0-alpha.40)(@ember-data/json-api@5.4.0-alpha.40)(@ember-data/legacy-compat@5.4.0-alpha.40)(@ember-data/store@5.4.0-alpha.40)(@ember-data/tracking@5.4.0-alpha.40)(@ember/string@3.1.1)(@warp-drive/core-types@0.0.0-alpha.26)(ember-inflector@4.0.2) '@ember-data/request': specifier: workspace:5.4.0-alpha.40 version: file:packages/request(@babel/core@7.24.3)(@glint/template@1.4.0)(@warp-drive/core-types@0.0.0-alpha.26) @@ -2652,7 +2657,7 @@ importers: version: file:packages/request-utils(@babel/core@7.24.3)(@warp-drive/core-types@0.0.0-alpha.26) '@ember-data/serializer': specifier: workspace:5.4.0-alpha.40 - version: file:packages/serializer(@babel/core@7.24.3)(@ember/string@3.1.1)(@warp-drive/core-types@0.0.0-alpha.26)(ember-inflector@4.0.2) + version: file:packages/serializer(@babel/core@7.24.3)(@ember-data/legacy-compat@5.4.0-alpha.40)(@ember/string@3.1.1)(@warp-drive/core-types@0.0.0-alpha.26)(ember-inflector@4.0.2) '@ember-data/store': specifier: workspace:5.4.0-alpha.40 version: file:packages/store(@babel/core@7.24.3)(@ember-data/request@5.4.0-alpha.40)(@ember-data/tracking@5.4.0-alpha.40)(@ember/string@3.1.1)(@glint/template@1.4.0)(@warp-drive/core-types@0.0.0-alpha.26) @@ -2792,10 +2797,10 @@ importers: version: file:packages/json-api(@babel/core@7.24.3)(@ember-data/graph@5.4.0-alpha.40)(@ember-data/request-utils@5.4.0-alpha.40)(@ember-data/store@5.4.0-alpha.40)(@glint/template@1.4.0)(@warp-drive/core-types@0.0.0-alpha.26)(ember-inflector@4.0.2) '@ember-data/legacy-compat': specifier: workspace:5.4.0-alpha.40 - version: file:packages/legacy-compat(@babel/core@7.24.3)(@ember-data/graph@5.4.0-alpha.40)(@ember-data/json-api@5.4.0-alpha.40)(@ember-data/request@5.4.0-alpha.40)(@ember-data/store@5.4.0-alpha.40)(@glint/template@1.4.0)(@warp-drive/core-types@0.0.0-alpha.26) + version: file:packages/legacy-compat(@babel/core@7.24.3)(@ember-data/graph@5.4.0-alpha.40)(@ember-data/json-api@5.4.0-alpha.40)(@ember-data/request@5.4.0-alpha.40)(@ember-data/store@5.4.0-alpha.40)(@warp-drive/core-types@0.0.0-alpha.26) '@ember-data/model': specifier: workspace:5.4.0-alpha.40 - version: file:packages/model(@babel/core@7.24.3)(@ember-data/debug@5.4.0-alpha.40)(@ember-data/graph@5.4.0-alpha.40)(@ember-data/json-api@5.4.0-alpha.40)(@ember-data/legacy-compat@5.4.0-alpha.40)(@ember-data/store@5.4.0-alpha.40)(@ember-data/tracking@5.4.0-alpha.40)(@ember/string@3.1.1)(@glint/template@1.4.0)(@warp-drive/core-types@0.0.0-alpha.26)(ember-inflector@4.0.2) + version: file:packages/model(@babel/core@7.24.3)(@ember-data/debug@5.4.0-alpha.40)(@ember-data/graph@5.4.0-alpha.40)(@ember-data/json-api@5.4.0-alpha.40)(@ember-data/legacy-compat@5.4.0-alpha.40)(@ember-data/store@5.4.0-alpha.40)(@ember-data/tracking@5.4.0-alpha.40)(@ember/string@3.1.1)(@warp-drive/core-types@0.0.0-alpha.26)(ember-inflector@4.0.2) '@ember-data/private-build-infra': specifier: workspace:5.4.0-alpha.40 version: file:packages/private-build-infra(@glint/template@1.4.0) @@ -2959,10 +2964,10 @@ importers: version: file:packages/json-api(@babel/core@7.24.3)(@ember-data/graph@5.4.0-alpha.40)(@ember-data/request-utils@5.4.0-alpha.40)(@ember-data/store@5.4.0-alpha.40)(@glint/template@1.4.0)(@warp-drive/core-types@0.0.0-alpha.26)(ember-inflector@4.0.2) '@ember-data/legacy-compat': specifier: workspace:5.4.0-alpha.40 - version: file:packages/legacy-compat(@babel/core@7.24.3)(@ember-data/graph@5.4.0-alpha.40)(@ember-data/json-api@5.4.0-alpha.40)(@ember-data/request@5.4.0-alpha.40)(@ember-data/store@5.4.0-alpha.40)(@glint/template@1.4.0)(@warp-drive/core-types@0.0.0-alpha.26) + version: file:packages/legacy-compat(@babel/core@7.24.3)(@ember-data/graph@5.4.0-alpha.40)(@ember-data/json-api@5.4.0-alpha.40)(@ember-data/request@5.4.0-alpha.40)(@ember-data/store@5.4.0-alpha.40)(@warp-drive/core-types@0.0.0-alpha.26) '@ember-data/model': specifier: workspace:5.4.0-alpha.40 - version: file:packages/model(@babel/core@7.24.3)(@ember-data/debug@5.4.0-alpha.40)(@ember-data/graph@5.4.0-alpha.40)(@ember-data/json-api@5.4.0-alpha.40)(@ember-data/legacy-compat@5.4.0-alpha.40)(@ember-data/store@5.4.0-alpha.40)(@ember-data/tracking@5.4.0-alpha.40)(@ember/string@3.1.1)(@glint/template@1.4.0)(@warp-drive/core-types@0.0.0-alpha.26)(ember-inflector@4.0.2) + version: file:packages/model(@babel/core@7.24.3)(@ember-data/debug@5.4.0-alpha.40)(@ember-data/graph@5.4.0-alpha.40)(@ember-data/json-api@5.4.0-alpha.40)(@ember-data/legacy-compat@5.4.0-alpha.40)(@ember-data/store@5.4.0-alpha.40)(@ember-data/tracking@5.4.0-alpha.40)(@ember/string@3.1.1)(@warp-drive/core-types@0.0.0-alpha.26)(ember-inflector@4.0.2) '@ember-data/private-build-infra': specifier: workspace:5.4.0-alpha.40 version: file:packages/private-build-infra(@glint/template@1.4.0) @@ -3126,7 +3131,7 @@ importers: version: file:packages/json-api(@babel/core@7.24.3)(@ember-data/graph@5.4.0-alpha.40)(@ember-data/request-utils@5.4.0-alpha.40)(@ember-data/store@5.4.0-alpha.40)(@glint/template@1.4.0)(@warp-drive/core-types@0.0.0-alpha.26)(ember-inflector@4.0.2) '@ember-data/legacy-compat': specifier: workspace:5.4.0-alpha.40 - version: file:packages/legacy-compat(@babel/core@7.24.3)(@ember-data/graph@5.4.0-alpha.40)(@ember-data/json-api@5.4.0-alpha.40)(@ember-data/request@5.4.0-alpha.40)(@ember-data/store@5.4.0-alpha.40)(@glint/template@1.4.0)(@warp-drive/core-types@0.0.0-alpha.26) + version: file:packages/legacy-compat(@babel/core@7.24.3)(@ember-data/graph@5.4.0-alpha.40)(@ember-data/json-api@5.4.0-alpha.40)(@ember-data/request@5.4.0-alpha.40)(@ember-data/store@5.4.0-alpha.40)(@warp-drive/core-types@0.0.0-alpha.26) '@ember-data/private-build-infra': specifier: workspace:5.4.0-alpha.40 version: file:packages/private-build-infra(@glint/template@1.4.0) @@ -3138,7 +3143,7 @@ importers: version: file:packages/request-utils(@babel/core@7.24.3)(@warp-drive/core-types@0.0.0-alpha.26) '@ember-data/serializer': specifier: workspace:5.4.0-alpha.40 - version: file:packages/serializer(@babel/core@7.24.3)(@ember/string@3.1.1)(@warp-drive/core-types@0.0.0-alpha.26)(ember-inflector@4.0.2) + version: file:packages/serializer(@babel/core@7.24.3)(@ember-data/legacy-compat@5.4.0-alpha.40)(@ember/string@3.1.1)(@warp-drive/core-types@0.0.0-alpha.26)(ember-inflector@4.0.2) '@ember-data/store': specifier: workspace:5.4.0-alpha.40 version: file:packages/store(@babel/core@7.24.3)(@ember-data/request@5.4.0-alpha.40)(@ember-data/tracking@5.4.0-alpha.40)(@ember/string@3.1.1)(@glint/template@1.4.0)(@warp-drive/core-types@0.0.0-alpha.26) @@ -3406,10 +3411,10 @@ importers: version: file:packages/json-api(@babel/core@7.24.3)(@ember-data/graph@5.4.0-alpha.40)(@ember-data/request-utils@5.4.0-alpha.40)(@ember-data/store@5.4.0-alpha.40)(@glint/template@1.4.0)(@warp-drive/core-types@0.0.0-alpha.26)(ember-inflector@4.0.2) '@ember-data/legacy-compat': specifier: workspace:5.4.0-alpha.40 - version: file:packages/legacy-compat(@babel/core@7.24.3)(@ember-data/graph@5.4.0-alpha.40)(@ember-data/json-api@5.4.0-alpha.40)(@ember-data/request@5.4.0-alpha.40)(@ember-data/store@5.4.0-alpha.40)(@glint/template@1.4.0)(@warp-drive/core-types@0.0.0-alpha.26) + version: file:packages/legacy-compat(@babel/core@7.24.3)(@ember-data/graph@5.4.0-alpha.40)(@ember-data/json-api@5.4.0-alpha.40)(@ember-data/request@5.4.0-alpha.40)(@ember-data/store@5.4.0-alpha.40)(@warp-drive/core-types@0.0.0-alpha.26) '@ember-data/model': specifier: workspace:5.4.0-alpha.40 - version: file:packages/model(@babel/core@7.24.3)(@ember-data/debug@5.4.0-alpha.40)(@ember-data/graph@5.4.0-alpha.40)(@ember-data/json-api@5.4.0-alpha.40)(@ember-data/legacy-compat@5.4.0-alpha.40)(@ember-data/store@5.4.0-alpha.40)(@ember-data/tracking@5.4.0-alpha.40)(@ember/string@3.1.1)(@glint/template@1.4.0)(@warp-drive/core-types@0.0.0-alpha.26)(ember-inflector@4.0.2) + version: file:packages/model(@babel/core@7.24.3)(@ember-data/debug@5.4.0-alpha.40)(@ember-data/graph@5.4.0-alpha.40)(@ember-data/json-api@5.4.0-alpha.40)(@ember-data/legacy-compat@5.4.0-alpha.40)(@ember-data/store@5.4.0-alpha.40)(@ember-data/tracking@5.4.0-alpha.40)(@ember/string@3.1.1)(@warp-drive/core-types@0.0.0-alpha.26)(ember-inflector@4.0.2) '@ember-data/request': specifier: workspace:5.4.0-alpha.40 version: file:packages/request(@babel/core@7.24.3)(@glint/template@1.4.0)(@warp-drive/core-types@0.0.0-alpha.26) @@ -3857,10 +3862,10 @@ importers: version: file:packages/json-api(@babel/core@7.24.3)(@ember-data/graph@5.4.0-alpha.40)(@ember-data/request-utils@5.4.0-alpha.40)(@ember-data/store@5.4.0-alpha.40)(@glint/template@1.4.0)(@warp-drive/core-types@0.0.0-alpha.26)(ember-inflector@4.0.2) '@ember-data/legacy-compat': specifier: workspace:5.4.0-alpha.40 - version: file:packages/legacy-compat(@babel/core@7.24.3)(@ember-data/graph@5.4.0-alpha.40)(@ember-data/json-api@5.4.0-alpha.40)(@ember-data/request@5.4.0-alpha.40)(@ember-data/store@5.4.0-alpha.40)(@glint/template@1.4.0)(@warp-drive/core-types@0.0.0-alpha.26) + version: file:packages/legacy-compat(@babel/core@7.24.3)(@ember-data/graph@5.4.0-alpha.40)(@ember-data/json-api@5.4.0-alpha.40)(@ember-data/request@5.4.0-alpha.40)(@ember-data/store@5.4.0-alpha.40)(@warp-drive/core-types@0.0.0-alpha.26) '@ember-data/model': specifier: workspace:5.4.0-alpha.40 - version: file:packages/model(@babel/core@7.24.3)(@ember-data/debug@5.4.0-alpha.40)(@ember-data/graph@5.4.0-alpha.40)(@ember-data/json-api@5.4.0-alpha.40)(@ember-data/legacy-compat@5.4.0-alpha.40)(@ember-data/store@5.4.0-alpha.40)(@ember-data/tracking@5.4.0-alpha.40)(@ember/string@3.1.1)(@glint/template@1.4.0)(@warp-drive/core-types@0.0.0-alpha.26)(ember-inflector@4.0.2) + version: file:packages/model(@babel/core@7.24.3)(@ember-data/debug@5.4.0-alpha.40)(@ember-data/graph@5.4.0-alpha.40)(@ember-data/json-api@5.4.0-alpha.40)(@ember-data/legacy-compat@5.4.0-alpha.40)(@ember-data/store@5.4.0-alpha.40)(@ember-data/tracking@5.4.0-alpha.40)(@ember/string@3.1.1)(@warp-drive/core-types@0.0.0-alpha.26)(ember-inflector@4.0.2) '@ember-data/private-build-infra': specifier: workspace:5.4.0-alpha.40 version: file:packages/private-build-infra(@glint/template@1.4.0) @@ -3872,7 +3877,7 @@ importers: version: file:packages/request-utils(@babel/core@7.24.3)(@warp-drive/core-types@0.0.0-alpha.26) '@ember-data/serializer': specifier: workspace:5.4.0-alpha.40 - version: file:packages/serializer(@babel/core@7.24.3)(@ember/string@3.1.1)(@warp-drive/core-types@0.0.0-alpha.26)(ember-inflector@4.0.2) + version: file:packages/serializer(@babel/core@7.24.3)(@ember-data/legacy-compat@5.4.0-alpha.40)(@ember/string@3.1.1)(@warp-drive/core-types@0.0.0-alpha.26)(ember-inflector@4.0.2) '@ember-data/store': specifier: workspace:5.4.0-alpha.40 version: file:packages/store(@babel/core@7.24.3)(@ember-data/request@5.4.0-alpha.40)(@ember-data/tracking@5.4.0-alpha.40)(@ember/string@3.1.1)(@glint/template@1.4.0)(@warp-drive/core-types@0.0.0-alpha.26) @@ -4168,10 +4173,10 @@ importers: version: file:packages/json-api(@babel/core@7.24.3)(@ember-data/graph@5.4.0-alpha.40)(@ember-data/request-utils@5.4.0-alpha.40)(@ember-data/store@5.4.0-alpha.40)(@glint/template@1.4.0)(@warp-drive/core-types@0.0.0-alpha.26)(ember-inflector@4.0.2) '@ember-data/legacy-compat': specifier: workspace:5.4.0-alpha.40 - version: file:packages/legacy-compat(@babel/core@7.24.3)(@ember-data/graph@5.4.0-alpha.40)(@ember-data/json-api@5.4.0-alpha.40)(@ember-data/request@5.4.0-alpha.40)(@ember-data/store@5.4.0-alpha.40)(@glint/template@1.4.0)(@warp-drive/core-types@0.0.0-alpha.26) + version: file:packages/legacy-compat(@babel/core@7.24.3)(@ember-data/graph@5.4.0-alpha.40)(@ember-data/json-api@5.4.0-alpha.40)(@ember-data/request@5.4.0-alpha.40)(@ember-data/store@5.4.0-alpha.40)(@warp-drive/core-types@0.0.0-alpha.26) '@ember-data/model': specifier: workspace:5.4.0-alpha.40 - version: file:packages/model(@babel/core@7.24.3)(@ember-data/debug@5.4.0-alpha.40)(@ember-data/graph@5.4.0-alpha.40)(@ember-data/json-api@5.4.0-alpha.40)(@ember-data/legacy-compat@5.4.0-alpha.40)(@ember-data/store@5.4.0-alpha.40)(@ember-data/tracking@5.4.0-alpha.40)(@ember/string@3.1.1)(@glint/template@1.4.0)(@warp-drive/core-types@0.0.0-alpha.26)(ember-inflector@4.0.2) + version: file:packages/model(@babel/core@7.24.3)(@ember-data/debug@5.4.0-alpha.40)(@ember-data/graph@5.4.0-alpha.40)(@ember-data/json-api@5.4.0-alpha.40)(@ember-data/legacy-compat@5.4.0-alpha.40)(@ember-data/store@5.4.0-alpha.40)(@ember-data/tracking@5.4.0-alpha.40)(@ember/string@3.1.1)(@warp-drive/core-types@0.0.0-alpha.26)(ember-inflector@4.0.2) '@ember-data/private-build-infra': specifier: workspace:5.4.0-alpha.40 version: file:packages/private-build-infra(@glint/template@1.4.0) @@ -4560,10 +4565,10 @@ importers: version: file:packages/json-api(@babel/core@7.24.3)(@ember-data/graph@5.4.0-alpha.40)(@ember-data/request-utils@5.4.0-alpha.40)(@ember-data/store@5.4.0-alpha.40)(@glint/template@1.4.0)(@warp-drive/core-types@0.0.0-alpha.26)(ember-inflector@4.0.2) '@ember-data/legacy-compat': specifier: workspace:5.4.0-alpha.40 - version: file:packages/legacy-compat(@babel/core@7.24.3)(@ember-data/graph@5.4.0-alpha.40)(@ember-data/json-api@5.4.0-alpha.40)(@ember-data/request@5.4.0-alpha.40)(@ember-data/store@5.4.0-alpha.40)(@glint/template@1.4.0)(@warp-drive/core-types@0.0.0-alpha.26) + version: file:packages/legacy-compat(@babel/core@7.24.3)(@ember-data/graph@5.4.0-alpha.40)(@ember-data/json-api@5.4.0-alpha.40)(@ember-data/request@5.4.0-alpha.40)(@ember-data/store@5.4.0-alpha.40)(@warp-drive/core-types@0.0.0-alpha.26) '@ember-data/model': specifier: workspace:5.4.0-alpha.40 - version: file:packages/model(@babel/core@7.24.3)(@ember-data/debug@5.4.0-alpha.40)(@ember-data/graph@5.4.0-alpha.40)(@ember-data/json-api@5.4.0-alpha.40)(@ember-data/legacy-compat@5.4.0-alpha.40)(@ember-data/store@5.4.0-alpha.40)(@ember-data/tracking@5.4.0-alpha.40)(@ember/string@3.1.1)(@glint/template@1.4.0)(@warp-drive/core-types@0.0.0-alpha.26)(ember-inflector@4.0.2) + version: file:packages/model(@babel/core@7.24.3)(@ember-data/debug@5.4.0-alpha.40)(@ember-data/graph@5.4.0-alpha.40)(@ember-data/json-api@5.4.0-alpha.40)(@ember-data/legacy-compat@5.4.0-alpha.40)(@ember-data/store@5.4.0-alpha.40)(@ember-data/tracking@5.4.0-alpha.40)(@ember/string@3.1.1)(@warp-drive/core-types@0.0.0-alpha.26)(ember-inflector@4.0.2) '@ember-data/private-build-infra': specifier: workspace:5.4.0-alpha.40 version: file:packages/private-build-infra(@glint/template@1.4.0) @@ -19159,12 +19164,12 @@ packages: '@ember-data/debug': file:packages/debug(@ember-data/store@5.4.0-alpha.40)(@ember/string@3.1.1)(@glint/template@1.4.0)(@warp-drive/core-types@0.0.0-alpha.26) '@ember-data/graph': file:packages/graph(@babel/core@7.24.3)(@ember-data/store@5.4.0-alpha.40)(@glint/template@1.4.0)(@warp-drive/core-types@0.0.0-alpha.26) '@ember-data/json-api': file:packages/json-api(@babel/core@7.24.3)(@ember-data/graph@5.4.0-alpha.40)(@ember-data/request-utils@5.4.0-alpha.40)(@ember-data/store@5.4.0-alpha.40)(@glint/template@1.4.0)(@warp-drive/core-types@0.0.0-alpha.26)(ember-inflector@4.0.2) - '@ember-data/legacy-compat': file:packages/legacy-compat(@babel/core@7.24.3)(@ember-data/graph@5.4.0-alpha.40)(@ember-data/json-api@5.4.0-alpha.40)(@ember-data/request@5.4.0-alpha.40)(@ember-data/store@5.4.0-alpha.40)(@glint/template@1.4.0)(@warp-drive/core-types@0.0.0-alpha.26) - '@ember-data/model': file:packages/model(@babel/core@7.24.3)(@ember-data/debug@5.4.0-alpha.40)(@ember-data/graph@5.4.0-alpha.40)(@ember-data/json-api@5.4.0-alpha.40)(@ember-data/legacy-compat@5.4.0-alpha.40)(@ember-data/store@5.4.0-alpha.40)(@ember-data/tracking@5.4.0-alpha.40)(@ember/string@3.1.1)(@glint/template@1.4.0)(@warp-drive/core-types@0.0.0-alpha.26)(ember-inflector@4.0.2) + '@ember-data/legacy-compat': file:packages/legacy-compat(@babel/core@7.24.3)(@ember-data/graph@5.4.0-alpha.40)(@ember-data/json-api@5.4.0-alpha.40)(@ember-data/request@5.4.0-alpha.40)(@ember-data/store@5.4.0-alpha.40)(@warp-drive/core-types@0.0.0-alpha.26) + '@ember-data/model': file:packages/model(@babel/core@7.24.3)(@ember-data/debug@5.4.0-alpha.40)(@ember-data/graph@5.4.0-alpha.40)(@ember-data/json-api@5.4.0-alpha.40)(@ember-data/legacy-compat@5.4.0-alpha.40)(@ember-data/store@5.4.0-alpha.40)(@ember-data/tracking@5.4.0-alpha.40)(@ember/string@3.1.1)(@warp-drive/core-types@0.0.0-alpha.26)(ember-inflector@4.0.2) '@ember-data/private-build-infra': file:packages/private-build-infra(@glint/template@1.4.0) '@ember-data/request': file:packages/request(@babel/core@7.24.3)(@glint/template@1.4.0)(@warp-drive/core-types@0.0.0-alpha.26) '@ember-data/request-utils': file:packages/request-utils(@babel/core@7.24.3)(@warp-drive/core-types@0.0.0-alpha.26) - '@ember-data/serializer': file:packages/serializer(@babel/core@7.24.3)(@ember/string@3.1.1)(@warp-drive/core-types@0.0.0-alpha.26)(ember-inflector@4.0.2) + '@ember-data/serializer': file:packages/serializer(@babel/core@7.24.3)(@ember-data/legacy-compat@5.4.0-alpha.40)(@ember/string@3.1.1)(@warp-drive/core-types@0.0.0-alpha.26)(ember-inflector@4.0.2) '@ember-data/store': file:packages/store(@babel/core@7.24.3)(@ember-data/request@5.4.0-alpha.40)(@ember-data/tracking@5.4.0-alpha.40)(@ember/string@3.1.1)(@glint/template@1.4.0)(@warp-drive/core-types@0.0.0-alpha.26) '@ember-data/tracking': file:packages/tracking(@babel/core@7.24.3)(@glint/template@1.4.0) '@ember/edition-utils': 1.2.0 @@ -19222,7 +19227,7 @@ packages: '@warp-drive/core-types': workspace:0.0.0-alpha.26 ember-inflector: ^4.0.2 dependencies: - '@ember-data/legacy-compat': file:packages/legacy-compat(@babel/core@7.24.3)(@ember-data/graph@5.4.0-alpha.40)(@ember-data/json-api@5.4.0-alpha.40)(@ember-data/request@5.4.0-alpha.40)(@ember-data/store@5.4.0-alpha.40)(@glint/template@1.4.0)(@warp-drive/core-types@0.0.0-alpha.26) + '@ember-data/legacy-compat': file:packages/legacy-compat(@babel/core@7.24.3)(@ember-data/graph@5.4.0-alpha.40)(@ember-data/json-api@5.4.0-alpha.40)(@ember-data/request@5.4.0-alpha.40)(@ember-data/store@5.4.0-alpha.40)(@warp-drive/core-types@0.0.0-alpha.26) '@ember-data/private-build-infra': file:packages/private-build-infra(@glint/template@1.4.0) '@ember-data/store': file:packages/store(@babel/core@7.24.3)(@ember-data/request@5.4.0-alpha.40)(@ember-data/tracking@5.4.0-alpha.40)(@ember/string@3.1.1)(@glint/template@1.4.0)(@warp-drive/core-types@0.0.0-alpha.26) '@ember/string': 3.1.1(@babel/core@7.24.3) @@ -19317,7 +19322,7 @@ packages: '@ember-data/tracking': workspace:5.4.0-alpha.40 '@ember/string': 3.1.1 '@warp-drive/core-types': workspace:0.0.0-alpha.26 - ember-provide-consume-context: ^0.2.0 + ember-provide-consume-context: ^0.3.0 peerDependenciesMeta: ember-provide-consume-context: optional: true @@ -19436,6 +19441,37 @@ packages: - '@babel/core' - '@glint/template' - supports-color + dev: true + + file:packages/legacy-compat(@babel/core@7.24.3)(@ember-data/graph@5.4.0-alpha.40)(@ember-data/json-api@5.4.0-alpha.40)(@ember-data/request@5.4.0-alpha.40)(@ember-data/store@5.4.0-alpha.40)(@warp-drive/core-types@0.0.0-alpha.26): + resolution: {directory: packages/legacy-compat, type: directory} + id: file:packages/legacy-compat + name: '@ember-data/legacy-compat' + engines: {node: '>= 18.19.1'} + peerDependencies: + '@ember-data/graph': workspace:5.4.0-alpha.40 + '@ember-data/json-api': workspace:5.4.0-alpha.40 + '@ember-data/request': workspace:5.4.0-alpha.40 + '@ember-data/store': workspace:5.4.0-alpha.40 + '@warp-drive/core-types': workspace:0.0.0-alpha.26 + peerDependenciesMeta: + '@ember-data/graph': + optional: true + '@ember-data/json-api': + optional: true + dependencies: + '@ember-data/graph': file:packages/graph(@babel/core@7.24.3)(@ember-data/store@5.4.0-alpha.40)(@glint/template@1.4.0)(@warp-drive/core-types@0.0.0-alpha.26) + '@ember-data/json-api': file:packages/json-api(@babel/core@7.24.3)(@ember-data/graph@5.4.0-alpha.40)(@ember-data/request-utils@5.4.0-alpha.40)(@ember-data/store@5.4.0-alpha.40)(@glint/template@1.4.0)(@warp-drive/core-types@0.0.0-alpha.26)(ember-inflector@4.0.2) + '@ember-data/private-build-infra': file:packages/private-build-infra(@glint/template@1.4.0) + '@ember-data/request': file:packages/request(@babel/core@7.24.3)(@glint/template@1.4.0)(@warp-drive/core-types@0.0.0-alpha.26) + '@ember-data/store': file:packages/store(@babel/core@7.24.3)(@ember-data/request@5.4.0-alpha.40)(@ember-data/tracking@5.4.0-alpha.40)(@ember/string@3.1.1)(@glint/template@1.4.0)(@warp-drive/core-types@0.0.0-alpha.26) + '@embroider/macros': 1.15.0(@glint/template@1.4.0) + '@warp-drive/core-types': file:packages/core-types(@babel/core@7.24.3)(@glint/template@1.4.0) + ember-cli-babel: 8.2.0(@babel/core@7.24.3) + transitivePeerDependencies: + - '@babel/core' + - '@glint/template' + - supports-color file:packages/model(@babel/core@7.24.3)(@ember-data/debug@5.4.0-alpha.40)(@ember-data/graph@5.4.0-alpha.40)(@ember-data/json-api@5.4.0-alpha.40)(@ember-data/legacy-compat@5.4.0-alpha.40)(@ember-data/store@5.4.0-alpha.40)(@ember-data/tracking@5.4.0-alpha.40)(@ember/string@3.1.1)(@glint/template@1.4.0)(@warp-drive/core-types@0.0.0-alpha.26)(ember-inflector@4.0.2): resolution: {directory: packages/model, type: directory} @@ -19480,6 +19516,51 @@ packages: - '@babel/core' - '@glint/template' - supports-color + dev: true + + file:packages/model(@babel/core@7.24.3)(@ember-data/debug@5.4.0-alpha.40)(@ember-data/graph@5.4.0-alpha.40)(@ember-data/json-api@5.4.0-alpha.40)(@ember-data/legacy-compat@5.4.0-alpha.40)(@ember-data/store@5.4.0-alpha.40)(@ember-data/tracking@5.4.0-alpha.40)(@ember/string@3.1.1)(@warp-drive/core-types@0.0.0-alpha.26)(ember-inflector@4.0.2): + resolution: {directory: packages/model, type: directory} + id: file:packages/model + name: '@ember-data/model' + engines: {node: '>= 18.19.1'} + peerDependencies: + '@ember-data/debug': workspace:5.4.0-alpha.40 + '@ember-data/graph': workspace:5.4.0-alpha.40 + '@ember-data/json-api': workspace:5.4.0-alpha.40 + '@ember-data/legacy-compat': workspace:5.4.0-alpha.40 + '@ember-data/store': workspace:5.4.0-alpha.40 + '@ember-data/tracking': workspace:5.4.0-alpha.40 + '@ember/string': 3.1.1 + '@warp-drive/core-types': workspace:0.0.0-alpha.26 + ember-inflector: ^4.0.2 + peerDependenciesMeta: + '@ember-data/debug': + optional: true + '@ember-data/graph': + optional: true + '@ember-data/json-api': + optional: true + dependencies: + '@ember-data/debug': file:packages/debug(@ember-data/store@5.4.0-alpha.40)(@ember/string@3.1.1)(@glint/template@1.4.0)(@warp-drive/core-types@0.0.0-alpha.26) + '@ember-data/graph': file:packages/graph(@babel/core@7.24.3)(@ember-data/store@5.4.0-alpha.40)(@glint/template@1.4.0)(@warp-drive/core-types@0.0.0-alpha.26) + '@ember-data/json-api': file:packages/json-api(@babel/core@7.24.3)(@ember-data/graph@5.4.0-alpha.40)(@ember-data/request-utils@5.4.0-alpha.40)(@ember-data/store@5.4.0-alpha.40)(@glint/template@1.4.0)(@warp-drive/core-types@0.0.0-alpha.26)(ember-inflector@4.0.2) + '@ember-data/legacy-compat': file:packages/legacy-compat(@babel/core@7.24.3)(@ember-data/graph@5.4.0-alpha.40)(@ember-data/json-api@5.4.0-alpha.40)(@ember-data/request@5.4.0-alpha.40)(@ember-data/store@5.4.0-alpha.40)(@warp-drive/core-types@0.0.0-alpha.26) + '@ember-data/private-build-infra': file:packages/private-build-infra(@glint/template@1.4.0) + '@ember-data/store': file:packages/store(@babel/core@7.24.3)(@ember-data/request@5.4.0-alpha.40)(@ember-data/tracking@5.4.0-alpha.40)(@ember/string@3.1.1)(@glint/template@1.4.0)(@warp-drive/core-types@0.0.0-alpha.26) + '@ember-data/tracking': file:packages/tracking(@babel/core@7.24.3)(@glint/template@1.4.0) + '@ember/edition-utils': 1.2.0 + '@ember/string': 3.1.1(@babel/core@7.24.3) + '@embroider/macros': 1.15.0(@glint/template@1.4.0) + '@warp-drive/core-types': file:packages/core-types(@babel/core@7.24.3)(@glint/template@1.4.0) + ember-cli-babel: 8.2.0(@babel/core@7.24.3) + ember-cli-string-utils: 1.1.0 + ember-cli-test-info: 1.0.0 + ember-inflector: 4.0.2(@babel/core@7.24.3) + inflection: 3.0.0 + transitivePeerDependencies: + - '@babel/core' + - '@glint/template' + - supports-color file:packages/private-build-infra(@glint/template@1.4.0): resolution: {directory: packages/private-build-infra, type: directory} @@ -19592,16 +19673,18 @@ packages: - supports-color dev: true - file:packages/serializer(@babel/core@7.24.3)(@ember/string@3.1.1)(@warp-drive/core-types@0.0.0-alpha.26)(ember-inflector@4.0.2): + file:packages/serializer(@babel/core@7.24.3)(@ember-data/legacy-compat@5.4.0-alpha.40)(@ember/string@3.1.1)(@warp-drive/core-types@0.0.0-alpha.26)(ember-inflector@4.0.2): resolution: {directory: packages/serializer, type: directory} id: file:packages/serializer name: '@ember-data/serializer' engines: {node: '>= 18.19.1'} peerDependencies: + '@ember-data/legacy-compat': workspace:5.4.0-alpha.40 '@ember/string': 3.1.1 '@warp-drive/core-types': workspace:0.0.0-alpha.26 ember-inflector: ^4.0.2 dependencies: + '@ember-data/legacy-compat': file:packages/legacy-compat(@babel/core@7.24.3)(@ember-data/graph@5.4.0-alpha.40)(@ember-data/json-api@5.4.0-alpha.40)(@ember-data/request@5.4.0-alpha.40)(@ember-data/store@5.4.0-alpha.40)(@warp-drive/core-types@0.0.0-alpha.26) '@ember-data/private-build-infra': file:packages/private-build-infra(@glint/template@1.4.0) '@ember/string': 3.1.1(@babel/core@7.24.3) '@embroider/macros': 1.15.0(@glint/template@1.4.0) From ad27489cf62c13ad9325bcd198fb0c24580d8fa3 Mon Sep 17 00:00:00 2001 From: Chris Thoburn Date: Fri, 22 Mar 2024 17:32:48 -0700 Subject: [PATCH 2/4] fix test --- tests/main/tests/integration/relationships/belongs-to-test.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/main/tests/integration/relationships/belongs-to-test.js b/tests/main/tests/integration/relationships/belongs-to-test.js index 9cff6138e4e..5f249afb569 100644 --- a/tests/main/tests/integration/relationships/belongs-to-test.js +++ b/tests/main/tests/integration/relationships/belongs-to-test.js @@ -91,7 +91,7 @@ module('integration/relationship/belongs-to BelongsTo Relationships (new-style)' } catch (e) { assert.strictEqual( e.message, - `Assertion Failed: fetched the belongsTo relationship 'parentCompany' for company:1 with link 'company/1/parent-company', but no data member is present in the response. If no data exists, the response should set { data: null }`, + `Assertion Failed: fetched the belongsTo relationship 'parentCompany' for company:1 with link '\\"company/1/parent-company\\"', but no data member is present in the response. If no data exists, the response should set { data: null }`, 'We error appropriately' ); } From e9e5ff03250647c3e6dd752b87059e7740be489a Mon Sep 17 00:00:00 2001 From: Chris Thoburn Date: Fri, 22 Mar 2024 17:33:55 -0700 Subject: [PATCH 3/4] fix --- tests/main/tests/integration/relationships/belongs-to-test.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/main/tests/integration/relationships/belongs-to-test.js b/tests/main/tests/integration/relationships/belongs-to-test.js index 5f249afb569..06c103d564b 100644 --- a/tests/main/tests/integration/relationships/belongs-to-test.js +++ b/tests/main/tests/integration/relationships/belongs-to-test.js @@ -91,7 +91,7 @@ module('integration/relationship/belongs-to BelongsTo Relationships (new-style)' } catch (e) { assert.strictEqual( e.message, - `Assertion Failed: fetched the belongsTo relationship 'parentCompany' for company:1 with link '\\"company/1/parent-company\\"', but no data member is present in the response. If no data exists, the response should set { data: null }`, + `Assertion Failed: fetched the belongsTo relationship 'parentCompany' for company:1 with link '"company/1/parent-company"', but no data member is present in the response. If no data exists, the response should set { data: null }`, 'We error appropriately' ); } From 73bca7c06cf07e2c99046b4be53a37b3bdf06050 Mon Sep 17 00:00:00 2001 From: Chris Thoburn Date: Fri, 22 Mar 2024 17:48:46 -0700 Subject: [PATCH 4/4] more fix --- tests/main/tests/integration/relationships/has-many-test.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/main/tests/integration/relationships/has-many-test.js b/tests/main/tests/integration/relationships/has-many-test.js index 2f66aa4544c..856c9ab6ecf 100644 --- a/tests/main/tests/integration/relationships/has-many-test.js +++ b/tests/main/tests/integration/relationships/has-many-test.js @@ -139,7 +139,7 @@ module('integration/relationships/has_many - Has-Many Relationships', function ( } catch (e) { assert.strictEqual( e.message, - `Assertion Failed: fetched the hasMany relationship 'employees' for company:1 with link 'company/1/employees', but no data member is present in the response. If no data exists, the response should set { data: [] }`, + `Assertion Failed: fetched the hasMany relationship 'employees' for company:1 with link '"company/1/employees"', but no data member is present in the response. If no data exists, the response should set { data: [] }`, 'We error appropriately' ); }