opencroc 1.5.0 → 1.6.0

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.js CHANGED
@@ -1767,11 +1767,32 @@ function createPipeline(config) {
1767
1767
  validationErrors: [],
1768
1768
  duration: 0
1769
1769
  };
1770
+ const backendRoot = path7.resolve(config.backendRoot);
1771
+ const findDir = (name) => {
1772
+ const candidates = [
1773
+ path7.join(backendRoot, name),
1774
+ // ./models
1775
+ path7.join(backendRoot, "src", name),
1776
+ // ./src/models
1777
+ path7.join(backendRoot, "backend", "src", name),
1778
+ // ./backend/src/models
1779
+ path7.join(backendRoot, "backend", name),
1780
+ // ./backend/models
1781
+ path7.join(backendRoot, "server", "src", name),
1782
+ // ./server/src/models
1783
+ path7.join(backendRoot, "app", name)
1784
+ // ./app/models
1785
+ ];
1786
+ for (const c of candidates) {
1787
+ if (fs5.existsSync(c)) return c;
1788
+ }
1789
+ return null;
1790
+ };
1791
+ const modelsRoot = findDir("models");
1792
+ const controllersRoot = findDir("controllers");
1770
1793
  if (activeSteps.includes("scan")) {
1771
- const backendRoot = path7.resolve(config.backendRoot);
1772
- const modelsDir = path7.join(backendRoot, "models");
1773
- if (fs5.existsSync(modelsDir)) {
1774
- const dirs = fs5.readdirSync(modelsDir, { withFileTypes: true }).filter((d) => d.isDirectory()).map((d) => d.name);
1794
+ if (modelsRoot) {
1795
+ const dirs = fs5.readdirSync(modelsRoot, { withFileTypes: true }).filter((d) => d.isDirectory()).map((d) => d.name);
1775
1796
  const moduleFilter = config.modules;
1776
1797
  for (const dir of dirs) {
1777
1798
  if (moduleFilter && !moduleFilter.includes(dir)) continue;
@@ -1780,20 +1801,20 @@ function createPipeline(config) {
1780
1801
  if (result.modules.length === 0) {
1781
1802
  result.modules.push("default");
1782
1803
  } else {
1783
- const rootFiles = fs5.readdirSync(modelsDir).filter((f) => f.endsWith(".ts") && !f.endsWith(".test.ts") && f !== "index.ts");
1804
+ const rootFiles = fs5.readdirSync(modelsRoot).filter((f) => f.endsWith(".ts") && !f.endsWith(".test.ts") && f !== "index.ts");
1784
1805
  if (rootFiles.length > 0) {
1785
1806
  result.modules.unshift("default");
1786
1807
  }
1787
1808
  }
1788
1809
  }
1789
1810
  }
1790
- const resolveModelDir = (backendRoot, mod) => mod === "default" ? path7.join(backendRoot, "models") : path7.join(backendRoot, "models", mod);
1791
- const resolveControllerDir = (backendRoot, mod) => mod === "default" ? path7.join(backendRoot, "controllers") : path7.join(backendRoot, "controllers", mod);
1811
+ const resolveModelDir = (_backendRoot, mod) => mod === "default" ? modelsRoot || path7.join(backendRoot, "models") : path7.join(modelsRoot || path7.join(backendRoot, "models"), mod);
1812
+ const resolveControllerDir = (_backendRoot, mod) => mod === "default" ? controllersRoot || path7.join(backendRoot, "controllers") : path7.join(controllersRoot || path7.join(backendRoot, "controllers"), mod);
1792
1813
  if (activeSteps.includes("er-diagram")) {
1793
1814
  const erGen = createERDiagramGenerator();
1794
- const backendRoot = path7.resolve(config.backendRoot);
1815
+ const backendRoot2 = path7.resolve(config.backendRoot);
1795
1816
  for (const mod of result.modules) {
1796
- const modelDir = resolveModelDir(backendRoot, mod);
1817
+ const modelDir = resolveModelDir(backendRoot2, mod);
1797
1818
  const tables = fs5.existsSync(modelDir) ? parseModuleModels(modelDir) : [];
1798
1819
  const relations = [];
1799
1820
  const assocFile = path7.join(modelDir, "associations.ts");
@@ -1816,9 +1837,9 @@ function createPipeline(config) {
1816
1837
  }
1817
1838
  if (activeSteps.includes("api-chain")) {
1818
1839
  const chainAnalyzer = createApiChainAnalyzer();
1819
- const backendRoot = path7.resolve(config.backendRoot);
1840
+ const backendRoot2 = path7.resolve(config.backendRoot);
1820
1841
  for (const mod of result.modules) {
1821
- const controllerDir = resolveControllerDir(backendRoot, mod);
1842
+ const controllerDir = resolveControllerDir(backendRoot2, mod);
1822
1843
  const endpoints = fs5.existsSync(controllerDir) ? parseControllerDirectory(controllerDir) : [];
1823
1844
  const analysis = chainAnalyzer.analyze(endpoints);
1824
1845
  analysis.moduleName = mod;
@@ -1835,10 +1856,10 @@ function createPipeline(config) {
1835
1856
  }
1836
1857
  }
1837
1858
  if (activeSteps.includes("plan")) {
1838
- const backendRoot = path7.resolve(config.backendRoot);
1859
+ const backendRoot2 = path7.resolve(config.backendRoot);
1839
1860
  const chainAnalyzer = createApiChainAnalyzer();
1840
1861
  for (const mod of result.modules) {
1841
- const controllerDir = resolveControllerDir(backendRoot, mod);
1862
+ const controllerDir = resolveControllerDir(backendRoot2, mod);
1842
1863
  const endpoints = fs5.existsSync(controllerDir) ? parseControllerDirectory(controllerDir) : [];
1843
1864
  const analysis = chainAnalyzer.analyze(endpoints);
1844
1865
  const topoOrder = topologicalSort(analysis.dag);