@warp-drive/core 5.9.0-beta.1 → 5.9.0-beta.3

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 (277) hide show
  1. package/dist/-private-BL9zXgJB.js +3530 -0
  2. package/dist/-private-BL9zXgJB.js.map +1 -0
  3. package/dist/{-private-DMzvF_Q6.js → -private-Cxa8cMBj.js} +2 -2
  4. package/dist/-private-Cxa8cMBj.js.map +1 -0
  5. package/dist/{unpkg/dev-deprecated/-private-DL4tfrv9.js → -private-xK1KgxZJ.js} +2 -2
  6. package/dist/{-private-b1g4dhl0.js.map → -private-xK1KgxZJ.js.map} +1 -1
  7. package/{declarations/concepts-LHsLJZMl.d.ts → dist/concepts-DFldVwEM.d.ts} +2 -2
  8. package/{declarations/concepts-LHsLJZMl.d.ts.map → dist/concepts-DFldVwEM.d.ts.map} +1 -1
  9. package/dist/configure.js +1 -1
  10. package/dist/graph/-private.d.ts +2 -0
  11. package/dist/graph/-private.js +46 -33
  12. package/dist/graph/-private.js.map +1 -1
  13. package/dist/index.d.ts +2 -0
  14. package/dist/index.js +1 -1
  15. package/{declarations/internal-Cz-893zD.d.ts → dist/internal-DtWOpxrR.d.ts} +2763 -2271
  16. package/dist/internal-DtWOpxrR.d.ts.map +1 -0
  17. package/dist/reactive/-private.d.ts +2 -0
  18. package/dist/reactive/-private.js +1 -1
  19. package/dist/reactive.d.ts +2 -0
  20. package/dist/reactive.js +3 -3
  21. package/{declarations → dist}/record-D3QQcaIR.d.ts.map +1 -1
  22. package/dist/{request--vRFALbQ.js → request-z2NByNx0.js} +2 -2
  23. package/dist/request-z2NByNx0.js.map +1 -0
  24. package/dist/request.d.ts +2 -0
  25. package/dist/request.js +1 -1
  26. package/dist/signals/-leaked.d.ts +1060 -0
  27. package/dist/signals/-leaked.d.ts.map +1 -0
  28. package/dist/signals/-leaked.js +2 -2
  29. package/dist/{src-Dex_phWI.js → src-s5HHjglV.js} +192 -53
  30. package/dist/src-s5HHjglV.js.map +1 -0
  31. package/dist/store/-private.d.ts +2 -0
  32. package/dist/store/-private.js +1 -1
  33. package/dist/store-DNF9Rgoh.js.map +1 -1
  34. package/dist/store.d.ts +2 -0
  35. package/{declarations → dist}/types/-private.d.ts +1 -1
  36. package/{declarations → dist}/types/-private.d.ts.map +1 -1
  37. package/dist/types/-private.js +1 -1
  38. package/dist/types/cache.d.ts +2 -0
  39. package/dist/types/record.js.map +1 -1
  40. package/dist/types/request.d.ts +2 -0
  41. package/dist/types/request.js +1 -1
  42. package/dist/types/request.js.map +1 -1
  43. package/dist/types/runtime.js +1 -1
  44. package/dist/types/schema/concepts.d.ts +2 -0
  45. package/dist/types/schema/fields.js.map +1 -1
  46. package/dist/types/schema/schema-service.d.ts +2 -0
  47. package/dist/types/symbols.js +1 -1
  48. package/dist/types/symbols.js.map +1 -1
  49. package/{declarations → dist}/types.d.ts +1 -1
  50. package/dist/{-private-b1g4dhl0.js → unpkg/dev/-private-BGCYELwo.js} +2 -2
  51. package/dist/unpkg/{dev-deprecated/-private-DL4tfrv9.js.map → dev/-private-BGCYELwo.js.map} +1 -1
  52. package/dist/unpkg/{dev-deprecated/-private-2RfQ2761.js → dev/-private-DhiS6yOR.js} +2 -2
  53. package/dist/unpkg/dev/-private-DhiS6yOR.js.map +1 -0
  54. package/dist/unpkg/dev/-private-pNQae3qH.js +3519 -0
  55. package/dist/unpkg/dev/-private-pNQae3qH.js.map +1 -0
  56. package/dist/unpkg/dev/configure.js +1 -1
  57. package/dist/unpkg/dev/graph/-private.js +46 -33
  58. package/dist/unpkg/dev/graph/-private.js.map +1 -1
  59. package/dist/unpkg/dev/index.js +1 -1
  60. package/dist/unpkg/dev/reactive/-private.js +1 -1
  61. package/dist/unpkg/dev/reactive.js +3 -3
  62. package/dist/unpkg/{dev-deprecated/request-DAuXbfYi.js → dev/request-BbbzRou7.js} +2 -2
  63. package/dist/unpkg/dev/request-BbbzRou7.js.map +1 -0
  64. package/dist/unpkg/dev/request.js +1 -1
  65. package/dist/unpkg/dev/{runtime-EoVKAhTv.js → runtime-DoDtzXJb.js} +2 -2
  66. package/dist/unpkg/dev/runtime-DoDtzXJb.js.map +1 -0
  67. package/dist/unpkg/dev/signals/-leaked.js +2 -2
  68. package/dist/unpkg/dev/{src-Bxlr_vue.js → src-Cf7NXXR2.js} +194 -55
  69. package/dist/unpkg/dev/src-Cf7NXXR2.js.map +1 -0
  70. package/dist/unpkg/dev/store/-private.js +1 -1
  71. package/dist/unpkg/{dev-deprecated/store-TcP2H4Af.js → dev/store-DamE3C4y.js} +2 -2
  72. package/dist/unpkg/dev/store-DamE3C4y.js.map +1 -0
  73. package/dist/unpkg/dev/store.js +1 -1
  74. package/dist/unpkg/dev/types/-private.js +1 -1
  75. package/dist/unpkg/dev/types/record.js.map +1 -1
  76. package/dist/unpkg/dev/types/request.js +1 -1
  77. package/dist/unpkg/dev/types/request.js.map +1 -1
  78. package/dist/unpkg/dev/types/runtime.js +1 -1
  79. package/dist/unpkg/dev/types/schema/fields.js.map +1 -1
  80. package/dist/unpkg/dev/types/symbols.js +1 -1
  81. package/dist/unpkg/dev/types/symbols.js.map +1 -1
  82. package/dist/unpkg/{dev/-private-DL4tfrv9.js → dev-deprecated/-private-BGCYELwo.js} +2 -2
  83. package/dist/unpkg/{prod/-private-Z9i0icpE.js.map → dev-deprecated/-private-BGCYELwo.js.map} +1 -1
  84. package/dist/unpkg/{dev/-private-2RfQ2761.js → dev-deprecated/-private-DhiS6yOR.js} +2 -2
  85. package/dist/unpkg/dev-deprecated/-private-DhiS6yOR.js.map +1 -0
  86. package/dist/unpkg/dev-deprecated/-private-pNQae3qH.js +3519 -0
  87. package/dist/unpkg/dev-deprecated/-private-pNQae3qH.js.map +1 -0
  88. package/dist/unpkg/dev-deprecated/configure.js +1 -1
  89. package/dist/unpkg/dev-deprecated/graph/-private.js +47 -34
  90. package/dist/unpkg/dev-deprecated/graph/-private.js.map +1 -1
  91. package/dist/unpkg/dev-deprecated/index.js +1 -1
  92. package/dist/unpkg/dev-deprecated/reactive/-private.js +1 -1
  93. package/dist/unpkg/dev-deprecated/reactive.js +3 -3
  94. package/dist/unpkg/{dev/request-DAuXbfYi.js → dev-deprecated/request-BbbzRou7.js} +2 -2
  95. package/dist/unpkg/dev-deprecated/request-BbbzRou7.js.map +1 -0
  96. package/dist/unpkg/dev-deprecated/request.js +1 -1
  97. package/dist/unpkg/dev-deprecated/{runtime-BacZMq1r.js → runtime-CPL2BGgT.js} +2 -2
  98. package/dist/unpkg/dev-deprecated/runtime-CPL2BGgT.js.map +1 -0
  99. package/dist/unpkg/dev-deprecated/signals/-leaked.js +2 -2
  100. package/dist/unpkg/dev-deprecated/{src-DEl2Ca3T.js → src-CSuFUXv4.js} +195 -56
  101. package/dist/unpkg/dev-deprecated/src-CSuFUXv4.js.map +1 -0
  102. package/dist/unpkg/dev-deprecated/store/-private.js +1 -1
  103. package/dist/unpkg/{dev/store-DmiFvT1B.js → dev-deprecated/store-Bsdz5mRe.js} +2 -2
  104. package/dist/unpkg/dev-deprecated/store-Bsdz5mRe.js.map +1 -0
  105. package/dist/unpkg/dev-deprecated/store.js +1 -1
  106. package/dist/unpkg/dev-deprecated/types/-private.js +1 -1
  107. package/dist/unpkg/dev-deprecated/types/record.js.map +1 -1
  108. package/dist/unpkg/dev-deprecated/types/request.js +1 -1
  109. package/dist/unpkg/dev-deprecated/types/request.js.map +1 -1
  110. package/dist/unpkg/dev-deprecated/types/runtime.js +1 -1
  111. package/dist/unpkg/dev-deprecated/types/schema/fields.js.map +1 -1
  112. package/dist/unpkg/dev-deprecated/types/symbols.js +1 -1
  113. package/dist/unpkg/dev-deprecated/types/symbols.js.map +1 -1
  114. package/dist/unpkg/prod/-private-8gd8hbwm.js +22 -0
  115. package/dist/unpkg/{prod-deprecated/-private-Z9i0icpE.js.map → prod/-private-8gd8hbwm.js.map} +1 -1
  116. package/dist/unpkg/prod/{-private-BK71-uXR.js → -private-B6aLbrgV.js} +2 -2
  117. package/dist/unpkg/prod/-private-B6aLbrgV.js.map +1 -0
  118. package/dist/unpkg/prod/-private-ggVX_Iob.js +3294 -0
  119. package/dist/unpkg/prod/-private-ggVX_Iob.js.map +1 -0
  120. package/dist/unpkg/prod/configure.js +1 -1
  121. package/dist/unpkg/prod/graph/-private.js +45 -32
  122. package/dist/unpkg/prod/graph/-private.js.map +1 -1
  123. package/dist/unpkg/prod/index.js +1 -1
  124. package/dist/unpkg/prod/reactive/-private.js +1 -1
  125. package/dist/unpkg/prod/reactive.js +3 -3
  126. package/dist/unpkg/prod/{request-BcJNzSgv.js → request-BoeppjDj.js} +2 -2
  127. package/dist/unpkg/prod/request-BoeppjDj.js.map +1 -0
  128. package/dist/unpkg/prod/request.js +1 -1
  129. package/dist/unpkg/prod/signals/-leaked.js +2 -2
  130. package/dist/unpkg/prod/{src-Dzz-j6pp.js → src-C0wuASrN.js} +196 -53
  131. package/dist/unpkg/prod/src-C0wuASrN.js.map +1 -0
  132. package/dist/unpkg/prod/store/-private.js +1 -1
  133. package/dist/unpkg/prod/store-BWhmb7Ob.js.map +1 -1
  134. package/dist/unpkg/prod/types/-private.js +1 -1
  135. package/dist/unpkg/prod/types/record.js.map +1 -1
  136. package/dist/unpkg/prod/types/request.js +1 -1
  137. package/dist/unpkg/prod/types/request.js.map +1 -1
  138. package/dist/unpkg/prod/types/runtime.js +1 -1
  139. package/dist/unpkg/prod/types/schema/fields.js.map +1 -1
  140. package/dist/unpkg/prod/types/symbols.js +1 -1
  141. package/dist/unpkg/prod/types/symbols.js.map +1 -1
  142. package/dist/unpkg/prod-deprecated/{-private-Z9i0icpE.js → -private-8gd8hbwm.js} +2 -2
  143. package/dist/unpkg/{dev/-private-DL4tfrv9.js.map → prod-deprecated/-private-8gd8hbwm.js.map} +1 -1
  144. package/dist/unpkg/prod-deprecated/{-private-BK71-uXR.js → -private-B6aLbrgV.js} +2 -2
  145. package/dist/unpkg/prod-deprecated/-private-B6aLbrgV.js.map +1 -0
  146. package/dist/unpkg/prod-deprecated/-private-ggVX_Iob.js +3294 -0
  147. package/dist/unpkg/prod-deprecated/-private-ggVX_Iob.js.map +1 -0
  148. package/dist/unpkg/prod-deprecated/configure.js +1 -1
  149. package/dist/unpkg/prod-deprecated/graph/-private.js +46 -35
  150. package/dist/unpkg/prod-deprecated/graph/-private.js.map +1 -1
  151. package/dist/unpkg/prod-deprecated/index.js +1 -1
  152. package/dist/unpkg/prod-deprecated/reactive/-private.js +1 -1
  153. package/dist/unpkg/prod-deprecated/reactive.js +3 -3
  154. package/dist/unpkg/prod-deprecated/{request-BcJNzSgv.js → request-BoeppjDj.js} +2 -2
  155. package/dist/unpkg/prod-deprecated/request-BoeppjDj.js.map +1 -0
  156. package/dist/unpkg/prod-deprecated/request.js +1 -1
  157. package/dist/unpkg/prod-deprecated/signals/-leaked.js +2 -2
  158. package/dist/unpkg/prod-deprecated/{src-BOifHFQ5.js → src-BXOgNqmz.js} +197 -54
  159. package/dist/unpkg/prod-deprecated/src-BXOgNqmz.js.map +1 -0
  160. package/dist/unpkg/prod-deprecated/store/-private.js +1 -1
  161. package/dist/unpkg/prod-deprecated/store-BWhmb7Ob.js.map +1 -1
  162. package/dist/unpkg/prod-deprecated/types/-private.js +1 -1
  163. package/dist/unpkg/prod-deprecated/types/record.js.map +1 -1
  164. package/dist/unpkg/prod-deprecated/types/request.js +1 -1
  165. package/dist/unpkg/prod-deprecated/types/request.js.map +1 -1
  166. package/dist/unpkg/prod-deprecated/types/runtime.js +1 -1
  167. package/dist/unpkg/prod-deprecated/types/schema/fields.js.map +1 -1
  168. package/dist/unpkg/prod-deprecated/types/symbols.js +1 -1
  169. package/dist/unpkg/prod-deprecated/types/symbols.js.map +1 -1
  170. package/package.json +15 -19
  171. package/declarations/graph/-private.d.ts +0 -2
  172. package/declarations/index.d.ts +0 -2
  173. package/declarations/internal-Cz-893zD.d.ts.map +0 -1
  174. package/declarations/reactive/-private.d.ts +0 -2
  175. package/declarations/reactive.d.ts +0 -2
  176. package/declarations/request.d.ts +0 -2
  177. package/declarations/signals/-leaked.d.ts +0 -63
  178. package/declarations/signals/-leaked.d.ts.map +0 -1
  179. package/declarations/store/-private.d.ts +0 -2
  180. package/declarations/store.d.ts +0 -8358
  181. package/declarations/store.d.ts.map +0 -1
  182. package/declarations/types/cache.d.ts +0 -2
  183. package/declarations/types/request.d.ts +0 -2
  184. package/declarations/types/schema/concepts.d.ts +0 -2
  185. package/declarations/types/schema/schema-service.d.ts +0 -2
  186. package/dist/-private-DMzvF_Q6.js.map +0 -1
  187. package/dist/-private-HjaQ1wp1.js +0 -1695
  188. package/dist/-private-HjaQ1wp1.js.map +0 -1
  189. package/dist/request--vRFALbQ.js.map +0 -1
  190. package/dist/src-Dex_phWI.js.map +0 -1
  191. package/dist/unpkg/dev/-private-2RfQ2761.js.map +0 -1
  192. package/dist/unpkg/dev/-private-CM1zxNws.js +0 -1684
  193. package/dist/unpkg/dev/-private-CM1zxNws.js.map +0 -1
  194. package/dist/unpkg/dev/request-DAuXbfYi.js.map +0 -1
  195. package/dist/unpkg/dev/runtime-EoVKAhTv.js.map +0 -1
  196. package/dist/unpkg/dev/src-Bxlr_vue.js.map +0 -1
  197. package/dist/unpkg/dev/store-DmiFvT1B.js.map +0 -1
  198. package/dist/unpkg/dev-deprecated/-private-2RfQ2761.js.map +0 -1
  199. package/dist/unpkg/dev-deprecated/-private-CM1zxNws.js +0 -1684
  200. package/dist/unpkg/dev-deprecated/-private-CM1zxNws.js.map +0 -1
  201. package/dist/unpkg/dev-deprecated/request-DAuXbfYi.js.map +0 -1
  202. package/dist/unpkg/dev-deprecated/runtime-BacZMq1r.js.map +0 -1
  203. package/dist/unpkg/dev-deprecated/src-DEl2Ca3T.js.map +0 -1
  204. package/dist/unpkg/dev-deprecated/store-TcP2H4Af.js.map +0 -1
  205. package/dist/unpkg/prod/-private-BK71-uXR.js.map +0 -1
  206. package/dist/unpkg/prod/-private-TNaS5Piv.js +0 -1494
  207. package/dist/unpkg/prod/-private-TNaS5Piv.js.map +0 -1
  208. package/dist/unpkg/prod/-private-Z9i0icpE.js +0 -22
  209. package/dist/unpkg/prod/request-BcJNzSgv.js.map +0 -1
  210. package/dist/unpkg/prod/src-Dzz-j6pp.js.map +0 -1
  211. package/dist/unpkg/prod-deprecated/-private-BK71-uXR.js.map +0 -1
  212. package/dist/unpkg/prod-deprecated/-private-TNaS5Piv.js +0 -1494
  213. package/dist/unpkg/prod-deprecated/-private-TNaS5Piv.js.map +0 -1
  214. package/dist/unpkg/prod-deprecated/request-BcJNzSgv.js.map +0 -1
  215. package/dist/unpkg/prod-deprecated/src-BOifHFQ5.js.map +0 -1
  216. /package/{declarations → dist}/aliases-BWYW5EhX.d.ts +0 -0
  217. /package/{declarations → dist}/aliases-BWYW5EhX.d.ts.map +0 -0
  218. /package/{declarations → dist}/build-config/babel-macros.d.ts +0 -0
  219. /package/{declarations → dist}/build-config/canary-features.d.ts +0 -0
  220. /package/{declarations → dist}/build-config/debugging.d.ts +0 -0
  221. /package/{declarations → dist}/build-config/deprecations.d.ts +0 -0
  222. /package/{declarations → dist}/build-config/env.d.ts +0 -0
  223. /package/{declarations → dist}/build-config/macros.d.ts +0 -0
  224. /package/{declarations → dist}/build-config.d.ts +0 -0
  225. /package/{declarations → dist}/change-C7kqv2kW.d.ts +0 -0
  226. /package/{declarations → dist}/change-C7kqv2kW.d.ts.map +0 -0
  227. /package/{declarations → dist}/configure-B_F639tN.d.ts +0 -0
  228. /package/{declarations → dist}/configure-B_F639tN.d.ts.map +0 -0
  229. /package/{declarations → dist}/configure.d.ts +0 -0
  230. /package/{declarations → dist}/document-BEn91SwT.d.ts +0 -0
  231. /package/{declarations → dist}/document-BEn91SwT.d.ts.map +0 -0
  232. /package/{declarations → dist}/error-50OSEhsF.d.ts +0 -0
  233. /package/{declarations → dist}/error-50OSEhsF.d.ts.map +0 -0
  234. /package/{declarations → dist}/fields-FM7peCiM.d.ts +0 -0
  235. /package/{declarations → dist}/fields-FM7peCiM.d.ts.map +0 -0
  236. /package/{declarations → dist}/graph-DLqYXP2z.d.ts +0 -0
  237. /package/{declarations → dist}/graph-DLqYXP2z.d.ts.map +0 -0
  238. /package/{declarations → dist}/identifier-DQnqOSJK.d.ts +0 -0
  239. /package/{declarations → dist}/identifier-DQnqOSJK.d.ts.map +0 -0
  240. /package/{declarations → dist}/json-api-raw-C5APJHHB.d.ts +0 -0
  241. /package/{declarations → dist}/json-api-raw-C5APJHHB.d.ts.map +0 -0
  242. /package/{declarations → dist}/mutations-CqtoGB4t.d.ts +0 -0
  243. /package/{declarations → dist}/mutations-CqtoGB4t.d.ts.map +0 -0
  244. /package/{declarations → dist}/operations-D1qA6r0_.d.ts +0 -0
  245. /package/{declarations → dist}/operations-D1qA6r0_.d.ts.map +0 -0
  246. /package/{declarations → dist}/params-DrEx3bf8.d.ts +0 -0
  247. /package/{declarations → dist}/params-DrEx3bf8.d.ts.map +0 -0
  248. /package/{declarations → dist}/raw-D5hnjiq7.d.ts +0 -0
  249. /package/{declarations → dist}/raw-D5hnjiq7.d.ts.map +0 -0
  250. /package/{declarations → dist}/record-D3QQcaIR.d.ts +0 -0
  251. /package/{declarations → dist}/relationship-CmHzMPKf.d.ts +0 -0
  252. /package/{declarations → dist}/relationship-CmHzMPKf.d.ts.map +0 -0
  253. /package/{declarations → dist}/symbols-DjRDCeX0.d.ts +0 -0
  254. /package/{declarations → dist}/symbols-DjRDCeX0.d.ts.map +0 -0
  255. /package/{declarations → dist}/types/cache/aliases.d.ts +0 -0
  256. /package/{declarations → dist}/types/cache/change.d.ts +0 -0
  257. /package/{declarations → dist}/types/cache/mutations.d.ts +0 -0
  258. /package/{declarations → dist}/types/cache/operations.d.ts +0 -0
  259. /package/{declarations → dist}/types/cache/relationship.d.ts +0 -0
  260. /package/{declarations → dist}/types/graph.d.ts +0 -0
  261. /package/{declarations → dist}/types/identifier.d.ts +0 -0
  262. /package/{declarations → dist}/types/json/raw.d.ts +0 -0
  263. /package/{declarations → dist}/types/params.d.ts +0 -0
  264. /package/{declarations → dist}/types/record.d.ts +0 -0
  265. /package/{declarations → dist}/types/runtime.d.ts +0 -0
  266. /package/{declarations → dist}/types/runtime.d.ts.map +0 -0
  267. /package/{declarations → dist}/types/schema/fields.d.ts +0 -0
  268. /package/{declarations → dist}/types/schema/fields.type-test.d.ts +0 -0
  269. /package/{declarations → dist}/types/spec/document.d.ts +0 -0
  270. /package/{declarations → dist}/types/spec/error.d.ts +0 -0
  271. /package/{declarations → dist}/types/spec/json-api-raw.d.ts +0 -0
  272. /package/{declarations → dist}/types/symbols.d.ts +0 -0
  273. /package/{declarations → dist}/types/utils.d.ts +0 -0
  274. /package/{declarations → dist}/utils/string.d.ts +0 -0
  275. /package/{declarations → dist}/utils/string.d.ts.map +0 -0
  276. /package/{declarations → dist}/utils-BtURiy8l.d.ts +0 -0
  277. /package/{declarations → dist}/utils-BtURiy8l.d.ts.map +0 -0
