@warp-drive/core 5.8.0-alpha.37 → 5.8.0-alpha.40

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 (596) hide show
  1. package/declarations/index.d.ts +0 -4
  2. package/dist/{index-D4si_DxB.js → index-BKcD4JZK.js} +12 -8
  3. package/dist/index.js +1 -1
  4. package/dist/reactive.js +1 -1
  5. package/dist/store/-private.js +1 -1
  6. package/dist/types/-private.js +1 -1
  7. package/dist/unpkg/{prod-deprecated/symbols-sql1_mdx.js → dev/-private-3C1OkYtZ.js} +1 -1
  8. package/dist/unpkg/{dev-deprecated/configure-C3x8YXzL.js → dev/configure-BC66sfNO.js} +13 -11
  9. package/dist/unpkg/dev/configure.js +1 -1
  10. package/dist/unpkg/dev/graph/-private.js +206 -449
  11. package/dist/unpkg/dev/{index-D4si_DxB.js → index-DqhXrNZ_.js} +741 -1327
  12. package/dist/unpkg/dev/index.js +5 -7
  13. package/dist/unpkg/dev/reactive/-private.js +1 -1
  14. package/dist/unpkg/dev/reactive.js +4 -6
  15. package/dist/unpkg/{dev-deprecated/request-oqoLC9rz.js → dev/request-CA9K0gXq.js} +10 -16
  16. package/dist/unpkg/dev/request.js +1 -1
  17. package/dist/unpkg/dev/runtime-DGG4CvlW.js +135 -0
  18. package/dist/unpkg/dev/store/-private.js +56 -2
  19. package/dist/unpkg/dev/store.js +558 -1
  20. package/dist/unpkg/dev/types/-private.js +5 -15
  21. package/dist/unpkg/dev/types/identifier.js +1 -3
  22. package/dist/unpkg/dev/utils/string.js +5 -6
  23. package/dist/unpkg/dev-deprecated/{symbols-sql1_mdx.js → -private-3C1OkYtZ.js} +1 -1
  24. package/dist/unpkg/{prod-deprecated/configure-C3x8YXzL.js → dev-deprecated/configure-BC66sfNO.js} +13 -11
  25. package/dist/unpkg/dev-deprecated/configure.js +1 -1
  26. package/dist/unpkg/dev-deprecated/graph/-private.js +216 -264
  27. package/dist/unpkg/dev-deprecated/{index-D4si_DxB.js → index-BBlq5is_.js} +834 -805
  28. package/dist/unpkg/dev-deprecated/index.js +4 -7
  29. package/dist/unpkg/dev-deprecated/reactive/-private.js +1 -1
  30. package/dist/unpkg/dev-deprecated/reactive.js +4 -6
  31. package/dist/unpkg/{prod-deprecated/request-oqoLC9rz.js → dev-deprecated/request-CA9K0gXq.js} +10 -16
  32. package/dist/unpkg/dev-deprecated/request.js +1 -1
  33. package/dist/unpkg/dev-deprecated/runtime-DfhJzpZH.js +135 -0
  34. package/dist/unpkg/dev-deprecated/store/-private.js +2 -2
  35. package/dist/unpkg/dev-deprecated/store.js +558 -1
  36. package/dist/unpkg/dev-deprecated/types/-private.js +5 -15
  37. package/dist/unpkg/dev-deprecated/types/identifier.js +1 -3
  38. package/dist/unpkg/dev-deprecated/utils/string.js +5 -6
  39. package/dist/unpkg/{dev/symbols-sql1_mdx.js → prod/-private-3C1OkYtZ.js} +1 -1
  40. package/dist/unpkg/prod/{configure-C3x8YXzL.js → configure-C0C1LpG6.js} +5 -28
  41. package/dist/unpkg/prod/configure.js +1 -1
  42. package/dist/unpkg/prod/graph/-private.js +4 -1144
  43. package/dist/unpkg/prod/handler-LAyD1Y5l.js +1619 -0
  44. package/dist/unpkg/prod/hooks-BfiqDg3O.js +26 -0
  45. package/dist/unpkg/prod/index.js +481 -8
  46. package/dist/unpkg/prod/promise-state-ipG60SdD.js +6738 -0
  47. package/dist/unpkg/prod/reactive/-private.js +1 -1
  48. package/dist/unpkg/prod/reactive.js +5 -7
  49. package/dist/unpkg/prod/request-CN2LxbYX.js +437 -0
  50. package/dist/unpkg/prod/request.js +1 -1
  51. package/dist/unpkg/prod/store/-private.js +127 -2
  52. package/dist/unpkg/prod/store.js +437 -1
  53. package/dist/unpkg/prod/types/-private.js +4 -34
  54. package/dist/unpkg/prod/types/identifier.js +2 -4
  55. package/dist/unpkg/prod/utils/string.js +0 -20
  56. package/dist/unpkg/{prod/symbols-sql1_mdx.js → prod-deprecated/-private-3C1OkYtZ.js} +1 -1
  57. package/dist/unpkg/{dev/configure-C3x8YXzL.js → prod-deprecated/configure-BQ8CpIcW.js} +4 -27
  58. package/dist/unpkg/prod-deprecated/configure.js +1 -1
  59. package/dist/unpkg/prod-deprecated/graph/-private.js +12 -979
  60. package/dist/unpkg/prod-deprecated/handler-D639oFvl.js +334 -0
  61. package/dist/unpkg/prod-deprecated/hooks-DGvi9teJ.js +26 -0
  62. package/dist/unpkg/prod-deprecated/index.js +481 -8
  63. package/dist/unpkg/prod-deprecated/{index-D4si_DxB.js → promise-state-CYvoIPna.js} +278 -3566
  64. package/dist/unpkg/prod-deprecated/reactive/-private.js +1 -1
  65. package/dist/unpkg/prod-deprecated/reactive.js +4 -7
  66. package/dist/unpkg/prod-deprecated/request-CN2LxbYX.js +437 -0
  67. package/dist/unpkg/prod-deprecated/request.js +1 -1
  68. package/dist/unpkg/prod-deprecated/store/-private.js +89 -2
  69. package/dist/unpkg/prod-deprecated/store.js +437 -1
  70. package/dist/unpkg/prod-deprecated/types/-private.js +4 -34
  71. package/dist/unpkg/prod-deprecated/types/identifier.js +2 -4
  72. package/dist/unpkg/prod-deprecated/utils/string.js +0 -20
  73. package/package.json +11 -19
  74. package/dist/unpkg/dev/declarations/build-config/babel-macros.d.ts +0 -1
  75. package/dist/unpkg/dev/declarations/build-config/canary-features.d.ts +0 -1
  76. package/dist/unpkg/dev/declarations/build-config/debugging.d.ts +0 -1
  77. package/dist/unpkg/dev/declarations/build-config/deprecations.d.ts +0 -1
  78. package/dist/unpkg/dev/declarations/build-config/env.d.ts +0 -1
  79. package/dist/unpkg/dev/declarations/build-config/macros.d.ts +0 -1
  80. package/dist/unpkg/dev/declarations/build-config.d.ts +0 -18
  81. package/dist/unpkg/dev/declarations/configure.d.ts +0 -7
  82. package/dist/unpkg/dev/declarations/graph/-private/-diff.d.ts +0 -19
  83. package/dist/unpkg/dev/declarations/graph/-private/-edge-definition.d.ts +0 -149
  84. package/dist/unpkg/dev/declarations/graph/-private/-state.d.ts +0 -9
  85. package/dist/unpkg/dev/declarations/graph/-private/-utils.d.ts +0 -25
  86. package/dist/unpkg/dev/declarations/graph/-private/coerce-id.d.ts +0 -4
  87. package/dist/unpkg/dev/declarations/graph/-private/debug/assert-polymorphic-type.d.ts +0 -6
  88. package/dist/unpkg/dev/declarations/graph/-private/edges/collection.d.ts +0 -39
  89. package/dist/unpkg/dev/declarations/graph/-private/edges/implicit.d.ts +0 -43
  90. package/dist/unpkg/dev/declarations/graph/-private/edges/resource.d.ts +0 -23
  91. package/dist/unpkg/dev/declarations/graph/-private/graph.d.ts +0 -56
  92. package/dist/unpkg/dev/declarations/graph/-private/normalize-link.d.ts +0 -2
  93. package/dist/unpkg/dev/declarations/graph/-private/operations/add-to-related-records.d.ts +0 -4
  94. package/dist/unpkg/dev/declarations/graph/-private/operations/merge-identifier.d.ts +0 -3
  95. package/dist/unpkg/dev/declarations/graph/-private/operations/remove-from-related-records.d.ts +0 -4
  96. package/dist/unpkg/dev/declarations/graph/-private/operations/replace-related-record.d.ts +0 -3
  97. package/dist/unpkg/dev/declarations/graph/-private/operations/replace-related-records.d.ts +0 -7
  98. package/dist/unpkg/dev/declarations/graph/-private/operations/update-relationship.d.ts +0 -9
  99. package/dist/unpkg/dev/declarations/graph/-private.d.ts +0 -13
  100. package/dist/unpkg/dev/declarations/index.d.ts +0 -100
  101. package/dist/unpkg/dev/declarations/reactive/-private/default-mode.d.ts +0 -73
  102. package/dist/unpkg/dev/declarations/reactive/-private/document.d.ts +0 -142
  103. package/dist/unpkg/dev/declarations/reactive/-private/fields/extension.d.ts +0 -8
  104. package/dist/unpkg/dev/declarations/reactive/-private/fields/get-field-key.d.ts +0 -8
  105. package/dist/unpkg/dev/declarations/reactive/-private/fields/managed-array.d.ts +0 -18
  106. package/dist/unpkg/dev/declarations/reactive/-private/fields/managed-object.d.ts +0 -17
  107. package/dist/unpkg/dev/declarations/reactive/-private/fields/many-array-manager.d.ts +0 -19
  108. package/dist/unpkg/dev/declarations/reactive/-private/hooks.d.ts +0 -5
  109. package/dist/unpkg/dev/declarations/reactive/-private/kind/alias-field.d.ts +0 -4
  110. package/dist/unpkg/dev/declarations/reactive/-private/kind/array-field.d.ts +0 -4
  111. package/dist/unpkg/dev/declarations/reactive/-private/kind/attribute-field.d.ts +0 -4
  112. package/dist/unpkg/dev/declarations/reactive/-private/kind/belongs-to-field.d.ts +0 -4
  113. package/dist/unpkg/dev/declarations/reactive/-private/kind/collection-field.d.ts +0 -4
  114. package/dist/unpkg/dev/declarations/reactive/-private/kind/derived-field.d.ts +0 -4
  115. package/dist/unpkg/dev/declarations/reactive/-private/kind/generic-field.d.ts +0 -4
  116. package/dist/unpkg/dev/declarations/reactive/-private/kind/has-many-field.d.ts +0 -4
  117. package/dist/unpkg/dev/declarations/reactive/-private/kind/hash-field.d.ts +0 -4
  118. package/dist/unpkg/dev/declarations/reactive/-private/kind/identity-field.d.ts +0 -4
  119. package/dist/unpkg/dev/declarations/reactive/-private/kind/local-field.d.ts +0 -4
  120. package/dist/unpkg/dev/declarations/reactive/-private/kind/object-field.d.ts +0 -4
  121. package/dist/unpkg/dev/declarations/reactive/-private/kind/resource-field.d.ts +0 -4
  122. package/dist/unpkg/dev/declarations/reactive/-private/kind/schema-array-field.d.ts +0 -4
  123. package/dist/unpkg/dev/declarations/reactive/-private/kind/schema-object-field.d.ts +0 -4
  124. package/dist/unpkg/dev/declarations/reactive/-private/record.d.ts +0 -83
  125. package/dist/unpkg/dev/declarations/reactive/-private/schema.d.ts +0 -326
  126. package/dist/unpkg/dev/declarations/reactive/-private/symbols.d.ts +0 -5
  127. package/dist/unpkg/dev/declarations/reactive/-private.d.ts +0 -2
  128. package/dist/unpkg/dev/declarations/reactive.d.ts +0 -287
  129. package/dist/unpkg/dev/declarations/request/-private/context.d.ts +0 -39
  130. package/dist/unpkg/dev/declarations/request/-private/debug.d.ts +0 -4
  131. package/dist/unpkg/dev/declarations/request/-private/fetch.d.ts +0 -33
  132. package/dist/unpkg/dev/declarations/request/-private/future.d.ts +0 -7
  133. package/dist/unpkg/dev/declarations/request/-private/manager.d.ts +0 -158
  134. package/dist/unpkg/dev/declarations/request/-private/promise-cache.d.ts +0 -28
  135. package/dist/unpkg/dev/declarations/request/-private/types.d.ts +0 -234
  136. package/dist/unpkg/dev/declarations/request/-private/utils.d.ts +0 -57
  137. package/dist/unpkg/dev/declarations/request.d.ts +0 -52
  138. package/dist/unpkg/dev/declarations/store/-private/cache-handler/handler.d.ts +0 -56
  139. package/dist/unpkg/dev/declarations/store/-private/cache-handler/types.d.ts +0 -98
  140. package/dist/unpkg/dev/declarations/store/-private/cache-handler/utils.d.ts +0 -31
  141. package/dist/unpkg/dev/declarations/store/-private/caches/instance-cache.d.ts +0 -58
  142. package/dist/unpkg/dev/declarations/store/-private/caches/resource-utils.d.ts +0 -9
  143. package/dist/unpkg/dev/declarations/store/-private/debug/utils.d.ts +0 -7
  144. package/dist/unpkg/dev/declarations/store/-private/default-cache-policy.d.ts +0 -387
  145. package/dist/unpkg/dev/declarations/store/-private/managers/cache-capabilities-manager.d.ts +0 -34
  146. package/dist/unpkg/dev/declarations/store/-private/managers/cache-key-manager.d.ts +0 -304
  147. package/dist/unpkg/dev/declarations/store/-private/managers/cache-manager.d.ts +0 -380
  148. package/dist/unpkg/dev/declarations/store/-private/managers/notification-manager.d.ts +0 -83
  149. package/dist/unpkg/dev/declarations/store/-private/managers/record-array-manager.d.ts +0 -100
  150. package/dist/unpkg/dev/declarations/store/-private/network/request-cache.d.ts +0 -103
  151. package/dist/unpkg/dev/declarations/store/-private/new-core-tmp/expensive-subscription.d.ts +0 -24
  152. package/dist/unpkg/dev/declarations/store/-private/new-core-tmp/promise-state.d.ts +0 -264
  153. package/dist/unpkg/dev/declarations/store/-private/new-core-tmp/reactivity/configure.d.ts +0 -138
  154. package/dist/unpkg/dev/declarations/store/-private/new-core-tmp/reactivity/internal.d.ts +0 -154
  155. package/dist/unpkg/dev/declarations/store/-private/new-core-tmp/reactivity/signal.d.ts +0 -56
  156. package/dist/unpkg/dev/declarations/store/-private/new-core-tmp/request-state.d.ts +0 -372
  157. package/dist/unpkg/dev/declarations/store/-private/new-core-tmp/request-subscription.d.ts +0 -177
  158. package/dist/unpkg/dev/declarations/store/-private/record-arrays/-utils.d.ts +0 -80
  159. package/dist/unpkg/dev/declarations/store/-private/record-arrays/legacy-live-array.d.ts +0 -81
  160. package/dist/unpkg/dev/declarations/store/-private/record-arrays/legacy-many-array.d.ts +0 -133
  161. package/dist/unpkg/dev/declarations/store/-private/record-arrays/legacy-query.d.ts +0 -81
  162. package/dist/unpkg/dev/declarations/store/-private/record-arrays/native-proxy-type-fix.d.ts +0 -3
  163. package/dist/unpkg/dev/declarations/store/-private/record-arrays/resource-array.d.ts +0 -67
  164. package/dist/unpkg/dev/declarations/store/-private/store-service.d.ts +0 -874
  165. package/dist/unpkg/dev/declarations/store/-private/utils/coerce-id.d.ts +0 -4
  166. package/dist/unpkg/dev/declarations/store/-private/utils/construct-resource.d.ts +0 -6
  167. package/dist/unpkg/dev/declarations/store/-private/utils/is-non-empty-string.d.ts +0 -1
  168. package/dist/unpkg/dev/declarations/store/-private/utils/normalize-model-name.d.ts +0 -1
  169. package/dist/unpkg/dev/declarations/store/-private/utils/uuid-polyfill.d.ts +0 -1
  170. package/dist/unpkg/dev/declarations/store/-private.d.ts +0 -29
  171. package/dist/unpkg/dev/declarations/store/-types/q/cache-capabilities-manager.d.ts +0 -90
  172. package/dist/unpkg/dev/declarations/store/-types/q/identifier.d.ts +0 -23
  173. package/dist/unpkg/dev/declarations/store/-types/q/record-instance.d.ts +0 -22
  174. package/dist/unpkg/dev/declarations/store/-types/q/store.d.ts +0 -31
  175. package/dist/unpkg/dev/declarations/store/deprecated/-private.d.ts +0 -223
  176. package/dist/unpkg/dev/declarations/store/deprecated/store.d.ts +0 -784
  177. package/dist/unpkg/dev/declarations/store.d.ts +0 -2
  178. package/dist/unpkg/dev/declarations/types/-private.d.ts +0 -22
  179. package/dist/unpkg/dev/declarations/types/cache/aliases.d.ts +0 -1
  180. package/dist/unpkg/dev/declarations/types/cache/change.d.ts +0 -6
  181. package/dist/unpkg/dev/declarations/types/cache/mutations.d.ts +0 -38
  182. package/dist/unpkg/dev/declarations/types/cache/operations.d.ts +0 -168
  183. package/dist/unpkg/dev/declarations/types/cache/relationship.d.ts +0 -13
  184. package/dist/unpkg/dev/declarations/types/cache.d.ts +0 -429
  185. package/dist/unpkg/dev/declarations/types/graph.d.ts +0 -47
  186. package/dist/unpkg/dev/declarations/types/identifier.d.ts +0 -86
  187. package/dist/unpkg/dev/declarations/types/json/raw.d.ts +0 -6
  188. package/dist/unpkg/dev/declarations/types/params.d.ts +0 -8
  189. package/dist/unpkg/dev/declarations/types/record.d.ts +0 -269
  190. package/dist/unpkg/dev/declarations/types/request.d.ts +0 -367
  191. package/dist/unpkg/dev/declarations/types/runtime.d.ts +0 -14
  192. package/dist/unpkg/dev/declarations/types/schema/concepts.d.ts +0 -23
  193. package/dist/unpkg/dev/declarations/types/schema/fields.d.ts +0 -2200
  194. package/dist/unpkg/dev/declarations/types/schema/fields.type-test.d.ts +0 -1
  195. package/dist/unpkg/dev/declarations/types/schema/schema-service.d.ts +0 -380
  196. package/dist/unpkg/dev/declarations/types/spec/document.d.ts +0 -67
  197. package/dist/unpkg/dev/declarations/types/spec/error.d.ts +0 -18
  198. package/dist/unpkg/dev/declarations/types/spec/json-api-raw.d.ts +0 -139
  199. package/dist/unpkg/dev/declarations/types/symbols.d.ts +0 -78
  200. package/dist/unpkg/dev/declarations/types/utils.d.ts +0 -5
  201. package/dist/unpkg/dev/declarations/types.d.ts +0 -11
  202. package/dist/unpkg/dev/declarations/utils/string.d.ts +0 -47
  203. package/dist/unpkg/dev/default-cache-policy-D7_u4YRH.js +0 -572
  204. package/dist/unpkg/dev/request-oqoLC9rz.js +0 -725
  205. package/dist/unpkg/dev-deprecated/declarations/build-config/babel-macros.d.ts +0 -1
  206. package/dist/unpkg/dev-deprecated/declarations/build-config/canary-features.d.ts +0 -1
  207. package/dist/unpkg/dev-deprecated/declarations/build-config/debugging.d.ts +0 -1
  208. package/dist/unpkg/dev-deprecated/declarations/build-config/deprecations.d.ts +0 -1
  209. package/dist/unpkg/dev-deprecated/declarations/build-config/env.d.ts +0 -1
  210. package/dist/unpkg/dev-deprecated/declarations/build-config/macros.d.ts +0 -1
  211. package/dist/unpkg/dev-deprecated/declarations/build-config.d.ts +0 -18
  212. package/dist/unpkg/dev-deprecated/declarations/configure.d.ts +0 -7
  213. package/dist/unpkg/dev-deprecated/declarations/graph/-private/-diff.d.ts +0 -19
  214. package/dist/unpkg/dev-deprecated/declarations/graph/-private/-edge-definition.d.ts +0 -149
  215. package/dist/unpkg/dev-deprecated/declarations/graph/-private/-state.d.ts +0 -9
  216. package/dist/unpkg/dev-deprecated/declarations/graph/-private/-utils.d.ts +0 -25
  217. package/dist/unpkg/dev-deprecated/declarations/graph/-private/coerce-id.d.ts +0 -4
  218. package/dist/unpkg/dev-deprecated/declarations/graph/-private/debug/assert-polymorphic-type.d.ts +0 -6
  219. package/dist/unpkg/dev-deprecated/declarations/graph/-private/edges/collection.d.ts +0 -39
  220. package/dist/unpkg/dev-deprecated/declarations/graph/-private/edges/implicit.d.ts +0 -43
  221. package/dist/unpkg/dev-deprecated/declarations/graph/-private/edges/resource.d.ts +0 -23
  222. package/dist/unpkg/dev-deprecated/declarations/graph/-private/graph.d.ts +0 -56
  223. package/dist/unpkg/dev-deprecated/declarations/graph/-private/normalize-link.d.ts +0 -2
  224. package/dist/unpkg/dev-deprecated/declarations/graph/-private/operations/add-to-related-records.d.ts +0 -4
  225. package/dist/unpkg/dev-deprecated/declarations/graph/-private/operations/merge-identifier.d.ts +0 -3
  226. package/dist/unpkg/dev-deprecated/declarations/graph/-private/operations/remove-from-related-records.d.ts +0 -4
  227. package/dist/unpkg/dev-deprecated/declarations/graph/-private/operations/replace-related-record.d.ts +0 -3
  228. package/dist/unpkg/dev-deprecated/declarations/graph/-private/operations/replace-related-records.d.ts +0 -7
  229. package/dist/unpkg/dev-deprecated/declarations/graph/-private/operations/update-relationship.d.ts +0 -9
  230. package/dist/unpkg/dev-deprecated/declarations/graph/-private.d.ts +0 -13
  231. package/dist/unpkg/dev-deprecated/declarations/index.d.ts +0 -100
  232. package/dist/unpkg/dev-deprecated/declarations/reactive/-private/default-mode.d.ts +0 -73
  233. package/dist/unpkg/dev-deprecated/declarations/reactive/-private/document.d.ts +0 -142
  234. package/dist/unpkg/dev-deprecated/declarations/reactive/-private/fields/extension.d.ts +0 -8
  235. package/dist/unpkg/dev-deprecated/declarations/reactive/-private/fields/get-field-key.d.ts +0 -8
  236. package/dist/unpkg/dev-deprecated/declarations/reactive/-private/fields/managed-array.d.ts +0 -18
  237. package/dist/unpkg/dev-deprecated/declarations/reactive/-private/fields/managed-object.d.ts +0 -17
  238. package/dist/unpkg/dev-deprecated/declarations/reactive/-private/fields/many-array-manager.d.ts +0 -19
  239. package/dist/unpkg/dev-deprecated/declarations/reactive/-private/hooks.d.ts +0 -5
  240. package/dist/unpkg/dev-deprecated/declarations/reactive/-private/kind/alias-field.d.ts +0 -4
  241. package/dist/unpkg/dev-deprecated/declarations/reactive/-private/kind/array-field.d.ts +0 -4
  242. package/dist/unpkg/dev-deprecated/declarations/reactive/-private/kind/attribute-field.d.ts +0 -4
  243. package/dist/unpkg/dev-deprecated/declarations/reactive/-private/kind/belongs-to-field.d.ts +0 -4
  244. package/dist/unpkg/dev-deprecated/declarations/reactive/-private/kind/collection-field.d.ts +0 -4
  245. package/dist/unpkg/dev-deprecated/declarations/reactive/-private/kind/derived-field.d.ts +0 -4
  246. package/dist/unpkg/dev-deprecated/declarations/reactive/-private/kind/generic-field.d.ts +0 -4
  247. package/dist/unpkg/dev-deprecated/declarations/reactive/-private/kind/has-many-field.d.ts +0 -4
  248. package/dist/unpkg/dev-deprecated/declarations/reactive/-private/kind/hash-field.d.ts +0 -4
  249. package/dist/unpkg/dev-deprecated/declarations/reactive/-private/kind/identity-field.d.ts +0 -4
  250. package/dist/unpkg/dev-deprecated/declarations/reactive/-private/kind/local-field.d.ts +0 -4
  251. package/dist/unpkg/dev-deprecated/declarations/reactive/-private/kind/object-field.d.ts +0 -4
  252. package/dist/unpkg/dev-deprecated/declarations/reactive/-private/kind/resource-field.d.ts +0 -4
  253. package/dist/unpkg/dev-deprecated/declarations/reactive/-private/kind/schema-array-field.d.ts +0 -4
  254. package/dist/unpkg/dev-deprecated/declarations/reactive/-private/kind/schema-object-field.d.ts +0 -4
  255. package/dist/unpkg/dev-deprecated/declarations/reactive/-private/record.d.ts +0 -83
  256. package/dist/unpkg/dev-deprecated/declarations/reactive/-private/schema.d.ts +0 -326
  257. package/dist/unpkg/dev-deprecated/declarations/reactive/-private/symbols.d.ts +0 -5
  258. package/dist/unpkg/dev-deprecated/declarations/reactive/-private.d.ts +0 -2
  259. package/dist/unpkg/dev-deprecated/declarations/reactive.d.ts +0 -287
  260. package/dist/unpkg/dev-deprecated/declarations/request/-private/context.d.ts +0 -39
  261. package/dist/unpkg/dev-deprecated/declarations/request/-private/debug.d.ts +0 -4
  262. package/dist/unpkg/dev-deprecated/declarations/request/-private/fetch.d.ts +0 -33
  263. package/dist/unpkg/dev-deprecated/declarations/request/-private/future.d.ts +0 -7
  264. package/dist/unpkg/dev-deprecated/declarations/request/-private/manager.d.ts +0 -158
  265. package/dist/unpkg/dev-deprecated/declarations/request/-private/promise-cache.d.ts +0 -28
  266. package/dist/unpkg/dev-deprecated/declarations/request/-private/types.d.ts +0 -234
  267. package/dist/unpkg/dev-deprecated/declarations/request/-private/utils.d.ts +0 -57
  268. package/dist/unpkg/dev-deprecated/declarations/request.d.ts +0 -52
  269. package/dist/unpkg/dev-deprecated/declarations/store/-private/cache-handler/handler.d.ts +0 -56
  270. package/dist/unpkg/dev-deprecated/declarations/store/-private/cache-handler/types.d.ts +0 -98
  271. package/dist/unpkg/dev-deprecated/declarations/store/-private/cache-handler/utils.d.ts +0 -31
  272. package/dist/unpkg/dev-deprecated/declarations/store/-private/caches/instance-cache.d.ts +0 -58
  273. package/dist/unpkg/dev-deprecated/declarations/store/-private/caches/resource-utils.d.ts +0 -9
  274. package/dist/unpkg/dev-deprecated/declarations/store/-private/debug/utils.d.ts +0 -7
  275. package/dist/unpkg/dev-deprecated/declarations/store/-private/default-cache-policy.d.ts +0 -387
  276. package/dist/unpkg/dev-deprecated/declarations/store/-private/managers/cache-capabilities-manager.d.ts +0 -34
  277. package/dist/unpkg/dev-deprecated/declarations/store/-private/managers/cache-key-manager.d.ts +0 -304
  278. package/dist/unpkg/dev-deprecated/declarations/store/-private/managers/cache-manager.d.ts +0 -380
  279. package/dist/unpkg/dev-deprecated/declarations/store/-private/managers/notification-manager.d.ts +0 -83
  280. package/dist/unpkg/dev-deprecated/declarations/store/-private/managers/record-array-manager.d.ts +0 -100
  281. package/dist/unpkg/dev-deprecated/declarations/store/-private/network/request-cache.d.ts +0 -103
  282. package/dist/unpkg/dev-deprecated/declarations/store/-private/new-core-tmp/expensive-subscription.d.ts +0 -24
  283. package/dist/unpkg/dev-deprecated/declarations/store/-private/new-core-tmp/promise-state.d.ts +0 -264
  284. package/dist/unpkg/dev-deprecated/declarations/store/-private/new-core-tmp/reactivity/configure.d.ts +0 -138
  285. package/dist/unpkg/dev-deprecated/declarations/store/-private/new-core-tmp/reactivity/internal.d.ts +0 -154
  286. package/dist/unpkg/dev-deprecated/declarations/store/-private/new-core-tmp/reactivity/signal.d.ts +0 -56
  287. package/dist/unpkg/dev-deprecated/declarations/store/-private/new-core-tmp/request-state.d.ts +0 -372
  288. package/dist/unpkg/dev-deprecated/declarations/store/-private/new-core-tmp/request-subscription.d.ts +0 -177
  289. package/dist/unpkg/dev-deprecated/declarations/store/-private/record-arrays/-utils.d.ts +0 -80
  290. package/dist/unpkg/dev-deprecated/declarations/store/-private/record-arrays/legacy-live-array.d.ts +0 -81
  291. package/dist/unpkg/dev-deprecated/declarations/store/-private/record-arrays/legacy-many-array.d.ts +0 -133
  292. package/dist/unpkg/dev-deprecated/declarations/store/-private/record-arrays/legacy-query.d.ts +0 -81
  293. package/dist/unpkg/dev-deprecated/declarations/store/-private/record-arrays/native-proxy-type-fix.d.ts +0 -3
  294. package/dist/unpkg/dev-deprecated/declarations/store/-private/record-arrays/resource-array.d.ts +0 -67
  295. package/dist/unpkg/dev-deprecated/declarations/store/-private/store-service.d.ts +0 -874
  296. package/dist/unpkg/dev-deprecated/declarations/store/-private/utils/coerce-id.d.ts +0 -4
  297. package/dist/unpkg/dev-deprecated/declarations/store/-private/utils/construct-resource.d.ts +0 -6
  298. package/dist/unpkg/dev-deprecated/declarations/store/-private/utils/is-non-empty-string.d.ts +0 -1
  299. package/dist/unpkg/dev-deprecated/declarations/store/-private/utils/normalize-model-name.d.ts +0 -1
  300. package/dist/unpkg/dev-deprecated/declarations/store/-private/utils/uuid-polyfill.d.ts +0 -1
  301. package/dist/unpkg/dev-deprecated/declarations/store/-private.d.ts +0 -29
  302. package/dist/unpkg/dev-deprecated/declarations/store/-types/q/cache-capabilities-manager.d.ts +0 -90
  303. package/dist/unpkg/dev-deprecated/declarations/store/-types/q/identifier.d.ts +0 -23
  304. package/dist/unpkg/dev-deprecated/declarations/store/-types/q/record-instance.d.ts +0 -22
  305. package/dist/unpkg/dev-deprecated/declarations/store/-types/q/store.d.ts +0 -31
  306. package/dist/unpkg/dev-deprecated/declarations/store/deprecated/-private.d.ts +0 -223
  307. package/dist/unpkg/dev-deprecated/declarations/store/deprecated/store.d.ts +0 -784
  308. package/dist/unpkg/dev-deprecated/declarations/store.d.ts +0 -2
  309. package/dist/unpkg/dev-deprecated/declarations/types/-private.d.ts +0 -22
  310. package/dist/unpkg/dev-deprecated/declarations/types/cache/aliases.d.ts +0 -1
  311. package/dist/unpkg/dev-deprecated/declarations/types/cache/change.d.ts +0 -6
  312. package/dist/unpkg/dev-deprecated/declarations/types/cache/mutations.d.ts +0 -38
  313. package/dist/unpkg/dev-deprecated/declarations/types/cache/operations.d.ts +0 -168
  314. package/dist/unpkg/dev-deprecated/declarations/types/cache/relationship.d.ts +0 -13
  315. package/dist/unpkg/dev-deprecated/declarations/types/cache.d.ts +0 -429
  316. package/dist/unpkg/dev-deprecated/declarations/types/graph.d.ts +0 -47
  317. package/dist/unpkg/dev-deprecated/declarations/types/identifier.d.ts +0 -86
  318. package/dist/unpkg/dev-deprecated/declarations/types/json/raw.d.ts +0 -6
  319. package/dist/unpkg/dev-deprecated/declarations/types/params.d.ts +0 -8
  320. package/dist/unpkg/dev-deprecated/declarations/types/record.d.ts +0 -269
  321. package/dist/unpkg/dev-deprecated/declarations/types/request.d.ts +0 -367
  322. package/dist/unpkg/dev-deprecated/declarations/types/runtime.d.ts +0 -14
  323. package/dist/unpkg/dev-deprecated/declarations/types/schema/concepts.d.ts +0 -23
  324. package/dist/unpkg/dev-deprecated/declarations/types/schema/fields.d.ts +0 -2200
  325. package/dist/unpkg/dev-deprecated/declarations/types/schema/fields.type-test.d.ts +0 -1
  326. package/dist/unpkg/dev-deprecated/declarations/types/schema/schema-service.d.ts +0 -380
  327. package/dist/unpkg/dev-deprecated/declarations/types/spec/document.d.ts +0 -67
  328. package/dist/unpkg/dev-deprecated/declarations/types/spec/error.d.ts +0 -18
  329. package/dist/unpkg/dev-deprecated/declarations/types/spec/json-api-raw.d.ts +0 -139
  330. package/dist/unpkg/dev-deprecated/declarations/types/symbols.d.ts +0 -78
  331. package/dist/unpkg/dev-deprecated/declarations/types/utils.d.ts +0 -5
  332. package/dist/unpkg/dev-deprecated/declarations/types.d.ts +0 -11
  333. package/dist/unpkg/dev-deprecated/declarations/utils/string.d.ts +0 -47
  334. package/dist/unpkg/dev-deprecated/default-cache-policy-D7_u4YRH.js +0 -572
  335. package/dist/unpkg/prod/declarations/build-config/babel-macros.d.ts +0 -1
  336. package/dist/unpkg/prod/declarations/build-config/canary-features.d.ts +0 -1
  337. package/dist/unpkg/prod/declarations/build-config/debugging.d.ts +0 -1
  338. package/dist/unpkg/prod/declarations/build-config/deprecations.d.ts +0 -1
  339. package/dist/unpkg/prod/declarations/build-config/env.d.ts +0 -1
  340. package/dist/unpkg/prod/declarations/build-config/macros.d.ts +0 -1
  341. package/dist/unpkg/prod/declarations/build-config.d.ts +0 -18
  342. package/dist/unpkg/prod/declarations/configure.d.ts +0 -7
  343. package/dist/unpkg/prod/declarations/graph/-private/-diff.d.ts +0 -19
  344. package/dist/unpkg/prod/declarations/graph/-private/-edge-definition.d.ts +0 -149
  345. package/dist/unpkg/prod/declarations/graph/-private/-state.d.ts +0 -9
  346. package/dist/unpkg/prod/declarations/graph/-private/-utils.d.ts +0 -25
  347. package/dist/unpkg/prod/declarations/graph/-private/coerce-id.d.ts +0 -4
  348. package/dist/unpkg/prod/declarations/graph/-private/debug/assert-polymorphic-type.d.ts +0 -6
  349. package/dist/unpkg/prod/declarations/graph/-private/edges/collection.d.ts +0 -39
  350. package/dist/unpkg/prod/declarations/graph/-private/edges/implicit.d.ts +0 -43
  351. package/dist/unpkg/prod/declarations/graph/-private/edges/resource.d.ts +0 -23
  352. package/dist/unpkg/prod/declarations/graph/-private/graph.d.ts +0 -56
  353. package/dist/unpkg/prod/declarations/graph/-private/normalize-link.d.ts +0 -2
  354. package/dist/unpkg/prod/declarations/graph/-private/operations/add-to-related-records.d.ts +0 -4
  355. package/dist/unpkg/prod/declarations/graph/-private/operations/merge-identifier.d.ts +0 -3
  356. package/dist/unpkg/prod/declarations/graph/-private/operations/remove-from-related-records.d.ts +0 -4
  357. package/dist/unpkg/prod/declarations/graph/-private/operations/replace-related-record.d.ts +0 -3
  358. package/dist/unpkg/prod/declarations/graph/-private/operations/replace-related-records.d.ts +0 -7
  359. package/dist/unpkg/prod/declarations/graph/-private/operations/update-relationship.d.ts +0 -9
  360. package/dist/unpkg/prod/declarations/graph/-private.d.ts +0 -13
  361. package/dist/unpkg/prod/declarations/index.d.ts +0 -100
  362. package/dist/unpkg/prod/declarations/reactive/-private/default-mode.d.ts +0 -73
  363. package/dist/unpkg/prod/declarations/reactive/-private/document.d.ts +0 -142
  364. package/dist/unpkg/prod/declarations/reactive/-private/fields/extension.d.ts +0 -8
  365. package/dist/unpkg/prod/declarations/reactive/-private/fields/get-field-key.d.ts +0 -8
  366. package/dist/unpkg/prod/declarations/reactive/-private/fields/managed-array.d.ts +0 -18
  367. package/dist/unpkg/prod/declarations/reactive/-private/fields/managed-object.d.ts +0 -17
  368. package/dist/unpkg/prod/declarations/reactive/-private/fields/many-array-manager.d.ts +0 -19
  369. package/dist/unpkg/prod/declarations/reactive/-private/hooks.d.ts +0 -5
  370. package/dist/unpkg/prod/declarations/reactive/-private/kind/alias-field.d.ts +0 -4
  371. package/dist/unpkg/prod/declarations/reactive/-private/kind/array-field.d.ts +0 -4
  372. package/dist/unpkg/prod/declarations/reactive/-private/kind/attribute-field.d.ts +0 -4
  373. package/dist/unpkg/prod/declarations/reactive/-private/kind/belongs-to-field.d.ts +0 -4
  374. package/dist/unpkg/prod/declarations/reactive/-private/kind/collection-field.d.ts +0 -4
  375. package/dist/unpkg/prod/declarations/reactive/-private/kind/derived-field.d.ts +0 -4
  376. package/dist/unpkg/prod/declarations/reactive/-private/kind/generic-field.d.ts +0 -4
  377. package/dist/unpkg/prod/declarations/reactive/-private/kind/has-many-field.d.ts +0 -4
  378. package/dist/unpkg/prod/declarations/reactive/-private/kind/hash-field.d.ts +0 -4
  379. package/dist/unpkg/prod/declarations/reactive/-private/kind/identity-field.d.ts +0 -4
  380. package/dist/unpkg/prod/declarations/reactive/-private/kind/local-field.d.ts +0 -4
  381. package/dist/unpkg/prod/declarations/reactive/-private/kind/object-field.d.ts +0 -4
  382. package/dist/unpkg/prod/declarations/reactive/-private/kind/resource-field.d.ts +0 -4
  383. package/dist/unpkg/prod/declarations/reactive/-private/kind/schema-array-field.d.ts +0 -4
  384. package/dist/unpkg/prod/declarations/reactive/-private/kind/schema-object-field.d.ts +0 -4
  385. package/dist/unpkg/prod/declarations/reactive/-private/record.d.ts +0 -83
  386. package/dist/unpkg/prod/declarations/reactive/-private/schema.d.ts +0 -326
  387. package/dist/unpkg/prod/declarations/reactive/-private/symbols.d.ts +0 -5
  388. package/dist/unpkg/prod/declarations/reactive/-private.d.ts +0 -2
  389. package/dist/unpkg/prod/declarations/reactive.d.ts +0 -287
  390. package/dist/unpkg/prod/declarations/request/-private/context.d.ts +0 -39
  391. package/dist/unpkg/prod/declarations/request/-private/debug.d.ts +0 -4
  392. package/dist/unpkg/prod/declarations/request/-private/fetch.d.ts +0 -33
  393. package/dist/unpkg/prod/declarations/request/-private/future.d.ts +0 -7
  394. package/dist/unpkg/prod/declarations/request/-private/manager.d.ts +0 -158
  395. package/dist/unpkg/prod/declarations/request/-private/promise-cache.d.ts +0 -28
  396. package/dist/unpkg/prod/declarations/request/-private/types.d.ts +0 -234
  397. package/dist/unpkg/prod/declarations/request/-private/utils.d.ts +0 -57
  398. package/dist/unpkg/prod/declarations/request.d.ts +0 -52
  399. package/dist/unpkg/prod/declarations/store/-private/cache-handler/handler.d.ts +0 -56
  400. package/dist/unpkg/prod/declarations/store/-private/cache-handler/types.d.ts +0 -98
  401. package/dist/unpkg/prod/declarations/store/-private/cache-handler/utils.d.ts +0 -31
  402. package/dist/unpkg/prod/declarations/store/-private/caches/instance-cache.d.ts +0 -58
  403. package/dist/unpkg/prod/declarations/store/-private/caches/resource-utils.d.ts +0 -9
  404. package/dist/unpkg/prod/declarations/store/-private/debug/utils.d.ts +0 -7
  405. package/dist/unpkg/prod/declarations/store/-private/default-cache-policy.d.ts +0 -387
  406. package/dist/unpkg/prod/declarations/store/-private/managers/cache-capabilities-manager.d.ts +0 -34
  407. package/dist/unpkg/prod/declarations/store/-private/managers/cache-key-manager.d.ts +0 -304
  408. package/dist/unpkg/prod/declarations/store/-private/managers/cache-manager.d.ts +0 -380
  409. package/dist/unpkg/prod/declarations/store/-private/managers/notification-manager.d.ts +0 -83
  410. package/dist/unpkg/prod/declarations/store/-private/managers/record-array-manager.d.ts +0 -100
  411. package/dist/unpkg/prod/declarations/store/-private/network/request-cache.d.ts +0 -103
  412. package/dist/unpkg/prod/declarations/store/-private/new-core-tmp/expensive-subscription.d.ts +0 -24
  413. package/dist/unpkg/prod/declarations/store/-private/new-core-tmp/promise-state.d.ts +0 -264
  414. package/dist/unpkg/prod/declarations/store/-private/new-core-tmp/reactivity/configure.d.ts +0 -138
  415. package/dist/unpkg/prod/declarations/store/-private/new-core-tmp/reactivity/internal.d.ts +0 -154
  416. package/dist/unpkg/prod/declarations/store/-private/new-core-tmp/reactivity/signal.d.ts +0 -56
  417. package/dist/unpkg/prod/declarations/store/-private/new-core-tmp/request-state.d.ts +0 -372
  418. package/dist/unpkg/prod/declarations/store/-private/new-core-tmp/request-subscription.d.ts +0 -177
  419. package/dist/unpkg/prod/declarations/store/-private/record-arrays/-utils.d.ts +0 -80
  420. package/dist/unpkg/prod/declarations/store/-private/record-arrays/legacy-live-array.d.ts +0 -81
  421. package/dist/unpkg/prod/declarations/store/-private/record-arrays/legacy-many-array.d.ts +0 -133
  422. package/dist/unpkg/prod/declarations/store/-private/record-arrays/legacy-query.d.ts +0 -81
  423. package/dist/unpkg/prod/declarations/store/-private/record-arrays/native-proxy-type-fix.d.ts +0 -3
  424. package/dist/unpkg/prod/declarations/store/-private/record-arrays/resource-array.d.ts +0 -67
  425. package/dist/unpkg/prod/declarations/store/-private/store-service.d.ts +0 -874
  426. package/dist/unpkg/prod/declarations/store/-private/utils/coerce-id.d.ts +0 -4
  427. package/dist/unpkg/prod/declarations/store/-private/utils/construct-resource.d.ts +0 -6
  428. package/dist/unpkg/prod/declarations/store/-private/utils/is-non-empty-string.d.ts +0 -1
  429. package/dist/unpkg/prod/declarations/store/-private/utils/normalize-model-name.d.ts +0 -1
  430. package/dist/unpkg/prod/declarations/store/-private/utils/uuid-polyfill.d.ts +0 -1
  431. package/dist/unpkg/prod/declarations/store/-private.d.ts +0 -29
  432. package/dist/unpkg/prod/declarations/store/-types/q/cache-capabilities-manager.d.ts +0 -90
  433. package/dist/unpkg/prod/declarations/store/-types/q/identifier.d.ts +0 -23
  434. package/dist/unpkg/prod/declarations/store/-types/q/record-instance.d.ts +0 -22
  435. package/dist/unpkg/prod/declarations/store/-types/q/store.d.ts +0 -31
  436. package/dist/unpkg/prod/declarations/store/deprecated/-private.d.ts +0 -223
  437. package/dist/unpkg/prod/declarations/store/deprecated/store.d.ts +0 -784
  438. package/dist/unpkg/prod/declarations/store.d.ts +0 -2
  439. package/dist/unpkg/prod/declarations/types/-private.d.ts +0 -22
  440. package/dist/unpkg/prod/declarations/types/cache/aliases.d.ts +0 -1
  441. package/dist/unpkg/prod/declarations/types/cache/change.d.ts +0 -6
  442. package/dist/unpkg/prod/declarations/types/cache/mutations.d.ts +0 -38
  443. package/dist/unpkg/prod/declarations/types/cache/operations.d.ts +0 -168
  444. package/dist/unpkg/prod/declarations/types/cache/relationship.d.ts +0 -13
  445. package/dist/unpkg/prod/declarations/types/cache.d.ts +0 -429
  446. package/dist/unpkg/prod/declarations/types/graph.d.ts +0 -47
  447. package/dist/unpkg/prod/declarations/types/identifier.d.ts +0 -86
  448. package/dist/unpkg/prod/declarations/types/json/raw.d.ts +0 -6
  449. package/dist/unpkg/prod/declarations/types/params.d.ts +0 -8
  450. package/dist/unpkg/prod/declarations/types/record.d.ts +0 -269
  451. package/dist/unpkg/prod/declarations/types/request.d.ts +0 -367
  452. package/dist/unpkg/prod/declarations/types/runtime.d.ts +0 -14
  453. package/dist/unpkg/prod/declarations/types/schema/concepts.d.ts +0 -23
  454. package/dist/unpkg/prod/declarations/types/schema/fields.d.ts +0 -2200
  455. package/dist/unpkg/prod/declarations/types/schema/fields.type-test.d.ts +0 -1
  456. package/dist/unpkg/prod/declarations/types/schema/schema-service.d.ts +0 -380
  457. package/dist/unpkg/prod/declarations/types/spec/document.d.ts +0 -67
  458. package/dist/unpkg/prod/declarations/types/spec/error.d.ts +0 -18
  459. package/dist/unpkg/prod/declarations/types/spec/json-api-raw.d.ts +0 -139
  460. package/dist/unpkg/prod/declarations/types/symbols.d.ts +0 -78
  461. package/dist/unpkg/prod/declarations/types/utils.d.ts +0 -5
  462. package/dist/unpkg/prod/declarations/types.d.ts +0 -11
  463. package/dist/unpkg/prod/declarations/utils/string.d.ts +0 -47
  464. package/dist/unpkg/prod/default-cache-policy-D7_u4YRH.js +0 -572
  465. package/dist/unpkg/prod/index-D4si_DxB.js +0 -11746
  466. package/dist/unpkg/prod/request-oqoLC9rz.js +0 -725
  467. package/dist/unpkg/prod-deprecated/declarations/build-config/babel-macros.d.ts +0 -1
  468. package/dist/unpkg/prod-deprecated/declarations/build-config/canary-features.d.ts +0 -1
  469. package/dist/unpkg/prod-deprecated/declarations/build-config/debugging.d.ts +0 -1
  470. package/dist/unpkg/prod-deprecated/declarations/build-config/deprecations.d.ts +0 -1
  471. package/dist/unpkg/prod-deprecated/declarations/build-config/env.d.ts +0 -1
  472. package/dist/unpkg/prod-deprecated/declarations/build-config/macros.d.ts +0 -1
  473. package/dist/unpkg/prod-deprecated/declarations/build-config.d.ts +0 -18
  474. package/dist/unpkg/prod-deprecated/declarations/configure.d.ts +0 -7
  475. package/dist/unpkg/prod-deprecated/declarations/graph/-private/-diff.d.ts +0 -19
  476. package/dist/unpkg/prod-deprecated/declarations/graph/-private/-edge-definition.d.ts +0 -149
  477. package/dist/unpkg/prod-deprecated/declarations/graph/-private/-state.d.ts +0 -9
  478. package/dist/unpkg/prod-deprecated/declarations/graph/-private/-utils.d.ts +0 -25
  479. package/dist/unpkg/prod-deprecated/declarations/graph/-private/coerce-id.d.ts +0 -4
  480. package/dist/unpkg/prod-deprecated/declarations/graph/-private/debug/assert-polymorphic-type.d.ts +0 -6
  481. package/dist/unpkg/prod-deprecated/declarations/graph/-private/edges/collection.d.ts +0 -39
  482. package/dist/unpkg/prod-deprecated/declarations/graph/-private/edges/implicit.d.ts +0 -43
  483. package/dist/unpkg/prod-deprecated/declarations/graph/-private/edges/resource.d.ts +0 -23
  484. package/dist/unpkg/prod-deprecated/declarations/graph/-private/graph.d.ts +0 -56
  485. package/dist/unpkg/prod-deprecated/declarations/graph/-private/normalize-link.d.ts +0 -2
  486. package/dist/unpkg/prod-deprecated/declarations/graph/-private/operations/add-to-related-records.d.ts +0 -4
  487. package/dist/unpkg/prod-deprecated/declarations/graph/-private/operations/merge-identifier.d.ts +0 -3
  488. package/dist/unpkg/prod-deprecated/declarations/graph/-private/operations/remove-from-related-records.d.ts +0 -4
  489. package/dist/unpkg/prod-deprecated/declarations/graph/-private/operations/replace-related-record.d.ts +0 -3
  490. package/dist/unpkg/prod-deprecated/declarations/graph/-private/operations/replace-related-records.d.ts +0 -7
  491. package/dist/unpkg/prod-deprecated/declarations/graph/-private/operations/update-relationship.d.ts +0 -9
  492. package/dist/unpkg/prod-deprecated/declarations/graph/-private.d.ts +0 -13
  493. package/dist/unpkg/prod-deprecated/declarations/index.d.ts +0 -100
  494. package/dist/unpkg/prod-deprecated/declarations/reactive/-private/default-mode.d.ts +0 -73
  495. package/dist/unpkg/prod-deprecated/declarations/reactive/-private/document.d.ts +0 -142
  496. package/dist/unpkg/prod-deprecated/declarations/reactive/-private/fields/extension.d.ts +0 -8
  497. package/dist/unpkg/prod-deprecated/declarations/reactive/-private/fields/get-field-key.d.ts +0 -8
  498. package/dist/unpkg/prod-deprecated/declarations/reactive/-private/fields/managed-array.d.ts +0 -18
  499. package/dist/unpkg/prod-deprecated/declarations/reactive/-private/fields/managed-object.d.ts +0 -17
  500. package/dist/unpkg/prod-deprecated/declarations/reactive/-private/fields/many-array-manager.d.ts +0 -19
  501. package/dist/unpkg/prod-deprecated/declarations/reactive/-private/hooks.d.ts +0 -5
  502. package/dist/unpkg/prod-deprecated/declarations/reactive/-private/kind/alias-field.d.ts +0 -4
  503. package/dist/unpkg/prod-deprecated/declarations/reactive/-private/kind/array-field.d.ts +0 -4
  504. package/dist/unpkg/prod-deprecated/declarations/reactive/-private/kind/attribute-field.d.ts +0 -4
  505. package/dist/unpkg/prod-deprecated/declarations/reactive/-private/kind/belongs-to-field.d.ts +0 -4
  506. package/dist/unpkg/prod-deprecated/declarations/reactive/-private/kind/collection-field.d.ts +0 -4
  507. package/dist/unpkg/prod-deprecated/declarations/reactive/-private/kind/derived-field.d.ts +0 -4
  508. package/dist/unpkg/prod-deprecated/declarations/reactive/-private/kind/generic-field.d.ts +0 -4
  509. package/dist/unpkg/prod-deprecated/declarations/reactive/-private/kind/has-many-field.d.ts +0 -4
  510. package/dist/unpkg/prod-deprecated/declarations/reactive/-private/kind/hash-field.d.ts +0 -4
  511. package/dist/unpkg/prod-deprecated/declarations/reactive/-private/kind/identity-field.d.ts +0 -4
  512. package/dist/unpkg/prod-deprecated/declarations/reactive/-private/kind/local-field.d.ts +0 -4
  513. package/dist/unpkg/prod-deprecated/declarations/reactive/-private/kind/object-field.d.ts +0 -4
  514. package/dist/unpkg/prod-deprecated/declarations/reactive/-private/kind/resource-field.d.ts +0 -4
  515. package/dist/unpkg/prod-deprecated/declarations/reactive/-private/kind/schema-array-field.d.ts +0 -4
  516. package/dist/unpkg/prod-deprecated/declarations/reactive/-private/kind/schema-object-field.d.ts +0 -4
  517. package/dist/unpkg/prod-deprecated/declarations/reactive/-private/record.d.ts +0 -83
  518. package/dist/unpkg/prod-deprecated/declarations/reactive/-private/schema.d.ts +0 -326
  519. package/dist/unpkg/prod-deprecated/declarations/reactive/-private/symbols.d.ts +0 -5
  520. package/dist/unpkg/prod-deprecated/declarations/reactive/-private.d.ts +0 -2
  521. package/dist/unpkg/prod-deprecated/declarations/reactive.d.ts +0 -287
  522. package/dist/unpkg/prod-deprecated/declarations/request/-private/context.d.ts +0 -39
  523. package/dist/unpkg/prod-deprecated/declarations/request/-private/debug.d.ts +0 -4
  524. package/dist/unpkg/prod-deprecated/declarations/request/-private/fetch.d.ts +0 -33
  525. package/dist/unpkg/prod-deprecated/declarations/request/-private/future.d.ts +0 -7
  526. package/dist/unpkg/prod-deprecated/declarations/request/-private/manager.d.ts +0 -158
  527. package/dist/unpkg/prod-deprecated/declarations/request/-private/promise-cache.d.ts +0 -28
  528. package/dist/unpkg/prod-deprecated/declarations/request/-private/types.d.ts +0 -234
  529. package/dist/unpkg/prod-deprecated/declarations/request/-private/utils.d.ts +0 -57
  530. package/dist/unpkg/prod-deprecated/declarations/request.d.ts +0 -52
  531. package/dist/unpkg/prod-deprecated/declarations/store/-private/cache-handler/handler.d.ts +0 -56
  532. package/dist/unpkg/prod-deprecated/declarations/store/-private/cache-handler/types.d.ts +0 -98
  533. package/dist/unpkg/prod-deprecated/declarations/store/-private/cache-handler/utils.d.ts +0 -31
  534. package/dist/unpkg/prod-deprecated/declarations/store/-private/caches/instance-cache.d.ts +0 -58
  535. package/dist/unpkg/prod-deprecated/declarations/store/-private/caches/resource-utils.d.ts +0 -9
  536. package/dist/unpkg/prod-deprecated/declarations/store/-private/debug/utils.d.ts +0 -7
  537. package/dist/unpkg/prod-deprecated/declarations/store/-private/default-cache-policy.d.ts +0 -387
  538. package/dist/unpkg/prod-deprecated/declarations/store/-private/managers/cache-capabilities-manager.d.ts +0 -34
  539. package/dist/unpkg/prod-deprecated/declarations/store/-private/managers/cache-key-manager.d.ts +0 -304
  540. package/dist/unpkg/prod-deprecated/declarations/store/-private/managers/cache-manager.d.ts +0 -380
  541. package/dist/unpkg/prod-deprecated/declarations/store/-private/managers/notification-manager.d.ts +0 -83
  542. package/dist/unpkg/prod-deprecated/declarations/store/-private/managers/record-array-manager.d.ts +0 -100
  543. package/dist/unpkg/prod-deprecated/declarations/store/-private/network/request-cache.d.ts +0 -103
  544. package/dist/unpkg/prod-deprecated/declarations/store/-private/new-core-tmp/expensive-subscription.d.ts +0 -24
  545. package/dist/unpkg/prod-deprecated/declarations/store/-private/new-core-tmp/promise-state.d.ts +0 -264
  546. package/dist/unpkg/prod-deprecated/declarations/store/-private/new-core-tmp/reactivity/configure.d.ts +0 -138
  547. package/dist/unpkg/prod-deprecated/declarations/store/-private/new-core-tmp/reactivity/internal.d.ts +0 -154
  548. package/dist/unpkg/prod-deprecated/declarations/store/-private/new-core-tmp/reactivity/signal.d.ts +0 -56
  549. package/dist/unpkg/prod-deprecated/declarations/store/-private/new-core-tmp/request-state.d.ts +0 -372
  550. package/dist/unpkg/prod-deprecated/declarations/store/-private/new-core-tmp/request-subscription.d.ts +0 -177
  551. package/dist/unpkg/prod-deprecated/declarations/store/-private/record-arrays/-utils.d.ts +0 -80
  552. package/dist/unpkg/prod-deprecated/declarations/store/-private/record-arrays/legacy-live-array.d.ts +0 -81
  553. package/dist/unpkg/prod-deprecated/declarations/store/-private/record-arrays/legacy-many-array.d.ts +0 -133
  554. package/dist/unpkg/prod-deprecated/declarations/store/-private/record-arrays/legacy-query.d.ts +0 -81
  555. package/dist/unpkg/prod-deprecated/declarations/store/-private/record-arrays/native-proxy-type-fix.d.ts +0 -3
  556. package/dist/unpkg/prod-deprecated/declarations/store/-private/record-arrays/resource-array.d.ts +0 -67
  557. package/dist/unpkg/prod-deprecated/declarations/store/-private/store-service.d.ts +0 -874
  558. package/dist/unpkg/prod-deprecated/declarations/store/-private/utils/coerce-id.d.ts +0 -4
  559. package/dist/unpkg/prod-deprecated/declarations/store/-private/utils/construct-resource.d.ts +0 -6
  560. package/dist/unpkg/prod-deprecated/declarations/store/-private/utils/is-non-empty-string.d.ts +0 -1
  561. package/dist/unpkg/prod-deprecated/declarations/store/-private/utils/normalize-model-name.d.ts +0 -1
  562. package/dist/unpkg/prod-deprecated/declarations/store/-private/utils/uuid-polyfill.d.ts +0 -1
  563. package/dist/unpkg/prod-deprecated/declarations/store/-private.d.ts +0 -29
  564. package/dist/unpkg/prod-deprecated/declarations/store/-types/q/cache-capabilities-manager.d.ts +0 -90
  565. package/dist/unpkg/prod-deprecated/declarations/store/-types/q/identifier.d.ts +0 -23
  566. package/dist/unpkg/prod-deprecated/declarations/store/-types/q/record-instance.d.ts +0 -22
  567. package/dist/unpkg/prod-deprecated/declarations/store/-types/q/store.d.ts +0 -31
  568. package/dist/unpkg/prod-deprecated/declarations/store/deprecated/-private.d.ts +0 -223
  569. package/dist/unpkg/prod-deprecated/declarations/store/deprecated/store.d.ts +0 -784
  570. package/dist/unpkg/prod-deprecated/declarations/store.d.ts +0 -2
  571. package/dist/unpkg/prod-deprecated/declarations/types/-private.d.ts +0 -22
  572. package/dist/unpkg/prod-deprecated/declarations/types/cache/aliases.d.ts +0 -1
  573. package/dist/unpkg/prod-deprecated/declarations/types/cache/change.d.ts +0 -6
  574. package/dist/unpkg/prod-deprecated/declarations/types/cache/mutations.d.ts +0 -38
  575. package/dist/unpkg/prod-deprecated/declarations/types/cache/operations.d.ts +0 -168
  576. package/dist/unpkg/prod-deprecated/declarations/types/cache/relationship.d.ts +0 -13
  577. package/dist/unpkg/prod-deprecated/declarations/types/cache.d.ts +0 -429
  578. package/dist/unpkg/prod-deprecated/declarations/types/graph.d.ts +0 -47
  579. package/dist/unpkg/prod-deprecated/declarations/types/identifier.d.ts +0 -86
  580. package/dist/unpkg/prod-deprecated/declarations/types/json/raw.d.ts +0 -6
  581. package/dist/unpkg/prod-deprecated/declarations/types/params.d.ts +0 -8
  582. package/dist/unpkg/prod-deprecated/declarations/types/record.d.ts +0 -269
  583. package/dist/unpkg/prod-deprecated/declarations/types/request.d.ts +0 -367
  584. package/dist/unpkg/prod-deprecated/declarations/types/runtime.d.ts +0 -14
  585. package/dist/unpkg/prod-deprecated/declarations/types/schema/concepts.d.ts +0 -23
  586. package/dist/unpkg/prod-deprecated/declarations/types/schema/fields.d.ts +0 -2200
  587. package/dist/unpkg/prod-deprecated/declarations/types/schema/fields.type-test.d.ts +0 -1
  588. package/dist/unpkg/prod-deprecated/declarations/types/schema/schema-service.d.ts +0 -380
  589. package/dist/unpkg/prod-deprecated/declarations/types/spec/document.d.ts +0 -67
  590. package/dist/unpkg/prod-deprecated/declarations/types/spec/error.d.ts +0 -18
  591. package/dist/unpkg/prod-deprecated/declarations/types/spec/json-api-raw.d.ts +0 -139
  592. package/dist/unpkg/prod-deprecated/declarations/types/symbols.d.ts +0 -78
  593. package/dist/unpkg/prod-deprecated/declarations/types/utils.d.ts +0 -5
  594. package/dist/unpkg/prod-deprecated/declarations/types.d.ts +0 -11
  595. package/dist/unpkg/prod-deprecated/declarations/utils/string.d.ts +0 -47
  596. package/dist/unpkg/prod-deprecated/default-cache-policy-D7_u4YRH.js +0 -572
