@ember-data-types/store 5.4.0-alpha.49

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 (73) hide show
  1. package/LICENSE.md +11 -0
  2. package/README.md +193 -0
  3. package/ember-data-logo-dark.svg +12 -0
  4. package/ember-data-logo-light.svg +12 -0
  5. package/package.json +20 -0
  6. package/unstable-preview-types/-private/cache-handler.d.ts +100 -0
  7. package/unstable-preview-types/-private/cache-handler.d.ts.map +1 -0
  8. package/unstable-preview-types/-private/caches/cache-utils.d.ts +11 -0
  9. package/unstable-preview-types/-private/caches/cache-utils.d.ts.map +1 -0
  10. package/unstable-preview-types/-private/caches/identifier-cache.d.ts +182 -0
  11. package/unstable-preview-types/-private/caches/identifier-cache.d.ts.map +1 -0
  12. package/unstable-preview-types/-private/caches/instance-cache.d.ts +63 -0
  13. package/unstable-preview-types/-private/caches/instance-cache.d.ts.map +1 -0
  14. package/unstable-preview-types/-private/caches/resource-utils.d.ts +12 -0
  15. package/unstable-preview-types/-private/caches/resource-utils.d.ts.map +1 -0
  16. package/unstable-preview-types/-private/document.d.ts +146 -0
  17. package/unstable-preview-types/-private/document.d.ts.map +1 -0
  18. package/unstable-preview-types/-private/legacy-model-support/record-reference.d.ts +179 -0
  19. package/unstable-preview-types/-private/legacy-model-support/record-reference.d.ts.map +1 -0
  20. package/unstable-preview-types/-private/legacy-model-support/shim-model-class.d.ts +19 -0
  21. package/unstable-preview-types/-private/legacy-model-support/shim-model-class.d.ts.map +1 -0
  22. package/unstable-preview-types/-private/managers/cache-capabilities-manager.d.ts +29 -0
  23. package/unstable-preview-types/-private/managers/cache-capabilities-manager.d.ts.map +1 -0
  24. package/unstable-preview-types/-private/managers/cache-manager.d.ts +442 -0
  25. package/unstable-preview-types/-private/managers/cache-manager.d.ts.map +1 -0
  26. package/unstable-preview-types/-private/managers/notification-manager.d.ts +98 -0
  27. package/unstable-preview-types/-private/managers/notification-manager.d.ts.map +1 -0
  28. package/unstable-preview-types/-private/managers/record-array-manager.d.ts +97 -0
  29. package/unstable-preview-types/-private/managers/record-array-manager.d.ts.map +1 -0
  30. package/unstable-preview-types/-private/network/request-cache.d.ts +109 -0
  31. package/unstable-preview-types/-private/network/request-cache.d.ts.map +1 -0
  32. package/unstable-preview-types/-private/record-arrays/identifier-array.d.ts +133 -0
  33. package/unstable-preview-types/-private/record-arrays/identifier-array.d.ts.map +1 -0
  34. package/unstable-preview-types/-private/record-arrays/native-proxy-type-fix.d.ts +118 -0
  35. package/unstable-preview-types/-private/record-arrays/native-proxy-type-fix.d.ts.map +1 -0
  36. package/unstable-preview-types/-private/store-service.d.ts +1554 -0
  37. package/unstable-preview-types/-private/store-service.d.ts.map +1 -0
  38. package/unstable-preview-types/-private/utils/coerce-id.d.ts +10 -0
  39. package/unstable-preview-types/-private/utils/coerce-id.d.ts.map +1 -0
  40. package/unstable-preview-types/-private/utils/construct-resource.d.ts +10 -0
  41. package/unstable-preview-types/-private/utils/construct-resource.d.ts.map +1 -0
  42. package/unstable-preview-types/-private/utils/identifier-debug-consts.d.ts +7 -0
  43. package/unstable-preview-types/-private/utils/identifier-debug-consts.d.ts.map +1 -0
  44. package/unstable-preview-types/-private/utils/is-non-empty-string.d.ts +4 -0
  45. package/unstable-preview-types/-private/utils/is-non-empty-string.d.ts.map +1 -0
  46. package/unstable-preview-types/-private/utils/normalize-model-name.d.ts +4 -0
  47. package/unstable-preview-types/-private/utils/normalize-model-name.d.ts.map +1 -0
  48. package/unstable-preview-types/-private/utils/uuid-polyfill.d.ts +4 -0
  49. package/unstable-preview-types/-private/utils/uuid-polyfill.d.ts.map +1 -0
  50. package/unstable-preview-types/-private.d.ts +20 -0
  51. package/unstable-preview-types/-private.d.ts.map +1 -0
  52. package/unstable-preview-types/-types/overview.d.ts +21 -0
  53. package/unstable-preview-types/-types/overview.d.ts.map +1 -0
  54. package/unstable-preview-types/-types/q/cache-store-wrapper.d.ts +107 -0
  55. package/unstable-preview-types/-types/q/cache-store-wrapper.d.ts.map +1 -0
  56. package/unstable-preview-types/-types/q/cache.d.ts +47 -0
  57. package/unstable-preview-types/-types/q/cache.d.ts.map +1 -0
  58. package/unstable-preview-types/-types/q/ds-model.d.ts +15 -0
  59. package/unstable-preview-types/-types/q/ds-model.d.ts.map +1 -0
  60. package/unstable-preview-types/-types/q/identifier.d.ts +171 -0
  61. package/unstable-preview-types/-types/q/identifier.d.ts.map +1 -0
  62. package/unstable-preview-types/-types/q/promise-proxies.d.ts +4 -0
  63. package/unstable-preview-types/-types/q/promise-proxies.d.ts.map +1 -0
  64. package/unstable-preview-types/-types/q/record-data-json-api.d.ts +36 -0
  65. package/unstable-preview-types/-types/q/record-data-json-api.d.ts.map +1 -0
  66. package/unstable-preview-types/-types/q/record-instance.d.ts +29 -0
  67. package/unstable-preview-types/-types/q/record-instance.d.ts.map +1 -0
  68. package/unstable-preview-types/-types/q/schema-service.d.ts +214 -0
  69. package/unstable-preview-types/-types/q/schema-service.d.ts.map +1 -0
  70. package/unstable-preview-types/-types/q/store.d.ts +17 -0
  71. package/unstable-preview-types/-types/q/store.d.ts.map +1 -0
  72. package/unstable-preview-types/index.d.ts +220 -0
  73. package/unstable-preview-types/index.d.ts.map +1 -0
