@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.
- 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-RYvEtg99.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) {
|
|
@@ -169,20 +170,14 @@ function assertRelationshipData(store, resourceKey, data, meta) {
|
|
|
169
170
|
}
|
|
170
171
|
|
|
171
172
|
// src/graph/-private/-edge-definition.ts
|
|
172
|
-
const RELATIONSHIP_KINDS = [
|
|
173
|
-
"belongsTo",
|
|
174
|
-
"hasMany",
|
|
175
|
-
"resource",
|
|
176
|
-
"collection"
|
|
177
|
-
];
|
|
178
173
|
function isLegacyField(field) {
|
|
179
174
|
return field.kind === "belongsTo" || field.kind === "hasMany";
|
|
180
175
|
}
|
|
181
176
|
function isRelationshipField(field) {
|
|
182
|
-
return
|
|
177
|
+
return isRelationshipKind(field.kind);
|
|
183
178
|
}
|
|
184
179
|
function temporaryConvertToLegacy(field) {
|
|
185
|
-
|
|
180
|
+
const legacy = {
|
|
186
181
|
kind: field.kind === "resource" ? "belongsTo" : "hasMany",
|
|
187
182
|
name: field.name,
|
|
188
183
|
type: field.type,
|
|
@@ -192,6 +187,8 @@ function temporaryConvertToLegacy(field) {
|
|
|
192
187
|
resetOnRemoteUpdate: false
|
|
193
188
|
}, field.options)
|
|
194
189
|
};
|
|
190
|
+
if (field.sourceKey) legacy.sourceKey = field.sourceKey;
|
|
191
|
+
return legacy;
|
|
195
192
|
}
|
|
196
193
|
/**
|
|
197
194
|
*
|
|
@@ -276,10 +273,12 @@ function syncMeta(definition, inverseDefinition) {
|
|
|
276
273
|
inverseDefinition.resetOnRemoteUpdate = resetOnRemoteUpdate;
|
|
277
274
|
}
|
|
278
275
|
function upgradeMeta(meta) {
|
|
276
|
+
const fieldKind = meta.kind;
|
|
279
277
|
if (!isLegacyField(meta)) meta = temporaryConvertToLegacy(meta);
|
|
280
278
|
const niceMeta = {};
|
|
281
279
|
const options = meta.options;
|
|
282
280
|
niceMeta.kind = meta.kind;
|
|
281
|
+
niceMeta.fieldKind = fieldKind;
|
|
283
282
|
niceMeta.key = meta.sourceKey ?? meta.name;
|
|
284
283
|
niceMeta.name = meta.name;
|
|
285
284
|
niceMeta.type = meta.type;
|
|
@@ -368,7 +367,7 @@ function upgradeDefinition(graph, key, propertyName, isImplicit = false) {
|
|
|
368
367
|
})(storeWrapper.schema.hasResource({ type: inverseType }));
|
|
369
368
|
inverseDefinition = null;
|
|
370
369
|
} else {
|
|
371
|
-
inverseKey =
|
|
370
|
+
inverseKey = inverseNameFor(meta);
|
|
372
371
|
if (!inverseKey && definition.isPolymorphic && definition.inverseKey) inverseDefinition = {
|
|
373
372
|
kind: "belongsTo",
|
|
374
373
|
key: definition.inverseKey,
|
|
@@ -392,10 +391,13 @@ function upgradeDefinition(graph, key, propertyName, isImplicit = false) {
|
|
|
392
391
|
((test) => {
|
|
393
392
|
if (!test) throw new Error(`Expected ${inverseKey} to be a relationship`);
|
|
394
393
|
})(isRelationshipField(metaFromInverse));
|
|
394
|
+
((test) => {
|
|
395
|
+
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.`);
|
|
396
|
+
})(isLegacyField(meta) === isLegacyField(metaFromInverse));
|
|
395
397
|
inverseDefinition = upgradeMeta(metaFromInverse);
|
|
396
|
-
inverseKey = inverseDefinition.key;
|
|
397
398
|
}
|
|
398
399
|
}
|
|
400
|
+
if (inverseDefinition) inverseKey = inverseDefinition.key;
|
|
399
401
|
if (!inverseDefinition) {
|
|
400
402
|
inverseKey = implicitKeyFor(type, propertyName);
|
|
401
403
|
inverseDefinition = {
|
|
@@ -475,16 +477,20 @@ function upgradeDefinition(graph, key, propertyName, isImplicit = false) {
|
|
|
475
477
|
expandingSet(cache, inverseType, inverseKey, info);
|
|
476
478
|
return info;
|
|
477
479
|
}
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
480
|
+
/**
|
|
481
|
+
* The `name` of the field on the related type that `field` declares as its inverse,
|
|
482
|
+
* or `null` when it declares no inverse.
|
|
483
|
+
*
|
|
484
|
+
* `options.inverse` always names the inverse by its `name`, never by its `sourceKey`.
|
|
485
|
+
* `resource` and `collection` fields may omit it, in which case they are unidirectional;
|
|
486
|
+
* the legacy kinds must state it explicitly.
|
|
487
|
+
*/
|
|
488
|
+
function inverseNameFor(field) {
|
|
489
|
+
const { options } = isLegacyField(field) ? field : temporaryConvertToLegacy(field);
|
|
484
490
|
((test) => {
|
|
485
491
|
if (!test) throw new Error(`Expected the relationship defintion to specify the inverse type or null.`);
|
|
486
|
-
})(
|
|
487
|
-
return
|
|
492
|
+
})(options?.inverse === null || typeof options?.inverse === "string" && options.inverse.length > 0);
|
|
493
|
+
return options.inverse;
|
|
488
494
|
}
|
|
489
495
|
|
|
490
496
|
// src/graph/-private/debug/assert-polymorphic-type.ts
|
|
@@ -555,6 +561,7 @@ let assertInheritedSchema;
|
|
|
555
561
|
name: definition.inverseName,
|
|
556
562
|
type: definition.inverseType,
|
|
557
563
|
kind: definition.inverseKind,
|
|
564
|
+
fieldKind: definition.inverseKind,
|
|
558
565
|
isAsync: definition.inverseIsAsync,
|
|
559
566
|
isPolymorphic: true,
|
|
560
567
|
isLinksMode: definition.isLinksMode,
|
|
@@ -732,6 +739,7 @@ function addToInverse(graph, resourceKey, key, value, isRemote) {
|
|
|
732
739
|
graph._addToTransaction(relationship);
|
|
733
740
|
if (relationship.remoteState !== null) removeFromInverse(graph, relationship.remoteState, relationship.definition.inverseKey, resourceKey, isRemote);
|
|
734
741
|
relationship.remoteState = value;
|
|
742
|
+
relationship.state.hasReceivedRemoteData = true;
|
|
735
743
|
notifyChange(graph, relationship);
|
|
736
744
|
}
|
|
737
745
|
if (relationship.localState !== value) {
|
|
@@ -745,8 +753,10 @@ function addToInverse(graph, resourceKey, key, value, isRemote) {
|
|
|
745
753
|
graph._addToTransaction(relationship);
|
|
746
754
|
relationship.remoteState.push(value);
|
|
747
755
|
relationship.remoteMembers.add(value);
|
|
748
|
-
if (relationship.additions?.has(value))
|
|
749
|
-
|
|
756
|
+
if (relationship.additions?.has(value)) {
|
|
757
|
+
relationship.additions.delete(value);
|
|
758
|
+
flushCanonical(graph, relationship, "remote");
|
|
759
|
+
} else {
|
|
750
760
|
relationship.isDirty = true;
|
|
751
761
|
relationship.state.hasReceivedData = true;
|
|
752
762
|
flushCanonical(graph, relationship);
|
|
@@ -774,6 +784,7 @@ function removeFromInverse(graph, resourceKey, key, value, isRemote) {
|
|
|
774
784
|
if (isRemote) {
|
|
775
785
|
graph._addToTransaction(relationship);
|
|
776
786
|
relationship.remoteState = null;
|
|
787
|
+
relationship.state.hasReceivedRemoteData = true;
|
|
777
788
|
notifyChange(graph, relationship);
|
|
778
789
|
}
|
|
779
790
|
if (relationship.localState === value) {
|
|
@@ -783,7 +794,9 @@ function removeFromInverse(graph, resourceKey, key, value, isRemote) {
|
|
|
783
794
|
} else if (isHasMany(relationship)) {
|
|
784
795
|
if (isRemote) {
|
|
785
796
|
graph._addToTransaction(relationship);
|
|
797
|
+
const wasMember = relationship.remoteMembers.has(value);
|
|
786
798
|
if (_removeRemote(relationship, value)) notifyChange(graph, relationship);
|
|
799
|
+
else if (wasMember) notifyChange(graph, relationship, "remote");
|
|
787
800
|
} else if (_removeLocal(relationship, value)) notifyChange(graph, relationship, "local");
|
|
788
801
|
} else if (isRemote) {
|
|
789
802
|
relationship.remoteMembers.delete(value);
|