assets-toolkit 1.0.0 → 1.0.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.
Files changed (74) hide show
  1. package/dist/config.d.ts.map +1 -1
  2. package/dist/config.js +1 -1
  3. package/dist/config.js.map +1 -1
  4. package/dist/constants.d.ts +5 -1
  5. package/dist/constants.d.ts.map +1 -1
  6. package/dist/constants.js +48 -2
  7. package/dist/constants.js.map +1 -1
  8. package/dist/helps/assetSupport.d.ts +6 -0
  9. package/dist/helps/assetSupport.d.ts.map +1 -0
  10. package/dist/helps/assetSupport.js +104 -0
  11. package/dist/helps/assetSupport.js.map +1 -0
  12. package/dist/helps/checkDuplicates.d.ts +5 -0
  13. package/dist/helps/checkDuplicates.d.ts.map +1 -0
  14. package/dist/helps/checkDuplicates.js +16 -0
  15. package/dist/helps/checkDuplicates.js.map +1 -0
  16. package/dist/helps/checkFileValidations.d.ts +5 -1
  17. package/dist/helps/checkFileValidations.d.ts.map +1 -1
  18. package/dist/helps/checkFileValidations.js +30 -15
  19. package/dist/helps/checkFileValidations.js.map +1 -1
  20. package/dist/helps/logger.d.ts +3 -8
  21. package/dist/helps/logger.d.ts.map +1 -1
  22. package/dist/helps/logger.js +7 -11
  23. package/dist/helps/logger.js.map +1 -1
  24. package/dist/index.d.ts +1 -1
  25. package/dist/index.d.ts.map +1 -1
  26. package/dist/index.js +1 -1
  27. package/dist/index.js.map +1 -1
  28. package/dist/{generator.d.ts → rn-assets.d.ts} +3 -1
  29. package/dist/rn-assets.d.ts.map +1 -0
  30. package/dist/rn-assets.js +321 -0
  31. package/dist/rn-assets.js.map +1 -0
  32. package/dist/toolkits/doctor.d.ts.map +1 -1
  33. package/dist/toolkits/doctor.js +11 -59
  34. package/dist/toolkits/doctor.js.map +1 -1
  35. package/dist/toolkits/doctorFix.d.ts.map +1 -1
  36. package/dist/toolkits/doctorFix.js +15 -27
  37. package/dist/toolkits/doctorFix.js.map +1 -1
  38. package/dist/toolkits/generator.d.ts.map +1 -1
  39. package/dist/toolkits/generator.js +49 -69
  40. package/dist/toolkits/generator.js.map +1 -1
  41. package/dist/toolkits/reports.d.ts.map +1 -1
  42. package/dist/toolkits/reports.js +19 -4
  43. package/dist/toolkits/reports.js.map +1 -1
  44. package/dist/types.d.ts +27 -0
  45. package/dist/types.d.ts.map +1 -1
  46. package/dist/writers/index.d.ts.map +1 -1
  47. package/dist/writers/index.js +7 -5
  48. package/dist/writers/index.js.map +1 -1
  49. package/dist/writers/react-native.js +1 -1
  50. package/dist/writers/react-native.js.map +1 -1
  51. package/package.json +1 -1
  52. package/dist/cacheHelper.d.ts +0 -2
  53. package/dist/cacheHelper.d.ts.map +0 -1
  54. package/dist/cacheHelper.js +0 -2
  55. package/dist/cacheHelper.js.map +0 -1
  56. package/dist/config-types.d.ts +0 -2
  57. package/dist/config-types.d.ts.map +0 -1
  58. package/dist/config-types.js +0 -2
  59. package/dist/config-types.js.map +0 -1
  60. package/dist/generator.d.ts.map +0 -1
  61. package/dist/generator.js +0 -170
  62. package/dist/generator.js.map +0 -1
  63. package/dist/helps/checkInvalidFileNames.d.ts +0 -2
  64. package/dist/helps/checkInvalidFileNames.d.ts.map +0 -1
  65. package/dist/helps/checkInvalidFileNames.js +0 -23
  66. package/dist/helps/checkInvalidFileNames.js.map +0 -1
  67. package/dist/helps/incrementalHash.d.ts +0 -3
  68. package/dist/helps/incrementalHash.d.ts.map +0 -1
  69. package/dist/helps/incrementalHash.js +0 -8
  70. package/dist/helps/incrementalHash.js.map +0 -1
  71. package/dist/helps/normalizeFiles.d.ts +0 -2
  72. package/dist/helps/normalizeFiles.d.ts.map +0 -1
  73. package/dist/helps/normalizeFiles.js +0 -2
  74. package/dist/helps/normalizeFiles.js.map +0 -1
