depflow 1.1.1 → 2.0.0-dev.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.
@@ -0,0 +1,15 @@
1
+ /**
2
+ * @author NetFeez <netfeez.dev@gmail.com>
3
+ * @description Utility to help with File operations.
4
+ * @license Apache-2.0
5
+ */
6
+ import schemas from './schemas.js';
7
+ export declare class Config {
8
+ static load(path: string): Promise<Config.Config>;
9
+ static save(path: string, config: Config.ConfigToProcess): Promise<void>;
10
+ }
11
+ export declare namespace Config {
12
+ type Config = typeof schemas.config.infer;
13
+ type ConfigToProcess = typeof schemas.config.inferToProcess;
14
+ }
15
+ export default Config;
@@ -0,0 +1,21 @@
1
+ /**
2
+ * @author NetFeez <netfeez.dev@gmail.com>
3
+ * @description Utility to help with File operations.
4
+ * @license Apache-2.0
5
+ */
6
+ import { promises as FS } from 'fs';
7
+ import schemas from './schemas.js';
8
+ export class Config {
9
+ static async load(path) {
10
+ const content = await FS.readFile(path, 'utf-8');
11
+ const json = JSON.parse(content);
12
+ const config = schemas.config.processData(json);
13
+ return config;
14
+ }
15
+ static async save(path, config) {
16
+ const content = JSON.stringify(config, null, 2);
17
+ await FS.writeFile(path, content, 'utf-8');
18
+ }
19
+ }
20
+ export default Config;
21
+ //# sourceMappingURL=Config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Config.js","sourceRoot":"","sources":["../src/Config.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,IAAI,CAAC;AACpC,OAAO,OAAO,MAAM,cAAc,CAAC;AAEnC,MAAM,OAAO,MAAM;IACf,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAY;QAC1B,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACjD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACjC,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QAChD,OAAO,MAAM,CAAC;IAClB,CAAC;IACD,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAY,EAAE,MAA8B;QAC1D,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QAChD,MAAM,EAAE,CAAC,SAAS,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IAC/C,CAAC;CACJ;AAMD,eAAe,MAAM,CAAC"}
@@ -1,10 +1,11 @@
1
1
  import { ChildProcessWithoutNullStreams } from "child_process";
2
+ import schemas from "./schemas.js";
2
3
  export declare class Dependency implements Dependency.Dependency {
3
4
  static include: string[];
4
5
  readonly name: string;
5
6
  readonly repo: Dependency.repo;
6
7
  readonly branch?: string;
7
- readonly builder?: Dependency.Builder;
8
+ readonly builder: Dependency.Builder[];
8
9
  /**
9
10
  * Create a new dependency
10
11
  * @param dependency Dependency to create
@@ -37,7 +38,7 @@ export declare class Dependency implements Dependency.Dependency {
37
38
  */
38
39
  uninstall(): Promise<string[]>;
39
40
  protected build(): Promise<string[]>;
40
- protected move(move: Dependency.Builder.MoveType): Promise<string[]>;
41
+ protected move(move: Dependency.Builder['move']): Promise<string[]>;
41
42
  /**
42
43
  * Execute multiple commands in a shell
43
44
  * @param commands Commands to execute
@@ -70,28 +71,14 @@ export declare class Dependency implements Dependency.Dependency {
70
71
  * @param builder Builder to get folders from
71
72
  * @returns Folders
72
73
  */
73
- static getAllOutFolders(builder: Dependency.Builder.MoveType): string[];
74
+ static getAllOutFolders(builder: Dependency.Builder['move']): string[];
74
75
  }
