@warp-drive/core 5.6.0-alpha.15 → 5.6.0-alpha.17

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 (286) hide show
  1. package/declarations/build-config/babel-macros.d.ts +1 -2
  2. package/declarations/build-config/canary-features.d.ts +1 -2
  3. package/declarations/build-config/debugging.d.ts +1 -2
  4. package/declarations/build-config/deprecations.d.ts +1 -2
  5. package/declarations/build-config/env.d.ts +1 -2
  6. package/declarations/build-config/macros.d.ts +1 -2
  7. package/declarations/build-config.d.ts +1 -2
  8. package/declarations/configure.d.ts +6 -7
  9. package/declarations/graph/-private/-diff.d.ts +21 -22
  10. package/declarations/graph/-private/-edge-definition.d.ts +134 -135
  11. package/declarations/graph/-private/-state.d.ts +93 -7
  12. package/declarations/graph/-private/-utils.d.ts +18 -13
  13. package/declarations/graph/-private/coerce-id.d.ts +6 -1
  14. package/declarations/graph/-private/debug/assert-polymorphic-type.d.ts +15 -4
  15. package/declarations/graph/-private/edges/collection.d.ts +35 -36
  16. package/declarations/graph/-private/edges/implicit.d.ts +28 -29
  17. package/declarations/graph/-private/edges/resource.d.ts +19 -20
  18. package/declarations/graph/-private/graph.d.ts +83 -48
  19. package/declarations/graph/-private/normalize-link.d.ts +7 -2
  20. package/declarations/graph/-private/operations/add-to-related-records.d.ts +3 -4
  21. package/declarations/graph/-private/operations/merge-identifier.d.ts +2 -3
  22. package/declarations/graph/-private/operations/remove-from-related-records.d.ts +3 -4
  23. package/declarations/graph/-private/operations/replace-related-record.d.ts +2 -3
  24. package/declarations/graph/-private/operations/replace-related-records.d.ts +58 -4
  25. package/declarations/graph/-private/operations/update-relationship.d.ts +11 -9
  26. package/declarations/graph/-private.d.ts +9 -10
  27. package/declarations/index.d.ts +11 -12
  28. package/declarations/reactive/-private/document.d.ts +143 -144
  29. package/declarations/reactive/-private/fields/compute.d.ts +31 -28
  30. package/declarations/reactive/-private/fields/extension.d.ts +2 -3
  31. package/declarations/reactive/-private/fields/managed-array.d.ts +19 -20
  32. package/declarations/reactive/-private/fields/managed-object.d.ts +16 -16
  33. package/declarations/reactive/-private/fields/many-array-manager.d.ts +15 -16
  34. package/declarations/reactive/-private/hooks.d.ts +3 -4
  35. package/declarations/reactive/-private/record.d.ts +61 -59
  36. package/declarations/reactive/-private/schema.d.ts +242 -224
  37. package/declarations/reactive/-private/symbols.d.ts +26 -1
  38. package/declarations/reactive/-private.d.ts +1 -2
  39. package/declarations/reactive.d.ts +4 -5
  40. package/declarations/request/-private/context.d.ts +34 -35
  41. package/declarations/request/-private/debug.d.ts +2 -3
  42. package/declarations/request/-private/fetch.d.ts +23 -24
  43. package/declarations/request/-private/future.d.ts +3 -4
  44. package/declarations/request/-private/manager.d.ts +159 -157
  45. package/declarations/request/-private/promise-cache.d.ts +21 -13
  46. package/declarations/request/-private/types.d.ts +124 -124
  47. package/declarations/request/-private/utils.d.ts +8 -9
  48. package/declarations/request.d.ts +5 -6
  49. package/declarations/store/-private/cache-handler/handler.d.ts +57 -52
  50. package/declarations/store/-private/cache-handler/types.d.ts +95 -96
  51. package/declarations/store/-private/cache-handler/utils.d.ts +16 -16
  52. package/declarations/store/-private/caches/cache-utils.d.ts +7 -4
  53. package/declarations/store/-private/caches/identifier-cache.d.ts +234 -246
  54. package/declarations/store/-private/caches/instance-cache.d.ts +47 -47
  55. package/declarations/store/-private/caches/resource-utils.d.ts +3 -4
  56. package/declarations/store/-private/debug/utils.d.ts +6 -7
  57. package/declarations/store/-private/default-cache-policy.d.ts +362 -361
  58. package/declarations/store/-private/legacy-model-support/record-reference.d.ts +154 -159
  59. package/declarations/store/-private/legacy-model-support/shim-model-class.d.ts +14 -14
  60. package/declarations/store/-private/managers/cache-capabilities-manager.d.ts +21 -22
  61. package/declarations/store/-private/managers/cache-manager.d.ts +440 -425
  62. package/declarations/store/-private/managers/notification-manager.d.ts +88 -83
  63. package/declarations/store/-private/managers/record-array-manager.d.ts +89 -90
  64. package/declarations/store/-private/network/request-cache.d.ts +86 -83
  65. package/declarations/store/-private/new-core-tmp/promise-state.d.ts +252 -244
  66. package/declarations/store/-private/new-core-tmp/reactivity/configure.d.ts +154 -155
  67. package/declarations/store/-private/new-core-tmp/reactivity/internal.d.ts +148 -149
  68. package/declarations/store/-private/new-core-tmp/reactivity/signal.d.ts +28 -23
  69. package/declarations/store/-private/new-core-tmp/request-state.d.ts +263 -241
  70. package/declarations/store/-private/new-core-tmp/request-subscription.d.ts +253 -223
  71. package/declarations/store/-private/record-arrays/identifier-array.d.ts +125 -121
  72. package/declarations/store/-private/record-arrays/many-array.d.ts +180 -184
  73. package/declarations/store/-private/record-arrays/native-proxy-type-fix.d.ts +120 -110
  74. package/declarations/store/-private/store-service.d.ts +1594 -1586
  75. package/declarations/store/-private/utils/coerce-id.d.ts +6 -1
  76. package/declarations/store/-private/utils/construct-resource.d.ts +1 -2
  77. package/declarations/store/-private/utils/is-non-empty-string.d.ts +0 -1
  78. package/declarations/store/-private/utils/normalize-model-name.d.ts +0 -1
  79. package/declarations/store/-private/utils/uuid-polyfill.d.ts +0 -1
  80. package/declarations/store/-private.d.ts +31 -28
  81. package/declarations/store/-types/q/cache-capabilities-manager.d.ts +96 -97
  82. package/declarations/store/-types/q/ds-model.d.ts +17 -18
  83. package/declarations/store/-types/q/identifier.d.ts +11 -12
  84. package/declarations/store/-types/q/record-instance.d.ts +16 -17
  85. package/declarations/store/-types/q/schema-service.d.ts +346 -343
  86. package/declarations/store/-types/q/store.d.ts +25 -28
  87. package/declarations/store.d.ts +1 -2
  88. package/declarations/types/-private.d.ts +16 -8
  89. package/declarations/types/cache/aliases.d.ts +11 -1
  90. package/declarations/types/cache/change.d.ts +4 -5
  91. package/declarations/types/cache/mutations.d.ts +51 -28
  92. package/declarations/types/cache/operations.d.ts +60 -47
  93. package/declarations/types/cache/relationship.d.ts +11 -9
  94. package/declarations/types/cache.d.ts +495 -484
  95. package/declarations/types/graph.d.ts +31 -32
  96. package/declarations/types/identifier.d.ts +83 -82
  97. package/declarations/types/json/raw.d.ts +1 -2
  98. package/declarations/types/params.d.ts +4 -5
  99. package/declarations/types/record.d.ts +117 -76
  100. package/declarations/types/request.d.ts +289 -266
  101. package/declarations/types/runtime.d.ts +8 -9
  102. package/declarations/types/schema/concepts.d.ts +19 -13
  103. package/declarations/types/schema/fields.d.ts +1712 -1713
  104. package/declarations/types/schema/fields.type-test.d.ts +0 -1
  105. package/declarations/types/spec/document.d.ts +28 -22
  106. package/declarations/types/spec/error.d.ts +16 -17
  107. package/declarations/types/spec/json-api-raw.d.ts +102 -102
  108. package/declarations/types/symbols.d.ts +74 -75
  109. package/declarations/types/utils.d.ts +5 -5
  110. package/declarations/types.d.ts +10 -11
  111. package/declarations/utils/string.d.ts +43 -40
  112. package/dist/graph/-private.js +1 -1
  113. package/dist/{handler-D1C3Innj.js → handler-C2T-IyJK.js} +1 -1
  114. package/dist/index.js +2 -2
  115. package/dist/reactive/-private.js +1 -1
  116. package/dist/reactive.js +42 -73
  117. package/dist/{request-state-CCOJIj5i.js → request-state-CjLph1LP.js} +275 -261
  118. package/dist/store/-private.js +2 -2
  119. package/dist/{symbols-epHW0Vm9.js → symbols-SIstXMLI.js} +1 -1
  120. package/dist/types/-private.js +1 -1
  121. package/package.json +4 -4
  122. package/declarations/build-config/babel-macros.d.ts.map +0 -1
  123. package/declarations/build-config/canary-features.d.ts.map +0 -1
  124. package/declarations/build-config/debugging.d.ts.map +0 -1
  125. package/declarations/build-config/deprecations.d.ts.map +0 -1
  126. package/declarations/build-config/env.d.ts.map +0 -1
  127. package/declarations/build-config/macros.d.ts.map +0 -1
  128. package/declarations/build-config.d.ts.map +0 -1
  129. package/declarations/configure.d.ts.map +0 -1
  130. package/declarations/graph/-private/-diff.d.ts.map +0 -1
  131. package/declarations/graph/-private/-edge-definition.d.ts.map +0 -1
  132. package/declarations/graph/-private/-state.d.ts.map +0 -1
  133. package/declarations/graph/-private/-utils.d.ts.map +0 -1
  134. package/declarations/graph/-private/coerce-id.d.ts.map +0 -1
  135. package/declarations/graph/-private/debug/assert-polymorphic-type.d.ts.map +0 -1
  136. package/declarations/graph/-private/edges/collection.d.ts.map +0 -1
  137. package/declarations/graph/-private/edges/implicit.d.ts.map +0 -1
  138. package/declarations/graph/-private/edges/resource.d.ts.map +0 -1
  139. package/declarations/graph/-private/graph.d.ts.map +0 -1
  140. package/declarations/graph/-private/normalize-link.d.ts.map +0 -1
  141. package/declarations/graph/-private/operations/add-to-related-records.d.ts.map +0 -1
  142. package/declarations/graph/-private/operations/merge-identifier.d.ts.map +0 -1
  143. package/declarations/graph/-private/operations/remove-from-related-records.d.ts.map +0 -1
  144. package/declarations/graph/-private/operations/replace-related-record.d.ts.map +0 -1
  145. package/declarations/graph/-private/operations/replace-related-records.d.ts.map +0 -1
  146. package/declarations/graph/-private/operations/update-relationship.d.ts.map +0 -1
  147. package/declarations/graph/-private.d.ts.map +0 -1
  148. package/declarations/index.d.ts.map +0 -1
  149. package/declarations/reactive/-private/document.d.ts.map +0 -1
  150. package/declarations/reactive/-private/fields/compute.d.ts.map +0 -1
  151. package/declarations/reactive/-private/fields/extension.d.ts.map +0 -1
  152. package/declarations/reactive/-private/fields/managed-array.d.ts.map +0 -1
  153. package/declarations/reactive/-private/fields/managed-object.d.ts.map +0 -1
  154. package/declarations/reactive/-private/fields/many-array-manager.d.ts.map +0 -1
  155. package/declarations/reactive/-private/hooks.d.ts.map +0 -1
  156. package/declarations/reactive/-private/record.d.ts.map +0 -1
  157. package/declarations/reactive/-private/schema.d.ts.map +0 -1
  158. package/declarations/reactive/-private/symbols.d.ts.map +0 -1
  159. package/declarations/reactive/-private.d.ts.map +0 -1
  160. package/declarations/reactive.d.ts.map +0 -1
  161. package/declarations/request/-private/context.d.ts.map +0 -1
  162. package/declarations/request/-private/debug.d.ts.map +0 -1
  163. package/declarations/request/-private/fetch.d.ts.map +0 -1
  164. package/declarations/request/-private/future.d.ts.map +0 -1
  165. package/declarations/request/-private/manager.d.ts.map +0 -1
  166. package/declarations/request/-private/promise-cache.d.ts.map +0 -1
  167. package/declarations/request/-private/types.d.ts.map +0 -1
  168. package/declarations/request/-private/utils.d.ts.map +0 -1
  169. package/declarations/request.d.ts.map +0 -1
  170. package/declarations/store/-private/cache-handler/handler.d.ts.map +0 -1
  171. package/declarations/store/-private/cache-handler/types.d.ts.map +0 -1
  172. package/declarations/store/-private/cache-handler/utils.d.ts.map +0 -1
  173. package/declarations/store/-private/caches/cache-utils.d.ts.map +0 -1
  174. package/declarations/store/-private/caches/identifier-cache.d.ts.map +0 -1
  175. package/declarations/store/-private/caches/instance-cache.d.ts.map +0 -1
  176. package/declarations/store/-private/caches/resource-utils.d.ts.map +0 -1
  177. package/declarations/store/-private/debug/utils.d.ts.map +0 -1
  178. package/declarations/store/-private/default-cache-policy.d.ts.map +0 -1
  179. package/declarations/store/-private/legacy-model-support/record-reference.d.ts.map +0 -1
  180. package/declarations/store/-private/legacy-model-support/shim-model-class.d.ts.map +0 -1
  181. package/declarations/store/-private/managers/cache-capabilities-manager.d.ts.map +0 -1
  182. package/declarations/store/-private/managers/cache-manager.d.ts.map +0 -1
  183. package/declarations/store/-private/managers/notification-manager.d.ts.map +0 -1
  184. package/declarations/store/-private/managers/record-array-manager.d.ts.map +0 -1
  185. package/declarations/store/-private/network/request-cache.d.ts.map +0 -1
  186. package/declarations/store/-private/new-core-tmp/promise-state.d.ts.map +0 -1
  187. package/declarations/store/-private/new-core-tmp/reactivity/configure.d.ts.map +0 -1
  188. package/declarations/store/-private/new-core-tmp/reactivity/internal.d.ts.map +0 -1
  189. package/declarations/store/-private/new-core-tmp/reactivity/signal.d.ts.map +0 -1
  190. package/declarations/store/-private/new-core-tmp/request-state.d.ts.map +0 -1
  191. package/declarations/store/-private/new-core-tmp/request-subscription.d.ts.map +0 -1
  192. package/declarations/store/-private/record-arrays/identifier-array.d.ts.map +0 -1
  193. package/declarations/store/-private/record-arrays/many-array.d.ts.map +0 -1
  194. package/declarations/store/-private/record-arrays/native-proxy-type-fix.d.ts.map +0 -1
  195. package/declarations/store/-private/store-service.d.ts.map +0 -1
  196. package/declarations/store/-private/store-service.type-test.d.ts +0 -2
  197. package/declarations/store/-private/store-service.type-test.d.ts.map +0 -1
  198. package/declarations/store/-private/utils/coerce-id.d.ts.map +0 -1
  199. package/declarations/store/-private/utils/construct-resource.d.ts.map +0 -1
  200. package/declarations/store/-private/utils/is-non-empty-string.d.ts.map +0 -1
  201. package/declarations/store/-private/utils/normalize-model-name.d.ts.map +0 -1
  202. package/declarations/store/-private/utils/uuid-polyfill.d.ts.map +0 -1
  203. package/declarations/store/-private.d.ts.map +0 -1
  204. package/declarations/store/-types/q/cache-capabilities-manager.d.ts.map +0 -1
  205. package/declarations/store/-types/q/ds-model.d.ts.map +0 -1
  206. package/declarations/store/-types/q/identifier.d.ts.map +0 -1
  207. package/declarations/store/-types/q/promise-proxies.d.ts +0 -2
  208. package/declarations/store/-types/q/promise-proxies.d.ts.map +0 -1
  209. package/declarations/store/-types/q/record-data-json-api.d.ts +0 -31
  210. package/declarations/store/-types/q/record-data-json-api.d.ts.map +0 -1
  211. package/declarations/store/-types/q/record-instance.d.ts.map +0 -1
  212. package/declarations/store/-types/q/schema-service.d.ts.map +0 -1
  213. package/declarations/store/-types/q/store.d.ts.map +0 -1
  214. package/declarations/store.d.ts.map +0 -1
  215. package/declarations/types/-private.d.ts.map +0 -1
  216. package/declarations/types/cache/aliases.d.ts.map +0 -1
  217. package/declarations/types/cache/change.d.ts.map +0 -1
  218. package/declarations/types/cache/mutations.d.ts.map +0 -1
  219. package/declarations/types/cache/operations.d.ts.map +0 -1
  220. package/declarations/types/cache/relationship.d.ts.map +0 -1
  221. package/declarations/types/cache.d.ts.map +0 -1
  222. package/declarations/types/graph.d.ts.map +0 -1
  223. package/declarations/types/identifier.d.ts.map +0 -1
  224. package/declarations/types/json/raw.d.ts.map +0 -1
  225. package/declarations/types/params.d.ts.map +0 -1
  226. package/declarations/types/record.d.ts.map +0 -1
  227. package/declarations/types/record.type-test.d.ts +0 -2
  228. package/declarations/types/record.type-test.d.ts.map +0 -1
  229. package/declarations/types/request.d.ts.map +0 -1
  230. package/declarations/types/request.type-test.d.ts +0 -2
  231. package/declarations/types/request.type-test.d.ts.map +0 -1
  232. package/declarations/types/runtime.d.ts.map +0 -1
  233. package/declarations/types/schema/concepts.d.ts.map +0 -1
  234. package/declarations/types/schema/fields.d.ts.map +0 -1
  235. package/declarations/types/schema/fields.type-test.d.ts.map +0 -1
  236. package/declarations/types/spec/document.d.ts.map +0 -1
  237. package/declarations/types/spec/error.d.ts.map +0 -1
  238. package/declarations/types/spec/json-api-raw.d.ts.map +0 -1
  239. package/declarations/types/symbols.d.ts.map +0 -1
  240. package/declarations/types/utils.d.ts.map +0 -1
  241. package/declarations/types.d.ts.map +0 -1
  242. package/declarations/utils/string.d.ts.map +0 -1
  243. package/dist/build-config/babel-macros.js.map +0 -1
  244. package/dist/build-config/canary-features.js.map +0 -1
  245. package/dist/build-config/debugging.js.map +0 -1
  246. package/dist/build-config/deprecations.js.map +0 -1
  247. package/dist/build-config/env.js.map +0 -1
  248. package/dist/build-config/macros.js.map +0 -1
  249. package/dist/build-config.js.map +0 -1
  250. package/dist/configure-B48bFHOl.js.map +0 -1
  251. package/dist/configure.js.map +0 -1
  252. package/dist/context-COmAnXUQ.js.map +0 -1
  253. package/dist/graph/-private.js.map +0 -1
  254. package/dist/handler-D1C3Innj.js.map +0 -1
  255. package/dist/index.js.map +0 -1
  256. package/dist/reactive/-private.js.map +0 -1
  257. package/dist/reactive.js.map +0 -1
  258. package/dist/request-state-CCOJIj5i.js.map +0 -1
  259. package/dist/request.js.map +0 -1
  260. package/dist/store/-private.js.map +0 -1
  261. package/dist/store.js.map +0 -1
  262. package/dist/symbols-epHW0Vm9.js.map +0 -1
  263. package/dist/types/-private.js.map +0 -1
  264. package/dist/types/cache/aliases.js.map +0 -1
  265. package/dist/types/cache/change.js.map +0 -1
  266. package/dist/types/cache/mutations.js.map +0 -1
  267. package/dist/types/cache/operations.js.map +0 -1
  268. package/dist/types/cache/relationship.js.map +0 -1
  269. package/dist/types/cache.js.map +0 -1
  270. package/dist/types/graph.js.map +0 -1
  271. package/dist/types/identifier.js.map +0 -1
  272. package/dist/types/json/raw.js.map +0 -1
  273. package/dist/types/params.js.map +0 -1
  274. package/dist/types/record.js.map +0 -1
  275. package/dist/types/request.js.map +0 -1
  276. package/dist/types/runtime.js.map +0 -1
  277. package/dist/types/schema/concepts.js.map +0 -1
  278. package/dist/types/schema/fields.js.map +0 -1
  279. package/dist/types/schema/fields.type-test.js.map +0 -1
  280. package/dist/types/spec/document.js.map +0 -1
  281. package/dist/types/spec/error.js.map +0 -1
  282. package/dist/types/spec/json-api-raw.js.map +0 -1
  283. package/dist/types/symbols.js.map +0 -1
  284. package/dist/types/utils.js.map +0 -1
  285. package/dist/types.js.map +0 -1
  286. package/dist/utils/string.js.map +0 -1
