@effect/language-service 0.62.3 → 0.62.4

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 (3) hide show
  1. package/index.js +66 -75
  2. package/index.js.map +1 -1
  3. package/package.json +1 -1
package/index.js CHANGED
@@ -745,6 +745,7 @@ var isNonEmptyArray = (self) => self.length > 0;
745
745
  var make2 = (compare) => (self, that) => self === that ? 0 : compare(self, that);
746
746
  var string2 = /* @__PURE__ */ make2((self, that) => self < that ? -1 : 1);
747
747
  var number2 = /* @__PURE__ */ make2((self, that) => self < that ? -1 : 1);
748
+ var reverse = (O) => make2((self, that) => O(that, self));
748
749
  var mapInput = /* @__PURE__ */ dual(2, (self, f) => make2((b1, b2) => self(f(b1), f(b2))));
749
750
 
750
751
  // node_modules/.pnpm/effect@3.19.0/node_modules/effect/dist/esm/Option.js
@@ -793,7 +794,7 @@ var unsafeGet = /* @__PURE__ */ dual(2, (self, index) => {
793
794
  var head = /* @__PURE__ */ get(0);
794
795
  var headNonEmpty = /* @__PURE__ */ unsafeGet(0);
795
796
  var tailNonEmpty = (self) => self.slice(1);
796
- var reverse = (self) => Array.from(self).reverse();
797
+ var reverse2 = (self) => Array.from(self).reverse();
797
798
  var sort = /* @__PURE__ */ dual(2, (self, O) => {
798
799
  const out = Array.from(self);
799
800
  out.sort(O);
@@ -1032,21 +1033,21 @@ var reverseChunk = (self) => {
1032
1033
  case "IArray": {
1033
1034
  return makeChunk({
1034
1035
  _tag: "IArray",
1035
- array: reverse(self.backing.array)
1036
+ array: reverse2(self.backing.array)
1036
1037
  });
1037
1038
  }
1038
1039
  case "IConcat": {
1039
1040
  return makeChunk({
1040
1041
  _tag: "IConcat",
1041
- left: reverse2(self.backing.right),
1042
- right: reverse2(self.backing.left)
1042
+ left: reverse3(self.backing.right),
1043
+ right: reverse3(self.backing.left)
1043
1044
  });
1044
1045
  }
1045
1046
  case "ISlice":
1046
- return unsafeFromArray(reverse(toReadonlyArray(self)));
1047
+ return unsafeFromArray(reverse2(toReadonlyArray(self)));
1047
1048
  }
1048
1049
  };
1049
- var reverse2 = reverseChunk;
1050
+ var reverse3 = reverseChunk;
1050
1051
  var unsafeFromArray = (self) => self.length === 0 ? empty2() : self.length === 1 ? of(self[0]) : makeChunk({
1051
1052
  _tag: "IArray",
1052
1053
  array: self
@@ -1903,7 +1904,7 @@ var flattenCauseLoop = (causes, flattened) => {
1903
1904
  }));
1904
1905
  const updated = size3(parallel2) > 0 ? pipe(flattened, prepend(parallel2)) : flattened;
1905
1906
  if (isEmpty(sequential2)) {
1906
- return reverse2(updated);
1907
+ return reverse3(updated);
1907
1908
  }
1908
1909
  causes = sequential2;
1909
1910
  flattened = updated;
@@ -2750,7 +2751,7 @@ var addNode = (mutable, data) => {
2750
2751
  var getNode = (graph, nodeIndex) => graph.nodes.has(nodeIndex) ? some2(graph.nodes.get(nodeIndex)) : none2();
2751
2752
  var hasNode = (graph, nodeIndex) => graph.nodes.has(nodeIndex);
2752
2753
  var nodeCount = (graph) => graph.nodes.size;
2753
- var reverse3 = (mutable) => {
2754
+ var reverse4 = (mutable) => {
2754
2755
  for (const [index, edgeData] of mutable.edges) {
2755
2756
  mutable.edges.set(index, {
2756
2757
  source: edgeData.target,
@@ -3009,70 +3010,6 @@ var Walker = class {
3009
3010
  var indices = (walker) => walker.visit((index, _) => index);
3010
3011
  var values2 = (walker) => walker.visit((_, data) => data);
3011
3012
  var entries = (walker) => walker.visit((index, data) => [index, data]);
3012
- var dfsPostOrder = (graph, config = {}) => {
3013
- const start = config.start ?? [];
3014
- const direction = config.direction ?? "outgoing";
3015
- for (const nodeIndex of start) {
3016
- if (!hasNode(graph, nodeIndex)) {
3017
- throw missingNode(nodeIndex);
3018
- }
3019
- }
3020
- return new Walker((f) => ({
3021
- [Symbol.iterator]: () => {
3022
- const stack = [];
3023
- const discovered = /* @__PURE__ */ new Set();
3024
- const finished = /* @__PURE__ */ new Set();
3025
- for (let i = start.length - 1; i >= 0; i--) {
3026
- stack.push({
3027
- node: start[i],
3028
- visitedChildren: false
3029
- });
3030
- }
3031
- const nextMapped = () => {
3032
- while (stack.length > 0) {
3033
- const current = stack[stack.length - 1];
3034
- if (!discovered.has(current.node)) {
3035
- discovered.add(current.node);
3036
- current.visitedChildren = false;
3037
- }
3038
- if (!current.visitedChildren) {
3039
- current.visitedChildren = true;
3040
- const neighbors = neighborsDirected(graph, current.node, direction);
3041
- for (let i = neighbors.length - 1; i >= 0; i--) {
3042
- const neighbor = neighbors[i];
3043
- if (!discovered.has(neighbor) && !finished.has(neighbor)) {
3044
- stack.push({
3045
- node: neighbor,
3046
- visitedChildren: false
3047
- });
3048
- }
3049
- }
3050
- } else {
3051
- const nodeToEmit = stack.pop().node;
3052
- if (!finished.has(nodeToEmit)) {
3053
- finished.add(nodeToEmit);
3054
- const nodeData = getNode(graph, nodeToEmit);
3055
- if (isSome2(nodeData)) {
3056
- return {
3057
- done: false,
3058
- value: f(nodeToEmit, nodeData.value)
3059
- };
3060
- }
3061
- return nextMapped();
3062
- }
3063
- }
3064
- }
3065
- return {
3066
- done: true,
3067
- value: void 0
3068
- };
3069
- };
3070
- return {
3071
- next: nextMapped
3072
- };
3073
- }
3074
- }));
3075
- };
3076
3013
  var nodes = (graph) => new Walker((f) => ({
3077
3014
  [Symbol.iterator]() {
3078
3015
  const nodeMap = graph.nodes;
@@ -8216,7 +8153,7 @@ var missedPipeableOpportunity = createDiagnostic({
8216
8153
  parentChain,
8217
8154
  filter(ts.isCallExpression),
8218
8155
  map4((call) => call.expression),
8219
- reverse
8156
+ reverse2
8220
8157
  )
8221
8158
  )
8222
8159
  );
@@ -15843,6 +15780,54 @@ _${formatSourceFileNameLineAndColumn(ts, tsUtils, tsNode, fromSourceFile)}_`;
15843
15780
  });
15844
15781
  }
15845
15782
  );
15783
+ var dfsPostOrderWithOrder = (graph, config) => {
15784
+ const start = config.start ?? [];
15785
+ const direction = config.direction ?? "outgoing";
15786
+ const orderByIndex = mapInput(config.order, (_) => graph.nodes.get(_));
15787
+ return new Walker((f) => ({
15788
+ [Symbol.iterator]: () => {
15789
+ const stack = [];
15790
+ const discovered = /* @__PURE__ */ new Set();
15791
+ const finished = /* @__PURE__ */ new Set();
15792
+ const sortedStart = sort(start, orderByIndex);
15793
+ for (let i = sortedStart.length - 1; i >= 0; i--) {
15794
+ stack.push({ node: sortedStart[i], visitedChildren: false });
15795
+ }
15796
+ const nextMapped = () => {
15797
+ while (stack.length > 0) {
15798
+ const current = stack[stack.length - 1];
15799
+ if (!discovered.has(current.node)) {
15800
+ discovered.add(current.node);
15801
+ current.visitedChildren = false;
15802
+ }
15803
+ if (!current.visitedChildren) {
15804
+ current.visitedChildren = true;
15805
+ const neighbors = neighborsDirected(graph, current.node, direction);
15806
+ const sortedNeighbors = sort(neighbors, orderByIndex);
15807
+ for (let i = sortedNeighbors.length - 1; i >= 0; i--) {
15808
+ const neighbor = sortedNeighbors[i];
15809
+ if (!discovered.has(neighbor) && !finished.has(neighbor)) {
15810
+ stack.push({ node: neighbor, visitedChildren: false });
15811
+ }
15812
+ }
15813
+ } else {
15814
+ const nodeToEmit = stack.pop().node;
15815
+ if (!finished.has(nodeToEmit)) {
15816
+ finished.add(nodeToEmit);
15817
+ const nodeData = getNode(graph, nodeToEmit);
15818
+ if (isSome2(nodeData)) {
15819
+ return { done: false, value: f(nodeToEmit, nodeData.value) };
15820
+ }
15821
+ return nextMapped();
15822
+ }
15823
+ }
15824
+ }
15825
+ return { done: true, value: void 0 };
15826
+ };
15827
+ return { next: nextMapped };
15828
+ }
15829
+ }));
15830
+ };
15846
15831
  var convertOutlineGraphToLayerMagic = fn("convertOutlineGraphToLayerMagic")(
15847
15832
  function* (outlineGraph, targetOutput) {
15848
15833
  const typeCheckerUtils = yield* service(TypeCheckerUtils);
@@ -15850,9 +15835,15 @@ var convertOutlineGraphToLayerMagic = fn("convertOutlineGraphToLayerMagic")(
15850
15835
  const result = [];
15851
15836
  const missingOutputTypes = new Set(typeCheckerUtils.unrollUnionMembers(targetOutput));
15852
15837
  const currentRequiredTypes = /* @__PURE__ */ new Set();
15853
- const reversedGraph = mutate2(outlineGraph, reverse3);
15838
+ const orderByProvidedCount = mapInput(
15839
+ reverse(number2),
15840
+ (_) => _.provides.length
15841
+ );
15842
+ const reversedGraph = mutate2(outlineGraph, reverse4);
15854
15843
  const rootIndexes = fromIterable(indices(externals(reversedGraph, { direction: "incoming" })));
15855
- const allNodes = fromIterable(values2(dfsPostOrder(reversedGraph, { start: rootIndexes })));
15844
+ const allNodes = fromIterable(
15845
+ values2(dfsPostOrderWithOrder(reversedGraph, { start: rootIndexes, order: orderByProvidedCount }))
15846
+ );
15856
15847
  for (const nodeInfo of allNodes) {
15857
15848
  if (!ts.isExpression(nodeInfo.node)) continue;
15858
15849
  const reallyProvidedTypes = nodeInfo.provides.filter((_) => nodeInfo.requires.indexOf(_) === -1);