75
76
  export declare namespace Dependency {
76
77
  type logCallback = (messages: string[]) => void;
77
- type repo = `https://github.com/${string}/${string}.git`;
78
- namespace Builder {
79
- interface Move {
80
- [key: string]: string | string[];
81
- }
82
- type MoveType = string | string[] | Move;
83
- interface Step {
84
- run?: string | string[] | undefined;
85
- move?: MoveType;
86
- }
87
- }
88
- type Builder = Builder.Step[];
89
- interface Dependency {
90
- name: string;
91
- repo: repo;
92
- branch?: string;
93
- builder?: Builder;
94
- }
78
+ type repo = `https://github.com/${string}/${string}.git` | `git@github.com:${string}/${string}.git`;
79
+ type Builder = schemas.builder['inferToProcess'];
80
+ type Dependency = schemas.dependency['infer'];
81
+ type newDependency = schemas.dependency['inferToProcess'];
95
82
  interface manageOptions {
96
83
  force?: boolean;
97
84
  }
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @author NetFeez <codefeez.dev@gmail.com>
2
+ * @author NetFeez <netfeez.dev@gmail.com>
3
3
  * @description Dependency utility.
4
4
  * @license Apache-2.0
5
5
  */
@@ -7,6 +7,7 @@ import { promises as FS } from "fs";
7
7
  import { spawn } from "child_process";
8
8
  import Git from "./Git.js";
9
9
  import File from "./File.js";
10
+ import Validator from "./Validator.js";
10
11
  export class Dependency {
11
12
  static include = ['*'];
12
13
  name;
@@ -20,6 +21,7 @@ export class Dependency {
20
21
  * @returns New dependency
21
22
  */
22
23
  constructor(dependency) {
24
+ Validator.validateRepo(dependency.repo);
23
25
  this.name = dependency.name;
24
26
  this.repo = dependency.repo;
25
27
  this.branch = dependency.branch;
@@ -123,6 +125,8 @@ export class Dependency {
123
125
  return output;
124
126
  }
125
127
  async move(move) {
128
+ if (!move)
129
+ return [];
126
130
  const output = [];
127
131
  if (typeof move === 'string' || Array.isArray(move)) {
128
132
  const moves = Array.isArray(move) ? move : [move];
@@ -241,6 +245,8 @@ export class Dependency {
241
245
  * @returns Folders
242
246
  */
243
247
  static getAllOutFolders(builder) {
248
+ if (!builder)
249
+ return [];
244
250
  const folders = [];
245
251
  if (typeof builder === 'string')
246
252
  folders.push(builder);
@@ -1 +1 @@
1
- {"version":3,"file":"Dependency.js","sourceRoot":"","sources":["../src/Dependency.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Dependency.js","sourceRoot":"","sources":["../src/Dependency.ts"],"names":[],"mappings":"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"}
package/build/File.d.ts CHANGED
@@ -1,45 +1,9 @@
1
- /**
2
- * @author NetFeez <codefeez.dev@gmail.com>
3
- * @description Utility to help with File operations.
4
- * @license Apache-2.0
5
- */
6
- import Dependency from './Dependency.js';
7
1
  export declare class File {
8
- /**
9
- * Validates and transforms raw data into a DependencyDef object.
10
- * @param data - The raw data to extract from.
11
- * @returns A valid DependencyDef object.
12
- */
13
- private static extractDependency;
14
- /**
15
- * Reads and parses a dependency file.
16
- * @param path - Path to the dependency file.
17
- * @returns The parsed JSON content.
18
- */
19
- private static read;
20
- /**
21
- * Loads, validates, and compiles dependencies from a file.
22
- * @param path - Path to the dependency file.
23
- * @returns An array of valid DependencyDef objects.
24
- */
25
- static load(path: string): Promise<Dependency.Dependency[]>;
26
- /**
27
- * Saves an array of dependency definitions to a file.
28
- * @param path - Path to the dependency file.
29
- * @param dependencies - The dependencies to save.
30
- */
31
- static save(path: string, dependencies: any[]): Promise<void>;
32
- /**
33
- * Check if a file exists
34
- * @param path Path to check
35
- * @returns Promise<boolean>
36
- */
37
- static isFile(path: string): Promise<boolean>;
38
- /**
39
- * Check if a file or folder exists
40
- * @param path Path to check
41
- * @returns Promise<boolean>
42
- */
43
2
  static exists(path: string): Promise<boolean>;
3
+ static isFile(path: string): Promise<boolean>;
4
+ static isDirectory(path: string): Promise<boolean>;
5
+ static read(path: string): Promise<string>;
6
+ static write(path: string, content: string): Promise<void>;
44
7
  }
8
+ export declare namespace File { }
45
9
  export default File;
package/build/File.js CHANGED
@@ -1,113 +1,41 @@
1
- /**
2
- * @author NetFeez <codefeez.dev@gmail.com>
3
- * @description Utility to help with File operations.
4
- * @license Apache-2.0
5
- */
6
1
  import { promises as FS } from 'fs';
7
- import Validator from './Validator.js';
8
2
  export class File {
9
- /**
10
- * Validates and transforms raw data into a DependencyDef object.
11
- * @param data - The raw data to extract from.
12
- * @returns A valid DependencyDef object.
13
- */
14
- static extractDependency(data) {
15
- Validator.validateDependency(data);
16
- return data;
17
- }
18
- /**
19
- * Reads and parses a dependency file.
20
- * @param path - Path to the dependency file.
21
- * @returns The parsed JSON content.
22
- */
23
- static async read(path) {
24
- try {
25
- if (!await this.exists(path))
26
- await FS.writeFile(path, '[]');
27
- if (!await this.isFile(path))
28
- throw new Error(`Dependency file at &C2${path}&R does not exist.`);
29
- const content = await FS.readFile(path, 'utf-8');
30
- return JSON.parse(content);
31
- }
32
- catch (error) {
33
- throw new Error(`Failed to read or parse dependency file at &C2${path}&R.`, { cause: error });
34
- }
35
- }
36
- /**
37
- * Loads, validates, and compiles dependencies from a file.
38
- * @param path - Path to the dependency file.
39
- * @returns An array of valid DependencyDef objects.
40
- */
41
- static async load(path) {
42
- try {
43
- const data = await this.read(path);
44
- if (!Array.isArray(data))
45
- throw new Error('Dependency file content must be an array.');
46
- const dependencies = [];
47
- for (const item of data)
48
- dependencies.push(this.extractDependency(item));
49
- return dependencies;
50
- }
51
- catch (error) {
52
- throw error;
53
- }
54
- }
55
- /**
56
- * Saves an array of dependency definitions to a file.
57
- * @param path - Path to the dependency file.
58
- * @param dependencies - The dependencies to save.
59
- */
60
- static async save(path, dependencies) {
3
+ static async exists(path) {
61
4
  try {
62
- const validatedDeps = [];
63
- const seenNames = new Set();
64
- for (const item of dependencies) {
65
- const dependency = this.extractDependency(item);
66
- if (seenNames.has(dependency.name))
67
- throw new Error(`Duplicate dependency name found: "${dependency.name}".`);
68
- seenNames.add(dependency.name);
69
- validatedDeps.push(dependency);
70
- }
71
- try {
72
- const content = JSON.stringify(validatedDeps, null, 4);
73
- await FS.writeFile(path, content);
74
- }
75
- catch (error) {
76
- throw new Error(`Failed to write dependency file at &C2${path}&R.`, { cause: error });
77
- }
5
+ await FS.access(path);
6
+ return true;
78
7
  }
79
- catch (error) {
80
- throw error;
8
+ catch {
9
+ return false;
81
10
  }
82
11
  }
83
- /**
84
- * Check if a file exists
85
- * @param path Path to check
86
- * @returns Promise<boolean>
87
- */
88
12
  static async isFile(path) {
89
13
  try {
90
- const stats = await FS.stat(path);
91
- return stats.isFile();
14
+ const stat = await FS.stat(path);
15
+ return stat.isFile();
92
16
  }
93
17
  catch {
94
18
  return false;
95
19
  }
96
20
  }
97
- /**
98
- * Check if a file or folder exists
99
- * @param path Path to check
100
- * @returns Promise<boolean>
101
- */
102
- static async exists(path) {
21
+ static async isDirectory(path) {
103
22
  try {
104
- await FS.access(path);
105
- return true;
23
+ const stat = await FS.stat(path);
24
+ return stat.isDirectory();
106
25
  }
107
26
  catch {
108
27
  return false;
109
28
  }
110
29
  }
30
+ static async read(path) {
31
+ if (!await this.isFile(path)) {
32
+ throw new Error(`Path ${path} is not a file.`);
33
+ }
34
+ return await FS.readFile(path, 'utf-8');
35
+ }
36
+ static async write(path, content) {
37
+ await FS.writeFile(path, content, 'utf-8');
38
+ }
111
39
  }
112
40
  export default File;
113
41
  //# sourceMappingURL=File.js.map
package/build/File.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"File.js","sourceRoot":"","sources":["../src/File.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"File.js","sourceRoot":"","sources":["../src/File.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,IAAI,CAAC;AAEpC,MAAM,OAAO,IAAI;IACb,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,IAAY;QAC5B,IAAI,CAAC;YAAC,MAAM,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAAC,OAAO,IAAI,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC;YAAC,OAAO,KAAK,CAAC;QAAC,CAAC;IACvE,CAAC;IACD,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,IAAY;QAC5B,IAAI,CAAC;YACD,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACjC,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;QACzB,CAAC;QAAC,MAAM,CAAC;YAAC,OAAO,KAAK,CAAC;QAAC,CAAC;IAC7B,CAAC;IACD,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,IAAY;QACjC,IAAI,CAAC;YACD,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACjC,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC;QAC9B,CAAC;QAAC,MAAM,CAAC;YAAC,OAAO,KAAK,CAAC;QAAC,CAAC;IAC7B,CAAC;IACD,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAY;QAC1B,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;YAC3B,MAAM,IAAI,KAAK,CAAC,QAAQ,IAAI,iBAAiB,CAAC,CAAC;QACnD,CAAC;QACD,OAAO,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC5C,CAAC;IACD,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,IAAY,EAAE,OAAe;QAC5C,MAAM,EAAE,CAAC,SAAS,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IAC/C,CAAC;CACJ;AAID,eAAe,IAAI,CAAC"}
package/build/Git.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @author NetFeez <codefeez.dev@gmail.com>
2
+ * @author NetFeez <netfeez.dev@gmail.com>
3
3
  * @description Executes git commands.
4
4
  * @license Apache-2.0
5
5
  */
package/build/Git.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @author NetFeez <codefeez.dev@gmail.com>
2
+ * @author NetFeez <netfeez.dev@gmail.com>
3
3
  * @description Executes git commands.
4
4
  * @license Apache-2.0
5
5
  */
@@ -2,34 +2,34 @@ export declare class PathFixer {
2
2
  readonly info: PathFixer.ProjectInfo;
3
3
  readonly projectRoot: string;
4
4
  static readonly IMPORT_REGEX: RegExp;
5
- static readonly DEFAULT_PROJECT_INFO: PathFixer.ProjectInfo;
6
5
  static readonly PROJECT_ROOT: string;
7
6
  static readonly EXTENSIONS: string[];
8
7
  absoluteRoot: string;
9
- _alias: PathFixer.Alias[] | null;
10
- constructor(info?: PathFixer.ProjectInfo, projectRoot?: string);
8
+ private _alias;
9
+ constructor(info: PathFixer.ProjectInfo, projectRoot?: string);
11
10
  get alias(): PathFixer.Alias[];
12
11
  run(): Promise<void>;
13
12
  watch(): Promise<void>;
14
13
  private process;
15
14
  private processReplacer;
16
15
  watchHandler(queue: Map<string, NodeJS.Timeout>, eventType: string, filename: string): Promise<void>;
17
- watchTimeout(file: string, name: string): Promise<void>;
16
+ private watchTimeout;
18
17
  static getAllFiles(dir: string, extensions: string[]): Promise<string[]>;
19
- static getProjectInfo(tsconfig?: string): Promise<PathFixer.ProjectInfo>;
20
18
  }
21
- declare namespace PathFixer {
19
+ export declare namespace PathFixer {
22
20
  interface Paths {
23
21
  [alias: string]: string[];
24
22
  }
25
23
  interface Alias {
26
24
  alias: string;
27
25
  target: string;
26
+ isWildcard: boolean;
28
27
  }
29
28
  interface ProjectInfo {
30
- root: string;
31
- out: string;
32
- path: Paths;
29
+ baseUrl?: string;
30
+ rootDir?: string;
31
+ outDir: string;
32
+ paths: Paths;
33
33
  }
34
34
  }
35
35
  export default PathFixer;
@@ -1,51 +1,55 @@
1
1
  /**
2
- * @author NetFeez <codefeez.dev@gmail.com>
3
- * @description Utility for path fixing.
2
+ * @author NetFeez <netfeez.dev@gmail.com>
3
+ * @description Utility for path fixing with dual support for baseUrl and rootDir.
4
4
  * @license Apache-2.0
5
5
  */
6
6
  import path from 'path';
7
7
  import syncFs, { promises as fs } from 'fs';
8
8
  import { Logger, Utilities } from 'vortez';
9
+ import File from './File.js';
9
10
  const logger = new Logger({ prefix: 'PathFixer' });
10
11
  export class PathFixer {
11
12
  info;
12
13
  projectRoot;
13
14
  static IMPORT_REGEX = /(from\s+['"])([^'"]+)(['"])/g;
14
- static DEFAULT_PROJECT_INFO = { root: 'src', out: 'build', path: {} };
15
15
  static PROJECT_ROOT = process.cwd();
16
16
  static EXTENSIONS = ['js', '.d.ts'];
17
17
  absoluteRoot;
18
18
  _alias = null;
19
- constructor(info = PathFixer.DEFAULT_PROJECT_INFO, projectRoot = PathFixer.PROJECT_ROOT) {
19
+ constructor(info, projectRoot = PathFixer.PROJECT_ROOT) {
20
20
  this.info = info;
21
21
  this.projectRoot = projectRoot;
22
- const fullPath = path.join(projectRoot, info.out);
22
+ const fullPath = path.isAbsolute(info.outDir)
23
+ ? info.outDir
24
+ : path.join(projectRoot, info.outDir);
23
25
  this.absoluteRoot = path.resolve(fullPath);
24
26
  }
25
27
  get alias() {
26
28
  if (this._alias)
27
29
  return this._alias;
28
30
  const result = [];
29
- for (const [key, value] of Object.entries(this.info.path)) {
30
- let alias = key.replace(/\/\*$/, '');
31
- // alias = alias.replace(new RegExp(`^${this.info.root}`), '');
32
- alias = alias.replace(/^\//, '');
33
- const root = this.info.root.replace(/^\.\//g, '');
34
- let target = value[0].replace(/(?:^\.\/)|(?:\/\*$)/g, '');
35
- target = target.replace(new RegExp(`^${this.info.root}`), '');
36
- target = target.replace(/^\/|\/$/g, '');
37
- target = path.resolve(this.absoluteRoot, target);
38
- result.push({ alias, target });
31
+ const tsConfigBase = path.resolve(this.projectRoot, this.info.baseUrl || '.');
32
+ const sourceRoot = path.resolve(this.projectRoot, this.info.rootDir || this.info.baseUrl || '.');
33
+ for (const [key, value] of Object.entries(this.info.paths || {})) {
34
+ const isWildcard = key.endsWith('/*');
35
+ const aliasBase = key.replace(/\/\*$/, '');
36
+ const targetRaw = value[0].replace(/\/\*$/, '');
37
+ const absoluteSourceTarget = path.resolve(tsConfigBase, targetRaw);
38
+ const relativeToSourceRoot = path.relative(sourceRoot, absoluteSourceTarget);
39
+ const absoluteBuildTarget = path.resolve(this.absoluteRoot, relativeToSourceRoot);
40
+ result.push({ alias: aliasBase, target: absoluteBuildTarget, isWildcard });
39
41
  }
40
42
  this._alias = result;
41
43
  return result;
42
44
  }
43
45
  async run() {
44
- logger.log('&C2Starting path fixer, please wait...');
45
- if (!await Utilities.fileExists(this.absoluteRoot))
46
+ logger.log('&C2Starting path fixer...');
47
+ if (!await File.exists(this.absoluteRoot)) {
46
48
  return void logger.warn(`The root directory &C4${this.absoluteRoot}&R does not exist.`);
49
+ }
47
50
  const files = await PathFixer.getAllFiles(this.absoluteRoot, PathFixer.EXTENSIONS);
48
- logger.log(`&C2Found &C3${files.length} &C2files to process in &C4${this.absoluteRoot}.`);
51
+ logger.log(`&C2Found &C3${files.length} &C2files in &C4${this.absoluteRoot}.`);
52
+ console.log(JSON.stringify(this, null, 2));
49
53
  let rewrittenCount = 0;
50
54
  for (const file of files) {
51
55
  const changed = await this.process(file);
@@ -57,32 +61,44 @@ export class PathFixer {
57
61
  async watch() {
58
62
  await this.run();
59
63
  logger.log(`&C2Starting watcher in &C4${this.absoluteRoot}.`);
60
- if (!await Utilities.fileExists(this.absoluteRoot))
64
+ if (!await Utilities.fileExists(this.absoluteRoot)) {
61
65
  await fs.mkdir(this.absoluteRoot, { recursive: true });
62
- const watcher = syncFs.watch(this.absoluteRoot, { recursive: true });
66
+ }
63
67
  const queue = new Map();
64
- watcher.on('change', this.watchHandler.bind(this, queue));
68
+ syncFs.watch(this.absoluteRoot, { recursive: true }, (eventType, filename) => {
69
+ this.watchHandler(queue, eventType, filename);
70
+ });
65
71
  }
66
72
  async process(file) {
67
73
  const content = await fs.readFile(file, 'utf8');
68
- const newContent = content.replace(PathFixer.IMPORT_REGEX, this.processReplacer.bind(this, file));
74
+ const newContent = content.replace(PathFixer.IMPORT_REGEX, (match, prefix, modulePath, suffix) => {
75
+ return this.processReplacer(file, match, prefix, modulePath, suffix);
76
+ });
69
77
  if (content === newContent)
70
78
  return false;
71
79
  await fs.writeFile(file, newContent, 'utf8');
72
80
  return true;
73
81
  }
74
82
  processReplacer(file, match, prefix, modulePath, suffix) {
75
- const config = this.alias.find(config => modulePath.startsWith(`${config.alias}/`) || modulePath === config.alias);
83
+ const config = this.alias.find(c => c.isWildcard ? modulePath.startsWith(`${c.alias}/`) : modulePath === c.alias);
76
84
  if (!config)
77
85
  return match;
78
- const dir = path.dirname(file);
79
- const restOfModulePath = modulePath.substring(config.alias.length);
80
- const absoluteTarget = path.join(config.target, restOfModulePath);
81
- let target = path.relative(dir, absoluteTarget);
82
- if (!target.startsWith('.'))
83
- target = `./${target}`;
84
- target = target.replace(/\\/g, '/');
85
- return `${prefix}${target}${suffix}`;
86
+ const currentFileDir = path.dirname(file);
87
+ let absoluteTarget;
88
+ if (config.isWildcard) {
89
+ const subPath = modulePath.length > config.alias.length
90
+ ? modulePath.substring(config.alias.length + 1)
91
+ : '';
92
+ absoluteTarget = path.join(config.target, subPath);
93
+ }
94
+ else {
95
+ absoluteTarget = config.target;
96
+ }
97
+ let relativeTarget = path.relative(currentFileDir, absoluteTarget);
98
+ if (!relativeTarget.startsWith('.'))
99
+ relativeTarget = `./${relativeTarget}`;
100
+ const finalTarget = Utilities.Path.normalize(relativeTarget);
101
+ return `${prefix}${finalTarget}${suffix}`;
86
102
  }
87
103
  async watchHandler(queue, eventType, filename) {
88
104
  if (!filename || !PathFixer.EXTENSIONS.some(ext => filename.endsWith(ext)))
@@ -90,70 +106,38 @@ export class PathFixer {
90
106
  const fullPath = path.join(this.absoluteRoot, filename);
91
107
  if (queue.has(fullPath))
92
108
  clearTimeout(queue.get(fullPath));
93
- queue.set(fullPath, setTimeout(this.watchTimeout.bind(this, fullPath, filename), 300));
109
+ queue.set(fullPath, setTimeout(() => this.watchTimeout(fullPath, filename), 300));
94
110
  }
95
111
  async watchTimeout(file, name) {
96
112
  try {
97
113
  const stat = await fs.stat(file);
98
114
  if (!stat.isFile())
99
115
  return;
100
- logger.log(`&C2Change detected in &C4${name}&C2. Processing`);
101
116
  const changed = await this.process(file);
102
117
  if (changed)
103
118
  logger.log(`&C2File &C4${name}&C2 rewritten.`);
104
119
  }
105
120
  catch (error) {
106
- if (error.code && error.code === 'ENOENT') {
107
- logger.warn(`File &C4${name}&R not found, it may have been deleted.`);
108
- }
109
- else {
110
- logger.error(`Error processing file &C4${name}&R:`, error);
111
- }
121
+ if (error.code !== 'ENOENT')
122
+ logger.error(`Error processing &C4${name}&R:`, error);
112
123
  }
113
124
  }
114
125
  static async getAllFiles(dir, extensions) {
115
126
  const result = [];
116
- if (!await Utilities.fileExists(dir))
117
- return result;
118
127
  const files = await fs.readdir(dir);
119
128
  for (const file of files) {
120
129
  const fullPath = path.join(dir, file);
121
- try {
122
- const stat = await fs.stat(fullPath);
123
- if (stat.isDirectory()) {
124
- const subFiles = await this.getAllFiles(fullPath, extensions);
125
- result.push(...subFiles);
126
- }
127
- else if (stat.isFile() && extensions.some(ext => fullPath.endsWith(ext))) {
128
- result.push(fullPath);
129
- }
130
+ const stat = await fs.stat(fullPath);
131
+ if (stat.isDirectory()) {
132
+ const allFiles = await PathFixer.getAllFiles(fullPath, extensions);
133
+ result.push(...allFiles);
130
134
  }
131
- catch (error) {
132
- if (error && error.code === 'ENOENT') {
133
- logger.warn(`File or directory &C4${fullPath}&R not found during scan, skipping.`);
134
- }
135
- else {
136
- logger.error(`Error scanning file &C4${fullPath}&R:`, error);
137
- }
135
+ else if (extensions.some(ext => fullPath.endsWith(ext))) {
136
+ result.push(fullPath);
138
137
  }
139
138
  }
140
139
  return result;
141
140
  }
142
- static async getProjectInfo(tsconfig = 'tsconfig.json') {
143
- const info = PathFixer.DEFAULT_PROJECT_INFO;
144
- const content = await fs.readFile(tsconfig, 'utf8');
145
- const json = JSON.parse(content);
146
- if (!json.compilerOptions)
147
- return info;
148
- const options = json.compilerOptions;
149
- if (options.rootDir)
150
- info.root = options.rootDir;
151
- if (options.outDir)
152
- info.out = options.outDir;
153
- if (options.paths)
154
- info.path = options.paths;
155
- return info;
156
- }
157
141
  }
158
142
  export default PathFixer;
159
143
  //# sourceMappingURL=PathFixer.js.map