locadex 0.1.0-alpha.9 → 0.1.1
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/CHANGELOG.md +20 -0
- package/README.md +3 -5
- package/dist/cli.js +11 -10
- package/dist/cli.js.map +1 -1
- package/dist/commands/i18n.d.ts.map +1 -1
- package/dist/commands/i18n.js +15 -14
- package/dist/commands/i18n.js.map +1 -1
- package/dist/commands/setup.d.ts.map +1 -1
- package/dist/commands/setup.js +15 -14
- package/dist/commands/setup.js.map +1 -1
- package/dist/index.js +1 -4
- package/dist/index.js.map +1 -1
- package/dist/logging/console.js +2 -5
- package/dist/logging/console.js.map +1 -1
- package/dist/logging/logger.d.ts +4 -2
- package/dist/logging/logger.d.ts.map +1 -1
- package/dist/logging/logger.js +1 -4
- package/dist/logging/logger.js.map +1 -1
- package/dist/mcp/getDocs.js +1 -4
- package/dist/mcp/getDocs.js.map +1 -1
- package/dist/mcp/getGuide.js +1 -4
- package/dist/mcp/getGuide.js.map +1 -1
- package/dist/mcp/getPort.js +1 -4
- package/dist/mcp/getPort.js.map +1 -1
- package/dist/mcp/tools/docs.js +1 -4
- package/dist/mcp/tools/docs.js.map +1 -1
- package/dist/mcp/tools/guides.js +1 -4
- package/dist/mcp/tools/guides.js.map +1 -1
- package/dist/mcp.d.ts +1 -1
- package/dist/mcp.d.ts.map +1 -1
- package/dist/mcp.js +56 -16
- package/dist/mcp.js.map +1 -1
- package/dist/prompts/system.js +1 -4
- package/dist/prompts/system.js.map +1 -1
- package/dist/tasks/concurrency.d.ts +72 -0
- package/dist/tasks/concurrency.d.ts.map +1 -0
- package/dist/tasks/concurrency.js +132 -0
- package/dist/tasks/concurrency.js.map +1 -0
- package/dist/tasks/i18n.d.ts.map +1 -1
- package/dist/tasks/i18n.js +60 -127
- package/dist/tasks/i18n.js.map +1 -1
- package/dist/tasks/setup.d.ts.map +1 -1
- package/dist/tasks/setup.js +40 -44
- package/dist/tasks/setup.js.map +1 -1
- package/dist/telemetry.js +1 -4
- package/dist/telemetry.js.map +1 -1
- package/dist/types/claude-sdk.d.ts +1 -1
- package/dist/types/claude-sdk.d.ts.map +1 -1
- package/dist/types/claude-sdk.js +1 -4
- package/dist/types/claude-sdk.js.map +1 -1
- package/dist/types/cli.d.ts +3 -0
- package/dist/types/cli.d.ts.map +1 -1
- package/dist/types/cli.js +1 -4
- package/dist/types/cli.js.map +1 -1
- package/dist/utils/claudeCode.d.ts +6 -5
- package/dist/utils/claudeCode.d.ts.map +1 -1
- package/dist/utils/claudeCode.js +50 -17
- package/dist/utils/claudeCode.js.map +1 -1
- package/dist/utils/config.d.ts +4 -3
- package/dist/utils/config.d.ts.map +1 -1
- package/dist/utils/config.js +33 -20
- package/dist/utils/config.js.map +1 -1
- package/dist/utils/dag/createDag.d.ts.map +1 -1
- package/dist/utils/dag/createDag.js +10 -11
- package/dist/utils/dag/createDag.js.map +1 -1
- package/dist/utils/dag/extractFiles.d.ts.map +1 -1
- package/dist/utils/dag/extractFiles.js +6 -9
- package/dist/utils/dag/extractFiles.js.map +1 -1
- package/dist/utils/dag/getFiles.d.ts +1 -12
- package/dist/utils/dag/getFiles.d.ts.map +1 -1
- package/dist/utils/dag/getFiles.js +5 -53
- package/dist/utils/dag/getFiles.js.map +1 -1
- package/dist/utils/dag/matchFiles.d.ts +2 -2
- package/dist/utils/dag/matchFiles.d.ts.map +1 -1
- package/dist/utils/dag/matchFiles.js +3 -6
- package/dist/utils/dag/matchFiles.js.map +1 -1
- package/dist/utils/fs/findConfigs.d.ts +4 -4
- package/dist/utils/fs/findConfigs.d.ts.map +1 -1
- package/dist/utils/fs/findConfigs.js +7 -13
- package/dist/utils/fs/findConfigs.js.map +1 -1
- package/dist/utils/fs/getFiles.d.ts +1 -1
- package/dist/utils/fs/getFiles.d.ts.map +1 -1
- package/dist/utils/fs/getFiles.js +3 -6
- package/dist/utils/fs/getFiles.js.map +1 -1
- package/dist/utils/fs/git.d.ts +6 -0
- package/dist/utils/fs/git.d.ts.map +1 -0
- package/dist/utils/fs/git.js +32 -0
- package/dist/utils/fs/git.js.map +1 -0
- package/dist/utils/fs/writeFiles.js +1 -4
- package/dist/utils/fs/writeFiles.js.map +1 -1
- package/dist/utils/getPaths.js +1 -4
- package/dist/utils/getPaths.js.map +1 -1
- package/dist/utils/locadexManager.d.ts +15 -5
- package/dist/utils/locadexManager.d.ts.map +1 -1
- package/dist/utils/locadexManager.js +80 -73
- package/dist/utils/locadexManager.js.map +1 -1
- package/dist/utils/lockfile.d.ts +2 -2
- package/dist/utils/lockfile.d.ts.map +1 -1
- package/dist/utils/lockfile.js +8 -17
- package/dist/utils/lockfile.js.map +1 -1
- package/dist/utils/packages/installPackage.d.ts +4 -0
- package/dist/utils/packages/installPackage.d.ts.map +1 -1
- package/dist/utils/packages/installPackage.js +41 -5
- package/dist/utils/packages/installPackage.js.map +1 -1
- package/dist/utils/session.js +1 -4
- package/dist/utils/session.js.map +1 -1
- package/dist/utils/shared.js +1 -4
- package/dist/utils/shared.js.map +1 -1
- package/dist/utils/shutdown.d.ts.map +1 -1
- package/dist/utils/shutdown.js +1 -9
- package/dist/utils/shutdown.js.map +1 -1
- package/dist/utils/stats.js +1 -4
- package/dist/utils/stats.js.map +1 -1
- package/guides/next/advanced/var-outside-client-server-component.md +1 -1
- package/package.json +4 -6
- package/dist/mcp/debugger.d.ts +0 -3
- package/dist/mcp/debugger.d.ts.map +0 -1
- package/dist/mcp/debugger.js +0 -37
- package/dist/mcp/debugger.js.map +0 -1
- package/dist/mcp-sse.d.ts +0 -3
- package/dist/mcp-sse.d.ts.map +0 -1
- package/dist/mcp-sse.js +0 -77
- package/dist/mcp-sse.js.map +0 -1
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="4f7c2e1b-666d-5b3d-8438-3ed7fc7b3af6")}catch(e){}}();
|
|
3
1
|
import { logger } from '../../logging/logger.js';
|
|
4
2
|
import dependencyTree from 'dependency-tree';
|
|
5
3
|
import * as path from 'node:path';
|
|
4
|
+
import { LocadexManager } from '../locadexManager.js';
|
|
6
5
|
export class Dag {
|
|
7
6
|
dag;
|
|
8
7
|
reverseDag;
|
|
@@ -19,7 +18,7 @@ export class Dag {
|
|
|
19
18
|
const reverseDag = {};
|
|
20
19
|
const dependenciesMap = {};
|
|
21
20
|
// Clean the file paths recursively
|
|
22
|
-
const cleanedDag = cleanFilePaths(dag);
|
|
21
|
+
const cleanedDag = cleanFilePaths(dag, LocadexManager.getInstance().rootDirectory);
|
|
23
22
|
function traverse(node, parent) {
|
|
24
23
|
for (const [filename, subtree] of Object.entries(node)) {
|
|
25
24
|
// Build dependencies map - direct dependencies are the keys of subtree
|
|
@@ -88,13 +87,14 @@ export function createDag(files, options) {
|
|
|
88
87
|
const visited = {};
|
|
89
88
|
const nonExistent = [];
|
|
90
89
|
logger.debugMessage(`Creating combined tree for ${files.length} source files`);
|
|
90
|
+
const appDir = LocadexManager.getInstance().appDirectory;
|
|
91
91
|
files.forEach((file) => {
|
|
92
92
|
if (visited[file]) {
|
|
93
93
|
return;
|
|
94
94
|
}
|
|
95
95
|
try {
|
|
96
96
|
const tree = dependencyTree({
|
|
97
|
-
directory:
|
|
97
|
+
directory: appDir,
|
|
98
98
|
filename: file,
|
|
99
99
|
filter: (path) => !path.includes('node_modules'),
|
|
100
100
|
visited: visited,
|
|
@@ -111,14 +111,14 @@ export function createDag(files, options) {
|
|
|
111
111
|
});
|
|
112
112
|
return new Dag(mergeTrees(allTrees));
|
|
113
113
|
}
|
|
114
|
-
function cleanFilePath(filePath) {
|
|
115
|
-
return path.relative(
|
|
114
|
+
function cleanFilePath(filePath, dir) {
|
|
115
|
+
return path.relative(dir, filePath);
|
|
116
116
|
}
|
|
117
|
-
function cleanFilePaths(dag) {
|
|
117
|
+
function cleanFilePaths(dag, dir) {
|
|
118
118
|
const result = {};
|
|
119
119
|
for (const [filename, subtree] of Object.entries(dag)) {
|
|
120
|
-
const cleanedFilename = cleanFilePath(filename);
|
|
121
|
-
result[cleanedFilename] = cleanFilePaths(subtree);
|
|
120
|
+
const cleanedFilename = cleanFilePath(filename, dir);
|
|
121
|
+
result[cleanedFilename] = cleanFilePaths(subtree, dir);
|
|
122
122
|
}
|
|
123
123
|
return result;
|
|
124
124
|
}
|
|
@@ -140,5 +140,4 @@ function mergeTrees(trees) {
|
|
|
140
140
|
});
|
|
141
141
|
return result;
|
|
142
142
|
}
|
|
143
|
-
//# sourceMappingURL=createDag.js.map
|
|
144
|
-
//# debugId=4f7c2e1b-666d-5b3d-8438-3ed7fc7b3af6
|
|
143
|
+
//# sourceMappingURL=createDag.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createDag.js","sources":["utils/dag/createDag.ts"],"
|
|
1
|
+
{"version":3,"file":"createDag.js","sourceRoot":"/","sources":["utils/dag/createDag.ts"],"names":[],"mappings":"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","sourcesContent":["import { logger } from '../../logging/logger.js';\nimport dependencyTree, { Tree } from 'dependency-tree';\nimport * as path from 'node:path';\nimport { LocadexManager } from '../locadexManager.js';\n\nexport type DagOptions = {\n tsConfig?: string;\n webpackConfig?: string;\n requireConfig?: string;\n};\n\nexport type DagNode = {\n [filename: string]: DagNode;\n};\n\nexport class Dag {\n private dag: DagNode;\n private reverseDag: Record<string, string[]>;\n private dependenciesMap: Record<string, string[]>;\n private topologicalOrder: string[];\n\n constructor(dag: DagNode) {\n this.dag = dag;\n const { reverseDag, dependenciesMap } = this.buildMaps(dag);\n this.reverseDag = reverseDag;\n this.dependenciesMap = dependenciesMap;\n this.topologicalOrder = this.buildTopologicalOrder();\n }\n\n private buildMaps(dag: DagNode): {\n reverseDag: Record<string, string[]>;\n dependenciesMap: Record<string, string[]>;\n } {\n const reverseDag: Record<string, string[]> = {};\n const dependenciesMap: Record<string, string[]> = {};\n\n // Clean the file paths recursively\n const cleanedDag = cleanFilePaths(\n dag,\n LocadexManager.getInstance().rootDirectory\n );\n\n function traverse(node: DagNode, parent?: string): void {\n for (const [filename, subtree] of Object.entries(node)) {\n // Build dependencies map - direct dependencies are the keys of subtree\n if (!dependenciesMap[filename]) {\n dependenciesMap[filename] = Object.keys(subtree);\n }\n\n // Build reverse DAG - if we have a parent, parent depends on filename\n // So filename has parent as a dependent\n if (parent) {\n if (!reverseDag[filename]) {\n reverseDag[filename] = [];\n }\n reverseDag[filename].push(parent);\n }\n\n // Recursively traverse the subtree\n if (typeof subtree === 'object' && subtree !== null) {\n traverse(subtree, filename);\n }\n }\n }\n\n traverse(cleanedDag);\n return { reverseDag, dependenciesMap };\n }\n\n // No need to worry about cycles since the DAG is a tree\n private buildTopologicalOrder(): string[] {\n const visited = new Set<string>();\n const result: string[] = [];\n\n const dfs = (file: string) => {\n if (visited.has(file)) return;\n visited.add(file);\n\n const dependencies = this.dependenciesMap[file] || [];\n for (const dep of dependencies) {\n dfs(dep);\n }\n\n result.push(file);\n };\n\n // Visit all files in the DAG\n for (const file of Object.keys(this.dependenciesMap)) {\n dfs(file);\n }\n\n return result;\n }\n // Get all direct dependencies of a file\n getDependencies(filename: string): string[] {\n // return this.dependenciesMap[filename] || [];\n return this.reverseDag[filename] || [];\n }\n // Get all children of a file\n getDependents(filename: string): string[] {\n // return this.reverseDag[filename] || [];\n return this.dependenciesMap[filename] || [];\n }\n\n getDag(): DagNode {\n return this.dag;\n }\n\n getReverseDag(): Record<string, string[]> {\n return this.reverseDag;\n }\n\n getTopologicalOrder(): string[] {\n return this.topologicalOrder;\n }\n}\n\nexport function createDag(files: string[], options: DagOptions): Dag {\n const allTrees: Tree[] = [];\n const visited: dependencyTree.Tree = {};\n const nonExistent: string[] = [];\n\n logger.debugMessage(\n `Creating combined tree for ${files.length} source files`\n );\n\n const appDir = LocadexManager.getInstance().appDirectory;\n\n files.forEach((file) => {\n if (visited[file]) {\n return;\n }\n\n try {\n const tree = dependencyTree({\n directory: appDir,\n filename: file,\n filter: (path: string) => !path.includes('node_modules'),\n visited: visited,\n nonExistent: nonExistent,\n tsConfig: options.tsConfig,\n webpackConfig: options.webpackConfig,\n requireConfig: options.requireConfig,\n });\n allTrees.push(tree);\n } catch (error) {\n logger.debugMessage(`Failed to create tree for ${file}: ${error}`);\n }\n });\n\n return new Dag(mergeTrees(allTrees));\n}\n\nfunction cleanFilePath(filePath: string, dir: string): string {\n return path.relative(dir, filePath);\n}\n\nfunction cleanFilePaths(dag: DagNode, dir: string): DagNode {\n const result: DagNode = {};\n\n for (const [filename, subtree] of Object.entries(dag)) {\n const cleanedFilename = cleanFilePath(filename, dir);\n result[cleanedFilename] = cleanFilePaths(subtree, dir);\n }\n\n return result;\n}\n\nfunction mergeTrees(trees: Tree[]): DagNode {\n const result: DagNode = {};\n\n function mergeTree(tree: Tree, target: DagNode): void {\n if (typeof tree === 'object' && tree !== null) {\n for (const [filename, subtree] of Object.entries(tree)) {\n if (!target[filename]) {\n target[filename] = {};\n }\n mergeTree(subtree, target[filename]);\n }\n }\n }\n\n // Process each tree\n trees.forEach((tree) => {\n mergeTree(tree, result);\n });\n\n return result;\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"extractFiles.d.ts","sourceRoot":"/","sources":["utils/dag/extractFiles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAGtD,OAAO,EAAa,GAAG,EAAE,MAAM,gBAAgB,CAAC;AAShD,wBAAgB,YAAY,CAAC,OAAO,EAAE,cAAc,GAAG;IACrD,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,GAAG,EAAE,GAAG,CAAC;CACV,
|
|
1
|
+
{"version":3,"file":"extractFiles.d.ts","sourceRoot":"/","sources":["utils/dag/extractFiles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAGtD,OAAO,EAAa,GAAG,EAAE,MAAM,gBAAgB,CAAC;AAShD,wBAAgB,YAAY,CAAC,OAAO,EAAE,cAAc,GAAG;IACrD,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,GAAG,EAAE,GAAG,CAAC;CACV,CAmCA"}
|
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
|
|
2
|
-
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="996509db-1280-5f76-aa8f-6b3d3ffd7899")}catch(e){}}();
|
|
3
1
|
import { getChangedFiles } from '../lockfile.js';
|
|
4
2
|
import { findSourceFiles, filterFiles } from './matchFiles.js';
|
|
5
3
|
import { createDag } from './createDag.js';
|
|
@@ -9,17 +7,17 @@ import { logger } from '../../logging/logger.js';
|
|
|
9
7
|
export function extractFiles(manager) {
|
|
10
8
|
const config = manager.getConfig();
|
|
11
9
|
// files with absolute paths
|
|
12
|
-
const allFiles = findSourceFiles(config.matchingFiles);
|
|
10
|
+
const allFiles = findSourceFiles(config.matchingFiles, manager.rootDirectory);
|
|
13
11
|
logger.debugMessage(`Found ${allFiles.length} matching files`);
|
|
14
12
|
const dag = createDag(allFiles, {
|
|
15
|
-
tsConfig: findTsConfig(),
|
|
16
|
-
webpackConfig: findWebpackConfig(),
|
|
17
|
-
requireConfig: findRequireConfig(),
|
|
13
|
+
tsConfig: findTsConfig(manager.appDirectory),
|
|
14
|
+
webpackConfig: findWebpackConfig(manager.appDirectory),
|
|
15
|
+
requireConfig: findRequireConfig(manager.appDirectory),
|
|
18
16
|
});
|
|
19
17
|
// Create deep copy of topological order
|
|
20
18
|
const topologicalOrder = Array.from(dag.getTopologicalOrder());
|
|
21
19
|
// 2nd filter pass
|
|
22
|
-
const filteredFiles = filterFiles(config.matchingFiles, topologicalOrder);
|
|
20
|
+
const filteredFiles = filterFiles(config.matchingFiles, topologicalOrder, manager.rootDirectory);
|
|
23
21
|
logger.debugMessage(`Post-filter: ${filteredFiles.length} files`);
|
|
24
22
|
// Get lockfile path from manager
|
|
25
23
|
const lockfilePath = manager.getLockFilePath();
|
|
@@ -28,5 +26,4 @@ export function extractFiles(manager) {
|
|
|
28
26
|
logger.debugMessage(`Detected ${changedFiles.length} modified files`);
|
|
29
27
|
return { files: changedFiles, dag };
|
|
30
28
|
}
|
|
31
|
-
//# sourceMappingURL=extractFiles.js.map
|
|
32
|
-
//# debugId=996509db-1280-5f76-aa8f-6b3d3ffd7899
|
|
29
|
+
//# sourceMappingURL=extractFiles.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"extractFiles.js","sources":["utils/dag/extractFiles.ts"],"
|
|
1
|
+
{"version":3,"file":"extractFiles.js","sourceRoot":"/","sources":["utils/dag/extractFiles.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC/D,OAAO,EAAE,SAAS,EAAO,MAAM,gBAAgB,CAAC;AAChD,OAAO,EACL,YAAY,EACZ,iBAAiB,EACjB,iBAAiB,GAClB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AAEjD,kDAAkD;AAClD,MAAM,UAAU,YAAY,CAAC,OAAuB;IAIlD,MAAM,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAEnC,4BAA4B;IAC5B,MAAM,QAAQ,GAAG,eAAe,CAAC,MAAM,CAAC,aAAa,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;IAE9E,MAAM,CAAC,YAAY,CAAC,SAAS,QAAQ,CAAC,MAAM,iBAAiB,CAAC,CAAC;IAE/D,MAAM,GAAG,GAAG,SAAS,CAAC,QAAQ,EAAE;QAC9B,QAAQ,EAAE,YAAY,CAAC,OAAO,CAAC,YAAY,CAAC;QAC5C,aAAa,EAAE,iBAAiB,CAAC,OAAO,CAAC,YAAY,CAAC;QACtD,aAAa,EAAE,iBAAiB,CAAC,OAAO,CAAC,YAAY,CAAC;KACvD,CAAC,CAAC;IAEH,wCAAwC;IACxC,MAAM,gBAAgB,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,mBAAmB,EAAE,CAAC,CAAC;IAE/D,kBAAkB;IAClB,MAAM,aAAa,GAAG,WAAW,CAC/B,MAAM,CAAC,aAAa,EACpB,gBAAgB,EAChB,OAAO,CAAC,aAAa,CACtB,CAAC;IAEF,MAAM,CAAC,YAAY,CAAC,gBAAgB,aAAa,CAAC,MAAM,QAAQ,CAAC,CAAC;IAElE,iCAAiC;IACjC,MAAM,YAAY,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IAE/C,iEAAiE;IACjE,MAAM,YAAY,GAAG,eAAe,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC;IAElE,MAAM,CAAC,YAAY,CAAC,YAAY,YAAY,CAAC,MAAM,iBAAiB,CAAC,CAAC;IAEtE,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,GAAG,EAAE,CAAC;AACtC,CAAC","sourcesContent":["import { LocadexManager } from '../locadexManager.js';\nimport { getChangedFiles } from '../lockfile.js';\nimport { findSourceFiles, filterFiles } from './matchFiles.js';\nimport { createDag, Dag } from './createDag.js';\nimport {\n findTsConfig,\n findWebpackConfig,\n findRequireConfig,\n} from '../fs/findConfigs.js';\nimport { logger } from '../../logging/logger.js';\n\n// extracts list of files that should be processed\nexport function extractFiles(manager: LocadexManager): {\n files: string[];\n dag: Dag;\n} {\n const config = manager.getConfig();\n\n // files with absolute paths\n const allFiles = findSourceFiles(config.matchingFiles, manager.rootDirectory);\n\n logger.debugMessage(`Found ${allFiles.length} matching files`);\n\n const dag = createDag(allFiles, {\n tsConfig: findTsConfig(manager.appDirectory),\n webpackConfig: findWebpackConfig(manager.appDirectory),\n requireConfig: findRequireConfig(manager.appDirectory),\n });\n\n // Create deep copy of topological order\n const topologicalOrder = Array.from(dag.getTopologicalOrder());\n\n // 2nd filter pass\n const filteredFiles = filterFiles(\n config.matchingFiles,\n topologicalOrder,\n manager.rootDirectory\n );\n\n logger.debugMessage(`Post-filter: ${filteredFiles.length} files`);\n\n // Get lockfile path from manager\n const lockfilePath = manager.getLockFilePath();\n\n // Filter files to only include those with changed content hashes\n const changedFiles = getChangedFiles(filteredFiles, lockfilePath);\n\n logger.debugMessage(`Detected ${changedFiles.length} modified files`);\n\n return { files: changedFiles, dag };\n}\n"]}
|
|
@@ -5,14 +5,9 @@ export interface FileEntry {
|
|
|
5
5
|
setToEditedAt: string | null;
|
|
6
6
|
status: 'pending' | 'in_progress' | 'edited';
|
|
7
7
|
}
|
|
8
|
-
export declare function
|
|
9
|
-
export declare function addFilesToManager(projectPath?: string, files?: string[]): string;
|
|
8
|
+
export declare function addFilesToManager(filesStateFilePath: string, files: string[]): string;
|
|
10
9
|
export declare function markFileAsInProgress(filePath: string, stateFilePath: string): Promise<void>;
|
|
11
10
|
export declare function markFileAsEdited(filePath: string, stateFilePath: string): Promise<void>;
|
|
12
|
-
export declare function addNextJsFilesToManager(stateFilePath: string, projectPath?: string): {
|
|
13
|
-
added: string[];
|
|
14
|
-
existing: string[];
|
|
15
|
-
};
|
|
16
11
|
export declare function getCurrentFileList(stateFilePath: string): {
|
|
17
12
|
path: string;
|
|
18
13
|
addedAt: string;
|
|
@@ -20,10 +15,4 @@ export declare function getCurrentFileList(stateFilePath: string): {
|
|
|
20
15
|
setToEditedAt: string | null;
|
|
21
16
|
status: 'pending' | 'in_progress' | 'edited';
|
|
22
17
|
}[];
|
|
23
|
-
export declare function getNextJsAppRouterStats(projectPath?: string): {
|
|
24
|
-
totalFiles: number;
|
|
25
|
-
tsFiles: number;
|
|
26
|
-
tsxFiles: number;
|
|
27
|
-
directories: Set<string>;
|
|
28
|
-
};
|
|
29
18
|
//# sourceMappingURL=getFiles.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getFiles.d.ts","sourceRoot":"/","sources":["utils/dag/getFiles.ts"],"names":[],"mappings":"AAeA,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,MAAM,EAAE,SAAS,GAAG,aAAa,GAAG,QAAQ,CAAC;CAC9C;
|
|
1
|
+
{"version":3,"file":"getFiles.d.ts","sourceRoot":"/","sources":["utils/dag/getFiles.ts"],"names":[],"mappings":"AAeA,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,MAAM,EAAE,SAAS,GAAG,aAAa,GAAG,QAAQ,CAAC;CAC9C;AA6GD,wBAAgB,iBAAiB,CAC/B,kBAAkB,EAAE,MAAM,EAC1B,KAAK,EAAE,MAAM,EAAE,GACd,MAAM,CAUR;AAGD,wBAAsB,oBAAoB,CACxC,QAAQ,EAAE,MAAM,EAChB,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,IAAI,CAAC,CAIf;AAGD,wBAAsB,gBAAgB,CACpC,QAAQ,EAAE,MAAM,EAChB,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,IAAI,CAAC,CAIf;AAED,wBAAgB,kBAAkB,CAAC,aAAa,EAAE,MAAM,GAAG;IACzD,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,MAAM,EAAE,SAAS,GAAG,aAAa,GAAG,QAAQ,CAAC;CAC9C,EAAE,CAEF"}
|
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
|
|
2
|
-
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="7af7f6b8-b227-532d-9896-9c44cb6a66a9")}catch(e){}}();
|
|
3
1
|
import { readdirSync, statSync, existsSync, } from 'node:fs';
|
|
4
2
|
import { join, relative } from 'node:path';
|
|
5
3
|
import { readFileSync, writeFileSync } from 'node:fs';
|
|
@@ -89,16 +87,13 @@ function scanDirectory(dirPath, basePath) {
|
|
|
89
87
|
}
|
|
90
88
|
return files;
|
|
91
89
|
}
|
|
92
|
-
export function scanNextJsAppFiles(projectPath = process.cwd()) {
|
|
93
|
-
return scanDirectory(projectPath, projectPath);
|
|
94
|
-
}
|
|
95
90
|
// Used by dag command
|
|
96
|
-
export function addFilesToManager(
|
|
97
|
-
const existingFiles = getFileList(
|
|
91
|
+
export function addFilesToManager(filesStateFilePath, files) {
|
|
92
|
+
const existingFiles = getFileList(filesStateFilePath);
|
|
98
93
|
const existingPaths = new Set(existingFiles.map((f) => f.path));
|
|
99
94
|
files = files.filter((f) => !existingPaths.has(f));
|
|
100
|
-
files.forEach((filePath) => addFileToList(filePath,
|
|
101
|
-
return
|
|
95
|
+
files.forEach((filePath) => addFileToList(filePath, filesStateFilePath, 'pending'));
|
|
96
|
+
return filesStateFilePath;
|
|
102
97
|
}
|
|
103
98
|
// Used by dag command
|
|
104
99
|
export async function markFileAsInProgress(filePath, stateFilePath) {
|
|
@@ -112,50 +107,7 @@ export async function markFileAsEdited(filePath, stateFilePath) {
|
|
|
112
107
|
addFileToList(filePath, stateFilePath, 'edited');
|
|
113
108
|
});
|
|
114
109
|
}
|
|
115
|
-
export function addNextJsFilesToManager(stateFilePath, projectPath = process.cwd()) {
|
|
116
|
-
const discoveredFiles = scanNextJsAppFiles(projectPath);
|
|
117
|
-
const existingFiles = getFileList(stateFilePath);
|
|
118
|
-
const existingPaths = new Set(existingFiles.map((f) => f.path));
|
|
119
|
-
const added = [];
|
|
120
|
-
const existing = [];
|
|
121
|
-
for (const filePath of discoveredFiles) {
|
|
122
|
-
if (existingPaths.has(filePath)) {
|
|
123
|
-
existing.push(filePath);
|
|
124
|
-
}
|
|
125
|
-
else {
|
|
126
|
-
addFileToList(filePath, stateFilePath, 'pending');
|
|
127
|
-
added.push(filePath);
|
|
128
|
-
}
|
|
129
|
-
}
|
|
130
|
-
return { added, existing };
|
|
131
|
-
}
|
|
132
110
|
export function getCurrentFileList(stateFilePath) {
|
|
133
111
|
return getFileList(stateFilePath);
|
|
134
112
|
}
|
|
135
|
-
|
|
136
|
-
const files = scanNextJsAppFiles(projectPath);
|
|
137
|
-
let tsFiles = 0;
|
|
138
|
-
let tsxFiles = 0;
|
|
139
|
-
const directories = new Set();
|
|
140
|
-
for (const filePath of files) {
|
|
141
|
-
const fileName = filePath.split('/').pop() || '';
|
|
142
|
-
const dirPath = filePath.split('/').slice(0, -1).join('/');
|
|
143
|
-
if (dirPath) {
|
|
144
|
-
directories.add(dirPath);
|
|
145
|
-
}
|
|
146
|
-
if (fileName.endsWith('.ts')) {
|
|
147
|
-
tsFiles++;
|
|
148
|
-
}
|
|
149
|
-
else if (fileName.endsWith('.tsx')) {
|
|
150
|
-
tsxFiles++;
|
|
151
|
-
}
|
|
152
|
-
}
|
|
153
|
-
return {
|
|
154
|
-
totalFiles: files.length,
|
|
155
|
-
tsFiles,
|
|
156
|
-
tsxFiles,
|
|
157
|
-
directories,
|
|
158
|
-
};
|
|
159
|
-
}
|
|
160
|
-
//# sourceMappingURL=getFiles.js.map
|
|
161
|
-
//# debugId=7af7f6b8-b227-532d-9896-9c44cb6a66a9
|
|
113
|
+
//# sourceMappingURL=getFiles.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getFiles.js","sources":["utils/dag/getFiles.ts"],"sourceRoot":"/","sourcesContent":["import {\n readdirSync,\n statSync,\n existsSync,\n mkdirSync,\n unlinkSync,\n rmSync,\n} from 'node:fs';\nimport { join, relative, dirname } from 'node:path';\nimport { readFileSync, writeFileSync } from 'node:fs';\nimport { logger } from '../../logging/logger.js';\n\n// Mutex for thread-safe file operations\nconst fileMutexes = new Map<string, Promise<void>>();\n\nexport interface FileEntry {\n path: string;\n addedAt: string;\n setToInProgressAt: string | null;\n setToEditedAt: string | null;\n status: 'pending' | 'in_progress' | 'edited';\n}\n\nfunction getFileList(filePath: string): FileEntry[] {\n if (!existsSync(filePath)) {\n return [];\n }\n try {\n return JSON.parse(readFileSync(filePath, 'utf8'));\n } catch {\n return [];\n }\n}\n\nfunction saveFileList(files: FileEntry[], filePath: string): void {\n writeFileSync(filePath, JSON.stringify(files, null, 2));\n}\n\nasync function withFileMutex<T>(\n filePath: string,\n operation: () => T\n): Promise<T> {\n const existingMutex = fileMutexes.get(filePath) || Promise.resolve();\n const newMutex = existingMutex\n .then(() => operation())\n .catch((error) => {\n throw error;\n });\n fileMutexes.set(\n filePath,\n newMutex.then(() => {}).catch(() => {})\n ); // Store the promise but ignore errors for the next operation\n return newMutex;\n}\n\nfunction addFileToList(\n filePath: string,\n stateFilePath: string,\n status: 'pending' | 'in_progress' | 'edited' = 'pending'\n): void {\n const files = getFileList(stateFilePath);\n const existingIndex = files.findIndex((f) => f.path === filePath);\n const now = new Date().toISOString();\n\n if (existingIndex >= 0) {\n const file = files[existingIndex];\n const previousStatus = file.status;\n file.status = status;\n\n if (status === 'in_progress' && previousStatus !== 'in_progress') {\n file.setToInProgressAt = now;\n } else if (status === 'edited' && previousStatus !== 'edited') {\n file.setToEditedAt = now;\n }\n } else {\n files.push({\n path: filePath,\n addedAt: now,\n setToInProgressAt: status === 'in_progress' ? now : null,\n setToEditedAt: status === 'edited' ? now : null,\n status,\n });\n }\n\n saveFileList(files, stateFilePath);\n}\n\nfunction isTypeScriptFile(filePath: string): boolean {\n const fileName = filePath.split('/').pop() || '';\n return fileName.endsWith('.ts') || fileName.endsWith('.tsx');\n}\n\nfunction scanDirectory(dirPath: string, basePath: string): string[] {\n const files: string[] = [];\n\n if (!existsSync(dirPath)) {\n return files;\n }\n\n try {\n const items = readdirSync(dirPath);\n\n for (const item of items) {\n const fullPath = join(dirPath, item);\n const stat = statSync(fullPath);\n\n if (stat.isDirectory()) {\n // Skip node_modules, .next, and other common directories to ignore\n if (\n !['node_modules', '.next', '.git', 'dist', 'build', 'out'].includes(\n item\n )\n ) {\n files.push(...scanDirectory(fullPath, basePath));\n }\n } else if (stat.isFile()) {\n const relativePath = relative(basePath, fullPath);\n if (isTypeScriptFile(relativePath)) {\n files.push(relativePath);\n }\n }\n }\n } catch (error) {\n logger.warning(`Warning: Could not read directory ${dirPath}: ${error}`);\n }\n\n return files;\n}\n\nexport function scanNextJsAppFiles(\n projectPath: string = process.cwd()\n): string[] {\n return scanDirectory(projectPath, projectPath);\n}\n\n// Used by dag command\nexport function addFilesToManager(\n projectPath: string = process.cwd(),\n files: string[] = []\n): string {\n const existingFiles = getFileList(projectPath);\n const existingPaths = new Set(existingFiles.map((f) => f.path));\n files = files.filter((f) => !existingPaths.has(f));\n\n files.forEach((filePath) => addFileToList(filePath, projectPath, 'pending'));\n\n return projectPath;\n}\n\n// Used by dag command\nexport async function markFileAsInProgress(\n filePath: string,\n stateFilePath: string\n): Promise<void> {\n return withFileMutex(stateFilePath, () => {\n addFileToList(filePath, stateFilePath, 'in_progress');\n });\n}\n\n// Used by dag command\nexport async function markFileAsEdited(\n filePath: string,\n stateFilePath: string\n): Promise<void> {\n return withFileMutex(stateFilePath, () => {\n addFileToList(filePath, stateFilePath, 'edited');\n });\n}\n\nexport function addNextJsFilesToManager(\n stateFilePath: string,\n projectPath: string = process.cwd()\n): {\n added: string[];\n existing: string[];\n} {\n const discoveredFiles = scanNextJsAppFiles(projectPath);\n const existingFiles = getFileList(stateFilePath);\n const existingPaths = new Set(existingFiles.map((f) => f.path));\n\n const added: string[] = [];\n const existing: string[] = [];\n\n for (const filePath of discoveredFiles) {\n if (existingPaths.has(filePath)) {\n existing.push(filePath);\n } else {\n addFileToList(filePath, stateFilePath, 'pending');\n added.push(filePath);\n }\n }\n\n return { added, existing };\n}\n\nexport function getCurrentFileList(stateFilePath: string): {\n path: string;\n addedAt: string;\n setToInProgressAt: string | null;\n setToEditedAt: string | null;\n status: 'pending' | 'in_progress' | 'edited';\n}[] {\n return getFileList(stateFilePath);\n}\n\nexport function getNextJsAppRouterStats(projectPath: string = process.cwd()): {\n totalFiles: number;\n tsFiles: number;\n tsxFiles: number;\n directories: Set<string>;\n} {\n const files = scanNextJsAppFiles(projectPath);\n\n let tsFiles = 0;\n let tsxFiles = 0;\n const directories = new Set<string>();\n\n for (const filePath of files) {\n const fileName = filePath.split('/').pop() || '';\n const dirPath = filePath.split('/').slice(0, -1).join('/');\n\n if (dirPath) {\n directories.add(dirPath);\n }\n\n if (fileName.endsWith('.ts')) {\n tsFiles++;\n } else if (fileName.endsWith('.tsx')) {\n tsxFiles++;\n }\n }\n\n return {\n totalFiles: files.length,\n tsFiles,\n tsxFiles,\n directories,\n };\n}\n"],"names":[],"mappings":"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","debug_id":"7af7f6b8-b227-532d-9896-9c44cb6a66a9"}
|
|
1
|
+
{"version":3,"file":"getFiles.js","sourceRoot":"/","sources":["utils/dag/getFiles.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n readdirSync,\n statSync,\n existsSync,\n mkdirSync,\n unlinkSync,\n rmSync,\n} from 'node:fs';\nimport { join, relative, dirname } from 'node:path';\nimport { readFileSync, writeFileSync } from 'node:fs';\nimport { logger } from '../../logging/logger.js';\n\n// Mutex for thread-safe file operations\nconst fileMutexes = new Map<string, Promise<void>>();\n\nexport interface FileEntry {\n path: string;\n addedAt: string;\n setToInProgressAt: string | null;\n setToEditedAt: string | null;\n status: 'pending' | 'in_progress' | 'edited';\n}\n\nfunction getFileList(filePath: string): FileEntry[] {\n if (!existsSync(filePath)) {\n return [];\n }\n try {\n return JSON.parse(readFileSync(filePath, 'utf8'));\n } catch {\n return [];\n }\n}\n\nfunction saveFileList(files: FileEntry[], filePath: string): void {\n writeFileSync(filePath, JSON.stringify(files, null, 2));\n}\n\nasync function withFileMutex<T>(\n filePath: string,\n operation: () => T\n): Promise<T> {\n const existingMutex = fileMutexes.get(filePath) || Promise.resolve();\n const newMutex = existingMutex\n .then(() => operation())\n .catch((error) => {\n throw error;\n });\n fileMutexes.set(\n filePath,\n newMutex.then(() => {}).catch(() => {})\n ); // Store the promise but ignore errors for the next operation\n return newMutex;\n}\n\nfunction addFileToList(\n filePath: string,\n stateFilePath: string,\n status: 'pending' | 'in_progress' | 'edited' = 'pending'\n): void {\n const files = getFileList(stateFilePath);\n const existingIndex = files.findIndex((f) => f.path === filePath);\n const now = new Date().toISOString();\n\n if (existingIndex >= 0) {\n const file = files[existingIndex];\n const previousStatus = file.status;\n file.status = status;\n\n if (status === 'in_progress' && previousStatus !== 'in_progress') {\n file.setToInProgressAt = now;\n } else if (status === 'edited' && previousStatus !== 'edited') {\n file.setToEditedAt = now;\n }\n } else {\n files.push({\n path: filePath,\n addedAt: now,\n setToInProgressAt: status === 'in_progress' ? now : null,\n setToEditedAt: status === 'edited' ? now : null,\n status,\n });\n }\n\n saveFileList(files, stateFilePath);\n}\n\nfunction isTypeScriptFile(filePath: string): boolean {\n const fileName = filePath.split('/').pop() || '';\n return fileName.endsWith('.ts') || fileName.endsWith('.tsx');\n}\n\nfunction scanDirectory(dirPath: string, basePath: string): string[] {\n const files: string[] = [];\n\n if (!existsSync(dirPath)) {\n return files;\n }\n\n try {\n const items = readdirSync(dirPath);\n\n for (const item of items) {\n const fullPath = join(dirPath, item);\n const stat = statSync(fullPath);\n\n if (stat.isDirectory()) {\n // Skip node_modules, .next, and other common directories to ignore\n if (\n !['node_modules', '.next', '.git', 'dist', 'build', 'out'].includes(\n item\n )\n ) {\n files.push(...scanDirectory(fullPath, basePath));\n }\n } else if (stat.isFile()) {\n const relativePath = relative(basePath, fullPath);\n if (isTypeScriptFile(relativePath)) {\n files.push(relativePath);\n }\n }\n }\n } catch (error) {\n logger.warning(`Warning: Could not read directory ${dirPath}: ${error}`);\n }\n\n return files;\n}\n\n// Used by dag command\nexport function addFilesToManager(\n filesStateFilePath: string,\n files: string[]\n): string {\n const existingFiles = getFileList(filesStateFilePath);\n const existingPaths = new Set(existingFiles.map((f) => f.path));\n files = files.filter((f) => !existingPaths.has(f));\n\n files.forEach((filePath) =>\n addFileToList(filePath, filesStateFilePath, 'pending')\n );\n\n return filesStateFilePath;\n}\n\n// Used by dag command\nexport async function markFileAsInProgress(\n filePath: string,\n stateFilePath: string\n): Promise<void> {\n return withFileMutex(stateFilePath, () => {\n addFileToList(filePath, stateFilePath, 'in_progress');\n });\n}\n\n// Used by dag command\nexport async function markFileAsEdited(\n filePath: string,\n stateFilePath: string\n): Promise<void> {\n return withFileMutex(stateFilePath, () => {\n addFileToList(filePath, stateFilePath, 'edited');\n });\n}\n\nexport function getCurrentFileList(stateFilePath: string): {\n path: string;\n addedAt: string;\n setToInProgressAt: string | null;\n setToEditedAt: string | null;\n status: 'pending' | 'in_progress' | 'edited';\n}[] {\n return getFileList(stateFilePath);\n}\n"]}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export declare function findSourceFiles(globPatterns: string[], cwd
|
|
2
|
-
export declare function filterFiles(globPatterns: string[], filePaths: string[], cwd
|
|
1
|
+
export declare function findSourceFiles(globPatterns: string[], cwd: string): string[];
|
|
2
|
+
export declare function filterFiles(globPatterns: string[], filePaths: string[], cwd: string): string[];
|
|
3
3
|
//# sourceMappingURL=matchFiles.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"matchFiles.d.ts","sourceRoot":"/","sources":["utils/dag/matchFiles.ts"],"names":[],"mappings":"AAWA,wBAAgB,eAAe,
|
|
1
|
+
{"version":3,"file":"matchFiles.d.ts","sourceRoot":"/","sources":["utils/dag/matchFiles.ts"],"names":[],"mappings":"AAWA,wBAAgB,eAAe,CAAC,YAAY,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,CAwC7E;AAED,wBAAgB,WAAW,CACzB,YAAY,EAAE,MAAM,EAAE,EACtB,SAAS,EAAE,MAAM,EAAE,EACnB,GAAG,EAAE,MAAM,GACV,MAAM,EAAE,CAuBV"}
|
|
@@ -1,12 +1,10 @@
|
|
|
1
|
-
|
|
2
|
-
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="385e3c9c-1912-5a98-98b9-de9a8d7bff43")}catch(e){}}();
|
|
3
1
|
import { logger } from '../../logging/logger.js';
|
|
4
2
|
import * as path from 'node:path';
|
|
5
3
|
import fg from 'fast-glob';
|
|
6
4
|
import micromatch from 'micromatch';
|
|
7
5
|
const { isMatch } = micromatch;
|
|
8
6
|
import { DAG_IGNORED_EXTENSIONS, DAG_IGNORED_FILES, DAG_IGNORED_PATTERNS, } from '../shared.js';
|
|
9
|
-
export function findSourceFiles(globPatterns, cwd
|
|
7
|
+
export function findSourceFiles(globPatterns, cwd) {
|
|
10
8
|
const allFiles = [];
|
|
11
9
|
for (const pattern of globPatterns) {
|
|
12
10
|
try {
|
|
@@ -36,7 +34,7 @@ export function findSourceFiles(globPatterns, cwd = process.cwd()) {
|
|
|
36
34
|
});
|
|
37
35
|
return filteredFiles;
|
|
38
36
|
}
|
|
39
|
-
export function filterFiles(globPatterns, filePaths, cwd
|
|
37
|
+
export function filterFiles(globPatterns, filePaths, cwd) {
|
|
40
38
|
if (globPatterns.length === 0) {
|
|
41
39
|
return filePaths;
|
|
42
40
|
}
|
|
@@ -57,5 +55,4 @@ export function filterFiles(globPatterns, filePaths, cwd = process.cwd()) {
|
|
|
57
55
|
});
|
|
58
56
|
});
|
|
59
57
|
}
|
|
60
|
-
//# sourceMappingURL=matchFiles.js.map
|
|
61
|
-
//# debugId=385e3c9c-1912-5a98-98b9-de9a8d7bff43
|
|
58
|
+
//# sourceMappingURL=matchFiles.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"matchFiles.js","sources":["utils/dag/matchFiles.ts"],"
|
|
1
|
+
{"version":3,"file":"matchFiles.js","sourceRoot":"/","sources":["utils/dag/matchFiles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AACjD,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,MAAM,WAAW,CAAC;AAC3B,OAAO,UAAU,MAAM,YAAY,CAAC;AACpC,MAAM,EAAE,OAAO,EAAE,GAAG,UAAU,CAAC;AAC/B,OAAO,EACL,sBAAsB,EACtB,iBAAiB,EACjB,oBAAoB,GACrB,MAAM,cAAc,CAAC;AAEtB,MAAM,UAAU,eAAe,CAAC,YAAsB,EAAE,GAAW;IACjE,MAAM,QAAQ,GAAa,EAAE,CAAC;IAE9B,KAAK,MAAM,OAAO,IAAI,YAAY,EAAE,CAAC;QACnC,IAAI,CAAC;YACH,MAAM,YAAY,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE;gBACpC,GAAG;gBACH,QAAQ,EAAE,IAAI;gBACd,SAAS,EAAE,IAAI;gBACf,MAAM,EAAE,oBAAoB;aAC7B,CAAC,CAAC;YAEH,QAAQ,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,CAAC;QACjC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,YAAY,CACjB,mCAAmC,OAAO,MAAM,KAAK,EAAE,CACxD,CAAC;QACJ,CAAC;IACH,CAAC;IAED,oBAAoB;IACpB,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC;IAElD,4CAA4C;IAC5C,MAAM,aAAa,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE;QAChD,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAErC,MAAM,uBAAuB,GAAG,sBAAsB,CAAC,IAAI,CACzD,CAAC,cAAc,EAAE,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,cAAc,CAAC,CACtD,CAAC;QAEF,wCAAwC;QACxC,IAAI,uBAAuB,IAAI,iBAAiB,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;YACpE,OAAO,KAAK,CAAC;QACf,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC,CAAC,CAAC;IAEH,OAAO,aAAa,CAAC;AACvB,CAAC;AAED,MAAM,UAAU,WAAW,CACzB,YAAsB,EACtB,SAAmB,EACnB,GAAW;IAEX,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC9B,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,OAAO,SAAS,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,EAAE;QACnC,uCAAuC;QACvC,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;YAC5C,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC;YAC9B,CAAC,CAAC,QAAQ,CAAC;QAEb,iDAAiD;QACjD,OAAO,YAAY,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE;YACnC,IAAI,CAAC;gBACH,OAAO,OAAO,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;YACxC,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,CAAC,YAAY,CACjB,yBAAyB,QAAQ,sBAAsB,OAAO,MAAM,KAAK,EAAE,CAC5E,CAAC;gBACF,OAAO,KAAK,CAAC;YACf,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC","sourcesContent":["import { logger } from '../../logging/logger.js';\nimport * as path from 'node:path';\nimport fg from 'fast-glob';\nimport micromatch from 'micromatch';\nconst { isMatch } = micromatch;\nimport {\n DAG_IGNORED_EXTENSIONS,\n DAG_IGNORED_FILES,\n DAG_IGNORED_PATTERNS,\n} from '../shared.js';\n\nexport function findSourceFiles(globPatterns: string[], cwd: string): string[] {\n const allFiles: string[] = [];\n\n for (const pattern of globPatterns) {\n try {\n const matchedFiles = fg.sync(pattern, {\n cwd,\n absolute: true,\n onlyFiles: true,\n ignore: DAG_IGNORED_PATTERNS,\n });\n\n allFiles.push(...matchedFiles);\n } catch (error) {\n logger.debugMessage(\n `Failed to process glob pattern \"${pattern}\": ${error}`\n );\n }\n }\n\n // Remove duplicates\n const uniqueFiles = Array.from(new Set(allFiles));\n\n // Filter by extensions and apply blacklists\n const filteredFiles = uniqueFiles.filter((file) => {\n const filename = path.basename(file);\n\n const hasBlacklistedExtension = DAG_IGNORED_EXTENSIONS.some(\n (blacklistedExt) => filename.endsWith(blacklistedExt)\n );\n\n // Skip blacklisted extensions and files\n if (hasBlacklistedExtension || DAG_IGNORED_FILES.includes(filename)) {\n return false;\n }\n\n return true;\n });\n\n return filteredFiles;\n}\n\nexport function filterFiles(\n globPatterns: string[],\n filePaths: string[],\n cwd: string\n): string[] {\n if (globPatterns.length === 0) {\n return filePaths;\n }\n\n return filePaths.filter((filePath) => {\n // Convert to relative path if absolute\n const relativePath = path.isAbsolute(filePath)\n ? path.relative(cwd, filePath)\n : filePath;\n\n // Check if file matches any of the glob patterns\n return globPatterns.some((pattern) => {\n try {\n return isMatch(relativePath, pattern);\n } catch (error) {\n logger.debugMessage(\n `Failed to match file \"${filePath}\" against pattern \"${pattern}\": ${error}`\n );\n return false;\n }\n });\n });\n}\n"]}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
export declare function findTsConfig(): string | undefined;
|
|
2
|
-
export declare function findWebpackConfig(): string | undefined;
|
|
1
|
+
export declare function findTsConfig(cwd: string): string | undefined;
|
|
2
|
+
export declare function findWebpackConfig(cwd: string): string | undefined;
|
|
3
3
|
/**
|
|
4
4
|
* Resolve the file paths from the given file paths or default paths.
|
|
5
5
|
* @param {string[]} paths - The file paths to resolve.
|
|
6
6
|
* @param {string} errorMessage - The error message to throw if no paths are found.
|
|
7
7
|
* @returns {string[]} - The resolved file paths.
|
|
8
8
|
*/
|
|
9
|
-
export declare function findRequireConfig(): string | undefined;
|
|
10
|
-
export declare function findFilepaths(paths: string[]): string[];
|
|
9
|
+
export declare function findRequireConfig(cwd: string): string | undefined;
|
|
10
|
+
export declare function findFilepaths(paths: string[], cwd: string): string[];
|
|
11
11
|
//# sourceMappingURL=findConfigs.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"findConfigs.d.ts","sourceRoot":"/","sources":["utils/fs/findConfigs.ts"],"names":[],"mappings":"AAGA,wBAAgB,YAAY,
|
|
1
|
+
{"version":3,"file":"findConfigs.d.ts","sourceRoot":"/","sources":["utils/fs/findConfigs.ts"],"names":[],"mappings":"AAGA,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAc5D;AAED,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAejE;AACD;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAajE;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,CAQpE"}
|
|
@@ -1,9 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="c5944047-538f-5ac2-a4c8-a3dbe5e4ba6b")}catch(e){}}();
|
|
3
1
|
import path from 'node:path';
|
|
4
2
|
import fs from 'node:fs';
|
|
5
|
-
export function findTsConfig() {
|
|
6
|
-
const cwd = process.cwd();
|
|
3
|
+
export function findTsConfig(cwd) {
|
|
7
4
|
const possiblePaths = [
|
|
8
5
|
path.join(cwd, 'tsconfig.json'),
|
|
9
6
|
path.join(cwd, 'tsconfig.app.json'),
|
|
@@ -16,8 +13,7 @@ export function findTsConfig() {
|
|
|
16
13
|
}
|
|
17
14
|
return undefined;
|
|
18
15
|
}
|
|
19
|
-
export function findWebpackConfig() {
|
|
20
|
-
const cwd = process.cwd();
|
|
16
|
+
export function findWebpackConfig(cwd) {
|
|
21
17
|
const possiblePaths = [
|
|
22
18
|
path.join(cwd, 'webpack.config.js'),
|
|
23
19
|
path.join(cwd, 'webpack.config.ts'),
|
|
@@ -37,8 +33,7 @@ export function findWebpackConfig() {
|
|
|
37
33
|
* @param {string} errorMessage - The error message to throw if no paths are found.
|
|
38
34
|
* @returns {string[]} - The resolved file paths.
|
|
39
35
|
*/
|
|
40
|
-
export function findRequireConfig() {
|
|
41
|
-
const cwd = process.cwd();
|
|
36
|
+
export function findRequireConfig(cwd) {
|
|
42
37
|
const possiblePaths = [
|
|
43
38
|
path.join(cwd, 'require.config.js'),
|
|
44
39
|
path.join(cwd, 'requirejs.config.js'),
|
|
@@ -50,14 +45,13 @@ export function findRequireConfig() {
|
|
|
50
45
|
}
|
|
51
46
|
return undefined;
|
|
52
47
|
}
|
|
53
|
-
export function findFilepaths(paths) {
|
|
48
|
+
export function findFilepaths(paths, cwd) {
|
|
54
49
|
const resolvedPaths = [];
|
|
55
50
|
for (const possiblePath of paths) {
|
|
56
|
-
if (fs.existsSync(possiblePath)) {
|
|
57
|
-
resolvedPaths.push(possiblePath);
|
|
51
|
+
if (fs.existsSync(path.resolve(cwd, possiblePath))) {
|
|
52
|
+
resolvedPaths.push(path.resolve(cwd, possiblePath));
|
|
58
53
|
}
|
|
59
54
|
}
|
|
60
55
|
return resolvedPaths;
|
|
61
56
|
}
|
|
62
|
-
//# sourceMappingURL=findConfigs.js.map
|
|
63
|
-
//# debugId=c5944047-538f-5ac2-a4c8-a3dbe5e4ba6b
|
|
57
|
+
//# sourceMappingURL=findConfigs.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"findConfigs.js","sources":["utils/fs/findConfigs.ts"],"
|
|
1
|
+
{"version":3,"file":"findConfigs.js","sourceRoot":"/","sources":["utils/fs/findConfigs.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,MAAM,SAAS,CAAC;AAEzB,MAAM,UAAU,YAAY,CAAC,GAAW;IACtC,MAAM,aAAa,GAAG;QACpB,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,eAAe,CAAC;QAC/B,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,mBAAmB,CAAC;QACnC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,eAAe,CAAC;KAChC,CAAC;IAEF,KAAK,MAAM,UAAU,IAAI,aAAa,EAAE,CAAC;QACvC,IAAI,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAC9B,OAAO,UAAU,CAAC;QACpB,CAAC;IACH,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,GAAW;IAC3C,MAAM,aAAa,GAAG;QACpB,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,mBAAmB,CAAC;QACnC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,mBAAmB,CAAC;QACnC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,gBAAgB,CAAC;QAChC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,gBAAgB,CAAC;KACjC,CAAC;IAEF,KAAK,MAAM,UAAU,IAAI,aAAa,EAAE,CAAC;QACvC,IAAI,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAC9B,OAAO,UAAU,CAAC;QACpB,CAAC;IACH,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AACD;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB,CAAC,GAAW;IAC3C,MAAM,aAAa,GAAG;QACpB,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,mBAAmB,CAAC;QACnC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,qBAAqB,CAAC;KACtC,CAAC;IAEF,KAAK,MAAM,UAAU,IAAI,aAAa,EAAE,CAAC;QACvC,IAAI,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAC9B,OAAO,UAAU,CAAC;QACpB,CAAC;IACH,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,KAAe,EAAE,GAAW;IACxD,MAAM,aAAa,GAAa,EAAE,CAAC;IACnC,KAAK,MAAM,YAAY,IAAI,KAAK,EAAE,CAAC;QACjC,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC,EAAE,CAAC;YACnD,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC,CAAC;QACtD,CAAC;IACH,CAAC;IACD,OAAO,aAAa,CAAC;AACvB,CAAC","sourcesContent":["import path from 'node:path';\nimport fs from 'node:fs';\n\nexport function findTsConfig(cwd: string): string | undefined {\n const possiblePaths = [\n path.join(cwd, 'tsconfig.json'),\n path.join(cwd, 'tsconfig.app.json'),\n path.join(cwd, 'jsconfig.json'),\n ];\n\n for (const configPath of possiblePaths) {\n if (fs.existsSync(configPath)) {\n return configPath;\n }\n }\n\n return undefined;\n}\n\nexport function findWebpackConfig(cwd: string): string | undefined {\n const possiblePaths = [\n path.join(cwd, 'webpack.config.js'),\n path.join(cwd, 'webpack.config.ts'),\n path.join(cwd, 'next.config.js'),\n path.join(cwd, 'next.config.ts'),\n ];\n\n for (const configPath of possiblePaths) {\n if (fs.existsSync(configPath)) {\n return configPath;\n }\n }\n\n return undefined;\n}\n/**\n * Resolve the file paths from the given file paths or default paths.\n * @param {string[]} paths - The file paths to resolve.\n * @param {string} errorMessage - The error message to throw if no paths are found.\n * @returns {string[]} - The resolved file paths.\n */\nexport function findRequireConfig(cwd: string): string | undefined {\n const possiblePaths = [\n path.join(cwd, 'require.config.js'),\n path.join(cwd, 'requirejs.config.js'),\n ];\n\n for (const configPath of possiblePaths) {\n if (fs.existsSync(configPath)) {\n return configPath;\n }\n }\n\n return undefined;\n}\n\nexport function findFilepaths(paths: string[], cwd: string): string[] {\n const resolvedPaths: string[] = [];\n for (const possiblePath of paths) {\n if (fs.existsSync(path.resolve(cwd, possiblePath))) {\n resolvedPaths.push(path.resolve(cwd, possiblePath));\n }\n }\n return resolvedPaths;\n}\n"]}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare function getNextDirectories(): string[];
|
|
1
|
+
export declare function getNextDirectories(cwd: string): string[];
|
|
2
2
|
//# sourceMappingURL=getFiles.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getFiles.d.ts","sourceRoot":"/","sources":["utils/fs/getFiles.ts"],"names":[],"mappings":"AAEA,wBAAgB,kBAAkB,
|
|
1
|
+
{"version":3,"file":"getFiles.d.ts","sourceRoot":"/","sources":["utils/fs/getFiles.ts"],"names":[],"mappings":"AAEA,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,CAExD"}
|
|
@@ -1,8 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="5880a845-edd4-5978-b1b6-c3042850b994")}catch(e){}}();
|
|
3
1
|
import { findFilepaths } from './findConfigs.js';
|
|
4
|
-
export function getNextDirectories() {
|
|
5
|
-
return findFilepaths(['./src', './app', './pages']);
|
|
2
|
+
export function getNextDirectories(cwd) {
|
|
3
|
+
return findFilepaths(['./src', './app', './pages'], cwd);
|
|
6
4
|
}
|
|
7
|
-
//# sourceMappingURL=getFiles.js.map
|
|
8
|
-
//# debugId=5880a845-edd4-5978-b1b6-c3042850b994
|
|
5
|
+
//# sourceMappingURL=getFiles.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getFiles.js","sources":["utils/fs/getFiles.ts"],"
|
|
1
|
+
{"version":3,"file":"getFiles.js","sourceRoot":"/","sources":["utils/fs/getFiles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD,MAAM,UAAU,kBAAkB,CAAC,GAAW;IAC5C,OAAO,aAAa,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,CAAC,EAAE,GAAG,CAAC,CAAC;AAC3D,CAAC","sourcesContent":["import { findFilepaths } from './findConfigs.js';\n\nexport function getNextDirectories(cwd: string): string[] {\n return findFilepaths(['./src', './app', './pages'], cwd);\n}\n"]}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Deletes any newly created (untracked) files, except those in ignoreDirectories.
|
|
3
|
+
* @param ignoreDirectories - Array of directory names to ignore (relative to repo root).
|
|
4
|
+
*/
|
|
5
|
+
export declare function deleteAddedFiles(ignoreDirectories: string[]): void;
|
|
6
|
+
//# sourceMappingURL=git.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"git.d.ts","sourceRoot":"/","sources":["utils/fs/git.ts"],"names":[],"mappings":"AAIA;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,iBAAiB,EAAE,MAAM,EAAE,QA8B3D"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { execSync } from 'child_process';
|
|
2
|
+
import { unlinkSync } from 'fs';
|
|
3
|
+
import { logger } from '../../logging/logger.js';
|
|
4
|
+
/**
|
|
5
|
+
* Deletes any newly created (untracked) files, except those in ignoreDirectories.
|
|
6
|
+
* @param ignoreDirectories - Array of directory names to ignore (relative to repo root).
|
|
7
|
+
*/
|
|
8
|
+
export function deleteAddedFiles(ignoreDirectories) {
|
|
9
|
+
logger.debugMessage(`Deleting untracked files, ignoring directories: ${ignoreDirectories.join(', ')}`);
|
|
10
|
+
// Get list of untracked files from git
|
|
11
|
+
const output = execSync('git status --porcelain', { encoding: 'utf-8' });
|
|
12
|
+
const untrackedFiles = output
|
|
13
|
+
.split('\n')
|
|
14
|
+
.filter((line) => line.startsWith('?? '))
|
|
15
|
+
.map((line) => line.slice(3).trim())
|
|
16
|
+
.filter((file) => file.length > 0);
|
|
17
|
+
// Filter out files in ignored directories
|
|
18
|
+
const filesToDelete = untrackedFiles.filter((file) => {
|
|
19
|
+
return !ignoreDirectories.some((dir) => file === dir || file.startsWith(dir + '/'));
|
|
20
|
+
});
|
|
21
|
+
// Delete each file
|
|
22
|
+
for (const file of filesToDelete) {
|
|
23
|
+
try {
|
|
24
|
+
unlinkSync(file);
|
|
25
|
+
}
|
|
26
|
+
catch (err) {
|
|
27
|
+
// Optionally log or handle errors
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
logger.verboseMessage(`Deleted ${filesToDelete.length} untracked files`);
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=git.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"git.js","sourceRoot":"/","sources":["utils/fs/git.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAChC,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AAEjD;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAAC,iBAA2B;IAC1D,MAAM,CAAC,YAAY,CACjB,mDAAmD,iBAAiB,CAAC,IAAI,CACvE,IAAI,CACL,EAAE,CACJ,CAAC;IACF,uCAAuC;IACvC,MAAM,MAAM,GAAG,QAAQ,CAAC,wBAAwB,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;IACzE,MAAM,cAAc,GAAG,MAAM;SAC1B,KAAK,CAAC,IAAI,CAAC;SACX,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;SACxC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;SACnC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAErC,0CAA0C;IAC1C,MAAM,aAAa,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE;QACnD,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAC5B,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,KAAK,GAAG,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,GAAG,GAAG,CAAC,CACpD,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,mBAAmB;IACnB,KAAK,MAAM,IAAI,IAAI,aAAa,EAAE,CAAC;QACjC,IAAI,CAAC;YACH,UAAU,CAAC,IAAI,CAAC,CAAC;QACnB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,kCAAkC;QACpC,CAAC;IACH,CAAC;IACD,MAAM,CAAC,cAAc,CAAC,WAAW,aAAa,CAAC,MAAM,kBAAkB,CAAC,CAAC;AAC3E,CAAC","sourcesContent":["import { execSync } from 'child_process';\nimport { unlinkSync } from 'fs';\nimport { logger } from '../../logging/logger.js';\n\n/**\n * Deletes any newly created (untracked) files, except those in ignoreDirectories.\n * @param ignoreDirectories - Array of directory names to ignore (relative to repo root).\n */\nexport function deleteAddedFiles(ignoreDirectories: string[]) {\n logger.debugMessage(\n `Deleting untracked files, ignoring directories: ${ignoreDirectories.join(\n ', '\n )}`\n );\n // Get list of untracked files from git\n const output = execSync('git status --porcelain', { encoding: 'utf-8' });\n const untrackedFiles = output\n .split('\\n')\n .filter((line) => line.startsWith('?? '))\n .map((line) => line.slice(3).trim())\n .filter((file) => file.length > 0);\n\n // Filter out files in ignored directories\n const filesToDelete = untrackedFiles.filter((file) => {\n return !ignoreDirectories.some(\n (dir) => file === dir || file.startsWith(dir + '/')\n );\n });\n\n // Delete each file\n for (const file of filesToDelete) {\n try {\n unlinkSync(file);\n } catch (err) {\n // Optionally log or handle errors\n }\n }\n logger.verboseMessage(`Deleted ${filesToDelete.length} untracked files`);\n}\n"]}
|
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
|
|
2
|
-
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="2167fd1f-2d12-53df-8e71-446f613756d0")}catch(e){}}();
|
|
3
1
|
import path from 'node:path';
|
|
4
2
|
import fs from 'node:fs';
|
|
5
3
|
// Add a file to the .gitignore file
|
|
@@ -15,5 +13,4 @@ export async function addToGitIgnore(relativeDirPath, fileName) {
|
|
|
15
13
|
await fs.promises.writeFile(gitignoreFile, `# Locadex\n${fileName}\n`, 'utf8');
|
|
16
14
|
}
|
|
17
15
|
}
|
|
18
|
-
//# sourceMappingURL=writeFiles.js.map
|
|
19
|
-
//# debugId=2167fd1f-2d12-53df-8e71-446f613756d0
|
|
16
|
+
//# sourceMappingURL=writeFiles.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"writeFiles.js","sources":["utils/fs/writeFiles.ts"],"
|
|
1
|
+
{"version":3,"file":"writeFiles.js","sourceRoot":"/","sources":["utils/fs/writeFiles.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,MAAM,SAAS,CAAC;AAEzB,oCAAoC;AACpC,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,eAAuB,EACvB,QAAgB;IAEhB,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,YAAY,CAAC,CAAC;IAC/D,IAAI,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;QACjC,MAAM,gBAAgB,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;QAC3E,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;YACzC,MAAM,EAAE,CAAC,QAAQ,CAAC,UAAU,CAC1B,aAAa,EACb,gBAAgB,QAAQ,IAAI,EAC5B,MAAM,CACP,CAAC;QACJ,CAAC;IACH,CAAC;SAAM,CAAC;QACN,MAAM,EAAE,CAAC,QAAQ,CAAC,SAAS,CACzB,aAAa,EACb,cAAc,QAAQ,IAAI,EAC1B,MAAM,CACP,CAAC;IACJ,CAAC;AACH,CAAC","sourcesContent":["import path from 'node:path';\nimport fs from 'node:fs';\n\n// Add a file to the .gitignore file\nexport async function addToGitIgnore(\n relativeDirPath: string,\n fileName: string\n) {\n const gitignoreFile = path.join(relativeDirPath, '.gitignore');\n if (fs.existsSync(gitignoreFile)) {\n const gitignoreContent = await fs.promises.readFile(gitignoreFile, 'utf8');\n if (!gitignoreContent.includes(fileName)) {\n await fs.promises.appendFile(\n gitignoreFile,\n `\\n# Locadex\\n${fileName}\\n`,\n 'utf8'\n );\n }\n } else {\n await fs.promises.writeFile(\n gitignoreFile,\n `# Locadex\\n${fileName}\\n`,\n 'utf8'\n );\n }\n}\n"]}
|