@@ -0,0 +1,321 @@
1
+ #!/usr/bin/env node
2
+ import fs from "fs";
3
+ import path from "path";
4
+ const categoryExtensions = {
5
+ images: [
6
+ ".png",
7
+ ".jpg",
8
+ ".jpeg",
9
+ ".gif",
10
+ ".webp",
11
+ ".bmp",
12
+ ".heic",
13
+ ".heif",
14
+ ".avif",
15
+ ".tiff",
16
+ ".tif",
17
+ ".ico",
18
+ ],
19
+ svg: [".svg"],
20
+ fonts: [".ttf", ".otf", ".woff", ".woff2"],
21
+ audio: [
22
+ ".mp3",
23
+ ".wav",
24
+ ".aac",
25
+ ".m4a",
26
+ ".ogg",
27
+ ".flac",
28
+ ".amr",
29
+ ".opus",
30
+ ".caf",
31
+ ".aiff",
32
+ ],
33
+ video: [
34
+ ".mp4",
35
+ ".mov",
36
+ ".m4v",
37
+ ".avi",
38
+ ".mkv",
39
+ ".webm",
40
+ ".3gp",
41
+ ".mpeg",
42
+ ".mpg",
43
+ ],
44
+ lottie: [".json", ".lottie"],
45
+ };
46
+ const defaultAssetDirectories = ["src/assets", "assets"];
47
+ const categoryFileNames = {
48
+ images: "images-generate.tsx",
49
+ svg: "svg-generate.tsx",
50
+ fonts: "fonts-generate.tsx",
51
+ audio: "audio-generate.tsx",
52
+ video: "video-generate.tsx",
53
+ lottie: "lottie-generate.tsx",
54
+ };
55
+ function getAssetDirectories(root) {
56
+ return defaultAssetDirectories
57
+ .map((relativePath) => path.resolve(root, relativePath))
58
+ .filter((absolutePath) => fs.existsSync(absolutePath) && fs.statSync(absolutePath).isDirectory());
59
+ }
60
+ function findFiles(directory) {
61
+ const filePaths = [];
62
+ for (const entry of fs.readdirSync(directory, { withFileTypes: true })) {
63
+ const absolutePath = path.join(directory, entry.name);
64
+ if (entry.isDirectory()) {
65
+ filePaths.push(...findFiles(absolutePath));
66
+ }
67
+ else if (entry.isFile()) {
68
+ filePaths.push(absolutePath);
69
+ }
70
+ }
71
+ return filePaths;
72
+ }
73
+ function getCategory(fileName) {
74
+ const ext = path.extname(fileName).toLowerCase();
75
+ return Object.keys(categoryExtensions).find((category) => categoryExtensions[category].includes(ext));
76
+ }
77
+ function normalizeKey(name) {
78
+ const normalized = name
79
+ .replace(/\.[^/.]+$/, "")
80
+ .replace(/[^\p{L}\p{N}_$]+/gu, "_")
81
+ .replace(/^([^A-Za-z_$]+)/, "_")
82
+ .replace(/^\d/, "_$&");
83
+ return normalized || "_";
84
+ }
85
+ function createNestedObject(segments, value) {
86
+ const current = {};
87
+ let pointer = current;
88
+ for (let index = 0; index < segments.length; index += 1) {
89
+ const segment = segments[index];
90
+ if (index === segments.length - 1) {
91
+ pointer[segment] = value;
92
+ }
93
+ else {
94
+ if (pointer[segment] == null || typeof pointer[segment] !== "object") {
95
+ pointer[segment] = {};
96
+ }
97
+ pointer = pointer[segment];
98
+ }
99
+ }
100
+ return current;
101
+ }
102
+ function mergeObjects(target, source) {
103
+ for (const key of Object.keys(source)) {
104
+ const sourceValue = source[key];
105
+ const targetValue = target[key];
106
+ if (typeof sourceValue === "object" &&
107
+ sourceValue !== null &&
108
+ !Array.isArray(sourceValue)) {
109
+ if (typeof targetValue !== "object" ||
110
+ targetValue === null ||
111
+ Array.isArray(targetValue)) {
112
+ target[key] = {};
113
+ }
114
+ mergeObjects(target[key], sourceValue);
115
+ }
116
+ else {
117
+ if (typeof targetValue === "object" &&
118
+ targetValue !== null &&
119
+ !Array.isArray(targetValue)) {
120
+ target[`${key}_file`] = sourceValue;
121
+ }
122
+ else {
123
+ target[key] = sourceValue;
124
+ }
125
+ }
126
+ }
127
+ }
128
+ function getRequirePath(assetPath, outDir) {
129
+ let relativeImport = path.relative(outDir, assetPath).replace(/\\/g, "/");
130
+ if (!relativeImport.startsWith(".")) {
131
+ relativeImport = `./${relativeImport}`;
132
+ }
133
+ return relativeImport;
134
+ }
135
+ function buildObjectLiteral(value, indentLevel = 0) {
136
+ const indent = " ".repeat(indentLevel);
137
+ const nextIndent = " ".repeat(indentLevel + 1);
138
+ if (typeof value === "string") {
139
+ return `require(${JSON.stringify(value)})`;
140
+ }
141
+ if (typeof value === "object" && value !== null && !Array.isArray(value)) {
142
+ const entries = Object.entries(value);
143
+ if (entries.length === 0) {
144
+ return "{}";
145
+ }
146
+ const lines = entries.map(([key, nestedValue]) => {
147
+ const safeKey = /^[A-Za-z_$][A-Za-z0-9_$]*$/.test(key)
148
+ ? key
149
+ : JSON.stringify(key);
150
+ return `${nextIndent}${safeKey}: ${buildObjectLiteral(nestedValue, indentLevel + 1)}`;
151
+ });
152
+ return `{
153
+ ${lines.join(",\n")}
154
+ ${indent}}`;
155
+ }
156
+ return "null";
157
+ }
158
+ function createFileContent(category, objectTree) {
159
+ const objectLiteral = buildObjectLiteral(objectTree, 0);
160
+ return `/* Auto-generated by react-native-asset-toolkit. Do not edit. */
161
+
162
+ export const ${category} = ${objectLiteral} as const;
163
+
164
+ export type ${capitalize(category)} = typeof ${category};
165
+ `;
166
+ }
167
+ function capitalize(value) {
168
+ return value.charAt(0).toUpperCase() + value.slice(1);
169
+ }
170
+ function countAssets(value) {
171
+ if (typeof value === "string") {
172
+ return 1;
173
+ }
174
+ if (typeof value === "object" && value !== null) {
175
+ return Object.values(value).reduce((count, item) => count + countAssets(item), 0);
176
+ }
177
+ return 0;
178
+ }
179
+ export function generateAssets(options) {
180
+ const startTime = Date.now();
181
+ const root = options?.root ?? process.cwd();
182
+ const outputDir = path.resolve(root, options?.outputDir ?? "generated-assets");
183
+ const assetCandidates = options?.assetDirectories ?? defaultAssetDirectories;
184
+ const assetsDirectories = assetCandidates
185
+ .map((relativeDir) => path.resolve(root, relativeDir))
186
+ .filter((dir) => fs.existsSync(dir) && fs.statSync(dir).isDirectory());
187
+ if (assetsDirectories.length === 0) {
188
+ throw new Error(`No asset directory found. Create assets under ${defaultAssetDirectories.join(" or ")} and rerun the command.`);
189
+ }
190
+ const categoryTrees = {
191
+ images: {},
192
+ svg: {},
193
+ fonts: {},
194
+ audio: {},
195
+ video: {},
196
+ lottie: {},
197
+ };
198
+ const foundFiles = [];
199
+ for (const assetsDirectory of assetsDirectories) {
200
+ const files = findFiles(assetsDirectory);
201
+ for (const file of files) {
202
+ const category = getCategory(file);
203
+ if (!category) {
204
+ continue;
205
+ }
206
+ const relativePath = path.relative(assetsDirectory, file);
207
+ const pathSegments = relativePath
208
+ .split(path.sep)
209
+ .map((segment) => normalizeKey(segment));
210
+ const valuePath = getRequirePath(file, outputDir);
211
+ const nested = createNestedObject(pathSegments, valuePath);
212
+ mergeObjects(categoryTrees[category], nested);
213
+ foundFiles.push(file);
214
+ }
215
+ }
216
+ fs.mkdirSync(outputDir, { recursive: true });
217
+ const generatedCategories = Object.keys(categoryTrees).filter((category) => Object.keys(categoryTrees[category]).length > 0);
218
+ for (const category of generatedCategories) {
219
+ const fileName = categoryFileNames[category];
220
+ const filePath = path.join(outputDir, fileName);
221
+ const content = createFileContent(category, categoryTrees[category]);
222
+ fs.writeFileSync(filePath, content, "utf8");
223
+ }
224
+ const exports = generatedCategories.map((category) => {
225
+ const fileName = categoryFileNames[category].replace(/\.tsx$/, "");
226
+ return `export { ${category} } from "./${fileName}";`;
227
+ });
228
+ const assetsEntries = generatedCategories.map((category) => ` ${category},`);
229
+ const assetsContent = `/* Auto-generated by react-native-asset-toolkit. Do not edit. */
230
+
231
+ ${exports.join("\n")}
232
+
233
+ export const Assets = {
234
+ ${assetsEntries.join("\n")}
235
+ } as const;
236
+
237
+ export type AssetsType = typeof Assets;
238
+ `;
239
+ fs.writeFileSync(path.join(outputDir, "assets-generate.tsx"), assetsContent, "utf8");
240
+ const duration = Date.now() - startTime;
241
+ const categoryLabels = {
242
+ images: "Images",
243
+ svg: "SVG",
244
+ fonts: "Fonts",
245
+ audio: "Audio",
246
+ video: "Videos",
247
+ lottie: "Lottie",
248
+ };
249
+ const categoryOutput = generatedCategories
250
+ .map((category) => {
251
+ const label = categoryLabels[category];
252
+ const count = countAssets(categoryTrees[category]);
253
+ return `${label.padEnd(12)}${count.toString().padStart(5)}`;
254
+ })
255
+ .join("\n");
256
+ console.log(`
257
+ ✓ ${foundFiles.length} Assets
258
+
259
+ ${categoryOutput}
260
+
261
+ ✓ Generated assets-generate.ts
262
+
263
+ Done in ${duration}ms
264
+ `);
265
+ }
266
+ function parseArguments() {
267
+ const argv = process.argv.slice(2);
268
+ const result = {
269
+ command: "",
270
+ options: {},
271
+ };
272
+ if (argv.length === 0) {
273
+ return result;
274
+ }
275
+ result.command = argv[0] ?? "";
276
+ for (let index = 1; index < argv.length; index += 1) {
277
+ const arg = argv[index];
278
+ const nextArg = argv[index + 1];
279
+ if (arg === "--outDir" || arg === "-o") {
280
+ if (typeof nextArg === "string") {
281
+ result.options.outputDir = nextArg;
282
+ }
283
+ index += 1;
284
+ }
285
+ else if (arg === "--assetsDir") {
286
+ if (typeof nextArg === "string") {
287
+ result.options.assetDirectories = [nextArg];
288
+ }
289
+ index += 1;
290
+ }
291
+ else if (arg === "--assetsDirs") {
292
+ if (typeof nextArg === "string") {
293
+ result.options.assetDirectories = nextArg
294
+ .split(",")
295
+ .map((dir) => dir.trim());
296
+ }
297
+ index += 1;
298
+ }
299
+ }
300
+ return result;
301
+ }
302
+ if (process.argv[1] && path.basename(process.argv[1]).startsWith("rn-assets")) {
303
+ const { command, options } = parseArguments();
304
+ if (command === "generate") {
305
+ try {
306
+ generateAssets({
307
+ outputDir: options.outputDir,
308
+ assetDirectories: options.assetDirectories,
309
+ });
310
+ }
311
+ catch (error) {
312
+ console.error(error instanceof Error ? error.message : String(error));
313
+ process.exit(1);
314
+ }
315
+ }
316
+ else {
317
+ console.log("Usage: npx react-native-asset-toolkit generate [--outDir <dir>] [--assetsDir <dir>]");
318
+ process.exit(command ? 1 : 0);
319
+ }
320
+ }
321
+ //# sourceMappingURL=rn-assets.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rn-assets.js","sourceRoot":"","sources":["../src/rn-assets.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/toolkits/doctor.ts"],"names":[],"mappings":"AAuBA,wBAAgB,SAAS,CAAC,IAAI,SAAgB,QA+D7C"}
1
+ {"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/toolkits/doctor.ts"],"names":[],"mappings":"AAaA,wBAAgB,SAAS,CAAC,IAAI,SAAgB,QA+D7C"}
@@ -1,14 +1,12 @@
1
- import fs from "fs";
2
- import path from "path";
3
1
  import { loadConfig } from "../config.js";