@@ -0,0 +1,1619 @@
1
+ import { m as isResourceKey, o as isRequestKey, Q as CacheKeyManager, q as RecordArrayManager, T as InstanceCache, y as normalizeModelName, n as coerceId, U as getNewRecord, V as peekResourceKey, p as ensureStringId, e as recordIdentifierFor, W as createReactiveDocument } from "./promise-state-ipG60SdD.js";
2
+ import { getOrSetGlobal } from './types/-private.js';
3
+ import { EnableHydration, SkipCache } from './types/request.js';
4
+ import './types/runtime.js';
5
+ import { a as willSyncFlushWatchers } from "./configure-C0C1LpG6.js";
6
+ function isCacheOperationValue(value) {
7
+ return value === 'added' || value === 'state' || value === 'updated' || value === 'removed' || value === 'invalidated';
8
+ }
9
+ function _unsubscribe(token, cache) {
10
+ const cacheKey = token.for;
11
+ if (cacheKey) {
12
+ const callbacks = cache.get(cacheKey);
13
+ if (!callbacks) {
14
+ return;
15
+ }
16
+ const index = callbacks.indexOf(token);
17
+ if (index === -1) {
18
+ return;
19
+ }
20
+ callbacks.splice(index, 1);
21
+ }
22
+ }
23
+
24
+ /**
25
+ * The NotificationManager provides the ability to subscribe to
26
+ * changes to Cache state.
27
+ *
28
+ * This Feature is what allows WarpDrive to create subscriptions that
29
+ * work with any framework or change-notification system.
30
+ *
31
+ * @hideconstructor
32
+ * @public
33
+ */
34
+ class NotificationManager {
35
+ /** @internal */
36
+
37
+ /** @internal */
38
+
39
+ /** @internal */
40
+
41
+ /** @internal */
42
+
43
+ /** @internal */
44
+
45
+ /** @internal */
46
+
47
+ constructor(store) {
48
+ this.store = store;
49
+ this.isDestroyed = false;
50
+ this._buffered = new Map();
51
+ this._hasFlush = false;
52
+ this._cache = new Map();
53
+ }
54
+
55
+ /**
56
+ * Subscribe to changes for a given ResourceKey, RequestKey, or addition/removal of any resource
57
+ * or document.
58
+ *
59
+ * ```ts
60
+ * export type CacheOperation = 'added' | 'removed' | 'updated' | 'state';
61
+ *
62
+ * export interface NotificationCallback {
63
+ * (cacheKey: ResourceKey, notificationType: 'attributes' | 'relationships', key?: string): void;
64
+ * (cacheKey: ResourceKey, notificationType: 'errors' | 'meta' | 'identity' | 'state'): void;
65
+ * (cacheKey: ResourceKey, notificationType: NotificationType, key?: string): void;
66
+ * }
67
+ * export interface ResourceOperationCallback {
68
+ * // resource updates
69
+ * (cacheKey: ResourceKey, notificationType: CacheOperation): void;
70
+ * }
71
+ * export interface DocumentOperationCallback {
72
+ * // document updates
73
+ * (cacheKey: RequestKey, notificationType: CacheOperation): void;
74
+ * }
75
+ * ```
76
+ *
77
+ * @public
78
+ * @return an opaque token to be used with unsubscribe
79
+ */
80
+
81
+ subscribe(cacheKey, callback) {
82
+ let callbacks = this._cache.get(cacheKey);
83
+ // we use the callback as the cancellation token
84
+ //@ts-expect-error
85
+ callback.for = cacheKey;
86
+ if (!callbacks) {
87
+ callbacks = [];
88
+ this._cache.set(cacheKey, callbacks);
89
+ }
90
+ callbacks.push(callback);
91
+ return callback;
92
+ }
93
+
94
+ /**
95
+ * remove a previous subscription
96
+ *
97
+ * @public
98
+ */
99
+ unsubscribe(token) {
100
+ if (!this.isDestroyed) {
101
+ _unsubscribe(token, this._cache);
102
+ }
103
+ }
104
+
105
+ /**
106
+ * Custom Caches and Application Code should not call this method directly.
107
+ *
108
+ * @private
109
+ */
110
+
111
+ notify(cacheKey, value, key) {
112
+ if (this.isDestroyed) {
113
+ return false;
114
+ }
115
+ if (!isResourceKey(cacheKey) && !isRequestKey(cacheKey)) {
116
+ return false;
117
+ }
118
+ const _hasSubscribers = hasSubscribers(this._cache, cacheKey, value);
119
+ if (_hasSubscribers) {
120
+ let buffer = this._buffered.get(cacheKey);
121
+ if (!buffer) {
122
+ buffer = [];
123
+ this._buffered.set(cacheKey, buffer);
124
+ }
125
+ buffer.push([value, key || null]);
126
+ if (!this._scheduleNotify()) ;
127
+ }
128
+ return _hasSubscribers;
129
+ }
130
+
131
+ /** @internal */
132
+ _onNextFlush(cb) {
133
+ this._onFlushCB = cb;
134
+ }
135
+
136
+ /** @internal */
137
+ _scheduleNotify() {
138
+ const asyncFlush = this.store._enableAsyncFlush;
139
+ if (this._hasFlush) {
140
+ if (asyncFlush !== false && !willSyncFlushWatchers()) {
141
+ return false;
142
+ }
143
+ }
144
+ if (asyncFlush && !willSyncFlushWatchers()) {
145
+ this._hasFlush = true;
146
+ return false;
147
+ }
148
+ this._flush();
149
+ return true;
150
+ }
151
+
152
+ /** @internal */
153
+ _flush() {
154
+ const buffered = this._buffered;
155
+ if (buffered.size) {
156
+ this._buffered = new Map();
157
+ for (const [cacheKey, states] of buffered) {
158
+ for (let i = 0; i < states.length; i++) {
159
+ // @ts-expect-error
160
+ _flushNotification(this._cache, cacheKey, states[i][0], states[i][1]);
161
+ }
162
+ }
163
+ }
164
+ this._hasFlush = false;
165
+ this._onFlushCB?.();
166
+ this._onFlushCB = undefined;
167
+ }
168
+
169
+ /** @internal */
170
+ destroy() {
171
+ this.isDestroyed = true;
172
+ this._cache.clear();
173
+ }
174
+ }
175
+
176
+ /**
177
+ * This type exists for internal use only for
178
+ * where intimate contracts still exist either for
179
+ * the Test Suite or for Legacy code.
180
+ *
181
+ * @private
182
+ */
183
+
184
+ function _flushNotification(cache, cacheKey, value, key) {
185
+ // TODO for documents this will need to switch based on Identifier kind
186
+ if (isCacheOperationValue(value)) {
187
+ const callbackMap = cache.get(isRequestKey(cacheKey) ? 'document' : 'resource');
188
+ if (callbackMap) {
189
+ callbackMap.forEach(cb => {
190
+ cb(cacheKey, value);
191
+ });
192
+ }
193
+ }
194
+ const callbacks = cache.get(cacheKey);
195
+ if (!callbacks || !callbacks.length) {
196
+ return false;
197
+ }
198
+ callbacks.forEach(cb => {
199
+ // @ts-expect-error overload doesn't narrow within body
200
+ cb(cacheKey, value, key);
201
+ });
202
+ return true;
203
+ }
204
+ function hasSubscribers(cache, cacheKey, value) {
205
+ const hasSubscriber = Boolean(cache.get(cacheKey)?.length);
206
+ if (hasSubscriber || !isCacheOperationValue(value)) {
207
+ return hasSubscriber;
208
+ }
209
+ const callbackMap = cache.get(isRequestKey(cacheKey) ? 'document' : 'resource');
210
+ return Boolean(callbackMap?.length);
211
+ }
212
+ const Touching = getOrSetGlobal('Touching', Symbol('touching'));
213
+ const RequestPromise = getOrSetGlobal('RequestPromise', Symbol('promise'));
214
+ const EMPTY_ARR = [];
215
+ function hasRecordIdentifier(op) {
216
+ return 'recordIdentifier' in op;
217
+ }
218
+
219
+ /**
220
+ * The RequestStateService is used to track the state of requests
221
+ * for fetching or updating known resource identifies that are inflight.
222
+ *
223
+ * @hideconstructor
224
+ * @public
225
+ */
226
+ class RequestStateService {
227
+ /** @internal */
228
+ _pending = new Map();
229
+ /** @internal */
230
+ _done = new Map();
231
+ /** @internal */
232
+ _subscriptions = new Map();
233
+ /** @internal */
234
+ _toFlush = [];
235
+ /** @internal */
236
+ _store;
237
+ constructor(store) {
238
+ this._store = store;
239
+ }
240
+ /** @internal */
241
+ _clearEntries(identifier) {
242
+ this._done.delete(identifier);
243
+ }
244
+ /** @internal */
245
+ _enqueue(promise, queryRequest) {
246
+ const query = queryRequest.data[0];
247
+ if (hasRecordIdentifier(query)) {
248
+ const identifier = query.recordIdentifier;
249
+ const type = query.op === 'saveRecord' ? 'mutation' : 'query';
250
+ if (!this._pending.has(identifier)) {
251
+ this._pending.set(identifier, []);
252
+ }
253
+ const request = {
254
+ state: 'pending',
255
+ request: queryRequest,
256
+ type
257
+ };
258
+ request[Touching] = [query.recordIdentifier];
259
+ request[RequestPromise] = promise;
260
+ this._pending.get(identifier).push(request);
261
+ this._triggerSubscriptions(request);
262
+ return promise.then(result => {
263
+ this._dequeue(identifier, request);
264
+ const finalizedRequest = {
265
+ state: 'fulfilled',
266
+ request: queryRequest,
267
+ type,
268
+ response: {
269
+ data: result
270
+ }
271
+ };
272
+ finalizedRequest[Touching] = request[Touching];
273
+ this._addDone(finalizedRequest);
274
+ this._triggerSubscriptions(finalizedRequest);
275
+ return result;
276
+ }, error => {
277
+ this._dequeue(identifier, request);
278
+ const finalizedRequest = {
279
+ state: 'rejected',
280
+ request: queryRequest,
281
+ type,
282
+ response: {
283
+ data: error
284
+ }
285
+ };
286
+ finalizedRequest[Touching] = request[Touching];
287
+ this._addDone(finalizedRequest);
288
+ this._triggerSubscriptions(finalizedRequest);
289
+ throw error;
290
+ });
291
+ }
292
+ }
293
+
294
+ /** @internal */
295
+ _triggerSubscriptions(req) {
296
+ if (req.state === 'pending') {
297
+ this._flushRequest(req);
298
+ return;
299
+ }
300
+ this._toFlush.push(req);
301
+ if (this._toFlush.length === 1) {
302
+ this._store.notifications._onNextFlush(() => {
303
+ this._flush();
304
+ });
305
+ }
306
+ }
307
+
308
+ /** @internal */
309
+ _flush() {
310
+ this._toFlush.forEach(req => {
311
+ this._flushRequest(req);
312
+ });
313
+ this._toFlush = [];
314
+ }
315
+
316
+ /** @internal */
317
+ _flushRequest(req) {
318
+ req[Touching].forEach(identifier => {
319
+ const subscriptions = this._subscriptions.get(identifier);
320
+ if (subscriptions) {
321
+ subscriptions.forEach(callback => callback(req));
322
+ }
323
+ });
324
+ }
325
+
326
+ /** @internal */
327
+ _dequeue(identifier, request) {
328
+ const pending = this._pending.get(identifier);
329
+ this._pending.set(identifier, pending.filter(req => req !== request));
330
+ }
331
+
332
+ /** @internal */
333
+ _addDone(request) {
334
+ request[Touching].forEach(identifier => {
335
+ // TODO add support for multiple
336
+ const requestDataOp = request.request.data[0].op;
337
+ let requests = this._done.get(identifier);
338
+ if (requests) {
339
+ requests = requests.filter(req => {
340
+ // TODO add support for multiple
341
+ let data;
342
+ if (Array.isArray(req.request.data)) {
343
+ data = req.request.data[0];
344
+ } else {
345
+ data = req.request.data;
346
+ }
347
+ return data.op !== requestDataOp;
348
+ });
349
+ }
350
+ requests = requests || [];
351
+ requests.push(request);
352
+ this._done.set(identifier, requests);
353
+ });
354
+ }
355
+
356
+ /**
357
+ * Subscribe to requests for a given resource identity.
358
+ *
359
+ * The callback will receive the current state of the request.
360
+ *
361
+ * ```ts
362
+ * interface RequestState {
363
+ * state: 'pending' | 'fulfilled' | 'rejected';
364
+ * type: 'query' | 'mutation';
365
+ * request: Request;
366
+ * response?: { data: unknown };
367
+ * }
368
+ * ```
369
+ *
370
+ * Note: It should be considered dangerous to use this API for more than simple
371
+ * state derivation or debugging. The `request` and `response` properties are poorly
372
+ * spec'd and may change unexpectedly when shifting what Handlers are in use or how
373
+ * requests are issued from the Store.
374
+ *
375
+ * We expect to revisit this API in the near future as we continue to refine the
376
+ * RequestManager ergonomics, as a simpler but more powerful direct integration
377
+ * with the RequestManager for these purposes is likely to be a better long-term
378
+ * design.
379
+ *
380
+ * @public
381
+ * @param {ResourceKey} identifier
382
+ * @param {(state: RequestCacheRequestState) => void} callback
383
+ */
384
+ subscribeForRecord(identifier, callback) {
385
+ let subscriptions = this._subscriptions.get(identifier);
386
+ if (!subscriptions) {
387
+ subscriptions = [];
388
+ this._subscriptions.set(identifier, subscriptions);
389
+ }
390
+ subscriptions.push(callback);
391
+ }
392
+
393
+ /**
394
+ * Retrieve all active requests for a given resource identity.
395
+ *
396
+ * @public
397
+ * @param {ResourceKey} identifier
398
+ * @return {RequestCacheRequestState[]} an array of request states for any pending requests for the given identifier
399
+ */
400
+ getPendingRequestsForRecord(identifier) {
401
+ return this._pending.get(identifier) || EMPTY_ARR;
402
+ }
403
+
404
+ /**
405
+ * Retrieve the last completed request for a given resource identity.
406
+ *
407
+ * @public
408
+ * @param {ResourceKey} identifier
409
+ * @return {RequestCacheRequestState | null} the state of the most recent request for the given identifier
410
+ */
411
+ getLastRequestForRecord(identifier) {
412
+ const requests = this._done.get(identifier);
413
+ if (requests) {
414
+ return requests[requests.length - 1];
415
+ }
416
+ return null;
417
+ }
418
+ }
419
+
420
+ /**
421
+ * This type exists for internal use only for
422
+ * where intimate contracts still exist either for
423
+ * the Test Suite or for Legacy code.
424
+ *
425
+ * @private
426
+ */
427
+
428
+ // this import location is deprecated but breaks in 4.8 and older
429
+
430
+ // `AwaitedKeys` is needed here to resolve any promise types like `PromiseBelongsTo`.
431
+
432
+ /**
433
+ * Currently only records that extend object can be created via
434
+ * store.createRecord. This is a limitation of the current API,
435
+ * but can be worked around by creating a new identifier, running
436
+ * the cache.clientDidCreate method, and then peeking the record
437
+ * for the identifier.
438
+ *
439
+ * To assign primary key to a record during creation, only `id` will
440
+ * work correctly for `store.createRecord`, other primary key may be
441
+ * handled by updating the record after creation or using the flow
442
+ * described above.
443
+ *
444
+ * TODO: These are limitations we want to (and can) address. If you
445
+ * have need of lifting these limitations, please open an issue.
446
+ *
447
+ */
448
+
449
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
450
+
451
+ // eslint-disable-next-line @typescript-eslint/no-extraneous-class
452
+ const EmptyClass = class {
453
+ // eslint-disable-next-line @typescript-eslint/no-useless-constructor
454
+ constructor(args) {}
455
+ };
456
+ const _BaseClass = EmptyClass;
457
+ const BaseClass = _BaseClass.default ? _BaseClass.default : _BaseClass;
458
+ /**
459
+ * ```ts
460
+ * import { Store } from '@warp-drive/core';
461
+ * ```
462
+ *
463
+ * The `Store` is the central piece of the ***Warp*Drive** experience. It connects
464
+ * requests for data with schemas, caching and reactivity.
465
+ *
466
+ * While it's easy to use ***just*** ***Warp*Drive**'s request management, most projects will find they
467
+ * require far more than basic fetch management. For this reason it's often best to start with a `Store`
468
+ * even when you aren't sure yet.
469
+ *
470
+ * Most projects will only have a single `Store`, though using multiple distinct stores
471
+ * is possible.
472
+ *
473
+ * @public
474
+ * @hideconstructor
475
+ */
476
+ class Store extends BaseClass {
477
+ /** @internal */
478
+
479
+ /**
480
+ * Provides access to the {@link NotificationManager} associated
481
+ * with this Store instance.
482
+ *
483
+ * The NotificationManager can be used to subscribe to
484
+ * changes to the cache.
485
+ *
486
+ * @public
487
+ */
488
+
489
+ /**
490
+ * Provides access to the SchemaService instance
491
+ * for this Store instance.
492
+ *
493
+ * The SchemaService can be used to query for
494
+ * information about the schema of a resource.
495
+ *
496
+ * @public
497
+ */
498
+ get schema() {
499
+ if (!this._schema) {
500
+ this._schema = this.createSchemaService();
501
+ }
502
+ return this._schema;
503
+ }
504
+ /** @internal */
505
+
506
+ /**
507
+ * Provides access to the CacheKeyManager
508
+ * for this store.
509
+ *
510
+ * The CacheKeyManager can be used to generate or
511
+ * retrieve a stable unique CacheKey for any resource
512
+ * or request.
513
+ *
514
+ * @public
515
+ */
516
+
517
+ /**
518
+ * Provides access to the {@link RequestManager} instance associated
519
+ * with this Store instance.
520
+ *
521
+ * See also:
522
+ * - {@link Fetch}
523
+ * - {@link CacheHandlerInterface | CacheHandler (Interface)}
524
+ * - {@link CacheHandler | CacheHandler (Class)}
525
+ *
526
+ * ```ts
527
+ * import { CacheHandler, Fetch, RequestManager, Store } from '@warp-drive/core';
528
+ *
529
+ * class AppStore extends Store {
530
+ * requestManager = new RequestManager()
531
+ * .use([Fetch])
532
+ * .useCache(CacheHandler);
533
+ * }
534
+ * ```
535
+ *
536
+ * @public
537
+ */
538
+
539
+ /**
540
+ * A Property which an App may set to provide a CachePolicy
541
+ * to control when a cached request becomes stale.
542
+ *
543
+ * Note, when defined, these methods will only be invoked if a
544
+ * cache key exists for the request, either because the request
545
+ * contains `cacheOptions.key` or because the {@link CacheKeyManager}
546
+ * was able to generate a key for the request using the configured
547
+ * {@link setIdentifierGenerationMethod | generation method}.
548
+ *
549
+ * `isSoftExpired` will only be invoked if `isHardExpired` returns `false`.
550
+ *
551
+ * ```ts
552
+ * store.lifetimes = {
553
+ * // make the request and ignore the current cache state
554
+ * isHardExpired(key: RequestKey): boolean {
555
+ * return false;
556
+ * }
557
+ *
558
+ * // make the request in the background if true, return cache state
559
+ * isSoftExpired(key: RequestKey): boolean {
560
+ * return false;
561
+ * }
562
+ * }
563
+ * ```
564
+ *
565
+ * @public
566
+ */
567
+
568
+ // Private
569
+ /** @internal */
570
+
571
+ /** @internal */
572
+
573
+ /** @internal */
574
+
575
+ /** @internal */
576
+
577
+ /** @internal */
578
+
579
+ /**
580
+ * Async flush buffers notifications until flushed
581
+ * by finalization of a future configured by store.request
582
+ *
583
+ * This is useful for ensuring that notifications are delivered
584
+ * prior to the promise resolving but without risk of promise
585
+ * interleaving.
586
+ *
587
+ * @internal
588
+ */
589
+
590
+ /**
591
+ * Available in DEBUG Only
592
+ * @internal
593
+ */
594
+
595
+ /** @internal */
596
+
597
+ /** @internal */
598
+
599
+ /** @private */
600
+ get isDestroying() {
601
+ return this._isDestroying;
602
+ }
603
+ /** @internal */
604
+ set isDestroying(value) {
605
+ this._isDestroying = value;
606
+ }
607
+ /** @private */
608
+ get isDestroyed() {
609
+ return this._isDestroyed;
610
+ }
611
+ /** @internal */
612
+ set isDestroyed(value) {
613
+ this._isDestroyed = value;
614
+ }
615
+
616
+ /** @deprecated use {@link Store.cacheKeyManager} */
617
+ get identifierCache() {
618
+ return this.cacheKeyManager;
619
+ }
620
+
621
+ /**
622
+ @private
623
+ */
624
+ constructor(createArgs) {
625
+ super(createArgs);
626
+ Object.assign(this, createArgs);
627
+ this.cacheKeyManager = new CacheKeyManager();
628
+ this.notifications = new NotificationManager(this);
629
+
630
+ // private but maybe useful to be here, somewhat intimate
631
+ this.recordArrayManager = new RecordArrayManager({
632
+ store: this
633
+ });
634
+
635
+ // private
636
+ this._requestCache = new RequestStateService(this);
637
+ this._instanceCache = new InstanceCache(this);
638
+ this.isDestroying = false;
639
+ this.isDestroyed = false;
640
+ }
641
+
642
+ /** @internal */
643
+ _run(cb) {
644
+ const _cbs = this._cbs = {};
645
+ {
646
+ cb();
647
+ if (_cbs.coalesce) {
648
+ _cbs.coalesce();
649
+ }
650
+ if (_cbs.sync) {
651
+ _cbs.sync();
652
+ }
653
+ if (_cbs.notify) {
654
+ _cbs.notify();
655
+ }
656
+ this._cbs = null;
657
+ }
658
+ }
659
+
660
+ /**
661
+ * Executes the callback, ensurng that any work that calls
662
+ * store._schedule is executed after in the right order.
663
+ *
664
+ * When queues already exist, scheduled callbacks will
665
+ * join the existing queue.
666
+ *
667
+ * @internal
668
+ */
669
+ _join(cb) {
670
+ if (this._cbs) {
671
+ cb();
672
+ } else {
673
+ this._run(cb);
674
+ }
675
+ }
676
+
677
+ /** @internal */
678
+ _schedule(name, cb) {
679
+ this._cbs[name] = cb;
680
+ }
681
+
682
+ /**
683
+ * Retrieve the RequestStateService instance
684
+ * associated with this Store.
685
+ *
686
+ * This can be used to query the status of requests
687
+ * that have been initiated for a given identifier.
688
+ *
689
+ * @return {RequestStateService}
690
+ * @public
691
+ */
692
+ getRequestStateService() {
693
+ return this._requestCache;
694
+ }
695
+
696
+ /** @internal */
697
+ _getAllPending() {}
698
+
699
+ /**
700
+ * ::: tip 💡 For a more complete overview see the [Request Guide](/guides/2-requests/1-overview)
701
+ * :::
702
+ *
703
+ * Issue a request via the configured {@link RequestManager},
704
+ * inserting the response into the {@link Store.cache | cache} and handing
705
+ * back a {@link Future} which resolves to a {@link ReactiveDocument | ReactiveDocument}
706
+ *
707
+ * #### Request Cache Keys
708
+ *
709
+ * Only {@link https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Methods/GET | GET} requests with a url or requests with an explicit
710
+ * {@link CacheOptions.key | cache key} will have the request result
711
+ * and document cached.
712
+ *
713
+ * The cache key used is {@link RequestInfo.cacheOptions.key | RequestInfo.cacheOptions.key}
714
+ * if present, falling back to {@link RequestInfo.url}.
715
+ *
716
+ * Params are not serialized as part of the cache-key, so
717
+ * either ensure they are already in the url or utilize
718
+ * `requestConfig.cacheOptions.key`. For queries issued
719
+ * via the {@link https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Methods/POST | POST} method `requestConfig.cacheOptions.key`
720
+ * MUST be supplied for the document to be cached.
721
+ *
722
+ * #### Requesting Without a Cache Key
723
+ *
724
+ * Resource data within the request is always updated in the cache,
725
+ * regardless of whether a cache key is present for the request.
726
+ *
727
+ * #### Fulfilling From Cache
728
+ *
729
+ * When a cache-key is determined, the request may fulfill
730
+ * from cache provided the cache is not stale.
731
+ *
732
+ * Cache staleness is determined by the configured {@link CachePolicy}
733
+ * with priority given to the {@link CacheOptions.reload} and
734
+ * {@link CacheOptions.backgroundReload} on the request if present.
735
+ *
736
+ * If the cache data has soft expired or the request asks for a background
737
+ * reload, the request will fulfill from cache if possible and
738
+ * make a non-blocking request in the background to update the cache.
739
+ *
740
+ * If the cache data has hard expired or the request asks for a reload,
741
+ * the request will not fulfill from cache and will make a blocking
742
+ * request to update the cache.
743
+ *
744
+ * #### The Response
745
+ *
746
+ * The primary difference between {@link RequestManager.request} and `store.request`
747
+ * is that `store.request` will convert the response into a {@link ReactiveDocument}
748
+ * containing {@link Store.instantiateRecord | ReactiveResources}.
749
+ *
750
+ * @public
751
+ */
752
+ request(requestConfig) {
753
+ // we lazily set the cache handler when we issue the first request
754
+ // because constructor doesn't allow for this to run after
755
+ // the user has had the chance to set the prop.
756
+ const opts = {
757
+ store: this,
758
+ [EnableHydration]: requestConfig[EnableHydration] ?? true
759
+ };
760
+ if (requestConfig.records) {
761
+ const cacheKeyManager = this.cacheKeyManager;
762
+ opts.records = requestConfig.records.map(r => cacheKeyManager.getOrCreateRecordIdentifier(r));
763
+ }
764
+ const request = Object.assign({}, requestConfig, opts);
765
+ const future = this.requestManager.request(request);
766
+ future.onFinalize(() => {
767
+ // skip flush for legacy belongsTo
768
+ if (requestConfig.op === 'findBelongsTo' && !requestConfig.url) {
769
+ return;
770
+ }
771
+ this.notifications._flush();
772
+ });
773
+ return future;
774
+ }
775
+
776
+ /**
777
+ Creates a new record in the current store.
778
+ > [!CAUTION]
779
+ > This should not be used to mock records or to create
780
+ > a record representing data that could be fetched from
781
+ > the API.
782
+ The properties passed to this method are set on
783
+ the newly created record.
784
+ For instance: to create a new `post`:
785
+ ```js
786
+ store.createRecord('post', {
787
+ title: 'WarpDrive is Stellar!'
788
+ });
789
+ ```
790
+ Relationships can be set during create. For instance,
791
+ to create a new `post` that has an existing user as
792
+ it's author:
793
+ ```js
794
+ const user = store.peekRecord('user', '1');
795
+ store.createRecord('post', {
796
+ title: 'WarpDrive is Stellar!',
797
+ user: user
798
+ });
799
+ ```
800
+ ### lid handling
801
+ All new records are assigned an `lid` that can be used to handle
802
+ transactional saves of multiple records, or to link the data to
803
+ other data in scenarios involving eventual-consistency or remote
804
+ syncing.
805
+ ```ts
806
+ const post = store.createRecord('post', {
807
+ title: 'WarpDrive is Stellar!'
808
+ });
809
+ const { lid } = recordIdentifierFor(post);
810
+ ```
811
+ The `lid` defaults to a uuidv4 string.
812
+ In order to support receiving knowledge about unpersisted creates
813
+ from other sources (say a different tab in the same web-browser),
814
+ createRecord allows for the `lid` to be provided as part of an
815
+ optional third argument. **If this lid already exists in the store
816
+ an error will be thrown.**
817
+ ```ts
818
+ const post = store.createRecord(
819
+ 'post',
820
+ { title: 'WarpDrive is Stellar!' },
821
+ { lid: '4d47bb88-931f-496e-986d-c4888cef7373' }
822
+ );
823
+ ```
824
+ @public
825
+ @param type the name of the resource
826
+ @param inputProperties a hash of properties to set on the
827
+ newly created record.
828
+ @return a record in the "isNew" state
829
+ */
830
+
831
+ createRecord(type, inputProperties, context) {
832
+ // This is wrapped in a `run.join` so that in test environments users do not need to manually wrap
833
+ // calls to `createRecord`. The run loop usage here is because we batch the joining and updating
834
+ // of record-arrays via ember's run loop, not our own.
835
+ //
836
+ // to remove this, we would need to move to a new `async` API.
837
+ let record;
838
+ this._join(() => {
839
+ const normalizedModelName = normalizeModelName(type);
840
+ const properties = {
841
+ ...inputProperties
842
+ };
843
+
844
+ // If the passed properties do not include a primary key,
845
+ // give the adapter an opportunity to generate one. Typically,
846
+ // client-side ID generators will use something like uuid.js
847
+ // to avoid conflicts.
848
+ let id = null;
849
+ if (properties.id === null || properties.id === undefined) {
850
+ const adapter = this.adapterFor?.(normalizedModelName, true);
851
+ if (adapter && adapter.generateIdForRecord) {
852
+ id = properties.id = coerceId(adapter.generateIdForRecord(this, normalizedModelName, properties));
853
+ } else {
854
+ id = properties.id = null;
855
+ }
856
+ } else {
857
+ id = properties.id = coerceId(properties.id);
858
+ }
859
+ const resource = {
860
+ type: normalizedModelName,
861
+ id
862
+ };
863
+ if (resource.id) {
864
+ this.cacheKeyManager.peekResourceKey(resource);
865
+ }
866
+ if (context?.lid) {
867
+ this.cacheKeyManager.peekResourceKey({
868
+ lid: context?.lid
869
+ });
870
+ resource.lid = context.lid;
871
+ }
872
+ const identifier = this.cacheKeyManager.createIdentifierForNewRecord(resource);
873
+ const cache = this.cache;
874
+ const createOptions = normalizeProperties(this, identifier, properties);
875
+ const resultProps = cache.clientDidCreate(identifier, createOptions);
876
+ record = getNewRecord(this._instanceCache, identifier, resultProps);
877
+ });
878
+ return record;
879
+ }
880
+
881
+ /**
882
+ For symmetry, a record can be deleted via the store.
883
+ Example
884
+ ```javascript
885
+ let post = store.createRecord('post', {
886
+ title: 'Ember is awesome!'
887
+ });
888
+ store.deleteRecord(post);
889
+ ```
890
+ @public
891
+ @param {unknown} record
892
+ */
893
+ deleteRecord(record) {
894
+ const identifier = peekResourceKey(record);
895
+ const cache = this.cache;
896
+ this._join(() => {
897
+ cache.setIsDeleted(identifier, true);
898
+ if (cache.isNew(identifier)) {
899
+ this._instanceCache.unloadRecord(identifier);
900
+ }
901
+ });
902
+ }
903
+
904
+ /**
905
+ For symmetry, a record can be unloaded via the store.
906
+ This will cause the record to be destroyed and freed up for garbage collection.
907
+ Example
908
+ ```javascript
909
+ const { content: { data: post } } = await store.request(findRecord({ type: 'post', id: '1' }));
910
+ store.unloadRecord(post);
911
+ ```
912
+ @public
913
+ @param {Model} record
914
+ */
915
+ unloadRecord(record) {
916
+ const identifier = peekResourceKey(record);
917
+ if (identifier) {
918
+ this._instanceCache.unloadRecord(identifier);
919
+ }
920
+ }
921
+
922
+ /**
923
+ Get a record by a given type and ID without triggering a fetch.
924
+ This method will synchronously return the record if it is available in the store,
925
+ otherwise it will return `null`. A record is available if it has been fetched earlier, or
926
+ pushed manually into the store.
927
+ **Example 1**
928
+ ```ts
929
+ const post = store.peekRecord('post', '1');
930
+ post.id; // '1'
931
+ ```
932
+ `peekRecord` can be called with a single identifier argument instead of the combination
933
+ of `type` (modelName) and `id` as separate arguments. You may recognize this combo as
934
+ the typical pairing from [JSON:API](https://jsonapi.org/format/#document-resource-object-identification)
935
+ **Example 2**
936
+ ```ts
937
+ const post = store.peekRecord({ type: 'post', id: '1' });
938
+ post.id; // '1'
939
+ ```
940
+ If you have previously received an lid from an Identifier for this record, you can lookup the record again using
941
+ just the lid.
942
+ **Example 3**
943
+ ```js
944
+ let post = store.peekRecord({ lid });
945
+ post.id; // '1'
946
+ ```
947
+ @since 1.13.0
948
+ @public
949
+ @param type - either a string representing the modelName or a ResourceIdentifier object containing both the type (a string) and the id (a string) for the record or an lid (a string) of an existing record
950
+ @param id - optional only if the first param is a ResourceIdentifier, else the string id of the record to be retrieved.
951
+ */
952
+
953
+ peekRecord(identifier, id) {
954
+ if (arguments.length === 1 && isMaybeIdentifier(identifier)) {
955
+ const stableIdentifier = this.cacheKeyManager.peekResourceKey(identifier);
956
+ const isLoaded = stableIdentifier && this._instanceCache.recordIsLoaded(stableIdentifier);
957
+ // TODO come up with a better mechanism for determining if we have data and could peek.
958
+ // this is basically an "are we not empty" query.
959
+ return isLoaded ? this._instanceCache.getRecord(stableIdentifier) : null;
960
+ }
961
+ const type = normalizeModelName(identifier);
962
+ const normalizedId = ensureStringId(id);
963
+ const resource = {
964
+ type,
965
+ id: normalizedId
966
+ };
967
+ const stableIdentifier = this.cacheKeyManager.peekResourceKey(resource);
968
+ const isLoaded = stableIdentifier && this._instanceCache.recordIsLoaded(stableIdentifier);
969
+ return isLoaded ? this._instanceCache.getRecord(stableIdentifier) : null;
970
+ }
971
+
972
+ /**
973
+ This method returns the {@link LegacyLiveArray} that contains all of the
974
+ known records for a given type in the store. Each ResourceType has only
975
+ one LiveArray instance, so multiple calls to `peekAll` with the same type
976
+ will always return the same instance.
977
+ Note that because it's a LiveArray, the result will contain any
978
+ locally created records of the type, however, it will not make a
979
+ request to the backend to retrieve additional records.
980
+ Example
981
+ ```ts
982
+ const allPosts = store.peekAll('post');
983
+ ```
984
+ @since 1.13.0
985
+ @public
986
+ @param type the name of the resource
987
+ */
988
+
989
+ peekAll(type) {
990
+ return this.recordArrayManager.liveArrayFor(normalizeModelName(type));
991
+ }
992
+
993
+ /**
994
+ This method unloads all records in the store.
995
+ It schedules unloading to happen during the next run loop.
996
+ Optionally you can pass a type which unload all records for a given type.
997
+ ```javascript
998
+ store.unloadAll();
999
+ store.unloadAll('post');
1000
+ ```
1001
+ @param {String} type the name of the resource
1002
+ @public
1003
+ */
1004
+
1005
+ unloadAll(type) {
1006
+ this._join(() => {
1007
+ this._enableAsyncFlush = true;
1008
+ if (type === undefined) {
1009
+ this.recordArrayManager.pause();
1010
+ // destroy the graph before unloadAll
1011
+ // since then we avoid churning relationships
1012
+ // during unload
1013
+ this._graph?.identifiers.clear();
1014
+ this.recordArrayManager.clear();
1015
+ this._instanceCache.clear();
1016
+ } else {
1017
+ this._instanceCache.clear(normalizeModelName(type));
1018
+ }
1019
+ this._enableAsyncFlush = null;
1020
+ this.notifications._flush();
1021
+ if (type === undefined) {
1022
+ this.recordArrayManager.resume();
1023
+ }
1024
+ });
1025
+ }
1026
+
1027
+ /**
1028
+ Push some data for a given type into the store.
1029
+ This method expects normalized [JSON API](http://jsonapi.org/) document. This means you have to follow [JSON API specification](http://jsonapi.org/format/) with few minor adjustments:
1030
+ - record's `type` should always be in singular, dasherized form
1031
+ - members (properties) should be camelCased
1032
+ [Your primary data should be wrapped inside `data` property](http://jsonapi.org/format/#document-top-level):
1033
+ ```js
1034
+ store.push({
1035
+ data: {
1036
+ // primary data for single record of type `Person`
1037
+ id: '1',
1038
+ type: 'person',
1039
+ attributes: {
1040
+ firstName: 'Daniel',
1041
+ lastName: 'Kmak'
1042
+ }
1043
+ }
1044
+ });
1045
+ ```
1046
+ [Demo.](http://ember-twiddle.com/fb99f18cd3b4d3e2a4c7)
1047
+ `data` property can also hold an array (of records):
1048
+ ```js
1049
+ store.push({
1050
+ data: [
1051
+ // an array of records
1052
+ {
1053
+ id: '1',
1054
+ type: 'person',
1055
+ attributes: {
1056
+ firstName: 'Daniel',
1057
+ lastName: 'Kmak'
1058
+ }
1059
+ },
1060
+ {
1061
+ id: '2',
1062
+ type: 'person',
1063
+ attributes: {
1064
+ firstName: 'Tom',
1065
+ lastName: 'Dale'
1066
+ }
1067
+ }
1068
+ ]
1069
+ });
1070
+ ```
1071
+ [Demo.](http://ember-twiddle.com/69cdbeaa3702159dc355)
1072
+ There are some typical properties for `JSONAPI` payload:
1073
+ * `id` - mandatory, unique record's key
1074
+ * `type` - mandatory string which matches `model`'s dasherized name in singular form
1075
+ * `attributes` - object which holds data for record attributes - `attr`'s declared in model
1076
+ * `relationships` - object which must contain any of the following properties under each relationships' respective key (example path is `relationships.achievements.data`):
1077
+ - [`links`](http://jsonapi.org/format/#document-links)
1078
+ - [`data`](http://jsonapi.org/format/#document-resource-object-linkage) - place for primary data
1079
+ - [`meta`](http://jsonapi.org/format/#document-meta) - object which contains meta-information about relationship
1080
+ For this model:
1081
+ ```js [app/models/person.js]
1082
+ import Model, { attr, hasMany } from '@warp-drive/legacy/model';
1083
+ export default class PersonRoute extends Route {
1084
+ @attr('string') firstName;
1085
+ @attr('string') lastName;
1086
+ @hasMany('person') children;
1087
+ }
1088
+ ```
1089
+ To represent the children as IDs:
1090
+ ```js
1091
+ {
1092
+ data: {
1093
+ id: '1',
1094
+ type: 'person',
1095
+ attributes: {
1096
+ firstName: 'Tom',
1097
+ lastName: 'Dale'
1098
+ },
1099
+ relationships: {
1100
+ children: {
1101
+ data: [
1102
+ {
1103
+ id: '2',
1104
+ type: 'person'
1105
+ },
1106
+ {
1107
+ id: '3',
1108
+ type: 'person'
1109
+ },
1110
+ {
1111
+ id: '4',
1112
+ type: 'person'
1113
+ }
1114
+ ]
1115
+ }
1116
+ }
1117
+ }
1118
+ }
1119
+ ```
1120
+ [Demo.](http://ember-twiddle.com/343e1735e034091f5bde)
1121
+ To represent the children relationship as a URL:
1122
+ ```js
1123
+ {
1124
+ data: {
1125
+ id: '1',
1126
+ type: 'person',
1127
+ attributes: {
1128
+ firstName: 'Tom',
1129
+ lastName: 'Dale'
1130
+ },
1131
+ relationships: {
1132
+ children: {
1133
+ links: {
1134
+ related: '/people/1/children'
1135
+ }
1136
+ }
1137
+ }
1138
+ }
1139
+ }
1140
+ ```
1141
+ If you're streaming data, or implementing response handling, make sure
1142
+ that you have converted the incoming data into this form.
1143
+ This method can be used both to push in brand new
1144
+ records, as well as to update existing records.
1145
+ See also {@link Cache.patch}
1146
+ @public
1147
+ @param data
1148
+ @return the primary record(s) that created or updated.
1149
+ */
1150
+
1151
+ push(data) {
1152
+ const pushed = this._push(data, false);
1153
+ if (Array.isArray(pushed)) {
1154
+ return pushed.map(identifier => this._instanceCache.getRecord(identifier));
1155
+ }
1156
+ if (pushed === null) {
1157
+ return null;
1158
+ }
1159
+ return this._instanceCache.getRecord(pushed);
1160
+ }
1161
+
1162
+ /**
1163
+ Push some data in the form of a json-api document into the store,
1164
+ without creating materialized records.
1165
+ @private
1166
+ @return identifiers for the primary records that had data loaded
1167
+ */
1168
+ _push(jsonApiDoc, asyncFlush) {
1169
+ if (asyncFlush) {
1170
+ this._enableAsyncFlush = true;
1171
+ }
1172
+ let ret;
1173
+ this._join(() => {
1174
+ ret = this.cache.put({
1175
+ content: jsonApiDoc
1176
+ });
1177
+ });
1178
+ this._enableAsyncFlush = null;
1179
+ return 'data' in ret ? ret.data : null;
1180
+ }
1181
+
1182
+ /**
1183
+ * Returns the cache instance associated to this Store, instantiates the Cache
1184
+ * if necessary via `Store.createCache`
1185
+ *
1186
+ * @public
1187
+ */
1188
+ get cache() {
1189
+ let {
1190
+ cache
1191
+ } = this._instanceCache;
1192
+ if (!cache) {
1193
+ cache = this._instanceCache.cache = this.createCache(this._instanceCache._storeWrapper);
1194
+ }
1195
+ return cache;
1196
+ }
1197
+
1198
+ /** @private */
1199
+ destroy() {
1200
+ if (this.isDestroyed) {
1201
+ // @ember/test-helpers will call destroy multiple times
1202
+ return;
1203
+ }
1204
+ this.isDestroying = true;
1205
+ this._graph?.destroy();
1206
+ this._graph = undefined;
1207
+ this.notifications.destroy();
1208
+ this.recordArrayManager.destroy();
1209
+ this.cacheKeyManager.destroy();
1210
+ this._instanceCache.clear();
1211
+ this.isDestroyed = true;
1212
+ }
1213
+
1214
+ /**
1215
+ * This method
1216
+ *
1217
+ * @private
1218
+ */
1219
+ static create(args) {
1220
+ return new this(args);
1221
+ }
1222
+ }
1223
+
1224
+ /**
1225
+ * This type exists for internal use only for
1226
+ * where intimate contracts still exist either for
1227
+ * the Test Suite or for Legacy code.
1228
+ *
1229
+ * @private
1230
+ */
1231
+
1232
+ /**
1233
+ * Upgrade the type for Store to PrivateStore, which will also
1234
+ * upgrade any associated types to their private equivalents.
1235
+ *
1236
+ * @private
1237
+ */
1238
+ function assertPrivateStore(store) {}
1239
+ /**
1240
+ * Upgrade the type for Store to PrivateStore, which will also
1241
+ * upgrade any associated types to their private equivalents.
1242
+ *
1243
+ * @private
1244
+ */
1245
+ function isPrivateStore(store) {
1246
+ return store;
1247
+ }
1248
+ function isMaybeIdentifier(maybeIdentifier) {
1249
+ return Boolean(maybeIdentifier !== null && typeof maybeIdentifier === 'object' && ('id' in maybeIdentifier && 'type' in maybeIdentifier && maybeIdentifier.id && maybeIdentifier.type || maybeIdentifier.lid));
1250
+ }
1251
+ function normalizeProperties(store, identifier, properties) {
1252
+ // assert here
1253
+ if (properties !== undefined) {
1254
+ const {
1255
+ type
1256
+ } = identifier;
1257
+
1258
+ // convert relationship Records to RecordDatas before passing to RecordData
1259
+ const defs = store.schema.fields({
1260
+ type
1261
+ });
1262
+ if (defs.size) {
1263
+ const keys = Object.keys(properties);
1264
+ for (let i = 0; i < keys.length; i++) {
1265
+ const prop = keys[i];
1266
+ const field = defs.get(prop);
1267
+ if (!field) continue;
1268
+ if (field.kind === 'hasMany') {
1269
+ properties[prop] = extractIdentifiersFromRecords(properties[prop]);
1270
+ } else if (field.kind === 'belongsTo') {
1271
+ properties[prop] = extractIdentifierFromRecord(properties[prop]);
1272
+ }
1273
+ }
1274
+ }
1275
+ }
1276
+ return properties;
1277
+ }
1278
+ function extractIdentifiersFromRecords(records) {
1279
+ return records.map(record => extractIdentifierFromRecord(record));
1280
+ }
1281
+ function extractIdentifierFromRecord(recordOrPromiseRecord) {
1282
+ if (!recordOrPromiseRecord) {
1283
+ return null;
1284
+ }
1285
+ const extract = recordIdentifierFor;
1286
+ return extract(recordOrPromiseRecord);
1287
+ }
1288
+ const MUTATION_OPS = new Set(['createRecord', 'updateRecord', 'deleteRecord']);
1289
+ function calcShouldFetch(store, request, hasCachedValue, identifier) {
1290
+ const {
1291
+ cacheOptions
1292
+ } = request;
1293
+ return request.op && MUTATION_OPS.has(request.op) || cacheOptions?.reload || !hasCachedValue || (store.lifetimes && identifier ? store.lifetimes.isHardExpired(identifier, store) : false);
1294
+ }
1295
+ function calcShouldBackgroundFetch(store, request, willFetch, identifier) {
1296
+ const {
1297
+ cacheOptions
1298
+ } = request;
1299
+ return cacheOptions?.backgroundReload || (store.lifetimes && identifier ? store.lifetimes.isSoftExpired(identifier, store) : false);
1300
+ }
1301
+ function isMutation(request) {
1302
+ return Boolean(request.op && MUTATION_OPS.has(request.op));
1303
+ }
1304
+ function isCacheAffecting(document) {
1305
+ if (!isMutation(document.request)) {
1306
+ return true;
1307
+ }
1308
+ // a mutation combined with a 204 has no cache impact when no known records were involved
1309
+ // a createRecord with a 201 with an empty response and no known records should similarly
1310
+ // have no cache impact
1311
+
1312
+ if (document.request.op === 'createRecord' && document.response?.status === 201) {
1313
+ return document.content ? Object.keys(document.content).length > 0 : false;
1314
+ }
1315
+ return document.response?.status !== 204;
1316
+ }
1317
+ function isAggregateError(error) {
1318
+ return error instanceof AggregateError || error.name === 'AggregateError' && Array.isArray(error.errors);
1319
+ }
1320
+ // TODO @runspired, consider if we should deep freeze errors (potentially only in debug) vs cloning them
1321
+ function cloneError(error) {
1322
+ const isAggregate = isAggregateError(error);
1323
+ const cloned = isAggregate ? new AggregateError(structuredClone(error.errors), error.message) : new Error(error.message);
1324
+ cloned.stack = error.stack;
1325
+ cloned.error = error.error;
1326
+
1327
+ // copy over enumerable properties
1328
+ Object.assign(cloned, error);
1329
+ return cloned;
1330
+ }
1331
+ function getPriority(identifier, deduped, priority) {
1332
+ if (identifier) {
1333
+ const existing = deduped.get(identifier);
1334
+ if (existing) {
1335
+ return existing.priority;
1336
+ }
1337
+ }
1338
+ return priority;
1339
+ }
1340
+
1341
+ /**
1342
+ * A CacheHandler that adds support for using an WarpDrive Cache with a RequestManager.
1343
+ *
1344
+ * This handler will only run when a request has supplied a `store` instance. Requests
1345
+ * issued by the store via `store.request()` will automatically have the `store` instance
1346
+ * attached to the request.
1347
+ *
1348
+ * ```ts
1349
+ * requestManager.request({
1350
+ * store: store,
1351
+ * url: '/api/posts',
1352
+ * method: 'GET'
1353
+ * });
1354
+ * ```
1355
+ *
1356
+ * When this handler elects to handle a request, it will return the raw `StructuredDocument`
1357
+ * unless the request has `[EnableHydration]` set to `true`. In this case, the handler will
1358
+ * return a `Document` instance that will automatically update the UI when the cache is updated
1359
+ * in the future and will hydrate any identifiers in the StructuredDocument into Record instances.
1360
+ *
1361
+ * When issuing a request via the store, [EnableHydration] is automatically set to `true`. This
1362
+ * means that if desired you can issue requests that utilize the cache without needing to also
1363
+ * utilize Record instances if desired.
1364
+ *
1365
+ * Said differently, you could elect to issue all requests via a RequestManager, without ever using
1366
+ * the store directly, by setting [EnableHydration] to `true` and providing a store instance. Not
1367
+ * necessarily the most useful thing, but the decoupled nature of the RequestManager and incremental-feature
1368
+ * approach of WarpDrive allows for this flexibility.
1369
+ *
1370
+ * ```ts
1371
+ * import { EnableHydration } from '@warp-drive/core/types/request';
1372
+ *
1373
+ * requestManager.request({
1374
+ * store: store,
1375
+ * url: '/api/posts',
1376
+ * method: 'GET',
1377
+ * [EnableHydration]: true
1378
+ * });
1379
+ *
1380
+ */
1381
+ const CacheHandler = {
1382
+ request(context, next) {
1383
+ // if we have no cache or no cache-key skip cache handling
1384
+ if (!context.request.store || context.request.cacheOptions?.[SkipCache]) {
1385
+ return next(context.request);
1386
+ }
1387
+ const {
1388
+ store
1389
+ } = context.request;
1390
+ const identifier = store.cacheKeyManager.getOrCreateDocumentIdentifier(context.request);
1391
+ if (identifier) {
1392
+ context.setIdentifier(identifier);
1393
+ }
1394
+
1395
+ // used to dedupe existing requests that match
1396
+ const DEDUPE = store.requestManager._deduped;
1397
+ const activeRequest = identifier && DEDUPE.get(identifier);
1398
+ const peeked = identifier ? store.cache.peekRequest(identifier) : null;
1399
+
1400
+ // determine if we should skip cache
1401
+ if (calcShouldFetch(store, context.request, !!peeked, identifier)) {
1402
+ if (activeRequest) {
1403
+ activeRequest.priority = {
1404
+ blocking: true
1405
+ };
1406
+ return activeRequest.promise;
1407
+ }
1408
+ let promise = fetchContentAndHydrate(next, context, identifier, {
1409
+ blocking: true
1410
+ });
1411
+ if (identifier) {
1412
+ promise = promise.finally(() => {
1413
+ DEDUPE.delete(identifier);
1414
+ store.notifications.notify(identifier, 'state', null);
1415
+ });
1416
+ DEDUPE.set(identifier, {
1417
+ priority: {
1418
+ blocking: true
1419
+ },
1420
+ promise
1421
+ });
1422
+ queueMicrotask(() => {
1423
+ store.notifications.notify(identifier, 'state', null);
1424
+ });
1425
+ }
1426
+ store.requestManager._pending.set(context.id, promise);
1427
+ return promise;
1428
+ }
1429
+
1430
+ // if we have not skipped cache, determine if we should update behind the scenes
1431
+ if (calcShouldBackgroundFetch(store, context.request, false, identifier)) {
1432
+ let promise = activeRequest?.promise || fetchContentAndHydrate(next, context, identifier, {
1433
+ blocking: false
1434
+ });
1435
+ if (identifier && !activeRequest) {
1436
+ promise = promise.finally(() => {
1437
+ DEDUPE.delete(identifier);
1438
+ store.notifications.notify(identifier, 'state', null);
1439
+ });
1440
+ DEDUPE.set(identifier, {
1441
+ priority: {
1442
+ blocking: false
1443
+ },
1444
+ promise
1445
+ });
1446
+ queueMicrotask(() => {
1447
+ store.notifications.notify(identifier, 'state', null);
1448
+ });
1449
+ }
1450
+ store.requestManager._pending.set(context.id, promise);
1451
+ }
1452
+ const shouldHydrate = context.request[EnableHydration] || false;
1453
+ context.setResponse(peeked.response);
1454
+ if ('error' in peeked) {
1455
+ const content = shouldHydrate ? maybeUpdateUiObjects(store, context.request, {
1456
+ shouldHydrate,
1457
+ identifier
1458
+ }, peeked.content) : peeked.content;
1459
+ const newError = cloneError(peeked);
1460
+ newError.content = content;
1461
+ throw newError;
1462
+ }
1463
+ const result = shouldHydrate ? maybeUpdateUiObjects(store, context.request, {
1464
+ shouldHydrate,
1465
+ identifier
1466
+ }, peeked.content) : peeked.content;
1467
+ return result;
1468
+ }
1469
+ };
1470
+ function maybeUpdateUiObjects(store, request, options, document) {
1471
+ const {
1472
+ identifier
1473
+ } = options;
1474
+ if (!document || !options.shouldHydrate) {
1475
+ return document ?? null;
1476
+ }
1477
+ if (identifier) {
1478
+ return store._instanceCache.getDocument(identifier);
1479
+ }
1480
+
1481
+ // if we don't have an identifier, we give the document
1482
+ // its own local cache
1483
+ return createReactiveDocument(store, null, {
1484
+ request,
1485
+ document
1486
+ });
1487
+ }
1488
+ function updateCacheForSuccess(store, request, options, document) {
1489
+ let response = null;
1490
+ if (isMutation(request)) {
1491
+ if (Array.isArray(request.records)) {
1492
+ response = store.cache.didCommit(request.records, document);
1493
+ } else if (request.data?.record) {
1494
+ // legacy fallback, the data option should no longer be used for this
1495
+ response = store.cache.didCommit(request.data.record, document);
1496
+
1497
+ // a mutation combined with a 204 has no cache impact when no known records were involved
1498
+ // a createRecord with a 201 with an empty response and no known records should similarly
1499
+ // have no cache impact
1500
+ } else if (isCacheAffecting(document)) {
1501
+ response = store.cache.put(document);
1502
+ }
1503
+ } else {
1504
+ response = store.cache.put(document);
1505
+ }
1506
+ return maybeUpdateUiObjects(store, request, options, response);
1507
+ }
1508
+ function handleFetchSuccess(store, context, options, document) {
1509
+ const {
1510
+ request
1511
+ } = context;
1512
+ store.requestManager._pending.delete(context.id);
1513
+ store._enableAsyncFlush = true;
1514
+ let response;
1515
+ store._join(() => {
1516
+ response = updateCacheForSuccess(store, request, options, document);
1517
+ });
1518
+ store._enableAsyncFlush = null;
1519
+ if (store.lifetimes?.didRequest) {
1520
+ store.lifetimes.didRequest(context.request, document.response, options.identifier, store);
1521
+ }
1522
+ const finalPriority = getPriority(options.identifier, store.requestManager._deduped, options.priority);
1523
+ if (finalPriority.blocking) {
1524
+ return response;
1525
+ } else {
1526
+ store.notifications._flush();
1527
+ }
1528
+ }
1529
+ function updateCacheForError(store, context, options, error) {
1530
+ let response;
1531
+ if (isMutation(context.request)) {
1532
+ // TODO similar to didCommit we should spec this to be similar to cache.put for handling full response
1533
+ // currently we let the response remain undefiend.
1534
+ const errors = error && error.content && typeof error.content === 'object' && 'errors' in error.content && Array.isArray(error.content.errors) ? error.content.errors : undefined;
1535
+ if (Array.isArray(context.request.records)) {
1536
+ store.cache.commitWasRejected(context.request.records, errors);
1537
+ } else if (context.request.data?.record) {
1538
+ // legacy fallback, the data option should no longer be used for this
1539
+ store.cache.commitWasRejected(context.request.data.record, errors);
1540
+ } else {
1541
+ store.cache.put(error);
1542
+ }
1543
+ } else {
1544
+ response = store.cache.put(error);
1545
+ return maybeUpdateUiObjects(store, context.request, options, response);
1546
+ }
1547
+ }
1548
+ function handleFetchError(store, context, options, error) {
1549
+ store.requestManager._pending.delete(context.id);
1550
+ if (context.request.signal?.aborted) {
1551
+ throw error;
1552
+ }
1553
+ store._enableAsyncFlush = true;
1554
+ let response;
1555
+ store._join(() => {
1556
+ response = updateCacheForError(store, context, options, error);
1557
+ });
1558
+ store._enableAsyncFlush = null;
1559
+ if (options.identifier && store.lifetimes?.didRequest) {
1560
+ store.lifetimes.didRequest(context.request, error.response, options.identifier, store);
1561
+ }
1562
+ if (isMutation(context.request)) {
1563
+ throw error;
1564
+ }
1565
+ const finalPriority = getPriority(options.identifier, store.requestManager._deduped, options.priority);
1566
+ if (finalPriority.blocking) {
1567
+ const newError = cloneError(error);
1568
+ newError.content = response;
1569
+ throw newError;
1570
+ } else {
1571
+ store.notifications._flush();
1572
+ }
1573
+ }
1574
+ function fetchContentAndHydrate(next, context, identifier, priority) {
1575
+ const {
1576
+ store
1577
+ } = context.request;
1578
+ const shouldHydrate = context.request[EnableHydration] || false;
1579
+ const options = {
1580
+ shouldHydrate,
1581
+ identifier,
1582
+ priority
1583
+ };
1584
+ let isMut = false;
1585
+ if (isMutation(context.request)) {
1586
+ isMut = true;
1587
+ if (Array.isArray(context.request.records)) {
1588
+ context.request.records.forEach(record => {
1589
+ store.cache.willCommit(record, context);
1590
+ });
1591
+ } else if (context.request.data?.record) {
1592
+ // legacy fallback, the data option should no longer be used for this
1593
+ store.cache.willCommit(context.request.data.record, context);
1594
+ }
1595
+ }
1596
+ if (store.lifetimes?.willRequest) {
1597
+ store.lifetimes.willRequest(context.request, identifier, store);
1598
+ }
1599
+ const promise = next(context.request).then(document => {
1600
+ return handleFetchSuccess(store, context, options, document);
1601
+ }, error => {
1602
+ return handleFetchError(store, context, options, error);
1603
+ });
1604
+ if (!isMut) {
1605
+ return promise;
1606
+ }
1607
+
1608
+ // for mutations we need to enqueue the promise with the requestStateService
1609
+ // TODO should we enque a request per record in records?
1610
+ const record = context.request.data?.record || context.request.records?.[0];
1611
+ return store._requestCache._enqueue(promise, {
1612
+ data: [{
1613
+ op: 'saveRecord',
1614
+ recordIdentifier: record,
1615
+ options: undefined
1616
+ }]
1617
+ });
1618
+ }
1619
+ export { CacheHandler as C, Store as S, assertPrivateStore as a, isPrivateStore as i };