@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 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
- fields[FragmentRefKey] = sk;
764
- const merged = selection.args ? {
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
- fields[FragmentRefKey] = sk;
763
- const merged = selection.args ? {
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;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mearie/core",
3
- "version": "0.6.2",
3
+ "version": "0.6.3",
4
4
  "description": "Type-safe, zero-overhead GraphQL client",
5
5
  "keywords": [
6
6
  "graphql",