@@ -1,93 +1,98 @@
1
- import type { StableDocumentIdentifier, StableRecordIdentifier } from '../../../types/identifier.ts';
2
- import type { Store } from '../store-service.ts';
1
+ import type { StableDocumentIdentifier, StableRecordIdentifier } from "../../../types/identifier.js";
2
+ import type { Store } from "../store-service.js";
3
3
  export type UnsubscribeToken = object;
4
- export type CacheOperation = 'added' | 'removed' | 'updated' | 'state';
5
- export type DocumentCacheOperation = 'invalidated' | 'added' | 'removed' | 'updated' | 'state';
6
- export type NotificationType = 'attributes' | 'relationships' | 'identity' | 'errors' | 'meta' | CacheOperation;
4
+ export type CacheOperation = "added" | "removed" | "updated" | "state";
5
+ export type DocumentCacheOperation = "invalidated" | "added" | "removed" | "updated" | "state";
6
+ export type NotificationType = "attributes" | "relationships" | "identity" | "errors" | "meta" | CacheOperation;
7
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: CacheOperation): void;
8
+ (identifier: StableRecordIdentifier, notificationType: "attributes" | "relationships", key?: string): void;
9
+ (identifier: StableRecordIdentifier, notificationType: "errors" | "meta" | "identity" | "state"): void;
10
+ (identifier: StableRecordIdentifier, notificationType: CacheOperation): void;
11
11
  }
