@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-B4pCmkq-.js";
1
+ import { M as registerSignals, N as setupSignals } from "./-private-BJ2WIhKs.js";
2
2
 
3
3
  export { registerSignals, setupSignals };
@@ -1,5 +1,6 @@
1
- import { getOrSetGlobal, peekTransient, setTransient } from "../types/-private.js";
2
1
  import { t as getGlobalConfig } from "../runtime-DZVuMuzL.js";
2
+ import { getOrSetGlobal, peekTransient, setTransient } from "../types/-private.js";
3
+ import { isRelationshipKind } from "../types/schema/fields.js";
3
4
 
4
5
  // src/graph/-private/coerce-id.ts
5
6
  function coerceId(id) {
@@ -172,20 +173,14 @@ function assertRelationshipData(store, resourceKey, data, meta) {
172
173
  }
173
174
 
174
175
  // src/graph/-private/-edge-definition.ts
175
- const RELATIONSHIP_KINDS = [
176
- "belongsTo",
177
- "hasMany",
178
- "resource",
179
- "collection"
180
- ];
181
176
  function isLegacyField(field) {
182
177
  return field.kind === "belongsTo" || field.kind === "hasMany";
183
178
  }
184
179
  function isRelationshipField(field) {
185
- return RELATIONSHIP_KINDS.includes(field.kind);
180
+ return isRelationshipKind(field.kind);
186
181
  }
187
182
  function temporaryConvertToLegacy(field) {
188
- return {
183
+ const legacy = {
189
184
  kind: field.kind === "resource" ? "belongsTo" : "hasMany",
190
185
  name: field.name,
191
186
  type: field.type,
@@ -195,6 +190,8 @@ function temporaryConvertToLegacy(field) {
195
190
  resetOnRemoteUpdate: false
196
191
  }, field.options)
197
192
  };
193
+ if (field.sourceKey) legacy.sourceKey = field.sourceKey;
194
+ return legacy;
198
195
  }
199
196
  /**
200
197
  *
@@ -279,10 +276,12 @@ function syncMeta(definition, inverseDefinition) {
279
276
  inverseDefinition.resetOnRemoteUpdate = resetOnRemoteUpdate;
280
277
  }
281
278
  function upgradeMeta(meta) {
279
+ const fieldKind = meta.kind;
282
280
  if (!isLegacyField(meta)) meta = temporaryConvertToLegacy(meta);
283
281
  const niceMeta = {};
284
282
  const options = meta.options;
285
283
  niceMeta.kind = meta.kind;
284
+ niceMeta.fieldKind = fieldKind;
286
285
  niceMeta.key = meta.sourceKey ?? meta.name;
287
286
  niceMeta.name = meta.name;
288
287
  niceMeta.type = meta.type;
@@ -371,7 +370,7 @@ function upgradeDefinition(graph, key, propertyName, isImplicit = false) {
371
370
  })(storeWrapper.schema.hasResource({ type: inverseType }));
372
371
  inverseDefinition = null;
373
372
  } else {
374
- inverseKey = inverseForRelationship(getStore(storeWrapper), key, meta.name);
373
+ inverseKey = inverseNameFor(meta);
375
374
  if (!inverseKey && definition.isPolymorphic && definition.inverseKey) inverseDefinition = {
376
375
  kind: "belongsTo",
377
376
  key: definition.inverseKey,
@@ -395,10 +394,13 @@ function upgradeDefinition(graph, key, propertyName, isImplicit = false) {
395
394
  ((test) => {
396
395
  if (!test) throw new Error(`Expected ${inverseKey} to be a relationship`);
397
396
  })(isRelationshipField(metaFromInverse));
397
+ ((test) => {
398
+ if (!test) throw new Error(`'${type}.${propertyName}' is a '${meta.kind}' field, but its inverse '${inverseType}.${inverseKey}' is a '${metaFromInverse.kind}' field. A 'resource' or 'collection' field can only have a 'resource' or 'collection' field as its inverse, and a 'belongsTo' or 'hasMany' field can only have a 'belongsTo' or 'hasMany' field as its inverse.`);
399
+ })(isLegacyField(meta) === isLegacyField(metaFromInverse));
398
400
  inverseDefinition = upgradeMeta(metaFromInverse);
399
- inverseKey = inverseDefinition.key;
400
401
  }
401
402
  }
403
+ if (inverseDefinition) inverseKey = inverseDefinition.key;
402
404
  if (!inverseDefinition) {
403
405
  inverseKey = implicitKeyFor(type, propertyName);
404
406
  inverseDefinition = {
@@ -478,16 +480,20 @@ function upgradeDefinition(graph, key, propertyName, isImplicit = false) {
478
480
  expandingSet(cache, inverseType, inverseKey, info);
479
481
  return info;
480
482
  }
481
- function inverseForRelationship(store, resourceKey, key) {
482
- const definition = store.schema.fields(resourceKey).get(key);
483
- if (!definition) return null;
484
- ((test) => {
485
- if (!test) throw new Error(`Expected ${key} to be a relationship`);
486
- })(isRelationshipField(definition));
483
+ /**
484
+ * The `name` of the field on the related type that `field` declares as its inverse,
485
+ * or `null` when it declares no inverse.
486
+ *
487
+ * `options.inverse` always names the inverse by its `name`, never by its `sourceKey`.
488
+ * `resource` and `collection` fields may omit it, in which case they are unidirectional;
489
+ * the legacy kinds must state it explicitly.
490
+ */
491
+ function inverseNameFor(field) {
492
+ const { options } = isLegacyField(field) ? field : temporaryConvertToLegacy(field);
487
493
  ((test) => {
488
494
  if (!test) throw new Error(`Expected the relationship defintion to specify the inverse type or null.`);
489
- })(definition.options?.inverse === null || typeof definition.options?.inverse === "string" && definition.options.inverse.length > 0);
490
- return definition.options.inverse;
495
+ })(options?.inverse === null || typeof options?.inverse === "string" && options.inverse.length > 0);
496
+ return options.inverse;
491
497
  }