4
2
  import { detectTarget } from "../detect-target.js";
5
- import { addSection, findFiles, getAssetDirectories, getFileHash, getProjectRelativePath, } from "../util.js";
3
+ import { addSection, findFiles, getAssetDirectories } from "../util.js";
6
4
  import { checkAssetDirectories } from "../helps/checkAssetsDir.js";
7
- import { getCategory } from "./generator.js";
8
- import { platformAssetSupport } from "../helps/platform-support.js";
9
- import { checkInvalidFileNames, getDuplicateAssetGroups, } from "../helps/checkFileValidations.js";
10
5
  import { colorText } from "../colorConsole.js";
11
6
  import { checkLargeFiles } from "../helps/checkLargeFiles.js";
7
+ import { analyzeAssets } from "../helps/assetSupport.js";
8
+ import { checkDuplicates } from "../helps/checkDuplicates.js";
9
+ import { addInvalidAssets, addUnsupportedAssets, } from "../helps/checkFileValidations.js";
12
10
  export function runDoctor(root = process.cwd()) {
13
11
  console.log(colorText("title", `\nAssets Toolkit Doctor
14
12
  =====================`));
@@ -17,7 +15,7 @@ export function runDoctor(root = process.cwd()) {
17
15
  // Config check
18
16
  try {
19
17
  const config = loadConfig(root);
20
- results.push("✓ Configuration found");
18
+ results.push(colorText("success", "✓ Configuration found"));
21
19
  const assetsDirectories = getAssetDirectories(root, config.assets);
22
20
  if (assetsDirectories.length === 0) {
23
21
  results.push(`✗ No asset directory found. Expected one of: ${config.assets.join(", ")}`);
@@ -25,7 +23,7 @@ export function runDoctor(root = process.cwd()) {
25
23
  return;
26
24
  }
27
25
  const target = detectTarget(root);
28
- results.push(`✓ Target: ${target}`);
26
+ results.push(colorText("success", `✓ Target: ${target}`));
29
27
  const assetDirectories = checkAssetDirectories(root, config.assets, results);
30
28
  if (assetDirectories.length === 0) {
31
29
  results.push("");
@@ -50,61 +48,15 @@ Done in ${elapsed}.
50
48
  function scanAssets(root, assetDirectories, results) {
51
49
  const files = assetDirectories.flatMap(findFiles);
52
50
  const target = detectTarget(root);
51
+ const analysis = analyzeAssets(files, target);
53
52
  addSection(results, "Warnings");
54
- checkDuplicates(files, results);
55
- //checkPlatformSupport(root, files, target, results);
53
+ checkDuplicates(analysis.duplicates, results, root);
54
+ addUnsupportedAssets(analysis.unsupported, root, results);
56
55
  checkLargeFiles(root, files, results);
57
- const invalidFiles = checkInvalidFileNames(root, files, results);
56
+ addInvalidAssets(analysis.invalid, root, results);
58
57
  return {
59
58
  files,
60
- invalidFiles,
59
+ invalidFiles: analysis.invalid,
61
60
  };
62
61
  }
63
- function checkPlatformSupport(root, files, target, results) {
64
- if (target === "unknown")
65
- return;
66
- console.log(`
67
- ${colorText("title", "Asset support")}
68
- ${colorText("muted", "==============")}
69
- `);
70
- const supported = platformAssetSupport[target];
71
- const warnings = [];
72
- for (const file of files) {
73
- const category = getCategory(file);
74
- if (!category)
75
- continue;
76
- const ext = path.extname(file).toLowerCase();
77
- const allowed = supported[category] ?? [];
78
- if (!allowed.includes(ext)) {
79
- warnings.push(`${getProjectRelativePath(file, root)} (${ext})`);
80
- }
81
- }
82
- if (warnings.length === 0) {
83
- results.push(`✓ All assets are supported by ${target}`);
84
- return;
85
- }
86
- results.push("");
87
- results.push(colorText("warning", `⚠ Assets not supported by ${target}`));
88
- results.push(colorText("muted", "--------------------------------"));
89
- for (const warning of warnings) {
90
- results.push(warning);
91
- }
92
- }
93
- function checkDuplicates(files, results) {
94
- const duplicates = getDuplicateAssetGroups(files);
95
- if (duplicates.length === 0) {
96
- results.push("✓ No duplicate assets");
97
- return;
98
- }
99
- results.push("");
100
- results.push(colorText("warning", "⚠ Duplicate Assets"));
101
- results.push(colorText("muted", "--------------------"));
102
- for (const group of duplicates) {
103
- results.push(colorText("info", `Same file (${group.length} copies):`));
104
- for (const file of group) {
105
- results.push(` ↳ ${file}`);
106
- }
107
- results.push("");
108
- }
109
- }
110
62
  //# sourceMappingURL=doctor.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/toolkits/doctor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/toolkits/doctor.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"doctorFix.d.ts","sourceRoot":"","sources":["../../src/toolkits/doctorFix.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAWjD,wBAAsB,YAAY,CAChC,IAAI,SAAgB,EACpB,OAAO,CAAC,EAAE,IAAI,CAAC,aAAa,EAAE,KAAK,GAAG,SAAS,CAAC,GAC/C,OAAO,CAAC,IAAI,CAAC,CA8Cf"}
1
+ {"version":3,"file":"doctorFix.d.ts","sourceRoot":"","sources":["../../src/toolkits/doctorFix.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAiB,aAAa,EAAE,MAAM,aAAa,CAAC;AAYhE,wBAAsB,YAAY,CAChC,IAAI,SAAgB,EACpB,OAAO,CAAC,EAAE,IAAI,CAAC,aAAa,EAAE,KAAK,GAAG,SAAS,CAAC,GAC/C,OAAO,CAAC,IAAI,CAAC,CAoDf"}
@@ -3,8 +3,10 @@ import { getInvalidFiles } from "../helps/checkFileValidations.js";
3
3
  import { askConfirmation } from "../helps/doctorConfirmation.js";
4
4
  import fs from "fs";
5
5
  import pc from "picocolors";
6
- import { findFiles, getAssetDirectories, getFileHash, getProjectRelativePath, } from "../util.js";
6
+ import { findFiles, getAssetDirectories, getProjectRelativePath, } from "../util.js";
7
7
  import { colorText } from "../colorConsole.js";
8
+ import { detectTarget } from "../detect-target.js";
9
+ import { analyzeAssets } from "../helps/assetSupport.js";
8
10
  export async function runDoctorFix(root = process.cwd(), options) {
9
11
  console.log(colorText("title", "\nAssets Toolkit Doctor Fix"));
10
12
  console.log(colorText("muted", "=========================\n"));
@@ -17,12 +19,14 @@ export async function runDoctorFix(root = process.cwd(), options) {
17
19
  return;
18
20
  }
19
21
  const files = assetDirectories.flatMap(findFiles);
20
- const invalidFiles = getInvalidFiles(files);
22
+ const target = detectTarget(root);
23
+ const analysis = analyzeAssets(files, target);
24
+ const invalidFiles = getInvalidFiles(analysis.invalid.map((asset) => asset.file));
21
25
  if (invalidFiles.length === 0)
22
26
  console.log(colorText("success", "✓ All filenames are already valid."));
23
27
  else
24
28
  await fixRenameFiles(root, invalidFiles, options);
25
- await fixDuplicateFiles(root, assetDirectories, options);
29
+ await fixDuplicateFiles(root, analysis.duplicates, options);
26
30
  }
27
31
  catch (error) {
28
32
  console.error(error instanceof Error ? error.message : String(error));
@@ -56,28 +60,16 @@ async function fixRenameFiles(root, invalidFiles, options) {
56
60
  }
57
61
  console.log(colorText("success", `\n✓ ${invalidFiles.length} file(s) renamed.`));
58
62
  }
59
- async function fixDuplicateFiles(root, assetDirectories, options) {
60
- // Re-scan because filenames changed
61
- const files = assetDirectories.flatMap(findFiles);
62
- const hashMap = new Map();
63
- for (const file of files) {
64
- const hash = getFileHash(file);
65
- const existing = hashMap.get(hash) ?? [];
66
- existing.push(file);
67
- hashMap.set(hash, existing);
68
- }
69
- const duplicates = [...hashMap.values()].filter((files) => files.length > 1);
63
+ async function fixDuplicateFiles(root, duplicates, options) {
70
64
  if (duplicates.length === 0) {
71
65
  console.log(colorText("success", "\n✓ No duplicate assets found."));
72
66
  return;
73
67
  }
74
68
  console.log(colorText("warning", "\nDuplicate assets found:"));
75
69
  console.log(colorText("muted", "-----------------------"));
76
- for (const group of duplicates) {
77
- console.log(colorText("info", `Same file (${group.length} copies):`));
78
- for (const file of group) {
79
- console.log(` ↳ ${getProjectRelativePath(file, root)}`);
80
- }
70
+ for (const duplicate of duplicates) {
71
+ console.log(colorText("info", ` ${getProjectRelativePath(duplicate.file, root)}`));
72
+ console.log(colorText("muted", ` Duplicate of: ${getProjectRelativePath(duplicate.duplicateOf, root)}`));
81
73
  console.log();
82
74
  }
83
75
  let confirmed = options?.yes ?? false;
@@ -91,14 +83,10 @@ async function fixDuplicateFiles(root, assetDirectories, options) {
91
83
  }
92
84
  console.log(colorText("info", "\nRemoving duplicates...\n"));
93
85
  let removed = 0;
94
- for (const group of duplicates) {
95
- // keep first file
96
- const filesToRemove = group.slice(1);
97
- for (const file of filesToRemove) {
98
- fs.unlinkSync(file);
99
- removed++;
100
- console.log(colorText("success", `✓ Removed ${getProjectRelativePath(file, root)}`));
101
- }
86
+ for (const duplicate of duplicates) {
87
+ fs.unlinkSync(duplicate.file);
88
+ removed++;
89
+ console.log(colorText("success", `✓ Removed ${getProjectRelativePath(duplicate.file, root)}`));
102
90
  }
103
91
  console.log(colorText("success", `\n✓ ${removed} duplicate file(s) removed.`));
104
92
  }
@@ -1 +1 @@
1
- {"version":3,"file":"doctorFix.js","sourceRoot":"","sources":["../../src/toolkits/doctorFix.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"doctorFix.js","sourceRoot":"","sources":["../../src/toolkits/doctorFix.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"generator.d.ts","sourceRoot":"","sources":["../../src/toolkits/generator.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,aAAa,EAId,MAAM,aAAa,CAAC;AA6CrB,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS,CAUvE;AA6BD,wBAAgB,cAAc,CAAC,OAAO,CAAC,EAAE;IACvC,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,gBAAgB,CAAC,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;CACzC,GAAG,IAAI,CAqNP"}
1
+ {"version":3,"file":"generator.d.ts","sourceRoot":"","sources":["../../src/toolkits/generator.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAU,MAAM,aAAa,CAAC;AA+CzD,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS,CAUvE;AA6BD,wBAAgB,cAAc,CAAC,OAAO,CAAC,EAAE;IACvC,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,gBAAgB,CAAC,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;CACzC,GAAG,IAAI,CAkMP"}