node-janitor 1.0.1 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,302 @@
1
+ /**
2
+ * Internationalization (i18n) support for node-janitor
3
+ */
4
+ const translations = {
5
+ en: {
6
+ found: 'Found',
7
+ folders: 'node_modules folders',
8
+ scanning: 'Scanning',
9
+ noFolders: 'No node_modules folders found.',
10
+ cancelled: 'Cancelled.',
11
+ goodbye: 'Goodbye!',
12
+ deleting: 'Deleting',
13
+ deleted: 'Deleted',
14
+ freed: 'Freed',
15
+ cleaning: 'Cleaning',
16
+ deepCleaning: 'Deep Cleaning',
17
+ processed: 'Processed',
18
+ removed: 'Removed',
19
+ files: 'files',
20
+ scanPath: 'Enter path to scan:',
21
+ ageFilter: 'Filter by age (e.g., 30d, 3m) or press Enter to skip:',
22
+ confirmDelete: 'Delete these folders?',
23
+ viewList: 'View folder list?',
24
+ selectAction: 'Select action:',
25
+ report: 'Node Modules Report',
26
+ totalFolders: 'Total Folders',
27
+ totalSize: 'Total Size',
28
+ oldest: 'Oldest',
29
+ newest: 'Newest',
30
+ breakdown: 'Breakdown by Age',
31
+ recommendations: 'Recommendations',
32
+ scanFailed: 'Scan failed',
33
+ errors: 'errors occurred',
34
+ dryRunMode: 'Dry run mode - no files will be deleted',
35
+ backupSaved: 'Backup saved to',
36
+ },
37
+ vi: {
38
+ found: 'Tìm thấy',
39
+ folders: 'thư mục node_modules',
40
+ scanning: 'Đang quét',
41
+ noFolders: 'Không tìm thấy thư mục node_modules nào.',
42
+ cancelled: 'Đã hủy.',
43
+ goodbye: 'Tạm biệt!',
44
+ deleting: 'Đang xóa',
45
+ deleted: 'Đã xóa',
46
+ freed: 'Đã giải phóng',
47
+ cleaning: 'Đang dọn dẹp',
48
+ deepCleaning: 'Đang dọn sâu',
49
+ processed: 'Đã xử lý',
50
+ removed: 'Đã xóa',
51
+ files: 'tập tin',
52
+ scanPath: 'Nhập đường dẫn để quét:',
53
+ ageFilter: 'Lọc theo tuổi (vd: 30d, 3m) hoặc Enter để bỏ qua:',
54
+ confirmDelete: 'Xóa các thư mục này?',
55
+ viewList: 'Xem danh sách thư mục?',
56
+ selectAction: 'Chọn hành động:',
57
+ report: 'Báo cáo Node Modules',
58
+ totalFolders: 'Tổng số thư mục',
59
+ totalSize: 'Tổng dung lượng',
60
+ oldest: 'Cũ nhất',
61
+ newest: 'Mới nhất',
62
+ breakdown: 'Phân tích theo độ tuổi',
63
+ recommendations: 'Đề xuất',
64
+ scanFailed: 'Quét thất bại',
65
+ errors: 'lỗi xảy ra',
66
+ dryRunMode: 'Chế độ thử - không có tập tin nào bị xóa',
67
+ backupSaved: 'Sao lưu được lưu tại',
68
+ },
69
+ zh: {
70
+ found: '找到',
71
+ folders: 'node_modules 文件夹',
72
+ scanning: '正在扫描',
73
+ noFolders: '未找到 node_modules 文件夹。',
74
+ cancelled: '已取消。',
75
+ goodbye: '再见!',
76
+ deleting: '正在删除',
77
+ deleted: '已删除',
78
+ freed: '已释放',
79
+ cleaning: '正在清理',
80
+ deepCleaning: '正在深度清理',
81
+ processed: '已处理',
82
+ removed: '已移除',
83
+ files: '文件',
84
+ scanPath: '输入要扫描的路径:',
85
+ ageFilter: '按年龄筛选(如:30d、3m)或按 Enter 跳过:',
86
+ confirmDelete: '删除这些文件夹?',
87
+ viewList: '查看文件夹列表?',
88
+ selectAction: '选择操作:',
89
+ report: 'Node Modules 报告',
90
+ totalFolders: '文件夹总数',
91
+ totalSize: '总大小',
92
+ oldest: '最旧',
93
+ newest: '最新',
94
+ breakdown: '按年龄分类',
95
+ recommendations: '建议',
96
+ scanFailed: '扫描失败',
97
+ errors: '发生错误',
98
+ dryRunMode: '试运行模式 - 不会删除任何文件',
99
+ backupSaved: '备份已保存到',
100
+ },
101
+ ja: {
102
+ found: '見つかりました',
103
+ folders: 'node_modules フォルダ',
104
+ scanning: 'スキャン中',
105
+ noFolders: 'node_modules フォルダが見つかりませんでした。',
106
+ cancelled: 'キャンセルしました。',
107
+ goodbye: 'さようなら!',
108
+ deleting: '削除中',
109
+ deleted: '削除しました',
110
+ freed: '解放しました',
111
+ cleaning: 'クリーニング中',
112
+ deepCleaning: 'ディープクリーニング中',
113
+ processed: '処理しました',
114
+ removed: '削除しました',
115
+ files: 'ファイル',
116
+ scanPath: 'スキャンするパスを入力:',
117
+ ageFilter: '年齢でフィルター(例:30d、3m)またはEnterでスキップ:',
118
+ confirmDelete: 'これらのフォルダを削除しますか?',
119
+ viewList: 'フォルダリストを表示しますか?',
120
+ selectAction: 'アクションを選択:',
121
+ report: 'Node Modules レポート',
122
+ totalFolders: 'フォルダ総数',
123
+ totalSize: '合計サイズ',
124
+ oldest: '最も古い',
125
+ newest: '最も新しい',
126
+ breakdown: '年齢別内訳',
127
+ recommendations: '推奨事項',
128
+ scanFailed: 'スキャン失敗',
129
+ errors: 'エラーが発生',
130
+ dryRunMode: 'ドライランモード - ファイルは削除されません',
131
+ backupSaved: 'バックアップを保存しました',
132
+ },
133
+ ko: {
134
+ found: '발견',
135
+ folders: 'node_modules 폴더',
136
+ scanning: '스캔 중',
137
+ noFolders: 'node_modules 폴더를 찾을 수 없습니다.',
138
+ cancelled: '취소되었습니다.',
139
+ goodbye: '안녕히 가세요!',
140
+ deleting: '삭제 중',
141
+ deleted: '삭제됨',
142
+ freed: '확보됨',
143
+ cleaning: '정리 중',
144
+ deepCleaning: '심층 정리 중',
145
+ processed: '처리됨',
146
+ removed: '제거됨',
147
+ files: '파일',
148
+ scanPath: '스캔할 경로를 입력하세요:',
149
+ ageFilter: '연령으로 필터링 (예: 30d, 3m) 또는 Enter로 건너뛰기:',
150
+ confirmDelete: '이 폴더들을 삭제하시겠습니까?',
151
+ viewList: '폴더 목록을 보시겠습니까?',
152
+ selectAction: '작업을 선택하세요:',
153
+ report: 'Node Modules 보고서',
154
+ totalFolders: '총 폴더 수',
155
+ totalSize: '총 크기',
156
+ oldest: '가장 오래된',
157
+ newest: '가장 최근',
158
+ breakdown: '연령별 분류',
159
+ recommendations: '권장 사항',
160
+ scanFailed: '스캔 실패',
161
+ errors: '오류 발생',
162
+ dryRunMode: '드라이런 모드 - 파일이 삭제되지 않습니다',
163
+ backupSaved: '백업이 저장되었습니다',
164
+ },
165
+ es: {
166
+ found: 'Encontrado',
167
+ folders: 'carpetas node_modules',
168
+ scanning: 'Escaneando',
169
+ noFolders: 'No se encontraron carpetas node_modules.',
170
+ cancelled: 'Cancelado.',
171
+ goodbye: '¡Adiós!',
172
+ deleting: 'Eliminando',
173
+ deleted: 'Eliminado',
174
+ freed: 'Liberado',
175
+ cleaning: 'Limpiando',
176
+ deepCleaning: 'Limpieza profunda',
177
+ processed: 'Procesado',
178
+ removed: 'Eliminado',
179
+ files: 'archivos',
180
+ scanPath: 'Ingrese la ruta a escanear:',
181
+ ageFilter: 'Filtrar por edad (ej: 30d, 3m) o Enter para omitir:',
182
+ confirmDelete: '¿Eliminar estas carpetas?',
183
+ viewList: '¿Ver lista de carpetas?',
184
+ selectAction: 'Seleccionar acción:',
185
+ report: 'Informe de Node Modules',
186
+ totalFolders: 'Total de carpetas',
187
+ totalSize: 'Tamaño total',
188
+ oldest: 'Más antiguo',
189
+ newest: 'Más reciente',
190
+ breakdown: 'Desglose por edad',
191
+ recommendations: 'Recomendaciones',
192
+ scanFailed: 'Escaneo fallido',
193
+ errors: 'errores ocurridos',
194
+ dryRunMode: 'Modo simulado - no se eliminarán archivos',
195
+ backupSaved: 'Copia de seguridad guardada en',
196
+ },
197
+ fr: {
198
+ found: 'Trouvé',
199
+ folders: 'dossiers node_modules',
200
+ scanning: 'Analyse en cours',
201
+ noFolders: 'Aucun dossier node_modules trouvé.',
202
+ cancelled: 'Annulé.',
203
+ goodbye: 'Au revoir !',
204
+ deleting: 'Suppression',
205
+ deleted: 'Supprimé',
206
+ freed: 'Libéré',
207
+ cleaning: 'Nettoyage',
208
+ deepCleaning: 'Nettoyage approfondi',
209
+ processed: 'Traité',
210
+ removed: 'Supprimé',
211
+ files: 'fichiers',
212
+ scanPath: 'Entrez le chemin à analyser :',
213
+ ageFilter: 'Filtrer par âge (ex : 30d, 3m) ou Entrée pour ignorer :',
214
+ confirmDelete: 'Supprimer ces dossiers ?',
215
+ viewList: 'Voir la liste des dossiers ?',
216
+ selectAction: 'Sélectionner une action :',
217
+ report: 'Rapport Node Modules',
218
+ totalFolders: 'Total des dossiers',
219
+ totalSize: 'Taille totale',
220
+ oldest: 'Plus ancien',
221
+ newest: 'Plus récent',
222
+ breakdown: 'Répartition par âge',
223
+ recommendations: 'Recommandations',
224
+ scanFailed: 'Analyse échouée',
225
+ errors: 'erreurs survenues',
226
+ dryRunMode: 'Mode simulation - aucun fichier ne sera supprimé',
227
+ backupSaved: 'Sauvegarde enregistrée dans',
228
+ },
229
+ de: {
230
+ found: 'Gefunden',
231
+ folders: 'node_modules Ordner',
232
+ scanning: 'Scannen',
233
+ noFolders: 'Keine node_modules Ordner gefunden.',
234
+ cancelled: 'Abgebrochen.',
235
+ goodbye: 'Auf Wiedersehen!',
236
+ deleting: 'Löschen',
237
+ deleted: 'Gelöscht',
238
+ freed: 'Freigegeben',
239
+ cleaning: 'Bereinigung',
240
+ deepCleaning: 'Tiefenreinigung',
241
+ processed: 'Verarbeitet',
242
+ removed: 'Entfernt',
243
+ files: 'Dateien',
244
+ scanPath: 'Pfad zum Scannen eingeben:',
245
+ ageFilter: 'Nach Alter filtern (z.B. 30d, 3m) oder Enter zum Überspringen:',
246
+ confirmDelete: 'Diese Ordner löschen?',
247
+ viewList: 'Ordnerliste anzeigen?',
248
+ selectAction: 'Aktion auswählen:',
249
+ report: 'Node Modules Bericht',
250
+ totalFolders: 'Ordner insgesamt',
251
+ totalSize: 'Gesamtgröße',
252
+ oldest: 'Älteste',
253
+ newest: 'Neueste',
254
+ breakdown: 'Aufschlüsselung nach Alter',
255
+ recommendations: 'Empfehlungen',
256
+ scanFailed: 'Scan fehlgeschlagen',
257
+ errors: 'Fehler aufgetreten',
258
+ dryRunMode: 'Testlauf - keine Dateien werden gelöscht',
259
+ backupSaved: 'Backup gespeichert unter',
260
+ },
261
+ };
262
+ let currentLanguage = 'en';
263
+ /**
264
+ * Set the current language
265
+ */
266
+ export function setLanguage(lang) {
267
+ if (lang in translations) {
268
+ currentLanguage = lang;
269
+ }
270
+ else {
271
+ // Try to match by prefix (e.g., 'en-US' -> 'en')
272
+ const prefix = lang.split('-')[0].toLowerCase();
273
+ if (prefix in translations) {
274
+ currentLanguage = prefix;
275
+ }
276
+ }
277
+ }
278
+ /**
279
+ * Get a translated string
280
+ */
281
+ export function t(key) {
282
+ return translations[currentLanguage][key] || translations.en[key] || key;
283
+ }
284
+ /**
285
+ * Get all available languages
286
+ */
287
+ export function getAvailableLanguages() {
288
+ return Object.keys(translations);
289
+ }
290
+ /**
291
+ * Get current language
292
+ */
293
+ export function getCurrentLanguage() {
294
+ return currentLanguage;
295
+ }
296
+ export default {
297
+ setLanguage,
298
+ t,
299
+ getAvailableLanguages,
300
+ getCurrentLanguage,
301
+ };
302
+ //# sourceMappingURL=i18n.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"i18n.js","sourceRoot":"","sources":["../../src/utils/i18n.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "node-janitor",
3
- "version": "1.0.1",
3
+ "version": "1.2.0",
4
4
  "description": "🧹 Smart CLI tool to clean up node_modules folders - free up disk space automatically",
