Skip to content

Commit 3e2ef9d

Browse files
authored
feat: make setKeyInfoForResource public (#9352)
* fix: make setKeyInfoForResource public * fix export
1 parent 8d0688f commit 3e2ef9d

File tree

5 files changed

+37
-16
lines changed

5 files changed

+37
-16
lines changed

packages/store/src/-private.ts

+1-7
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,7 @@ export { recordIdentifierFor } from './-private/caches/instance-cache';
88

99
export { CacheHandler, type LifetimesService } from './-private/cache-handler';
1010

11-
export {
12-
setIdentifierGenerationMethod,
13-
setIdentifierUpdateMethod,
14-
setIdentifierForgetMethod,
15-
setIdentifierResetMethod,
16-
isStableIdentifier,
17-
} from './-private/caches/identifier-cache';
11+
export { isStableIdentifier } from './-private/caches/identifier-cache';
1812

1913
export { default as constructResource } from './-private/utils/construct-resource';
2014

packages/store/src/-private/caches/identifier-cache.ts

+3-6
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,8 @@ import type { ExistingResourceObject, ResourceIdentifierObject } from '@warp-dri
2525
import type {
2626
ForgetMethod,
2727
GenerationMethod,
28+
KeyInfo,
29+
KeyInfoMethod,
2830
ResetMethod,
2931
ResourceData,
3032
UpdateMethod,
@@ -76,19 +78,14 @@ type TypeMap = { [key: string]: KeyOptions };
7678
// type IdentifierTypeLookup = { all: Set<StableRecordIdentifier>; id: Map<string, StableRecordIdentifier> };
7779
// type IdentifiersByType = Map<string, IdentifierTypeLookup>;
7880
type IdentifierMap = Map<string, StableRecordIdentifier>;
79-
type KeyInfo = {
80-
id: string | null;
81-
type: string;
82-
};
81+
8382
type StableCache = {
8483
resources: IdentifierMap;
8584
documents: Map<string, StableDocumentIdentifier>;
8685
resourcesByType: TypeMap;
8786
polymorphicLidBackMap: Map<string, string[]>;
8887
};
8988

90-
export type KeyInfoMethod = (resource: unknown, known: StableRecordIdentifier | null) => KeyInfo;
91-
9289
export type MergeMethod = (
9390
targetIdentifier: StableRecordIdentifier,
9491
matchedIdentifier: StableRecordIdentifier,

packages/store/src/-types/q/identifier.ts

+25
Original file line numberDiff line numberDiff line change
@@ -171,3 +171,28 @@ export type ForgetMethod = (identifier: StableIdentifier | StableRecordIdentifie
171171
@static
172172
*/
173173
export type ResetMethod = () => void;
174+
175+
/**
176+
Configure a callback for when the identifier cache is generating a new
177+
StableRecordIdentifier for a resource.
178+
179+
This method controls the `type` and `id` that will be assigned to the
180+
`StableRecordIdentifier` that is created.
181+
182+
This configuration MUST occur prior to the store instance being created.
183+
184+
```js
185+
import { setKeyInfoForResource } from '@ember-data/store';
186+
```
187+
188+
@method setKeyInfoForResource
189+
@for @ember-data/store
190+
@param method
191+
@public
192+
@static
193+
*/
194+
export type KeyInfo = {
195+
id: string | null;
196+
type: string;
197+
};
198+
export type KeyInfoMethod = (resource: unknown, known: StableRecordIdentifier | null) => KeyInfo;

packages/store/src/index.ts

+7-3
Original file line numberDiff line numberDiff line change
@@ -187,10 +187,14 @@ export {
187187
CacheHandler,
188188
type LifetimesService,
189189
type StoreRequestInput,
190+
recordIdentifierFor,
191+
storeFor,
192+
} from './-private';
193+
194+
export {
190195
setIdentifierGenerationMethod,
191196
setIdentifierUpdateMethod,
192197
setIdentifierForgetMethod,
193198
setIdentifierResetMethod,
194-
recordIdentifierFor,
195-
storeFor,
196-
} from './-private';
199+
setKeyInfoForResource,
200+
} from './-private/caches/identifier-cache';

tests/docs/fixtures/expected.js

+1
Original file line numberDiff line numberDiff line change
@@ -467,6 +467,7 @@ module.exports = {
467467
'(public) @ember-data/store @ember-data/store#setIdentifierGenerationMethod',
468468
'(public) @ember-data/store @ember-data/store#setIdentifierResetMethod',
469469
'(public) @ember-data/store @ember-data/store#setIdentifierUpdateMethod',
470+
'(public) @ember-data/store @ember-data/store#setKeyInfoForResource',
470471
'(public) @ember-data/store CacheManager#changedAttrs',
471472
'(public) @ember-data/store CacheManager#clientDidCreate',
472473
'(public) @ember-data/store CacheManager#commitWasRejected',

0 commit comments

Comments
 (0)