@mearie/core 0.6.2 → 0.6.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.
- package/dist/index.cjs +28 -31
- package/dist/index.mjs +28 -31
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -713,6 +713,29 @@ const traceSelections = (selections, storage, value, variables, storageKey, base
|
|
|
713
713
|
const cursors = [];
|
|
714
714
|
const missingDeps = /* @__PURE__ */ new Set();
|
|
715
715
|
let complete = true;
|
|
716
|
+
const traceFragmentSpread = (selection, refKey, value, traceKey, fields, path) => {
|
|
717
|
+
fields[FragmentRefKey] = refKey;
|
|
718
|
+
const merged = selection.args ? {
|
|
719
|
+
...variables,
|
|
720
|
+
...resolveArguments(selection.args, variables)
|
|
721
|
+
} : { ...variables };
|
|
722
|
+
fields[FragmentVarsKey] = {
|
|
723
|
+
...fields[FragmentVarsKey],
|
|
724
|
+
[selection.name]: merged
|
|
725
|
+
};
|
|
726
|
+
const inner = traceSelections(selection.selections, storage, value, variables, traceKey, path, subscriptionId);
|
|
727
|
+
for (const cursor of inner.cursors) cursors.push({
|
|
728
|
+
depKey: cursor.depKey,
|
|
729
|
+
entry: cursor.entry.dependency === "transitive" ? cursor.entry : {
|
|
730
|
+
...cursor.entry,
|
|
731
|
+
dependency: "transitive"
|
|
732
|
+
}
|
|
733
|
+
});
|
|
734
|
+
if (!inner.complete) {
|
|
735
|
+
complete = false;
|
|
736
|
+
for (const dep of inner.missingDeps) missingDeps.add(dep);
|
|
737
|
+
}
|
|
738
|
+
};
|
|
716
739
|
const traceField = (sk, sels, val, path, trackCursors) => {
|
|
717
740
|
if (isNullish(val)) return val;
|
|
718
741
|
if (Array.isArray(val)) return val.map((item, i) => traceField(sk, sels, item, [...path, i], trackCursors));
|
|
@@ -740,6 +763,7 @@ const traceSelections = (selections, storage, value, variables, storageKey, base
|
|
|
740
763
|
const entry = {
|
|
741
764
|
subscriptionId,
|
|
742
765
|
path: fieldPath,
|
|
766
|
+
dependency: "direct",
|
|
743
767
|
...selection.selections && { selections: selection.selections }
|
|
744
768
|
};
|
|
745
769
|
cursors.push({
|
|
@@ -759,37 +783,9 @@ const traceSelections = (selections, storage, value, variables, storageKey, base
|
|
|
759
783
|
const resolvedValue = selection.selections ? traceField(null, selection.selections, fieldValue, fieldPath, trackCursors) : fieldValue;
|
|
760
784
|
if (name in fields) mergeFields(fields, { [name]: resolvedValue }, true);
|
|
761
785
|
else fields[name] = resolvedValue;
|
|
762
|
-
} else if (selection.kind === "FragmentSpread") if (sk !== null && sk !== RootFieldKey)
|
|
763
|
-
|
|
764
|
-
|
|
765
|
-
...variables,
|
|
766
|
-
...resolveArguments(selection.args, variables)
|
|
767
|
-
} : { ...variables };
|
|
768
|
-
fields[FragmentVarsKey] = {
|
|
769
|
-
...fields[FragmentVarsKey],
|
|
770
|
-
[selection.name]: merged
|
|
771
|
-
};
|
|
772
|
-
const inner = traceSelections(selection.selections, storage, storage[sk], variables, sk, path, subscriptionId);
|
|
773
|
-
if (!inner.complete) {
|
|
774
|
-
complete = false;
|
|
775
|
-
for (const dep of inner.missingDeps) missingDeps.add(dep);
|
|
776
|
-
}
|
|
777
|
-
} else if (sk === RootFieldKey) {
|
|
778
|
-
fields[FragmentRefKey] = RootFieldKey;
|
|
779
|
-
const merged = selection.args ? {
|
|
780
|
-
...variables,
|
|
781
|
-
...resolveArguments(selection.args, variables)
|
|
782
|
-
} : { ...variables };
|
|
783
|
-
fields[FragmentVarsKey] = {
|
|
784
|
-
...fields[FragmentVarsKey],
|
|
785
|
-
[selection.name]: merged
|
|
786
|
-
};
|
|
787
|
-
const inner = traceSelections(selection.selections, storage, storage[RootFieldKey], variables, RootFieldKey, path, subscriptionId);
|
|
788
|
-
if (!inner.complete) {
|
|
789
|
-
complete = false;
|
|
790
|
-
for (const dep of inner.missingDeps) missingDeps.add(dep);
|
|
791
|
-
}
|
|
792
|
-
} else mergeFields(fields, traceField(sk, selection.selections, val, path, trackCursors), true);
|
|
786
|
+
} else if (selection.kind === "FragmentSpread") if (sk !== null && sk !== RootFieldKey) traceFragmentSpread(selection, sk, storage[sk], sk, fields, path);
|
|
787
|
+
else if (sk === RootFieldKey) traceFragmentSpread(selection, RootFieldKey, storage[RootFieldKey], RootFieldKey, fields, path);
|
|
788
|
+
else mergeFields(fields, traceField(sk, selection.selections, val, path, trackCursors), true);
|
|
793
789
|
else if (selection.kind === "InlineFragment" && selection.on === data[typenameFieldKey]) mergeFields(fields, traceField(sk, selection.selections, val, path, trackCursors), true);
|
|
794
790
|
return fields;
|
|
795
791
|
};
|
|
@@ -990,6 +986,7 @@ const processScalarChanges = (changes, registry, subscriptions) => {
|
|
|
990
986
|
const entries = registry.get(change.depKey);
|
|
991
987
|
if (!entries) continue;
|
|
992
988
|
for (const entry of entries) {
|
|
989
|
+
if (entry.dependency === "transitive") continue;
|
|
993
990
|
const sub = subscriptions.get(entry.subscriptionId);
|
|
994
991
|
if (!sub) continue;
|
|
995
992
|
let patchValue = change.newValue;
|
package/dist/index.mjs
CHANGED
|
@@ -712,6 +712,29 @@ const traceSelections = (selections, storage, value, variables, storageKey, base
|
|
|
712
712
|
const cursors = [];
|
|
713
713
|
const missingDeps = /* @__PURE__ */ new Set();
|
|
714
714
|
let complete = true;
|
|
715
|
+
const traceFragmentSpread = (selection, refKey, value, traceKey, fields, path) => {
|
|
716
|
+
fields[FragmentRefKey] = refKey;
|
|
717
|
+
const merged = selection.args ? {
|
|
718
|
+
...variables,
|
|
719
|
+
...resolveArguments(selection.args, variables)
|
|
720
|
+
} : { ...variables };
|
|
721
|
+
fields[FragmentVarsKey] = {
|
|
722
|
+
...fields[FragmentVarsKey],
|
|
723
|
+
[selection.name]: merged
|
|
724
|
+
};
|
|
725
|
+
const inner = traceSelections(selection.selections, storage, value, variables, traceKey, path, subscriptionId);
|
|
726
|
+
for (const cursor of inner.cursors) cursors.push({
|
|
727
|
+
depKey: cursor.depKey,
|
|
728
|
+
entry: cursor.entry.dependency === "transitive" ? cursor.entry : {
|
|
729
|
+
...cursor.entry,
|
|
730
|
+
dependency: "transitive"
|
|
731
|
+
}
|
|
732
|
+
});
|
|
733
|
+
if (!inner.complete) {
|
|
734
|
+
complete = false;
|
|
735
|
+
for (const dep of inner.missingDeps) missingDeps.add(dep);
|
|
736
|
+
}
|
|
737
|
+
};
|
|
715
738
|
const traceField = (sk, sels, val, path, trackCursors) => {
|
|
716
739
|
if (isNullish(val)) return val;
|
|
717
740
|
if (Array.isArray(val)) return val.map((item, i) => traceField(sk, sels, item, [...path, i], trackCursors));
|
|
@@ -739,6 +762,7 @@ const traceSelections = (selections, storage, value, variables, storageKey, base
|
|
|
739
762
|
const entry = {
|
|
740
763
|
subscriptionId,
|
|
741
764
|
path: fieldPath,
|
|
765
|
+
dependency: "direct",
|
|
742
766
|
...selection.selections && { selections: selection.selections }
|
|
743
767
|
};
|
|
744
768
|
cursors.push({
|
|
@@ -758,37 +782,9 @@ const traceSelections = (selections, storage, value, variables, storageKey, base
|
|
|
758
782
|
const resolvedValue = selection.selections ? traceField(null, selection.selections, fieldValue, fieldPath, trackCursors) : fieldValue;
|
|
759
783
|
if (name in fields) mergeFields(fields, { [name]: resolvedValue }, true);
|
|
760
784
|
else fields[name] = resolvedValue;
|
|
761
|
-
} else if (selection.kind === "FragmentSpread") if (sk !== null && sk !== RootFieldKey)
|
|
762
|
-
|
|
763
|
-
|
|
764
|
-
...variables,
|
|
765
|
-
...resolveArguments(selection.args, variables)
|
|
766
|
-
} : { ...variables };
|
|
767
|
-
fields[FragmentVarsKey] = {
|
|
768
|
-
...fields[FragmentVarsKey],
|
|
769
|
-
[selection.name]: merged
|
|
770
|
-
};
|
|
771
|
-
const inner = traceSelections(selection.selections, storage, storage[sk], variables, sk, path, subscriptionId);
|
|
772
|
-
if (!inner.complete) {
|
|
773
|
-
complete = false;
|
|
774
|
-
for (const dep of inner.missingDeps) missingDeps.add(dep);
|
|
775
|
-
}
|
|
776
|
-
} else if (sk === RootFieldKey) {
|
|
777
|
-
fields[FragmentRefKey] = RootFieldKey;
|
|
778
|
-
const merged = selection.args ? {
|
|
779
|
-
...variables,
|
|
780
|
-
...resolveArguments(selection.args, variables)
|
|
781
|
-
} : { ...variables };
|
|
782
|
-
fields[FragmentVarsKey] = {
|
|
783
|
-
...fields[FragmentVarsKey],
|
|
784
|
-
[selection.name]: merged
|
|
785
|
-
};
|
|
786
|
-
const inner = traceSelections(selection.selections, storage, storage[RootFieldKey], variables, RootFieldKey, path, subscriptionId);
|
|
787
|
-
if (!inner.complete) {
|
|
788
|
-
complete = false;
|
|
789
|
-
for (const dep of inner.missingDeps) missingDeps.add(dep);
|
|
790
|
-
}
|
|
791
|
-
} else mergeFields(fields, traceField(sk, selection.selections, val, path, trackCursors), true);
|
|
785
|
+
} else if (selection.kind === "FragmentSpread") if (sk !== null && sk !== RootFieldKey) traceFragmentSpread(selection, sk, storage[sk], sk, fields, path);
|
|
786
|
+
else if (sk === RootFieldKey) traceFragmentSpread(selection, RootFieldKey, storage[RootFieldKey], RootFieldKey, fields, path);
|
|
787
|
+
else mergeFields(fields, traceField(sk, selection.selections, val, path, trackCursors), true);
|
|
792
788
|
else if (selection.kind === "InlineFragment" && selection.on === data[typenameFieldKey]) mergeFields(fields, traceField(sk, selection.selections, val, path, trackCursors), true);
|
|
793
789
|
return fields;
|
|
794
790
|
};
|
|
@@ -989,6 +985,7 @@ const processScalarChanges = (changes, registry, subscriptions) => {
|
|
|
989
985
|
const entries = registry.get(change.depKey);
|
|
990
986
|
if (!entries) continue;
|
|
991
987
|
for (const entry of entries) {
|
|
988
|
+
if (entry.dependency === "transitive") continue;
|
|
992
989
|
const sub = subscriptions.get(entry.subscriptionId);
|
|
993
990
|
if (!sub) continue;
|
|
994
991
|
let patchValue = change.newValue;
|