@warp-drive-mirror/core 5.10.0-alpha.21 → 5.10.0-alpha.23

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 (133) hide show
  1. package/dist/{-private-CvZfrDZl.js → -private-DhEjiHue.js} +2 -2
  2. package/dist/{-private-CvZfrDZl.js.map → -private-DhEjiHue.js.map} +1 -1
  3. package/dist/build-config/babel-macros.d.ts +5 -0
  4. package/dist/build-config/canary-features.d.ts +5 -0
  5. package/dist/build-config/debugging.d.ts +59 -0
  6. package/dist/build-config/deprecations.d.ts +5 -0
  7. package/dist/build-config.d.ts +17 -0
  8. package/dist/{concepts-vh86nAcd.d.ts → concepts-Db9ssz1h.d.ts} +3 -3
  9. package/dist/{concepts-vh86nAcd.d.ts.map → concepts-Db9ssz1h.d.ts.map} +1 -1
  10. package/dist/configure.d.ts +8 -0
  11. package/dist/configure.js +1 -1
  12. package/dist/{document-B8Fup751.d.ts → document-BUmwSPVO.d.ts} +2 -2
  13. package/dist/{document-B8Fup751.d.ts.map → document-BUmwSPVO.d.ts.map} +1 -1
  14. package/dist/{fields-r1rZJB9d.d.ts → fields-B-jO-dzB.d.ts} +111 -47
  15. package/dist/fields-B-jO-dzB.d.ts.map +1 -0
  16. package/dist/graph/-private.d.ts +1 -1
  17. package/dist/graph/-private.js +33 -20
  18. package/dist/graph/-private.js.map +1 -1
  19. package/dist/{graph-BqxaFjEb.d.ts → graph-CoQhsOgT.d.ts} +3 -3
  20. package/dist/{graph-BqxaFjEb.d.ts.map → graph-CoQhsOgT.d.ts.map} +1 -1
  21. package/dist/index.d.ts +1 -1
  22. package/dist/index.js +1 -1
  23. package/dist/{internal-D_WIXC4r.d.ts → internal-BrC3kM86.d.ts} +20 -6
  24. package/dist/internal-BrC3kM86.d.ts.map +1 -0
  25. package/dist/reactive/-private.d.ts +1 -1
  26. package/dist/reactive.d.ts +276 -1
  27. package/dist/reactive.js +2 -2
  28. package/dist/{request-CxtnNIIp.js → request-qKqD2aCa.js} +2 -2
  29. package/dist/{request-CxtnNIIp.js.map → request-qKqD2aCa.js.map} +1 -1
  30. package/dist/request.d.ts +9 -1
  31. package/dist/request.js +1 -1
  32. package/dist/signals/-leaked.d.ts +15 -1
  33. package/dist/signals/-leaked.d.ts.map +1 -1
  34. package/dist/signals/-leaked.js +1 -1
  35. package/dist/{src-ccp1WKyt.js → src-spa19bCt.js} +30 -13
  36. package/dist/src-spa19bCt.js.map +1 -0
  37. package/dist/store/-private.d.ts +1 -1
  38. package/dist/store/-private.js +1 -1
  39. package/dist/store.d.ts +6 -1
  40. package/dist/types/-private.js +1 -1
  41. package/dist/types/cache/relationship.d.ts +5 -0
  42. package/dist/types/cache.d.ts +6 -1
  43. package/dist/types/graph.d.ts +6 -1
  44. package/dist/types/record.d.ts +5 -0
  45. package/dist/types/request.d.ts +1 -1
  46. package/dist/types/schema/concepts.d.ts +6 -1
  47. package/dist/types/schema/fields.d.ts +2 -2
  48. package/dist/types/schema/fields.js +82 -23
  49. package/dist/types/schema/fields.js.map +1 -1
  50. package/dist/types/schema/schema-service.d.ts +6 -1
  51. package/dist/types/spec/document.d.ts +1 -1
  52. package/dist/types/spec/error.d.ts +4 -0
  53. package/dist/types/spec/json-api-raw.d.ts +5 -0
  54. package/dist/types.d.ts +9 -1
  55. package/dist/unpkg/{dev-deprecated/-private-B4pCmkq-.js → dev/-private-BJ2WIhKs.js} +2 -2
  56. package/dist/unpkg/dev/{-private-B4pCmkq-.js.map → -private-BJ2WIhKs.js.map} +1 -1
  57. package/dist/unpkg/dev/configure.js +1 -1
  58. package/dist/unpkg/dev/graph/-private.js +34 -21
  59. package/dist/unpkg/dev/graph/-private.js.map +1 -1
  60. package/dist/unpkg/dev/index.js +1 -1
  61. package/dist/unpkg/dev/reactive.js +2 -2
  62. package/dist/unpkg/dev/{request-oWpijCPQ.js → request-6lzVjHLN.js} +2 -2
  63. package/dist/unpkg/{dev-deprecated/request-oWpijCPQ.js.map → dev/request-6lzVjHLN.js.map} +1 -1
  64. package/dist/unpkg/dev/request.js +1 -1
  65. package/dist/unpkg/dev/signals/-leaked.js +1 -1
  66. package/dist/unpkg/dev/{src-C4ET4R1n.js → src-D1dbEzXb.js} +31 -14
  67. package/dist/unpkg/dev/src-D1dbEzXb.js.map +1 -0
  68. package/dist/unpkg/dev/store/-private.js +1 -1
  69. package/dist/unpkg/dev/{store-dZViNfMK.js → store-DVS3G92Q.js} +2 -2
  70. package/dist/unpkg/dev/{store-dZViNfMK.js.map → store-DVS3G92Q.js.map} +1 -1
  71. package/dist/unpkg/dev/store.js +1 -1
  72. package/dist/unpkg/dev/types/-private.js +1 -1
  73. package/dist/unpkg/dev/types/schema/fields.js +82 -23
  74. package/dist/unpkg/dev/types/schema/fields.js.map +1 -1
  75. package/dist/unpkg/{dev/-private-B4pCmkq-.js → dev-deprecated/-private-BJ2WIhKs.js} +2 -2
  76. package/dist/unpkg/dev-deprecated/{-private-B4pCmkq-.js.map → -private-BJ2WIhKs.js.map} +1 -1
  77. package/dist/unpkg/dev-deprecated/configure.js +1 -1
  78. package/dist/unpkg/dev-deprecated/graph/-private.js +34 -21
  79. package/dist/unpkg/dev-deprecated/graph/-private.js.map +1 -1
  80. package/dist/unpkg/dev-deprecated/index.js +1 -1
  81. package/dist/unpkg/dev-deprecated/reactive.js +2 -2
  82. package/dist/unpkg/dev-deprecated/{request-oWpijCPQ.js → request-6lzVjHLN.js} +2 -2
  83. package/dist/unpkg/{dev/request-oWpijCPQ.js.map → dev-deprecated/request-6lzVjHLN.js.map} +1 -1
  84. package/dist/unpkg/dev-deprecated/request.js +1 -1
  85. package/dist/unpkg/dev-deprecated/signals/-leaked.js +1 -1
  86. package/dist/unpkg/dev-deprecated/{src-jHpowq3S.js → src-Tvv7X1KB.js} +30 -13
  87. package/dist/unpkg/dev-deprecated/src-Tvv7X1KB.js.map +1 -0
  88. package/dist/unpkg/dev-deprecated/store/-private.js +1 -1
  89. package/dist/unpkg/dev-deprecated/types/-private.js +1 -1
  90. package/dist/unpkg/dev-deprecated/types/schema/fields.js +82 -23
  91. package/dist/unpkg/dev-deprecated/types/schema/fields.js.map +1 -1
  92. package/dist/unpkg/{prod-deprecated/-private-CrUi_3E_.js → prod/-private-Dg07O05r.js} +2 -2
  93. package/dist/unpkg/{prod-deprecated/-private-CrUi_3E_.js.map → prod/-private-Dg07O05r.js.map} +1 -1
  94. package/dist/unpkg/prod/configure.js +1 -1
  95. package/dist/unpkg/prod/graph/-private.js +27 -12
  96. package/dist/unpkg/prod/graph/-private.js.map +1 -1
  97. package/dist/unpkg/prod/index.js +1 -1
  98. package/dist/unpkg/prod/reactive.js +2 -2
  99. package/dist/unpkg/{prod-deprecated/request-Cgw3j6Dx.js → prod/request-edWLn9JK.js} +2 -2
  100. package/dist/unpkg/prod/{request-Cgw3j6Dx.js.map → request-edWLn9JK.js.map} +1 -1
  101. package/dist/unpkg/prod/request.js +1 -1
  102. package/dist/unpkg/prod/signals/-leaked.js +1 -1
  103. package/dist/unpkg/prod/{src-DFmPDGQ6.js → src-BIRx6kC-.js} +33 -12
  104. package/dist/unpkg/prod/src-BIRx6kC-.js.map +1 -0
  105. package/dist/unpkg/prod/store/-private.js +1 -1
  106. package/dist/unpkg/prod/types/-private.js +1 -1
  107. package/dist/unpkg/prod/types/schema/fields.js +82 -23
  108. package/dist/unpkg/prod/types/schema/fields.js.map +1 -1
  109. package/dist/unpkg/{prod/-private-CrUi_3E_.js → prod-deprecated/-private-Dg07O05r.js} +2 -2
  110. package/dist/unpkg/{prod/-private-CrUi_3E_.js.map → prod-deprecated/-private-Dg07O05r.js.map} +1 -1
  111. package/dist/unpkg/prod-deprecated/configure.js +1 -1
  112. package/dist/unpkg/prod-deprecated/graph/-private.js +27 -12
  113. package/dist/unpkg/prod-deprecated/graph/-private.js.map +1 -1
  114. package/dist/unpkg/prod-deprecated/index.js +1 -1
  115. package/dist/unpkg/prod-deprecated/reactive.js +2 -2
  116. package/dist/unpkg/{prod/request-Cgw3j6Dx.js → prod-deprecated/request-edWLn9JK.js} +2 -2
  117. package/dist/unpkg/prod-deprecated/{request-Cgw3j6Dx.js.map → request-edWLn9JK.js.map} +1 -1
  118. package/dist/unpkg/prod-deprecated/request.js +1 -1
  119. package/dist/unpkg/prod-deprecated/signals/-leaked.js +1 -1
  120. package/dist/unpkg/prod-deprecated/{src-BgQLcshl.js → src-0f4an0QR.js} +33 -12
  121. package/dist/unpkg/prod-deprecated/src-0f4an0QR.js.map +1 -0
  122. package/dist/unpkg/prod-deprecated/store/-private.js +1 -1
  123. package/dist/unpkg/prod-deprecated/types/-private.js +1 -1
  124. package/dist/unpkg/prod-deprecated/types/schema/fields.js +82 -23
  125. package/dist/unpkg/prod-deprecated/types/schema/fields.js.map +1 -1
  126. package/package.json +4 -4
  127. package/dist/fields-r1rZJB9d.d.ts.map +0 -1
  128. package/dist/internal-D_WIXC4r.d.ts.map +0 -1
  129. package/dist/src-ccp1WKyt.js.map +0 -1
  130. package/dist/unpkg/dev/src-C4ET4R1n.js.map +0 -1
  131. package/dist/unpkg/dev-deprecated/src-jHpowq3S.js.map +0 -1
  132. package/dist/unpkg/prod/src-DFmPDGQ6.js.map +0 -1
  133. package/dist/unpkg/prod-deprecated/src-BgQLcshl.js.map +0 -1