@@ -0,0 +1,442 @@
1
+ declare module '@ember-data/store/-private/managers/cache-manager' {
2
+ import type { Cache, ChangedAttributesHash, RelationshipDiff } from '@warp-drive/core-types/cache';
3
+ import type { Change } from '@warp-drive/core-types/cache/change';
4
+ import type { CollectionRelationship, ResourceRelationship } from '@warp-drive/core-types/cache/relationship';
5
+ import type { LocalRelationshipOperation } from '@warp-drive/core-types/graph';
6
+ import type { StableDocumentIdentifier, StableRecordIdentifier } from '@warp-drive/core-types/identifier';
7
+ import type { Value } from '@warp-drive/core-types/json/raw';
8
+ import type { StructuredDataDocument, StructuredDocument } from '@warp-drive/core-types/request';
9
+ import type { ResourceDocument, SingleResourceDataDocument } from '@warp-drive/core-types/spec/document';
10
+ import type { ApiError } from '@warp-drive/core-types/spec/error';
11
+ import type { MergeOperation } from '@ember-data/store/-types/q/cache';
12
+ import type { JsonApiResource } from '@ember-data/store/-types/q/record-data-json-api';
13
+ import type { StoreRequestContext } from '@ember-data/store/-private/cache-handler';
14
+ /**
15
+ * The CacheManager wraps a Cache enforcing that only
16
+ * the public API surface area is exposed.
17
+ *
18
+ * Hence, it is the value of `Store.cache`, wrapping
19
+ * the cache instance returned by `Store.createCache`.
20
+ *
21
+ * It handles translating between cache versions when
22
+ * necessary, for instance when a Store is configured
23
+ * to use both a v1 and a v2 cache depending on some
24
+ * heuristic.
25
+ *
26
+ * Starting with the v2 spec, the cache is designed such
27
+ * that it must be implemented as a singleton.
28
+ *
29
+ * @class CacheManager
30
+ * @public
31
+ */
32
+ export class CacheManager implements Cache {
33
+ #private;
34
+ version: "2";
35
+ constructor(cache: Cache);
36
+ /**
37
+ * Cache the response to a request
38
+ *
39
+ * Unlike `store.push` which has UPSERT
40
+ * semantics, `put` has `replace` semantics similar to
41
+ * the `http` method `PUT`
42
+ *
43
+ * the individually cacheable
44
+ * e resource data it may contain
45
+ * should upsert, but the document data surrounding it should
46
+ * fully replace any existing information
47
+ *
48
+ * Note that in order to support inserting arbitrary data
49
+ * to the cache that did not originate from a request `put`
50
+ * should expect to sometimes encounter a document with only
51
+ * a `content` member and therefor must not assume the existence
52
+ * of `request` and `response` on the document.
53
+ *
54
+ * @method put
55
+ * @param {StructuredDocument} doc
56
+ * @return {ResourceDocument}
57
+ * @public
58
+ */
59
+ put<T>(doc: StructuredDocument<T> | {
60
+ content: T;
61
+ }): ResourceDocument;
62
+ /**
63
+ * Perform an operation on the cache to update the remote state.
64
+ *
65
+ * Note: currently the only valid operation is a MergeOperation
66
+ * which occurs when a collision of identifiers is detected.
67
+ *
68
+ * @method patch
69
+ * @public
70
+ * @param op the operation to perform
71
+ * @return {void}
72
+ */
73
+ patch(op: MergeOperation): void;
74
+ /**
75
+ * Update resource data with a local mutation. Currently supports operations
76
+ * on relationships only.
77
+ *
78
+ * @method mutate
79
+ * @public
80
+ * @param mutation
81
+ */
82
+ mutate(mutation: LocalRelationshipOperation): void;
83
+ /**
84
+ * Peek resource data from the Cache.
85
+ *
86
+ * In development, if the return value
87
+ * is JSON the return value
88
+ * will be deep-cloned and deep-frozen
89
+ * to prevent mutation thereby enforcing cache
90
+ * Immutability.
91
+ *
92
+ * This form of peek is useful for implementations
93
+ * that want to feed raw-data from cache to the UI
94
+ * or which want to interact with a blob of data
95
+ * directly from the presentation cache.
96
+ *
97
+ * An implementation might want to do this because
98
+ * de-referencing records which read from their own
99
+ * blob is generally safer because the record does
100
+ * not require retaining connections to the Store
101
+ * and Cache to present data on a per-field basis.
102
+ *
103
+ * This generally takes the place of `getAttr` as
104
+ * an API and may even take the place of `getRelationship`
105
+ * depending on implementation specifics, though this
106
+ * latter usage is less recommended due to the advantages
107
+ * of the Graph handling necessary entanglements and
108
+ * notifications for relational data.
109
+ *
110
+ * @method peek
111
+ * @public
112
+ * @param {StableRecordIdentifier | StableDocumentIdentifier} identifier
113
+ * @return {ResourceDocument | ResourceBlob | null} the known resource data
114
+ */
115
+ peek(identifier: StableRecordIdentifier): unknown;
116
+ peek(identifier: StableDocumentIdentifier): ResourceDocument | null;
117
+ /**
118
+ * Peek the Cache for the existing request data associated with
119
+ * a cacheable request
120
+ *
121
+ * @method peekRequest
122
+ * @param {StableDocumentIdentifier}
123
+ * @return {StableDocumentIdentifier | null}
124
+ * @public
125
+ */
126
+ peekRequest(identifier: StableDocumentIdentifier): StructuredDocument<ResourceDocument> | null;
127
+ /**
128
+ * Push resource data from a remote source into the cache for this identifier
129
+ *
130
+ * @method upsert
131
+ * @public
132
+ * @param identifier
133
+ * @param data
134
+ * @param hasRecord
135
+ * @return {void | string[]} if `hasRecord` is true then calculated key changes should be returned
136
+ */
137
+ upsert(identifier: StableRecordIdentifier, data: JsonApiResource, hasRecord: boolean): void | string[];
138
+ /**
139
+ * Create a fork of the cache from the current state.
140
+ *
141
+ * Applications should typically not call this method themselves,
142
+ * preferring instead to fork at the Store level, which will
143
+ * utilize this method to fork the cache.
144
+ *
145
+ * @method fork
146
+ * @public
147
+ * @return Promise<Cache>
148
+ */
149
+ fork(): Promise<Cache>;
150
+ /**
151
+ * Merge a fork back into a parent Cache.
152
+ *
153
+ * Applications should typically not call this method themselves,
154
+ * preferring instead to merge at the Store level, which will
155
+ * utilize this method to merge the caches.
156
+ *
157
+ * @method merge
158
+ * @param {Cache} cache
159
+ * @public
160
+ * @return Promise<void>
161
+ */
162
+ merge(cache: Cache): Promise<void>;
163
+ /**
164
+ * Generate the list of changes applied to all
165
+ * record in the store.
166
+ *
167
+ * Each individual resource or document that has
168
+ * been mutated should be described as an individual
169
+ * `Change` entry in the returned array.
170
+ *
171
+ * A `Change` is described by an object containing up to
172
+ * three properties: (1) the `identifier` of the entity that
173
+ * changed; (2) the `op` code of that change being one of
174
+ * `upsert` or `remove`, and if the op is `upsert` a `patch`
175
+ * containing the data to merge into the cache for the given
176
+ * entity.
177
+ *
178
+ * This `patch` is opaque to the Store but should be understood
179
+ * by the Cache and may expect to be utilized by an Adapter
180
+ * when generating data during a `save` operation.
181
+ *
182
+ * It is generally recommended that the `patch` contain only
183
+ * the updated state, ignoring fields that are unchanged
184
+ *
185
+ * ```ts
186
+ * interface Change {
187
+ * identifier: StableRecordIdentifier | StableDocumentIdentifier;
188
+ * op: 'upsert' | 'remove';
189
+ * patch?: unknown;
190
+ * }
191
+ * ```
192
+ *
193
+ * @method diff
194
+ * @public
195
+ */
196
+ diff(): Promise<Change[]>;
197
+ /**
198
+ * Serialize the entire contents of the Cache into a Stream
199
+ * which may be fed back into a new instance of the same Cache
200
+ * via `cache.hydrate`.
201
+ *
202
+ * @method dump
203
+ * @return {Promise<ReadableStream>}
204
+ * @public
205
+ */
206
+ dump(): Promise<ReadableStream<unknown>>;
207
+ /**
208
+ * hydrate a Cache from a Stream with content previously serialized
209
+ * from another instance of the same Cache, resolving when hydration
210
+ * is complete.
211
+ *
212
+ * This method should expect to be called both in the context of restoring
213
+ * the Cache during application rehydration after SSR **AND** at unknown
214
+ * times during the lifetime of an already booted application when it is
215
+ * desired to bulk-load additional information into the cache. This latter
216
+ * behavior supports optimizing pre/fetching of data for route transitions
217
+ * via data-only SSR modes.
218
+ *
219
+ * @method hydrate
220
+ * @param {ReadableStream} stream
221
+ * @return {Promise<void>}
222
+ * @public
223
+ */
224
+ hydrate(stream: ReadableStream<unknown>): Promise<void>;
225
+ /**
226
+ * [LIFECYCLE] Signal to the cache that a new record has been instantiated on the client
227
+ *
228
+ * It returns properties from options that should be set on the record during the create
229
+ * process. This return value behavior is deprecated.
230
+ *
231
+ * @method clientDidCreate
232
+ * @public
233
+ * @param identifier
234
+ * @param options
235
+ */
236
+ clientDidCreate(identifier: StableRecordIdentifier, options?: Record<string, unknown>): Record<string, unknown>;
237
+ /**
238
+ * [LIFECYCLE] Signals to the cache that a resource
239
+ * will be part of a save transaction.
240
+ *
241
+ * @method willCommit
242
+ * @public
243
+ * @param identifier
244
+ */
245
+ willCommit(identifier: StableRecordIdentifier, context: StoreRequestContext): void;
246
+ /**
247
+ * [LIFECYCLE] Signals to the cache that a resource
248
+ * was successfully updated as part of a save transaction.
249
+ *
250
+ * @method didCommit
251
+ * @public
252
+ * @param identifier
253
+ * @param data
254
+ */
255
+ didCommit(identifier: StableRecordIdentifier, result: StructuredDataDocument<unknown>): SingleResourceDataDocument;
256
+ /**
257
+ * [LIFECYCLE] Signals to the cache that a resource
258
+ * was update via a save transaction failed.
259
+ *
260
+ * @method commitWasRejected
261
+ * @public
262
+ * @param identifier
263
+ * @param errors
264
+ */
265
+ commitWasRejected(identifier: StableRecordIdentifier, errors?: ApiError[]): void;
266
+ /**
267
+ * [LIFECYCLE] Signals to the cache that all data for a resource
268
+ * should be cleared.
269
+ *
270
+ * @method unloadRecord
271
+ * @public
272
+ * @param identifier
273
+ */
274
+ unloadRecord(identifier: StableRecordIdentifier): void;
275
+ /**
276
+ * Retrieve the data for an attribute from the cache
277
+ *
278
+ * @method getAttr
279
+ * @public
280
+ * @param identifier
281
+ * @param propertyName
282
+ * @return {unknown}
283
+ */
284
+ getAttr(identifier: StableRecordIdentifier, propertyName: string): Value | undefined;
285
+ /**
286
+ * Mutate the data for an attribute in the cache
287
+ *
288
+ * @method setAttr
289
+ * @public
290
+ * @param identifier
291
+ * @param propertyName
292
+ * @param value
293
+ */
294
+ setAttr(identifier: StableRecordIdentifier, propertyName: string, value: Value): void;
295
+ /**
296
+ * Query the cache for the changed attributes of a resource.
297
+ *
298
+ * @method changedAttrs
299
+ * @public
300
+ * @param identifier
301
+ * @return
302
+ */
303
+ changedAttrs(identifier: StableRecordIdentifier): ChangedAttributesHash;
304
+ /**
305
+ * Query the cache for whether any mutated attributes exist
306
+ *
307
+ * @method hasChangedAttrs
308
+ * @public
309
+ * @param identifier
310
+ * @return {boolean}
311
+ */
312
+ hasChangedAttrs(identifier: StableRecordIdentifier): boolean;
313
+ /**
314
+ * Tell the cache to discard any uncommitted mutations to attributes
315
+ *
316
+ * @method rollbackAttrs
317
+ * @public
318
+ * @param identifier
319
+ * @return the names of attributes that were restored
320
+ */
321
+ rollbackAttrs(identifier: StableRecordIdentifier): string[];
322
+ /**
323
+ * Query the cache for the changes to relationships of a resource.
324
+ *
325
+ * Returns a map of relationship names to RelationshipDiff objects.
326
+ *
327
+ * ```ts
328
+ * type RelationshipDiff =
329
+ | {
330
+ kind: 'collection';
331
+ remoteState: StableRecordIdentifier[];
332
+ additions: Set<StableRecordIdentifier>;
333
+ removals: Set<StableRecordIdentifier>;
334
+ localState: StableRecordIdentifier[];
335
+ reordered: boolean;
336
+ }
337
+ | {
338
+ kind: 'resource';
339
+ remoteState: StableRecordIdentifier | null;
340
+ localState: StableRecordIdentifier | null;
341
+ };
342
+ ```
343
+ *
344
+ * @method changedRelationships
345
+ * @public
346
+ * @param {StableRecordIdentifier} identifier
347
+ * @return {Map<string, RelationshipDiff>}
348
+ */
349
+ changedRelationships(identifier: StableRecordIdentifier): Map<string, RelationshipDiff>;
350
+ /**
351
+ * Query the cache for whether any mutated attributes exist
352
+ *
353
+ * @method hasChangedRelationships
354
+ * @public
355
+ * @param {StableRecordIdentifier} identifier
356
+ * @return {boolean}
357
+ */
358
+ hasChangedRelationships(identifier: StableRecordIdentifier): boolean;
359
+ /**
360
+ * Tell the cache to discard any uncommitted mutations to relationships.
361
+ *
362
+ * This will also discard the change on any appropriate inverses.
363
+ *
364
+ * This method is a candidate to become a mutation
365
+ *
366
+ * @method rollbackRelationships
367
+ * @public
368
+ * @param {StableRecordIdentifier} identifier
369
+ * @return {string[]} the names of relationships that were restored
370
+ */
371
+ rollbackRelationships(identifier: StableRecordIdentifier): string[];
372
+ /**
373
+ * Query the cache for the current state of a relationship property
374
+ *
375
+ * @method getRelationship
376
+ * @public
377
+ * @param identifier
378
+ * @param propertyName
379
+ * @return resource relationship object
380
+ */
381
+ getRelationship(identifier: StableRecordIdentifier, propertyName: string): ResourceRelationship | CollectionRelationship;
382
+ /**
383
+ * Update the cache state for the given resource to be marked as locally deleted,
384
+ * or remove such a mark.
385
+ *
386
+ * @method setIsDeleted
387
+ * @public
388
+ * @param identifier
389
+ * @param isDeleted
390
+ */
391
+ setIsDeleted(identifier: StableRecordIdentifier, isDeleted: boolean): void;
392
+ /**
393
+ * Query the cache for any validation errors applicable to the given resource.
394
+ *
395
+ * @method getErrors
396
+ * @public
397
+ * @param identifier
398
+ * @return
399
+ */
400
+ getErrors(identifier: StableRecordIdentifier): ApiError[];
401
+ /**
402
+ * Query the cache for whether a given resource has any available data
403
+ *
404
+ * @method isEmpty
405
+ * @public
406
+ * @param identifier
407
+ * @return {boolean}
408
+ */
409
+ isEmpty(identifier: StableRecordIdentifier): boolean;
410
+ /**
411
+ * Query the cache for whether a given resource was created locally and not
412
+ * yet persisted.
413
+ *
414
+ * @method isNew
415
+ * @public
416
+ * @param identifier
417
+ * @return {boolean}
418
+ */
419
+ isNew(identifier: StableRecordIdentifier): boolean;
420
+ /**
421
+ * Query the cache for whether a given resource is marked as deleted (but not
422
+ * necessarily persisted yet).
423
+ *
424
+ * @method isDeleted
425
+ * @public
426
+ * @param identifier
427
+ * @return {boolean}
428
+ */
429
+ isDeleted(identifier: StableRecordIdentifier): boolean;
430
+ /**
431
+ * Query the cache for whether a given resource has been deleted and that deletion
432
+ * has also been persisted.
433
+ *
434
+ * @method isDeletionCommitted
435
+ * @public
436
+ * @param identifier
437
+ * @return {boolean}
438
+ */
439
+ isDeletionCommitted(identifier: StableRecordIdentifier): boolean;
440
+ }
441
+ }
442
+ //# sourceMappingURL=cache-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cache-manager.d.ts","sourceRoot":"","sources":["../../../src/-private/managers/cache-manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,98 @@
1
+ declare module '@ember-data/store/-private/managers/notification-manager' {
2
+ import type { StableDocumentIdentifier, StableRecordIdentifier } from '@warp-drive/core-types/identifier';
3
+ import type Store from '@ember-data/store/-private/store-service';
4
+ export type UnsubscribeToken = object;
5
+ export type CacheOperation = 'added' | 'removed' | 'updated' | 'state';
6
+ export type NotificationType = 'attributes' | 'relationships' | 'identity' | 'errors' | 'meta' | 'state';
7
+ export interface NotificationCallback {
8
+ (identifier: StableRecordIdentifier, notificationType: 'attributes' | 'relationships', key?: string): void;
9
+ (identifier: StableRecordIdentifier, notificationType: 'errors' | 'meta' | 'identity' | 'state'): void;
10
+ (identifier: StableRecordIdentifier, notificationType: NotificationType, key?: string): void;
11
+ }
12
+ export interface ResourceOperationCallback {
13
+ (identifier: StableRecordIdentifier, notificationType: CacheOperation): void;
14
+ }
15
+ export interface DocumentOperationCallback {
16
+ (identifier: StableDocumentIdentifier, notificationType: CacheOperation): void;
17
+ }
18
+ /**
19
+ * The NotificationManager provides the ability to subscribe to
20
+ * changes to Cache state.
21
+ *
22
+ * This Feature is what allows EmberData to create subscriptions that
23
+ * work with any framework or change-notification system.
24
+ *
25
+ * @class NotificationManager
26
+ * @public
27
+ */
28
+ export default class NotificationManager {
29
+ store: Store;
30
+ isDestroyed: boolean;
31
+ _buffered: Map<StableDocumentIdentifier | StableRecordIdentifier, [string, string | undefined][]>;
32
+ _cache: Map<StableDocumentIdentifier | StableRecordIdentifier | 'resource' | 'document', Map<UnsubscribeToken, NotificationCallback | ResourceOperationCallback | DocumentOperationCallback>>;
33
+ _tokens: Map<UnsubscribeToken, StableDocumentIdentifier | StableRecordIdentifier | 'resource' | 'document'>;
34
+ _hasFlush: boolean;
35
+ _onFlushCB?: () => void;
36
+ constructor(store: Store);
37
+ /**
38
+ * Subscribe to changes for a given resource identifier, resource addition/removal, or document addition/removal.
39
+ *
40
+ * ```ts
41
+ * export type CacheOperation = 'added' | 'removed' | 'updated' | 'state';
42
+ *
43
+ * export interface NotificationCallback {
44
+ * (identifier: StableRecordIdentifier, notificationType: 'attributes' | 'relationships', key?: string): void;
45
+ * (identifier: StableRecordIdentifier, notificationType: 'errors' | 'meta' | 'identity' | 'state'): void;
46
+ * (identifier: StableRecordIdentifier, notificationType: NotificationType, key?: string): void;
47
+ * }
48
+ * export interface ResourceOperationCallback {
49
+ * // resource updates
50
+ * (identifier: StableRecordIdentifier, notificationType: CacheOperation): void;
51
+ * }
52
+ * export interface DocumentOperationCallback {
53
+ * // document updates
54
+ * (identifier: StableDocumentIdentifier, notificationType: CacheOperation): void;
55
+ * }
56
+ * ```
57
+ *
58
+ * @method subscribe
59
+ * @public
60
+ * @param {StableDocumentIdentifier | StableRecordIdentifier | 'resource' | 'document'} identifier
61
+ * @param {NotificationCallback | ResourceOperationCallback | DocumentOperationCallback} callback
62
+ * @return {UnsubscribeToken} an opaque token to be used with unsubscribe
63
+ */
64
+ subscribe(identifier: StableRecordIdentifier, callback: NotificationCallback): UnsubscribeToken;
65
+ subscribe(identifier: 'resource', callback: ResourceOperationCallback): UnsubscribeToken;
66
+ subscribe(identifier: StableDocumentIdentifier, callback: DocumentOperationCallback): UnsubscribeToken;
67
+ subscribe(identifier: 'document', callback: DocumentOperationCallback): UnsubscribeToken;
68
+ /**
69
+ * remove a previous subscription
70
+ *
71
+ * @method unsubscribe
72
+ * @public
73
+ * @param {UnsubscribeToken} token
74
+ */
75
+ unsubscribe(token: UnsubscribeToken): void;
76
+ /**
77
+ * Custom Caches and Application Code should not call this method directly.
78
+ *
79
+ * @method notify
80
+ * @param identifier
81
+ * @param value
82
+ * @param key
83
+ * @return {Boolean} whether a notification was delivered to any subscribers
84
+ * @private
85
+ */
86
+ notify(identifier: StableRecordIdentifier, value: 'attributes' | 'relationships', key?: string): boolean;
87
+ notify(identifier: StableRecordIdentifier, value: 'errors' | 'meta' | 'identity' | 'state'): boolean;
88
+ notify(identifier: StableRecordIdentifier | StableDocumentIdentifier, value: CacheOperation): boolean;
89
+ _onNextFlush(cb: () => void): void;
90
+ _scheduleNotify(): void;
91
+ _flush(): void;
92
+ _flushNotification(identifier: StableRecordIdentifier, value: 'attributes' | 'relationships', key?: string): boolean;
93
+ _flushNotification(identifier: StableRecordIdentifier, value: 'errors' | 'meta' | 'identity' | 'state'): boolean;
94
+ _flushNotification(identifier: StableRecordIdentifier | StableDocumentIdentifier, value: CacheOperation): boolean;
95
+ destroy(): void;
96
+ }
97
+ }
98
+ //# sourceMappingURL=notification-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"notification-manager.d.ts","sourceRoot":"","sources":["../../../src/-private/managers/notification-manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,97 @@
1
+ declare module '@ember-data/store/-private/managers/record-array-manager' {
2
+ import type { StableRecordIdentifier } from '@warp-drive/core-types/identifier';
3
+ import type { ImmutableRequestInfo } from '@warp-drive/core-types/request';
4
+ import type { CollectionResourceDocument } from '@warp-drive/core-types/spec/raw';
5
+ import IdentifierArray, { Collection } from '@ember-data/store/-private/record-arrays/identifier-array';
6
+ import type Store from '@ember-data/store/-private/store-service';
7
+ import type { UnsubscribeToken } from '@ember-data/store/-private/managers/notification-manager';
8
+ /**
9
+ * This is a clever optimization.
10
+ *
11
+ * clever optimizations rarely stand the test of time, so if you're
12
+ * ever curious or think something better is possible please benchmark
13
+ * and discuss. The benchmark for this at the time of writing is in
14
+ * `scripts/benchmark-push.js`
15
+ *
16
+ * This approach turns out to be 150x faster in Chrome and node than
17
+ * simply using push or concat. It's highly susceptible to the specifics
18
+ * of the batch size, and may require tuning.
19
+ *
20
+ * Clever optimizations should always come with a `why`. This optimization
21
+ * exists for two reasons.
22
+ *
23
+ * 1) array.push(...objects) and Array.prototype.push.apply(arr, objects)
24
+ * are susceptible to stack overflows. The size of objects at which this
25
+ * occurs varies by environment, browser, and current stack depth and memory
26
+ * pressure; however, it occurs in all browsers in fairly pristine conditions
27
+ * somewhere around 125k to 200k elements. Since EmberData regularly encounters
28
+ * arrays larger than this in size, we cannot use push.
29
+ *
30
+ * 2) `array.concat` or simply setting the array to a new reference is often an
31
+ * easier approach; however, native Proxy to an array cannot swap it's target array
32
+ * and attempts at juggling multiple array sources have proven to be victim to a number
33
+ * of browser implementation bugs. Should these bugs be addressed then we could
34
+ * simplify to using `concat`, however, do note this is currently 150x faster
35
+ * than concat, and due to the overloaded signature of concat will likely always
36
+ * be faster.
37
+ *
38
+ * Sincerely,
39
+ * - runspired (Chris Thoburn) 08/21/2022
40
+ *
41
+ * @function fastPush
42
+ * @internal
43
+ * @param target the array to push into
44
+ * @param source the items to push into target
45
+ */
46
+ export function fastPush<T>(target: T[], source: T[]): void;
47
+ type ChangeSet = Map<StableRecordIdentifier, 'add' | 'del'>;
48
+ /**
49
+ @class RecordArrayManager
50
+ @internal
51
+ */
52
+ class RecordArrayManager {
53
+ store: Store;
54
+ isDestroying: boolean;
55
+ isDestroyed: boolean;
56
+ _set: Map<IdentifierArray, Set<StableRecordIdentifier>>;
57
+ _live: Map<string, IdentifierArray>;
58
+ _managed: Set<IdentifierArray>;
59
+ _pending: Map<IdentifierArray, ChangeSet>;
60
+ _identifiers: Map<StableRecordIdentifier, Set<Collection>>;
61
+ _staged: Map<string, ChangeSet>;
62
+ _subscription: UnsubscribeToken;
63
+ _keyedArrays: Map<string, Collection>;
64
+ _visibilitySet: Map<StableRecordIdentifier, boolean>;
65
+ constructor(options: {
66
+ store: Store;
67
+ });
68
+ _syncArray(array: IdentifierArray): void;
69
+ /**
70
+ Get the `RecordArray` for a modelName, which contains all loaded records of
71
+ given modelName.
72
+
73
+ @method liveArrayFor
74
+ @internal
75
+ @param {String} modelName
76
+ @return {RecordArray}
77
+ */
78
+ liveArrayFor(type: string): IdentifierArray;
79
+ createArray(config: {
80
+ type?: string;
81
+ query?: ImmutableRequestInfo | Record<string, unknown>;
82
+ identifiers?: StableRecordIdentifier[];
83
+ doc?: CollectionResourceDocument;
84
+ }): Collection;
85
+ dirtyArray(array: IdentifierArray, delta: number): void;
86
+ _getPendingFor(identifier: StableRecordIdentifier, includeManaged: boolean, isRemove?: boolean): Map<IdentifierArray, ChangeSet> | void;
87
+ populateManagedArray(array: Collection, identifiers: StableRecordIdentifier[], payload: CollectionResourceDocument): void;
88
+ identifierAdded(identifier: StableRecordIdentifier): void;
89
+ identifierRemoved(identifier: StableRecordIdentifier): void;
90
+ identifierChanged(identifier: StableRecordIdentifier): void;
91
+ clear(isClear?: boolean): void;
92
+ destroy(): void;
93
+ }
94
+ export function disassociateIdentifier(ArraysCache: Map<StableRecordIdentifier, Set<Collection>>, array: Collection, identifier: StableRecordIdentifier): void;
95
+ export default RecordArrayManager;
96
+ }
97
+ //# sourceMappingURL=record-array-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"record-array-manager.d.ts","sourceRoot":"","sources":["../../../src/-private/managers/record-array-manager.ts"],"names":[],"mappings":"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"}