@@ -1,4 +1,4 @@
1
- import { a as setTransient, r as peekTransient, t as getOrSetGlobal } from "../-private-BK71-uXR.js";
1
+ import { a as setTransient, r as peekTransient, t as getOrSetGlobal } from "../-private-B6aLbrgV.js";
2
2
 
3
3
  //#region src/graph/-private/-utils.ts
4
4
  /** Retrieves the private {@link Store} instance from a capabilities manager (or any object exposing `_store`). */
@@ -81,12 +81,12 @@ function removeIdentifierCompletelyFromRelationship(graph, relationship, value,
81
81
  }
82
82
  }
83
83
  /** Notifies the store that a relationship has changed, provided the relationship has been accessed and is not currently being removed. */
84
- function notifyChange(graph, relationship) {
84
+ function notifyChange(graph, relationship, channel) {
85
85
  if (!relationship.accessed) return;
86
86
  const resourceKey = relationship.identifier;
87
87
  const key = relationship.definition.key;
88
88
  if (resourceKey === graph._removing) return;
89
- graph.store.notifyChange(resourceKey, "relationships", key);
89
+ graph.store.notifyChange(resourceKey, "relationships", key, channel);
90
90
  }
91
91
 
92
92
  //#endregion
@@ -138,13 +138,13 @@ function replaceRelatedRecordsLocal(graph, op, isRemote) {
138
138
  relationship.additions = diff.add;
139
139
  relationship.removals = diff.del;
140
140
  relationship.localState = diff.finalState;
141
- if (becameDirty && !wasDirty) notifyChange(graph, relationship);
141
+ if (becameDirty && !wasDirty) notifyChange(graph, relationship, "local");
142
142
  }
143
143
  function replaceRelatedRecordsRemote(graph, op, isRemote) {
144
144
  const resourceKeys = op.value;
145
145
  const relationship = graph.get(op.record, op.field);
146
146
  if (isRemote) graph._addToTransaction(relationship);
147
- const wasDirty = relationship.isDirty;
147
+ relationship.isDirty;
148
148
  if (!relationship.state.hasReceivedData) relationship.isDirty = true;
149
149
  relationship.state.hasReceivedData = true;
150
150
  const { definition } = relationship;
@@ -161,7 +161,8 @@ function replaceRelatedRecordsRemote(graph, op, isRemote) {
161
161
  relationship.remoteState = diff.finalState;
162
162
  if (diff.changed) relationship.isDirty = true;
163
163
  relationship._diff = diff;
164
- if (relationship.isDirty && !wasDirty) flushCanonical(graph, relationship);
164
+ if (diff.remoteOrderChanged) flushCanonical(graph, relationship, "remote");
165
+ if (diff.changed) flushCanonical(graph, relationship, "local");
165
166
  }
166
167
  function addToInverse(graph, resourceKey, key, value, isRemote) {
167
168
  const relationship = graph.get(resourceKey, key);
@@ -174,11 +175,12 @@ function addToInverse(graph, resourceKey, key, value, isRemote) {
174
175
  graph._addToTransaction(relationship);
175
176
  if (relationship.remoteState !== null) removeFromInverse(graph, relationship.remoteState, relationship.definition.inverseKey, resourceKey, isRemote);
176
177
  relationship.remoteState = value;
178
+ notifyChange(graph, relationship);
177
179
  }
178
180
  if (relationship.localState !== value) {
179
181
  if (!isRemote && relationship.localState) removeFromInverse(graph, relationship.localState, relationship.definition.inverseKey, resourceKey, isRemote);
180
182
  relationship.localState = value;
181
- notifyChange(graph, relationship);
183
+ if (!isRemote) notifyChange(graph, relationship, "local");
182
184
  }
183
185
  } else if (isHasMany(relationship)) {
184
186
  if (isRemote) {
@@ -195,7 +197,7 @@ function addToInverse(graph, resourceKey, key, value, isRemote) {
195
197
  }
196
198
  } else {
197
199
  if (!relationship.isDirty && !relationship.localState) relationship.localState = [];
198
- if (_add(graph, resourceKey, relationship, value, null, isRemote)) notifyChange(graph, relationship);
200
+ if (_add(graph, resourceKey, relationship, value, null, isRemote)) notifyChange(graph, relationship, "local");
199
201
  }
200
202
  } else if (isRemote) {
201
203
  if (!relationship.remoteMembers.has(value)) {
@@ -215,23 +217,24 @@ function removeFromInverse(graph, resourceKey, key, value, isRemote) {
215
217
  if (isRemote) {
216
218
  graph._addToTransaction(relationship);
217
219
  relationship.remoteState = null;
220
+ notifyChange(graph, relationship);
218
221
  }
219
222
  if (relationship.localState === value) {
220
223
  relationship.localState = null;
221
- notifyChange(graph, relationship);
224
+ if (!isRemote) notifyChange(graph, relationship, "local");
222
225
  }
223
226
  } else if (isHasMany(relationship)) {
224
227
  if (isRemote) {
225
228
  graph._addToTransaction(relationship);
226
229
  if (_removeRemote(relationship, value)) notifyChange(graph, relationship);
227
- } else if (_removeLocal(relationship, value)) notifyChange(graph, relationship);
230
+ } else if (_removeLocal(relationship, value)) notifyChange(graph, relationship, "local");
228
231
  } else if (isRemote) {
229
232
  relationship.remoteMembers.delete(value);
230
233
  relationship.localMembers.delete(value);
231
234
  } else if (value && relationship.localMembers.has(value)) relationship.localMembers.delete(value);
232
235
  }
233
- function flushCanonical(graph, rel) {
234
- if (rel.accessed) graph._scheduleLocalSync(rel);
236
+ function flushCanonical(graph, rel, channel) {
237
+ if (rel.accessed) graph._scheduleLocalSync(rel, channel);
235
238
  }
236
239
 
237
240
  //#endregion
@@ -270,13 +273,11 @@ function replaceRelatedRecord(graph, op, isRemote = false) {
270
273
  addToInverse(graph, op.value, definition.inverseKey, op.record, isRemote);
271
274
  }
272
275
  if (isRemote) {
276
+ notifyChange(graph, relationship);
273
277
  const { localState, remoteState } = relationship;
274
278
  if (localState && checkIfNew(graph._realStore, localState) && !remoteState) return;
275
- if (localState !== remoteState && localState === existingState) {
276
- relationship.localState = remoteState;
277
- notifyChange(graph, relationship);
278
- }
279
- } else notifyChange(graph, relationship);
279
+ if (localState !== remoteState && localState === existingState) relationship.localState = remoteState;
280
+ } else notifyChange(graph, relationship, "local");
280
281
  }
281
282
 
282
283
  //#endregion
@@ -845,7 +846,7 @@ function addToRelatedRecords(graph, op, isRemote) {
845
846
  if (!relationship.isDirty && !relationship.localState) relationship.localState = [];
846
847
  if (Array.isArray(value)) for (let i = 0; i < value.length; i++) addRelatedRecord(graph, relationship, record, value[i], index !== void 0 ? index + i : null, isRemote);
847
848
  else addRelatedRecord(graph, relationship, record, value, index ?? null, isRemote);
848
- notifyChange(graph, relationship);
849
+ notifyChange(graph, relationship, isRemote ? void 0 : "local");
849
850
  }
850
851
  function addRelatedRecord(graph, relationship, record, value, index, isRemote) {
851
852
  if (_add(graph, record, relationship, value, index, isRemote)) addToInverse(graph, value, relationship.definition.inverseKey, record, isRemote);
@@ -872,11 +873,16 @@ function mergeInRelationship(graph, rel, op) {
872
873
  else mergeImplicit(graph, rel, op);
873
874
  }
874
875
  function mergeBelongsTo(graph, rel, op) {
875
- if (rel.remoteState === op.record) rel.remoteState = op.value;
876
+ let changed = false;
877
+ if (rel.remoteState === op.record) {
878
+ rel.remoteState = op.value;
879
+ changed = true;
880
+ }
876
881
  if (rel.localState === op.record) {
877
882
  rel.localState = op.value;
878
- notifyChange(graph, rel);
883
+ changed = true;
879
884
  }
885
+ if (changed) notifyChange(graph, rel);
880
886
  }
881
887
  function mergeHasMany(graph, rel, op) {
882
888
  if (rel.remoteMembers.has(op.record)) {
@@ -929,7 +935,7 @@ function removeFromRelatedRecords(graph, op, isRemote) {
929
935
  }
930
936
  if (Array.isArray(value)) for (let i = 0; i < value.length; i++) removeRelatedRecord(graph, record, relationship, value[i], op.index ?? null, isRemote);
931
937
  else removeRelatedRecord(graph, record, relationship, value, op.index ?? null, isRemote);
932
- notifyChange(graph, relationship);
938
+ notifyChange(graph, relationship, isRemote ? void 0 : "local");
933
939
  }
934
940
  function removeRelatedRecord(graph, record, relationship, value, index, isRemote) {
935
941
  if (_remove(graph, record, relationship, value, index, isRemote)) removeFromInverse(graph, value, relationship.definition.inverseKey, record, isRemote);
@@ -1087,8 +1093,11 @@ var Graph = class {
1087
1093
  * {@link Graph.push} but not yet flushed into the graph by {@link Graph._flushRemoteQueue}.
1088
1094
  */
1089
1095
  /**
1090
- * The set of {@link CollectionEdge}s that have local changes pending notification, scheduled
1091
- * via {@link Graph._scheduleLocalSync} and drained by {@link Graph._flushLocalQueue}.
1096
+ * The {@link CollectionEdge}s that have changes pending notification, scheduled via
1097
+ * {@link Graph._scheduleLocalSync} and drained by {@link Graph._flushLocalQueue}, each
1098
+ * mapped to the {@link NotificationChannel} the notification should be scoped to —
1099
+ * `null` when it must reach every subscriber (scheduled unscoped, or scheduled for
1100
+ * both channels).
1092
1101
  */
1093
1102
  /**
1094
1103
  * The identifier of the current remote-update transaction, or `null` when no transaction is
@@ -1114,7 +1123,7 @@ var Graph = class {
1114
1123
  hasMany: void 0,
1115
1124
  deletions: []
1116
1125
  };
1117
- this._updatedRelationships = /* @__PURE__ */ new Set();
1126
+ this._updatedRelationships = /* @__PURE__ */ new Map();
1118
1127
  this._transaction = null;
1119
1128
  this._removing = null;
1120
1129
  this.silenceNotifications = false;
@@ -1394,12 +1403,16 @@ var Graph = class {
1394
1403
  }
1395
1404
  }
1396
1405
  /**
1397
- * Marks a {@link CollectionEdge} as having local changes that need to be notified, and
1398
- * schedules a flush of the local sync queue (see {@link Graph._flushLocalQueue}) if one is not
1399
- * already pending.
1406
+ * Marks a {@link CollectionEdge} as having changes that need to be notified on the given
1407
+ * {@link NotificationChannel} (omitted = unscoped, reaching every subscriber), and schedules
1408
+ * a flush of the sync queue (see {@link Graph._flushLocalQueue}) if one is not already
1409
+ * pending. Scheduling the same edge for both channels (or once unscoped) coalesces into a
1410
+ * single unscoped notification.
1400
1411
  */
1401
- _scheduleLocalSync(relationship) {
1402
- this._updatedRelationships.add(relationship);
1412
+ _scheduleLocalSync(relationship, channel) {
1413
+ const pending = this._updatedRelationships;
1414
+ if (!pending.has(relationship)) pending.set(relationship, channel ?? null);
1415
+ else if (pending.get(relationship) !== (channel ?? null)) pending.set(relationship, null);
1403
1416
  if (!this._willSyncLocal) {
1404
1417
  this._willSyncLocal = true;
1405
1418
  getStore(this.store)._schedule("sync", () => this._flushLocalQueue());
@@ -1443,13 +1456,13 @@ var Graph = class {
1443
1456
  if (!this._willSyncLocal) return;
1444
1457
  if (this.silenceNotifications) {
1445
1458
  this.silenceNotifications = false;
1446
- this._updatedRelationships = /* @__PURE__ */ new Set();
1459
+ this._updatedRelationships = /* @__PURE__ */ new Map();
1447
1460
  return;
1448
1461
  }
1449
1462
  this._willSyncLocal = false;
1450
1463
  const updated = this._updatedRelationships;
1451
- this._updatedRelationships = /* @__PURE__ */ new Set();
1452
- updated.forEach((rel) => notifyChange(this, rel));
1464
+ this._updatedRelationships = /* @__PURE__ */ new Map();
1465
+ updated.forEach((channel, rel) => notifyChange(this, rel, channel ?? void 0));
1453
1466
  }
1454
1467
  /**
1455
1468
  * Tears down the graph: clears all tracked identifiers/edges, removes it from the global