5
5
  "main": "dist/index.js",
6
6
  "bin": {
@@ -17,6 +17,7 @@
17
17
  "lint": "eslint src --ext .ts",
18
18
  "lint:fix": "eslint src --ext .ts --fix",
19
19
  "format": "prettier --write \"src/**/*.ts\"",
20
+ "benchmark": "npm run build && npx tsx benchmark/run.ts",
20
21
  "prepublishOnly": "npm run build"
21
22
  },
22
23
  "keywords": [
@@ -49,11 +50,14 @@
49
50
  "README.md"
50
51
  ],
51
52
  "dependencies": {
53
+ "@types/blessed": "^0.1.27",
54
+ "blessed": "^0.1.81",
52
55
  "chalk": "^5.3.0",
53
56
  "cli-progress": "^3.12.0",
54
57
  "cli-table3": "^0.6.5",
55
58
  "commander": "^12.1.0",
56
59
  "cosmiconfig": "^9.0.0",
60
+ "cron": "^4.4.0",
57
61
  "dayjs": "^1.11.13",
58
62
  "fs-extra": "^11.2.0",
59
63
  "glob": "^11.0.0",
@@ -63,9 +67,11 @@
63
67
  },
64
68
  "devDependencies": {
65
69
  "@types/cli-progress": "^3.11.6",
70
+ "@types/cron": "^2.0.1",
66
71
  "@types/fs-extra": "^11.0.4",
67
72
  "@types/inquirer": "^9.0.7",
68
73
  "@types/node": "^22.10.2",
74
+ "@vitest/coverage-v8": "^2.1.9",
69
75
  "typescript": "^5.7.2",
70
76
  "vitest": "^2.1.8"
71
77
  }