12
12
  export interface ResourceOperationCallback {
13
- (identifier: StableRecordIdentifier, notificationType: CacheOperation): void;
13
+ // resource updates
14
+ (identifier: StableRecordIdentifier, notificationType: CacheOperation): void;
14
15
  }
15
16
  export interface DocumentOperationCallback {
16
- (identifier: StableDocumentIdentifier, notificationType: DocumentCacheOperation): void;
17
+ // document updates
18
+ (identifier: StableDocumentIdentifier, notificationType: DocumentCacheOperation): void;
17
19
  }
18
20
  /**
19
- * The NotificationManager provides the ability to subscribe to
20
- * changes to Cache state.
21
- *
22
- * This Feature is what allows WarpDrive to create subscriptions that
23
- * work with any framework or change-notification system.
24
- *
25
- * @class NotificationManager
26
- * @public
27
- */
21
+ * The NotificationManager provides the ability to subscribe to
22
+ * changes to Cache state.
23
+ *
24
+ * This Feature is what allows WarpDrive to create subscriptions that
25
+ * work with any framework or change-notification system.
26
+ *
27
+ * @hideconstructor
28
+ * @public
29
+ */
28
30
  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', Array<NotificationCallback | ResourceOperationCallback | DocumentOperationCallback>>;
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
- * @public
58
- * @param {StableDocumentIdentifier | StableRecordIdentifier | 'resource' | 'document'} identifier
59
- * @param {NotificationCallback | ResourceOperationCallback | DocumentOperationCallback} callback
60
- * @return {UnsubscribeToken} an opaque token to be used with unsubscribe
61
- */
62
- subscribe(identifier: StableRecordIdentifier, callback: NotificationCallback): UnsubscribeToken;
63
- subscribe(identifier: 'resource', callback: ResourceOperationCallback): UnsubscribeToken;
64
- subscribe(identifier: 'document' | StableDocumentIdentifier, callback: DocumentOperationCallback): UnsubscribeToken;
65
- /**
66
- * remove a previous subscription
67
- *
68
- * @public
69
- * @param {UnsubscribeToken} token
70
- */
71
- unsubscribe(token: UnsubscribeToken): void;
72
- /**
73
- * Custom Caches and Application Code should not call this method directly.
74
- *
75
- * @param identifier
76
- * @param value
77
- * @param key
78
- * @return {Boolean} whether a notification was delivered to any subscribers
79
- * @private
80
- */
81
- notify(identifier: StableRecordIdentifier, value: 'attributes' | 'relationships', key?: string): boolean;
82
- notify(identifier: StableRecordIdentifier, value: 'errors' | 'meta' | 'identity' | 'state'): boolean;
83
- notify(identifier: StableRecordIdentifier, value: CacheOperation): boolean;
84
- notify(identifier: StableDocumentIdentifier, value: DocumentCacheOperation): boolean;
85
- _onNextFlush(cb: () => void): void;
86
- _scheduleNotify(): boolean;
87
- _flush(): void;
88
- _flushNotification(identifier: StableRecordIdentifier, value: 'attributes' | 'relationships', key?: string): boolean;
89
- _flushNotification(identifier: StableRecordIdentifier, value: 'errors' | 'meta' | 'identity' | 'state'): boolean;
90
- _flushNotification(identifier: StableRecordIdentifier | StableDocumentIdentifier, value: CacheOperation): boolean;
91
- destroy(): void;
31
+ /** @internal */
32
+ private store;
33
+ /** @internal */
34
+ private isDestroyed;
35
+ /** @internal */
36
+ private _buffered;
37
+ /** @internal */
38
+ private _cache;
39
+ /** @internal */
40
+ private _hasFlush;
41
+ /** @internal */
42
+ private _onFlushCB?;
43
+ constructor(store: Store);
44
+ /**
45
+ * Subscribe to changes for a given resource identifier, resource addition/removal, or document addition/removal.
46
+ *
47
+ * ```ts
48
+ * export type CacheOperation = 'added' | 'removed' | 'updated' | 'state';
49
+ *
50
+ * export interface NotificationCallback {
51
+ * (identifier: StableRecordIdentifier, notificationType: 'attributes' | 'relationships', key?: string): void;
52
+ * (identifier: StableRecordIdentifier, notificationType: 'errors' | 'meta' | 'identity' | 'state'): void;
53
+ * (identifier: StableRecordIdentifier, notificationType: NotificationType, key?: string): void;
54
+ * }
55
+ * export interface ResourceOperationCallback {
56
+ * // resource updates
57
+ * (identifier: StableRecordIdentifier, notificationType: CacheOperation): void;
58
+ * }
59
+ * export interface DocumentOperationCallback {
60
+ * // document updates
61
+ * (identifier: StableDocumentIdentifier, notificationType: CacheOperation): void;
62
+ * }
63
+ * ```
64
+ *
65
+ * @public
66
+ * @param {StableDocumentIdentifier | StableRecordIdentifier | 'resource' | 'document'} identifier
67
+ * @param {NotificationCallback | ResourceOperationCallback | DocumentOperationCallback} callback
68
+ * @return {UnsubscribeToken} an opaque token to be used with unsubscribe
69
+ */
70
+ subscribe(identifier: StableRecordIdentifier, callback: NotificationCallback): UnsubscribeToken;
71
+ subscribe(identifier: "resource", callback: ResourceOperationCallback): UnsubscribeToken;
72
+ subscribe(identifier: "document" | StableDocumentIdentifier, callback: DocumentOperationCallback): UnsubscribeToken;
73
+ /**
74
+ * remove a previous subscription
75
+ *
76
+ * @public
77
+ */
78
+ unsubscribe(token: UnsubscribeToken): void;
79
+ /**
80
+ * Custom Caches and Application Code should not call this method directly.
81
+ *
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, value: CacheOperation): boolean;
87
+ notify(identifier: StableDocumentIdentifier, value: DocumentCacheOperation): boolean;
88
+ /** @internal */
89
+ _onNextFlush(cb: () => void): void;
90
+ private _scheduleNotify;
91
+ /** @internal */
92
+ _flush(): void;
93
+ private _flushNotification;
94
+ private _flushNotification;
95
+ private _flushNotification;
96
+ /** @internal */
97
+ destroy(): void;
92
98
  }