@@ -1,3 +1,3 @@
1
- import { M as registerSignals, N as setupSignals } from "./-private-CrUi_3E_.js";
1
+ import { M as registerSignals, N as setupSignals } from "./-private-Dg07O05r.js";
2
2
 
3
3
  export { registerSignals, setupSignals };
@@ -203,6 +203,7 @@ function addToInverse(graph, resourceKey, key, value, isRemote) {
203
203
  graph._addToTransaction(relationship);
204
204
  if (relationship.remoteState !== null) removeFromInverse(graph, relationship.remoteState, relationship.definition.inverseKey, resourceKey, isRemote);
205
205
  relationship.remoteState = value;
206
+ relationship.state.hasReceivedRemoteData = true;
206
207
  notifyChange(graph, relationship);
207
208
  }
208
209
  if (relationship.localState !== value) {
@@ -216,8 +217,10 @@ function addToInverse(graph, resourceKey, key, value, isRemote) {
216
217
  graph._addToTransaction(relationship);
217
218
  relationship.remoteState.push(value);
218
219
  relationship.remoteMembers.add(value);
219
- if (relationship.additions?.has(value)) relationship.additions.delete(value);
220
- else {
220
+ if (relationship.additions?.has(value)) {
221
+ relationship.additions.delete(value);
222
+ flushCanonical(graph, relationship, "remote");
223
+ } else {
221
224
  relationship.isDirty = true;
222
225
  relationship.state.hasReceivedData = true;
223
226
  flushCanonical(graph, relationship);
@@ -245,6 +248,7 @@ function removeFromInverse(graph, resourceKey, key, value, isRemote) {
245
248
  if (isRemote) {
246
249
  graph._addToTransaction(relationship);
247
250
  relationship.remoteState = null;
251
+ relationship.state.hasReceivedRemoteData = true;
248
252
  notifyChange(graph, relationship);
249
253
  }
250
254
  if (relationship.localState === value) {
@@ -254,7 +258,9 @@ function removeFromInverse(graph, resourceKey, key, value, isRemote) {
254
258
  } else if (isHasMany(relationship)) {
255
259
  if (isRemote) {
256
260
  graph._addToTransaction(relationship);
261
+ const wasMember = relationship.remoteMembers.has(value);
257
262
  if (_removeRemote(relationship, value)) notifyChange(graph, relationship);
263
+ else if (wasMember) notifyChange(graph, relationship, "remote");
258
264
  } else if (_removeLocal(relationship, value)) notifyChange(graph, relationship, "local");
259
265
  } else if (isRemote) {
260
266
  relationship.remoteMembers.delete(value);
@@ -565,7 +571,7 @@ function isLegacyField(field) {
565
571
  return field.kind === "belongsTo" || field.kind === "hasMany";
566
572
  }
567
573
  function temporaryConvertToLegacy(field) {
568
- return {
574
+ const legacy = {
569
575
  kind: field.kind === "resource" ? "belongsTo" : "hasMany",
570
576
  name: field.name,
571
577
  type: field.type,
@@ -575,6 +581,8 @@ function temporaryConvertToLegacy(field) {
575
581
  resetOnRemoteUpdate: false
576
582
  }, field.options)
577
583
  };
584
+ if (field.sourceKey) legacy.sourceKey = field.sourceKey;
585
+ return legacy;
578
586
  }
579
587
  /**
580
588
  *
@@ -659,10 +667,12 @@ function syncMeta(definition, inverseDefinition) {
659
667
  inverseDefinition.resetOnRemoteUpdate = resetOnRemoteUpdate;
660
668
  }
661
669
  function upgradeMeta(meta) {
670
+ const fieldKind = meta.kind;
662
671
  if (!isLegacyField(meta)) meta = temporaryConvertToLegacy(meta);
663
672
  const niceMeta = {};
664
673
  const options = meta.options;
665
674
  niceMeta.kind = meta.kind;
675
+ niceMeta.fieldKind = fieldKind;
666
676
  niceMeta.key = meta.sourceKey ?? meta.name;
667
677
  niceMeta.name = meta.name;
668
678
  niceMeta.type = meta.type;
@@ -716,7 +726,7 @@ function upgradeDefinition(graph, key, propertyName, isImplicit = false) {
716
726
  const inverseType = definition.type;
717
727
  if (definition.inverseKey === null) inverseDefinition = null;
718
728
  else {
719
- inverseKey = inverseForRelationship(getStore(storeWrapper), key, meta.name);
729
+ inverseKey = inverseNameFor(meta);
720
730
  if (!inverseKey && definition.isPolymorphic && definition.inverseKey) inverseDefinition = {
721
731
  kind: "belongsTo",
722
732
  key: definition.inverseKey,
@@ -728,11 +738,9 @@ function upgradeDefinition(graph, key, propertyName, isImplicit = false) {
728
738
  isPolymorphic: false
729
739
  };
730
740
  else if (!inverseKey) inverseDefinition = null;
731
- else {
732
- inverseDefinition = upgradeMeta(storeWrapper.schema.fields({ type: inverseType }).get(inverseKey));
733
- inverseKey = inverseDefinition.key;
734
- }
741
+ else inverseDefinition = upgradeMeta(storeWrapper.schema.fields({ type: inverseType }).get(inverseKey));
735
742
  }
743
+ if (inverseDefinition) inverseKey = inverseDefinition.key;
736
744
  if (!inverseDefinition) {
737
745
  inverseKey = implicitKeyFor(type, propertyName);
738
746
  inverseDefinition = {
@@ -804,10 +812,17 @@ function upgradeDefinition(graph, key, propertyName, isImplicit = false) {
804
812
  expandingSet(cache, inverseType, inverseKey, info);
805
813
  return info;
806
814
  }
807
- function inverseForRelationship(store, resourceKey, key) {
808
- const definition = store.schema.fields(resourceKey).get(key);
809
- if (!definition) return null;
810
- return definition.options.inverse;
815
+ /**
816
+ * The `name` of the field on the related type that `field` declares as its inverse,
817
+ * or `null` when it declares no inverse.
818
+ *
819
+ * `options.inverse` always names the inverse by its `name`, never by its `sourceKey`.
820
+ * `resource` and `collection` fields may omit it, in which case they are unidirectional;
821
+ * the legacy kinds must state it explicitly.
822
+ */
823
+ function inverseNameFor(field) {
824
+ const { options } = isLegacyField(field) ? field : temporaryConvertToLegacy(field);
825
+ return options.inverse;
811
826
  }
812
827
 
813
828
  // src/graph/-private/-state.ts