vue-hook-optimizer 0.0.55 → 0.0.56

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.mjs CHANGED
@@ -1841,6 +1841,67 @@ function analyze4(content, type = "vue", lineOffset = 0, addInfo = true) {
1841
1841
  };
1842
1842
  }
1843
1843
 
1844
+ // src/analyze/style.ts
1845
+ function lexBinding(content, start) {
1846
+ let state = 0 /* inParens */;
1847
+ let parenDepth = 0;
1848
+ for (let i = start; i < content.length; i++) {
1849
+ const char = content.charAt(i);
1850
+ switch (state) {
1851
+ case 0 /* inParens */:
1852
+ if (char === "'") {
1853
+ state = 1 /* inSingleQuoteString */;
1854
+ } else if (char === '"') {
1855
+ state = 2 /* inDoubleQuoteString */;
1856
+ } else if (char === "(") {
1857
+ parenDepth++;
1858
+ } else if (char === ")") {
1859
+ if (parenDepth > 0) {
1860
+ parenDepth--;
1861
+ } else {
1862
+ return i;
1863
+ }
1864
+ }
1865
+ break;
1866
+ case 1 /* inSingleQuoteString */:
1867
+ if (char === "'") {
1868
+ state = 0 /* inParens */;
1869
+ }
1870
+ break;
1871
+ case 2 /* inDoubleQuoteString */:
1872
+ if (char === '"') {
1873
+ state = 0 /* inParens */;
1874
+ }
1875
+ break;
1876
+ }
1877
+ }
1878
+ return null;
1879
+ }
1880
+ function normalizeExpression(exp) {
1881
+ exp = exp.trim();
1882
+ if (exp[0] === "'" && exp[exp.length - 1] === "'" || exp[0] === '"' && exp[exp.length - 1] === '"') {
1883
+ return exp.slice(1, -1);
1884
+ }
1885
+ return exp;
1886
+ }
1887
+ var vBindRE = /v-bind\s*\(/g;
1888
+ function analyze5(styles) {
1889
+ const nodes = /* @__PURE__ */ new Set();
1890
+ styles.forEach((style) => {
1891
+ let match;
1892
+ const content = style.content.replace(/\/\*([\s\S]*?)\*\/|\/\/.*/g, "");
1893
+ while (match = vBindRE.exec(content)) {
1894
+ const start = match.index + match[0].length;
1895
+ const end = lexBinding(content, start);
1896
+ if (end !== null) {
1897
+ const variable = normalizeExpression(content.slice(start, end));
1898
+ nodes.add(variable);
1899
+ }
1900
+ }
1901
+ });
1902
+ return nodes;
1903
+ }
1904
+
1844
1905
  // src/suggest/split.ts
1845
1906
  function dfs(graph, node, targets, visited, component) {
1846
1907
  component.add(node);
@@ -2015,7 +2076,8 @@ var SuggestionType = /* @__PURE__ */ ((SuggestionType2) => {
2015
2076
  SuggestionType2["error"] = "error";
2016
2077
  return SuggestionType2;
2017
2078
  })(SuggestionType || {});
2018
- function gen(graph, usedNodes) {
2079
+ function gen(graph, nodesUsedInTemplate, nodesUsedInStyle = /* @__PURE__ */ new Set()) {
2080
+ const usedNodes = /* @__PURE__ */ new Set([...nodesUsedInTemplate, ...nodesUsedInStyle]);
2019
2081
  const suggestions = [];
2020
2082
  const splitedGraph = splitGraph(graph.edges);
2021
2083
  splitedGraph.forEach((g) => {
@@ -2079,7 +2141,8 @@ function gen(graph, usedNodes) {
2079
2141
  }
2080
2142
 
2081
2143
  // src/vis.ts
2082
- function getVisData(graph, usedNodes) {
2144
+ function getVisData(graph, nodesUsedInTemplate, nodesUsedInStyle = /* @__PURE__ */ new Set()) {
2145
+ const usedNodes = /* @__PURE__ */ new Set([...nodesUsedInTemplate, ...nodesUsedInStyle]);
2083
2146
  const nodes = [];
2084
2147
  const edges = [];
2085
2148
  graph.nodes.forEach((node) => {
@@ -2090,7 +2153,12 @@ function getVisData(graph, usedNodes) {
2090
2153
  group: usedNodes.has(node.label) || node.info?.used?.size ? "used" : "normal",
2091
2154
  title: `${node.info?.used?.size ? `used by ${Array.from(node.info?.used || [])?.map((i) => `\`${i}\``).join(",")}
2092
2155
 
2093
- ` : ""}${usedNodes.has(node.label) ? "used in template\n\n" : ""}${node.info?.comment || ""}`.trim() || void 0,
2156
+ ` : ""}${usedNodes.has(node.label) ? `used in ${[
2157
+ nodesUsedInStyle.has(node.label) ? "style" : "",
2158
+ nodesUsedInTemplate.has(node.label) ? "template" : ""
2159
+ ].filter(Boolean).join(" and ")}
2160
+
2161
+ ` : ""}${node.info?.comment || ""}`.trim() || void 0,
2094
2162
  info: node.info
2095
2163
  });
2096
2164
  });
@@ -2121,6 +2189,7 @@ export {
2121
2189
  SuggestionType,
2122
2190
  analyze3 as analyzeOptions,
2123
2191
  analyze2 as analyzeSetupScript,
2192
+ analyze5 as analyzeStyle,
2124
2193
  analyze as analyzeTemplate,
2125
2194
  analyze4 as analyzeTsx,
2126
2195
  gen,