93
- //# sourceMappingURL=notification-manager.d.ts.map
@@ -1,98 +1,97 @@
1
- import type { LocalRelationshipOperation } from '../../../types/graph.ts';
2
- import type { StableDocumentIdentifier, StableRecordIdentifier } from '../../../types/identifier.ts';
3
- import type { ImmutableRequestInfo } from '../../../types/request.ts';
4
- import type { CollectionResourceDocument } from '../../../types/spec/json-api-raw.ts';
5
- import { Collection, IdentifierArray } from '../record-arrays/identifier-array.ts';
6
- import type { Store } from '../store-service.ts';
7
- import type { UnsubscribeToken } from './notification-manager.ts';
1
+ import type { LocalRelationshipOperation } from "../../../types/graph.js";
2
+ import type { StableDocumentIdentifier, StableRecordIdentifier } from "../../../types/identifier.js";
3
+ import type { ImmutableRequestInfo } from "../../../types/request.js";
4
+ import type { CollectionResourceDocument } from "../../../types/spec/json-api-raw.js";
5
+ import { Collection, IdentifierArray } from "../record-arrays/identifier-array.js";
6
+ import type { Store } from "../store-service.js";
7
+ import type { UnsubscribeToken } from "./notification-manager.js";
8
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 WarpDrive 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
- */
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 WarpDrive 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
46
  export declare function fastPush<T>(target: T[], source: T[]): void;
