@warp-drive-mirror/core 5.10.0-alpha.21 → 5.10.0-alpha.22
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.
- package/dist/{-private-CvZfrDZl.js → -private-DhEjiHue.js} +2 -2
- package/dist/{-private-CvZfrDZl.js.map → -private-DhEjiHue.js.map} +1 -1
- package/dist/build-config/babel-macros.d.ts +5 -0
- package/dist/build-config/canary-features.d.ts +5 -0
- package/dist/build-config/debugging.d.ts +59 -0
- package/dist/build-config/deprecations.d.ts +5 -0
- package/dist/build-config.d.ts +17 -0
- package/dist/{concepts-vh86nAcd.d.ts → concepts-Db9ssz1h.d.ts} +3 -3
- package/dist/{concepts-vh86nAcd.d.ts.map → concepts-Db9ssz1h.d.ts.map} +1 -1
- package/dist/configure.d.ts +8 -0
- package/dist/configure.js +1 -1
- package/dist/{document-B8Fup751.d.ts → document-BUmwSPVO.d.ts} +2 -2
- package/dist/{document-B8Fup751.d.ts.map → document-BUmwSPVO.d.ts.map} +1 -1
- package/dist/{fields-r1rZJB9d.d.ts → fields-B-jO-dzB.d.ts} +111 -47
- package/dist/fields-B-jO-dzB.d.ts.map +1 -0
- package/dist/graph/-private.d.ts +1 -1
- package/dist/graph/-private.js +33 -20
- package/dist/graph/-private.js.map +1 -1
- package/dist/{graph-BqxaFjEb.d.ts → graph-CoQhsOgT.d.ts} +3 -3
- package/dist/{graph-BqxaFjEb.d.ts.map → graph-CoQhsOgT.d.ts.map} +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/{internal-D_WIXC4r.d.ts → internal-BrC3kM86.d.ts} +20 -6
- package/dist/internal-BrC3kM86.d.ts.map +1 -0
- package/dist/reactive/-private.d.ts +1 -1
- package/dist/reactive.d.ts +276 -1
- package/dist/reactive.js +2 -2
- package/dist/{request-CxtnNIIp.js → request-qKqD2aCa.js} +2 -2
- package/dist/{request-CxtnNIIp.js.map → request-qKqD2aCa.js.map} +1 -1
- package/dist/request.d.ts +9 -1
- package/dist/request.js +1 -1
- package/dist/signals/-leaked.d.ts +15 -1
- package/dist/signals/-leaked.d.ts.map +1 -1
- package/dist/signals/-leaked.js +1 -1
- package/dist/{src-ccp1WKyt.js → src-spa19bCt.js} +30 -13
- package/dist/src-spa19bCt.js.map +1 -0
- package/dist/store/-private.d.ts +1 -1
- package/dist/store/-private.js +1 -1
- package/dist/store.d.ts +6 -1
- package/dist/types/-private.js +1 -1
- package/dist/types/cache/relationship.d.ts +5 -0
- package/dist/types/cache.d.ts +6 -1
- package/dist/types/graph.d.ts +6 -1
- package/dist/types/record.d.ts +5 -0
- package/dist/types/request.d.ts +1 -1
- package/dist/types/schema/concepts.d.ts +6 -1
- package/dist/types/schema/fields.d.ts +2 -2
- package/dist/types/schema/fields.js +82 -23
- package/dist/types/schema/fields.js.map +1 -1
- package/dist/types/schema/schema-service.d.ts +6 -1
- package/dist/types/spec/document.d.ts +1 -1
- package/dist/types/spec/error.d.ts +4 -0
- package/dist/types/spec/json-api-raw.d.ts +5 -0
- package/dist/types.d.ts +9 -1
- package/dist/unpkg/{dev-deprecated/-private-B4pCmkq-.js → dev/-private-BJ2WIhKs.js} +2 -2
- package/dist/unpkg/dev/{-private-B4pCmkq-.js.map → -private-BJ2WIhKs.js.map} +1 -1
- package/dist/unpkg/dev/configure.js +1 -1
- package/dist/unpkg/dev/graph/-private.js +34 -21
- package/dist/unpkg/dev/graph/-private.js.map +1 -1
- package/dist/unpkg/dev/index.js +1 -1
- package/dist/unpkg/dev/reactive.js +2 -2
- package/dist/unpkg/dev/{request-oWpijCPQ.js → request-6lzVjHLN.js} +2 -2
- package/dist/unpkg/{dev-deprecated/request-oWpijCPQ.js.map → dev/request-6lzVjHLN.js.map} +1 -1
- package/dist/unpkg/dev/request.js +1 -1
- package/dist/unpkg/dev/signals/-leaked.js +1 -1
- package/dist/unpkg/dev/{src-C4ET4R1n.js → src-D1dbEzXb.js} +31 -14
- package/dist/unpkg/dev/src-D1dbEzXb.js.map +1 -0
- package/dist/unpkg/dev/store/-private.js +1 -1
- package/dist/unpkg/dev/{store-dZViNfMK.js → store-DVS3G92Q.js} +2 -2
- package/dist/unpkg/dev/{store-dZViNfMK.js.map → store-DVS3G92Q.js.map} +1 -1
- package/dist/unpkg/dev/store.js +1 -1
- package/dist/unpkg/dev/types/-private.js +1 -1
- package/dist/unpkg/dev/types/schema/fields.js +82 -23
- package/dist/unpkg/dev/types/schema/fields.js.map +1 -1
- package/dist/unpkg/{dev/-private-B4pCmkq-.js → dev-deprecated/-private-BJ2WIhKs.js} +2 -2
- package/dist/unpkg/dev-deprecated/{-private-B4pCmkq-.js.map → -private-BJ2WIhKs.js.map} +1 -1
- package/dist/unpkg/dev-deprecated/configure.js +1 -1
- package/dist/unpkg/dev-deprecated/graph/-private.js +34 -21
- package/dist/unpkg/dev-deprecated/graph/-private.js.map +1 -1
- package/dist/unpkg/dev-deprecated/index.js +1 -1
- package/dist/unpkg/dev-deprecated/reactive.js +2 -2
- package/dist/unpkg/dev-deprecated/{request-oWpijCPQ.js → request-6lzVjHLN.js} +2 -2
- package/dist/unpkg/{dev/request-oWpijCPQ.js.map → dev-deprecated/request-6lzVjHLN.js.map} +1 -1
- package/dist/unpkg/dev-deprecated/request.js +1 -1
- package/dist/unpkg/dev-deprecated/signals/-leaked.js +1 -1
- package/dist/unpkg/dev-deprecated/{src-jHpowq3S.js → src-Tvv7X1KB.js} +30 -13
- package/dist/unpkg/dev-deprecated/src-Tvv7X1KB.js.map +1 -0
- package/dist/unpkg/dev-deprecated/store/-private.js +1 -1
- package/dist/unpkg/dev-deprecated/types/-private.js +1 -1
- package/dist/unpkg/dev-deprecated/types/schema/fields.js +82 -23
- package/dist/unpkg/dev-deprecated/types/schema/fields.js.map +1 -1
- package/dist/unpkg/{prod-deprecated/-private-CrUi_3E_.js → prod/-private-Dg07O05r.js} +2 -2
- package/dist/unpkg/{prod-deprecated/-private-CrUi_3E_.js.map → prod/-private-Dg07O05r.js.map} +1 -1
- package/dist/unpkg/prod/configure.js +1 -1
- package/dist/unpkg/prod/graph/-private.js +27 -12
- package/dist/unpkg/prod/graph/-private.js.map +1 -1
- package/dist/unpkg/prod/index.js +1 -1
- package/dist/unpkg/prod/reactive.js +2 -2
- package/dist/unpkg/{prod-deprecated/request-Cgw3j6Dx.js → prod/request-edWLn9JK.js} +2 -2
- package/dist/unpkg/prod/{request-Cgw3j6Dx.js.map → request-edWLn9JK.js.map} +1 -1
- package/dist/unpkg/prod/request.js +1 -1
- package/dist/unpkg/prod/signals/-leaked.js +1 -1
- package/dist/unpkg/prod/{src-DFmPDGQ6.js → src-BIRx6kC-.js} +33 -12
- package/dist/unpkg/prod/src-BIRx6kC-.js.map +1 -0
- package/dist/unpkg/prod/store/-private.js +1 -1
- package/dist/unpkg/prod/types/-private.js +1 -1
- package/dist/unpkg/prod/types/schema/fields.js +82 -23
- package/dist/unpkg/prod/types/schema/fields.js.map +1 -1
- package/dist/unpkg/{prod/-private-CrUi_3E_.js → prod-deprecated/-private-Dg07O05r.js} +2 -2
- package/dist/unpkg/{prod/-private-CrUi_3E_.js.map → prod-deprecated/-private-Dg07O05r.js.map} +1 -1
- package/dist/unpkg/prod-deprecated/configure.js +1 -1
- package/dist/unpkg/prod-deprecated/graph/-private.js +27 -12
- package/dist/unpkg/prod-deprecated/graph/-private.js.map +1 -1
- package/dist/unpkg/prod-deprecated/index.js +1 -1
- package/dist/unpkg/prod-deprecated/reactive.js +2 -2
- package/dist/unpkg/{prod/request-Cgw3j6Dx.js → prod-deprecated/request-edWLn9JK.js} +2 -2
- package/dist/unpkg/prod-deprecated/{request-Cgw3j6Dx.js.map → request-edWLn9JK.js.map} +1 -1
- package/dist/unpkg/prod-deprecated/request.js +1 -1
- package/dist/unpkg/prod-deprecated/signals/-leaked.js +1 -1
- package/dist/unpkg/prod-deprecated/{src-BgQLcshl.js → src-0f4an0QR.js} +33 -12
- package/dist/unpkg/prod-deprecated/src-0f4an0QR.js.map +1 -0
- package/dist/unpkg/prod-deprecated/store/-private.js +1 -1
- package/dist/unpkg/prod-deprecated/types/-private.js +1 -1
- package/dist/unpkg/prod-deprecated/types/schema/fields.js +82 -23
- package/dist/unpkg/prod-deprecated/types/schema/fields.js.map +1 -1
- package/package.json +4 -4
- package/dist/fields-r1rZJB9d.d.ts.map +0 -1
- package/dist/internal-D_WIXC4r.d.ts.map +0 -1
- package/dist/src-ccp1WKyt.js.map +0 -1
- package/dist/unpkg/dev/src-C4ET4R1n.js.map +0 -1
- package/dist/unpkg/dev-deprecated/src-jHpowq3S.js.map +0 -1
- package/dist/unpkg/prod/src-DFmPDGQ6.js.map +0 -1
- package/dist/unpkg/prod-deprecated/src-BgQLcshl.js.map +0 -1
|
@@ -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
|
|
180
|
+
return isRelationshipKind(field.kind);
|
|
186
181
|
}
|
|
187
182
|
function temporaryConvertToLegacy(field) {
|
|
188
|
-
|
|
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 =
|
|
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
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
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
|
-
})(
|
|
490
|
-
return
|
|
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))
|
|
781
|
-
|
|
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);
|