492
498
 
493
499
  // src/graph/-private/debug/assert-polymorphic-type.ts
@@ -558,6 +564,7 @@ let assertInheritedSchema;
558
564
  name: definition.inverseName,
559
565
  type: definition.inverseType,
560
566
  kind: definition.inverseKind,
567
+ fieldKind: definition.inverseKind,
561
568
  isAsync: definition.inverseIsAsync,
562
569
  isPolymorphic: true,
563
570
  isLinksMode: definition.isLinksMode,
@@ -764,6 +771,7 @@ function addToInverse(graph, resourceKey, key, value, isRemote) {
764
771
  graph._addToTransaction(relationship);
765
772
  if (relationship.remoteState !== null) removeFromInverse(graph, relationship.remoteState, relationship.definition.inverseKey, resourceKey, isRemote);
766
773
  relationship.remoteState = value;
774
+ relationship.state.hasReceivedRemoteData = true;
767
775
  notifyChange(graph, relationship);
768
776
  }
769
777
  if (relationship.localState !== value) {
@@ -777,8 +785,10 @@ function addToInverse(graph, resourceKey, key, value, isRemote) {
777
785
  graph._addToTransaction(relationship);
778
786
  relationship.remoteState.push(value);
779
787
  relationship.remoteMembers.add(value);
780
- if (relationship.additions?.has(value)) relationship.additions.delete(value);
781
- else {
788
+ if (relationship.additions?.has(value)) {
789
+ relationship.additions.delete(value);
790
+ flushCanonical(graph, relationship, "remote");
791
+ } else {
782
792
  relationship.isDirty = true;
783
793
  relationship.state.hasReceivedData = true;
784
794
  flushCanonical(graph, relationship);
@@ -806,6 +816,7 @@ function removeFromInverse(graph, resourceKey, key, value, isRemote) {
806
816
  if (isRemote) {
807
817
  graph._addToTransaction(relationship);
808
818
  relationship.remoteState = null;
819
+ relationship.state.hasReceivedRemoteData = true;
809
820
  notifyChange(graph, relationship);
810
821
  }
811
822
  if (relationship.localState === value) {
@@ -815,7 +826,9 @@ function removeFromInverse(graph, resourceKey, key, value, isRemote) {
815
826
  } else if (isHasMany(relationship)) {
816
827
  if (isRemote) {
817
828
  graph._addToTransaction(relationship);
829
+ const wasMember = relationship.remoteMembers.has(value);
818
830
  if (_removeRemote(relationship, value)) notifyChange(graph, relationship);
831
+ else if (wasMember) notifyChange(graph, relationship, "remote");
819
832
  } else if (_removeLocal(relationship, value)) notifyChange(graph, relationship, "local");
820
833
  } else if (isRemote) {
821
834
  relationship.remoteMembers.delete(value);