47
- type ChangeSet = Map<StableRecordIdentifier, 'add' | 'del'>;
47
+ type ChangeSet = Map<StableRecordIdentifier, "add" | "del">;
48
48
  /**
49
- @class RecordArrayManager
50
- @internal
49
+ @class RecordArrayManager
50
+ @internal
51
51
  */
52
52
  export declare 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
- _documentSubscription: UnsubscribeToken;
64
- _keyedArrays: Map<string, Collection>;
65
- _visibilitySet: Map<StableRecordIdentifier, boolean>;
66
- constructor(options: {
67
- store: Store;
68
- });
69
- _syncArray(array: IdentifierArray | Collection): void;
70
- mutate(mutation: LocalRelationshipOperation): void;
71
- /**
72
- Get the `RecordArray` for a modelName, which contains all loaded records of
73
- given modelName.
74
-
75
- @internal
76
- @param {String} modelName
77
- @return {RecordArray}
78
- */
79
- liveArrayFor(type: string): IdentifierArray;
80
- getCollection(config: {
81
- type?: string;
82
- query?: ImmutableRequestInfo | Record<string, unknown>;
83
- identifiers?: StableRecordIdentifier[];
84
- doc?: CollectionResourceDocument;
85
- identifier?: StableDocumentIdentifier | null;
86
- }): Collection;
87
- dirtyArray(array: IdentifierArray, delta: number, shouldSyncFromCache: boolean): void;
88
- _getPendingFor(identifier: StableRecordIdentifier, includeManaged: boolean, isRemove?: boolean): Map<IdentifierArray, ChangeSet> | void;
89
- populateManagedArray(array: Collection, identifiers: StableRecordIdentifier[], payload: CollectionResourceDocument | null): void;
90
- identifierAdded(identifier: StableRecordIdentifier): void;
91
- identifierRemoved(identifier: StableRecordIdentifier): void;
92
- identifierChanged(identifier: StableRecordIdentifier): void;
93
- clear(isClear?: boolean): void;
94
- destroy(): void;
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
+ _documentSubscription: UnsubscribeToken;
64
+ _keyedArrays: Map<string, Collection>;
65
+ _visibilitySet: Map<StableRecordIdentifier, boolean>;
66
+ constructor(options: {
67
+ store: Store;
68
+ });
69
+ _syncArray(array: IdentifierArray | Collection): void;
70
+ mutate(mutation: LocalRelationshipOperation): void;
71
+ /**
72
+ Get the `RecordArray` for a modelName, which contains all loaded records of
73
+ given modelName.
74
+
75
+ @internal
76
+ @param {String} modelName
77
+ @return {RecordArray}
78
+ */
79
+ liveArrayFor(type: string): IdentifierArray;
80
+ getCollection(config: {
81
+ type?: string;
82
+ query?: ImmutableRequestInfo | Record<string, unknown>;
83
+ identifiers?: StableRecordIdentifier[];
84
+ doc?: CollectionResourceDocument;
85
+ identifier?: StableDocumentIdentifier | null;
86
+ }): Collection;
87
+ dirtyArray(array: IdentifierArray, delta: number, shouldSyncFromCache: boolean): void;
88
+ _getPendingFor(identifier: StableRecordIdentifier, includeManaged: boolean, isRemove?: boolean): Map<IdentifierArray, ChangeSet> | void;
89
+ populateManagedArray(array: Collection, identifiers: StableRecordIdentifier[], payload: CollectionResourceDocument | null): void;
90
+ identifierAdded(identifier: StableRecordIdentifier): void;
91
+ identifierRemoved(identifier: StableRecordIdentifier): void;
92
+ identifierChanged(identifier: StableRecordIdentifier): void;
93
+ clear(isClear?: boolean): void;
94
+ destroy(): void;
95
95
  }
