@ember-data/store 5.4.0-beta.3 → 5.4.0-beta.5

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