diff --git a/packages/core-types/src/-private.ts b/packages/core-types/src/-private.ts index a08ec018525..c2b39b2b7c7 100644 --- a/packages/core-types/src/-private.ts +++ b/packages/core-types/src/-private.ts @@ -71,7 +71,7 @@ type GlobalKey = | 'DEBUG_MAP' | 'IDENTIFIERS' | 'DOCUMENTS' - // @ember-data/store InstanceCache + // @ember-data/store ResourceManager | 'CacheForIdentifierCache' | 'RecordCache' | 'StoreMap' diff --git a/packages/legacy-compat/src/builders/save-record.ts b/packages/legacy-compat/src/builders/save-record.ts index 3aaae565901..54e83d7f34e 100644 --- a/packages/legacy-compat/src/builders/save-record.ts +++ b/packages/legacy-compat/src/builders/save-record.ts @@ -2,7 +2,7 @@ * @module @ember-data/legacy-compat/builders */ import { recordIdentifierFor, storeFor, type StoreRequestInput } from '@ember-data/store'; -import type { InstanceCache } from '@ember-data/store/-private'; +import type { ResourceManager } from '@ember-data/store/-private'; import { assert } from '@warp-drive/build-config/macros'; import type { StableRecordIdentifier } from '@warp-drive/core-types'; import type { Cache } from '@warp-drive/core-types/cache'; @@ -26,7 +26,7 @@ function _resourceIsFullDeleted(identifier: StableRecordIdentifier, cache: Cache return cache.isDeletionCommitted(identifier) || (cache.isNew(identifier) && cache.isDeleted(identifier)); } -function resourceIsFullyDeleted(instanceCache: InstanceCache, identifier: StableRecordIdentifier): boolean { +function resourceIsFullyDeleted(instanceCache: ResourceManager, identifier: StableRecordIdentifier): boolean { const cache = instanceCache.cache; return !cache || _resourceIsFullDeleted(identifier, cache); } diff --git a/packages/legacy-compat/src/legacy-network-handler/fetch-manager.ts b/packages/legacy-compat/src/legacy-network-handler/fetch-manager.ts index 1e30751209e..0a3c321b185 100644 --- a/packages/legacy-compat/src/legacy-network-handler/fetch-manager.ts +++ b/packages/legacy-compat/src/legacy-network-handler/fetch-manager.ts @@ -6,9 +6,9 @@ import { createDeferred } from '@ember-data/request'; import type Store from '@ember-data/store'; import type { FindRecordQuery, - InstanceCache, Request, RequestStateService, + ResourceManager, SaveRecordMutation, } from '@ember-data/store/-private'; import { coerceId } from '@ember-data/store/-private'; @@ -285,7 +285,7 @@ export class FetchManager { } } -function _isEmpty(instanceCache: InstanceCache, identifier: StableRecordIdentifier): boolean { +function _isEmpty(instanceCache: ResourceManager, identifier: StableRecordIdentifier): boolean { const cache = instanceCache.cache; if (!cache) { return true; @@ -297,7 +297,7 @@ function _isEmpty(instanceCache: InstanceCache, identifier: StableRecordIdentifi return (!isNew || isDeleted) && isEmpty; } -function _isLoading(cache: InstanceCache, identifier: StableRecordIdentifier): boolean { +function _isLoading(cache: ResourceManager, identifier: StableRecordIdentifier): boolean { const req = cache.store.getRequestStateService(); // const fulfilled = req.getLastRequestForRecord(identifier); const isLoaded = cache.recordIsLoaded(identifier); diff --git a/packages/store/src/-private.ts b/packages/store/src/-private.ts index 532b54b8e04..3401295406a 100644 --- a/packages/store/src/-private.ts +++ b/packages/store/src/-private.ts @@ -4,7 +4,7 @@ export { Store, storeFor } from './-private/store-service'; -export { recordIdentifierFor } from './-private/caches/instance-cache'; +export { recordIdentifierFor } from './-private/managers/resource-manager'; export { CacheHandler, type StoreRequestContext } from './-private/cache-handler/handler'; export { type CachePolicy } from './-private/cache-handler/types'; @@ -14,7 +14,7 @@ export { isStableIdentifier } from './-private/caches/identifier-cache'; export { constructResource } from './-private/utils/construct-resource'; export type { Document } from './-private/document'; -export type { InstanceCache } from './-private/caches/instance-cache'; +export type { ResourceManager } from './-private/managers/resource-manager'; export type { FindRecordQuery, @@ -41,11 +41,11 @@ export { export { RecordArrayManager, fastPush } from './-private/managers/record-array-manager'; // leaked for private use / test use, should investigate removing -export { _clearCaches } from './-private/caches/instance-cache'; +export { _clearCaches } from './-private/managers/resource-manager'; export { peekCache, removeRecordDataFor } from './-private/caches/cache-utils'; // @ember-data/model needs these temporarily -export { setRecordIdentifier, StoreMap } from './-private/caches/instance-cache'; +export { setRecordIdentifier, StoreMap } from './-private/managers/resource-manager'; export { setCacheFor } from './-private/caches/cache-utils'; export { normalizeModelName as _deprecatingNormalize } from './-private/utils/normalize-model-name'; export type { StoreRequestInput } from './-private/cache-handler/handler'; diff --git a/packages/store/src/-private/caches/instance-cache.ts b/packages/store/src/-private/managers/resource-manager.ts similarity index 94% rename from packages/store/src/-private/caches/instance-cache.ts rename to packages/store/src/-private/managers/resource-manager.ts index 1fa2a0bd4f6..fbcb631c3f3 100644 --- a/packages/store/src/-private/caches/instance-cache.ts +++ b/packages/store/src/-private/managers/resource-manager.ts @@ -16,12 +16,12 @@ import type { } from '@warp-drive/core-types/spec/json-api-raw'; import type { OpaqueRecordInstance } from '../../-types/q/record-instance'; +import { CacheForIdentifierCache, removeRecordDataFor, setCacheFor } from '../caches/cache-utils'; import RecordReference from '../legacy-model-support/record-reference'; -import { CacheCapabilitiesManager } from '../managers/cache-capabilities-manager'; -import type { CacheManager } from '../managers/cache-manager'; import type { CreateRecordProperties, Store } from '../store-service'; import { ensureStringId } from '../utils/coerce-id'; -import { CacheForIdentifierCache, removeRecordDataFor, setCacheFor } from './cache-utils'; +import { CacheCapabilitiesManager } from './cache-capabilities-manager'; +import type { CacheManager } from './cache-manager'; type Destroyable = { isDestroyed: boolean; @@ -106,7 +106,12 @@ type Caches = { reference: WeakMap; }; -export class InstanceCache { +/** + * The ResourceManager + * + * @internal + */ +export class ResourceManager { declare store: Store; declare cache: Cache; declare _storeWrapper: CacheCapabilitiesManager; @@ -207,7 +212,7 @@ export class InstanceCache { if (LOG_INSTANCE_CACHE) { // eslint-disable-next-line no-console - console.log(`InstanceCache: created Record for ${String(identifier)}`, properties); + console.log(`ResourceManager: created Record for ${String(identifier)}`, properties); } } @@ -261,7 +266,7 @@ export class InstanceCache { this.store._requestCache._clearEntries(identifier); if (LOG_INSTANCE_CACHE) { // eslint-disable-next-line no-console - console.log(`InstanceCache: disconnected ${String(identifier)}`); + console.log(`ResourceManager: disconnected ${String(identifier)}`); } } @@ -278,7 +283,7 @@ export class InstanceCache { } if (LOG_INSTANCE_CACHE) { // eslint-disable-next-line no-console - console.groupCollapsed(`InstanceCache: unloading record for ${String(identifier)}`); + console.groupCollapsed(`ResourceManager: unloading record for ${String(identifier)}`); } // TODO is this join still necessary? @@ -295,7 +300,7 @@ export class InstanceCache { if (LOG_INSTANCE_CACHE) { // eslint-disable-next-line no-console - console.log(`InstanceCache: destroyed record for ${String(identifier)}`); + console.log(`ResourceManager: destroyed record for ${String(identifier)}`); } } @@ -304,7 +309,7 @@ export class InstanceCache { removeRecordDataFor(identifier); if (LOG_INSTANCE_CACHE) { // eslint-disable-next-line no-console - console.log(`InstanceCache: destroyed cache for ${String(identifier)}`); + console.log(`ResourceManager: destroyed cache for ${String(identifier)}`); } } else { this.disconnect(identifier); @@ -313,7 +318,7 @@ export class InstanceCache { this.store._requestCache._clearEntries(identifier); if (LOG_INSTANCE_CACHE) { // eslint-disable-next-line no-console - console.log(`InstanceCache: unloaded RecordData for ${String(identifier)}`); + console.log(`ResourceManager: unloaded RecordData for ${String(identifier)}`); // eslint-disable-next-line no-console console.groupEnd(); } @@ -372,7 +377,7 @@ export class InstanceCache { if (LOG_INSTANCE_CACHE) { // eslint-disable-next-line no-console - console.log(`InstanceCache: updating id to '${id}' for record ${String(identifier)}`); + console.log(`ResourceManager: updating id to '${id}' for record ${String(identifier)}`); } const existingIdentifier = this.store.identifierCache.peekRecordIdentifier({ type, id }); @@ -396,7 +401,7 @@ function _resourceIsFullDeleted(identifier: StableRecordIdentifier, cache: Cache return cache.isDeletionCommitted(identifier) || (cache.isNew(identifier) && cache.isDeleted(identifier)); } -export function resourceIsFullyDeleted(instanceCache: InstanceCache, identifier: StableRecordIdentifier): boolean { +export function resourceIsFullyDeleted(instanceCache: ResourceManager, identifier: StableRecordIdentifier): boolean { const cache = instanceCache.cache; return !cache || _resourceIsFullDeleted(identifier, cache); } diff --git a/packages/store/src/-private/record-arrays/identifier-array.ts b/packages/store/src/-private/record-arrays/identifier-array.ts index d884f92f0ec..5084db5c59e 100644 --- a/packages/store/src/-private/record-arrays/identifier-array.ts +++ b/packages/store/src/-private/record-arrays/identifier-array.ts @@ -19,7 +19,7 @@ import type { Links, PaginationLinks } from '@warp-drive/core-types/spec/json-ap import type { OpaqueRecordInstance } from '../../-types/q/record-instance'; import { isStableIdentifier } from '../caches/identifier-cache'; -import { recordIdentifierFor } from '../caches/instance-cache'; +import { recordIdentifierFor } from '../managers/resource-manager'; import type { RecordArrayManager } from '../managers/record-array-manager'; import type { Store } from '../store-service'; import { NativeProxy } from './native-proxy-type-fix'; diff --git a/packages/store/src/-private/store-service.ts b/packages/store/src/-private/store-service.ts index b600bcc4925..ad7ade5de9d 100644 --- a/packages/store/src/-private/store-service.ts +++ b/packages/store/src/-private/store-service.ts @@ -43,13 +43,13 @@ import type { StoreRequestInput } from './cache-handler/handler'; import type { CachePolicy } from './cache-handler/types'; import { IdentifierCache } from './caches/identifier-cache'; import { - InstanceCache, + ResourceManager, peekRecordIdentifier, preloadData, recordIdentifierFor, resourceIsFullyDeleted, storeFor, -} from './caches/instance-cache'; +} from './managers/resource-manager'; import type { Document } from './document'; import type RecordReference from './legacy-model-support/record-reference'; import { getShimClass } from './legacy-model-support/shim-model-class'; @@ -534,7 +534,7 @@ export class Store extends BaseClass { // Private declare _graph?: Graph; declare _requestCache: RequestStateService; - declare _instanceCache: InstanceCache; + declare _instanceCache: ResourceManager; declare _documentCache: Map< StableDocumentIdentifier, Document @@ -590,7 +590,7 @@ export class Store extends BaseClass { // private this._requestCache = new RequestStateService(this); - this._instanceCache = new InstanceCache(this); + this._instanceCache = new ResourceManager(this); this._documentCache = new Map(); this.isDestroying = false;