96
96
  export declare function disassociateIdentifier(ArraysCache: Map<StableRecordIdentifier, Set<Collection>>, array: Collection, identifier: StableRecordIdentifier): void;
97
97
  export {};
98
- //# sourceMappingURL=record-array-manager.d.ts.map
@@ -1,104 +1,107 @@
1
- import type { StableRecordIdentifier } from '../../../types/identifier.ts';
2
- import type { FindRecordOptions } from '../../-types/q/store.ts';
3
- import type { Store } from '../store-service.ts';
1
+ import type { StableRecordIdentifier } from "../../../types/identifier.js";
2
+ import type { FindRecordOptions } from "../../-types/q/store.js";
3
+ import type { Store } from "../store-service.js";
4
4
  declare const Touching: "___(unique) Symbol(Touching)";
5
5
  export declare const RequestPromise: "___(unique) Symbol(RequestPromise)";
6
6
  export interface Operation {
7
- op: string;
8
- options: FindRecordOptions | undefined;
9
- recordIdentifier: StableRecordIdentifier;
7
+ op: string;
8
+ options: FindRecordOptions | undefined;
9
+ recordIdentifier: StableRecordIdentifier;
10
10
  }
11
11
  export interface FindRecordQuery extends Operation {
12
- op: 'findRecord';
12
+ op: "findRecord";
13
13
  }
14
14
  export interface SaveRecordMutation extends Operation {
15
- op: 'saveRecord';
15
+ op: "saveRecord";
16
16
  }
17
17
  export interface Request {
18
- data: Operation[];
19
- options?: Record<string, unknown>;
18
+ data: Operation[];
19
+ options?: Record<string, unknown>;
20
20
  }
21
- export type RequestStates = 'pending' | 'fulfilled' | 'rejected';
21
+ export type RequestStates = "pending" | "fulfilled" | "rejected";
22
22
  export interface RequestCacheRequestState {
23
- state: RequestStates;
24
- type: 'query' | 'mutation';
25
- request: Request;
26
- response?: Response;
23
+ state: RequestStates;
24
+ type: "query" | "mutation";
25
+ request: Request;
26
+ response?: Response;
27
27
  }
28
28
  export interface Response {
29
- data: unknown;
29
+ // rawData: unknown;
30
+ data: unknown;
30
31
  }
31
32
  interface InternalRequest extends RequestCacheRequestState {
32
- [Touching]: StableRecordIdentifier[];
33
- [RequestPromise]?: Promise<unknown>;
33
+ [Touching]: StableRecordIdentifier[];
34
+ [RequestPromise]?: Promise<unknown>;
34
35
  }
35
36
  export type RequestSubscription = (requestState: RequestCacheRequestState) => void;
36
37
  /**
37
- * The RequestStateService is used to track the state of requests
38
- * for fetching or updating known resource identifies that are inflight.
39
- *
40
- * @class RequestStateService
41
- * @public
42
- */
38
+ * The RequestStateService is used to track the state of requests
39
+ * for fetching or updating known resource identifies that are inflight.
40
+ *
41
+ * @hideconstructor
42
+ * @public
43
+ */
43
44
  export declare class RequestStateService {
44
- _pending: Map<StableRecordIdentifier, InternalRequest[]>;
45
- _done: Map<StableRecordIdentifier, InternalRequest[]>;
46
- _subscriptions: Map<StableRecordIdentifier, RequestSubscription[]>;
47
- _toFlush: InternalRequest[];
48
- _store: Store;
49
- constructor(store: Store);
50
- _clearEntries(identifier: StableRecordIdentifier): void;
51
- _enqueue<T>(promise: Promise<T>, queryRequest: Request): Promise<T>;
52
- _triggerSubscriptions(req: InternalRequest): void;
53
- _flush(): void;
54
- _flushRequest(req: InternalRequest): void;
55
- _dequeue(identifier: StableRecordIdentifier, request: InternalRequest): void;
56
- _addDone(request: InternalRequest): void;
57
- /**
58
- * Subscribe to requests for a given resource identity.
59
- *
60
- * The callback will receive the current state of the request.
61
- *
62
- * ```ts
63
- * interface RequestState {
64
- * state: 'pending' | 'fulfilled' | 'rejected';
65
- * type: 'query' | 'mutation';
66
- * request: Request;
67
- * response?: { data: unknown };
68
- * }
69
- * ```
70
- *
71
- * Note: It should be considered dangerous to use this API for more than simple
72
- * state derivation or debugging. The `request` and `response` properties are poorly
73
- * spec'd and may change unexpectedly when shifting what Handlers are in use or how
74
- * requests are issued from the Store.
75
- *
76
- * We expect to revisit this API in the near future as we continue to refine the
77
- * RequestManager ergonomics, as a simpler but more powerful direct integration
78
- * with the RequestManager for these purposes is likely to be a better long-term
79
- * design.
80
- *
81
- * @public
82
- * @param {StableRecordIdentifier} identifier
83
- * @param {(state: RequestCacheRequestState) => void} callback
84
- */
85
- subscribeForRecord(identifier: StableRecordIdentifier, callback: RequestSubscription): void;
86
- /**
87
- * Retrieve all active requests for a given resource identity.
88
- *
89
- * @public
90
- * @param {StableRecordIdentifier} identifier
91
- * @return {RequestCacheRequestState[]} an array of request states for any pending requests for the given identifier
92
- */
93
- getPendingRequestsForRecord(identifier: StableRecordIdentifier): RequestCacheRequestState[];
94
- /**
95
- * Retrieve the last completed request for a given resource identity.
96
- *
97
- * @public
98
- * @param {StableRecordIdentifier} identifier
99
- * @return {RequestCacheRequestState | null} the state of the most recent request for the given identifier
100
- */
101
- getLastRequestForRecord(identifier: StableRecordIdentifier): RequestCacheRequestState | null;
45
+ /** @internal */
46
+ _pending: Map<StableRecordIdentifier, InternalRequest[]>;
47
+ private _done;
48
+ private _subscriptions;
49
+ private _toFlush;
50
+ private _store;
51
+ constructor(store: Store);
52
+ /** @internal */
53
+ _clearEntries(identifier: StableRecordIdentifier): void;
54
+ /** @internal */
55
+ _enqueue<T>(promise: Promise<T>, queryRequest: Request): Promise<T>;
56
+ private _triggerSubscriptions;
57
+ private _flush;
58
+ private _flushRequest;
59
+ private _dequeue;
60
+ private _addDone;
61
+ /**
62
+ * Subscribe to requests for a given resource identity.
63
+ *
64
+ * The callback will receive the current state of the request.
65
+ *
66
+ * ```ts
67
+ * interface RequestState {
68
+ * state: 'pending' | 'fulfilled' | 'rejected';
69
+ * type: 'query' | 'mutation';
70
+ * request: Request;
71
+ * response?: { data: unknown };
72
+ * }
73
+ * ```
74
+ *
75
+ * Note: It should be considered dangerous to use this API for more than simple
76
+ * state derivation or debugging. The `request` and `response` properties are poorly
77
+ * spec'd and may change unexpectedly when shifting what Handlers are in use or how
78
+ * requests are issued from the Store.
79
+ *
80
+ * We expect to revisit this API in the near future as we continue to refine the
81
+ * RequestManager ergonomics, as a simpler but more powerful direct integration
82
+ * with the RequestManager for these purposes is likely to be a better long-term
83
+ * design.
84
+ *
85
+ * @public
86
+ * @param {StableRecordIdentifier} identifier
87
+ * @param {(state: RequestCacheRequestState) => void} callback
88
+ */
89
+ subscribeForRecord(identifier: StableRecordIdentifier, callback: RequestSubscription): void;
90
+ /**
91
+ * Retrieve all active requests for a given resource identity.
92
+ *
93
+ * @public
94
+ * @param {StableRecordIdentifier} identifier
95
+ * @return {RequestCacheRequestState[]} an array of request states for any pending requests for the given identifier
96
+ */
97
+ getPendingRequestsForRecord(identifier: StableRecordIdentifier): RequestCacheRequestState[];
98
+ /**
99
+ * Retrieve the last completed request for a given resource identity.
100
+ *
101
+ * @public
102
+ * @param {StableRecordIdentifier} identifier
103
+ * @return {RequestCacheRequestState | null} the state of the most recent request for the given identifier
104
+ */
105
+ getLastRequestForRecord(identifier: StableRecordIdentifier): RequestCacheRequestState | null;
102
106
  }
103
107
  export {};
104
- //# sourceMappingURL=request-cache.d.ts.map