@ingcrea/aumic-sanitizer 0.0.0-stage → 5.4.2
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/LICENSE +10 -0
- package/MANIFEST.es.md +41 -0
- package/MANIFEST.md +11 -0
- package/README.es.md +141 -0
- package/README.md +23 -2
- package/dist/1-atoms/constants.js +18 -0
- package/dist/1-atoms/mojibake-vectors.js +51 -0
- package/dist/1-atoms/types.js +2 -0
- package/dist/2-molecules/LanguageProfiler.js +322 -0
- package/dist/2-molecules/MojibakeEngine.js +57 -0
- package/dist/2-molecules/config.js +41 -0
- package/dist/2-molecules/scanner.js +51 -0
- package/dist/3-cells/HookManager.js +90 -0
- package/dist/3-cells/Sanitizer.js +364 -0
- package/dist/3-cells/worker.js +6 -0
- package/dist/4-organisms/Cli.js +293 -0
- package/dist/5-planets/NativeCompiler.js +32 -0
- package/dist/index.js +8 -0
- package/package.json +39 -4
|
@@ -0,0 +1,293 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.runCLI = runCLI;
|
|
7
|
+
const fs_1 = require("fs");
|
|
8
|
+
const { performance } = require('perf_hooks');
|
|
9
|
+
const commander_1 = require("commander");
|
|
10
|
+
const picocolors_1 = __importDefault(require("picocolors"));
|
|
11
|
+
const cli_progress_1 = __importDefault(require("cli-progress"));
|
|
12
|
+
const path_1 = __importDefault(require("path"));
|
|
13
|
+
const scanner_1 = require("../2-molecules/scanner");
|
|
14
|
+
const config_1 = require("../2-molecules/config");
|
|
15
|
+
const HookManager_1 = require("../3-cells/HookManager");
|
|
16
|
+
const readline_1 = __importDefault(require("readline"));
|
|
17
|
+
const child_process_1 = require("child_process");
|
|
18
|
+
const PKG_PATH = path_1.default.join(__dirname, '../../package.json');
|
|
19
|
+
const PKG_VERSION = JSON.parse((0, fs_1.readFileSync)(PKG_PATH, 'utf8')).version;
|
|
20
|
+
async function promptOpenLog(logPath) {
|
|
21
|
+
if (!process.stdin.isTTY)
|
|
22
|
+
return;
|
|
23
|
+
return new Promise((resolve) => {
|
|
24
|
+
const rl = readline_1.default.createInterface({ input: process.stdin, output: process.stdout });
|
|
25
|
+
rl.question(picocolors_1.default.yellow('¿Deseas abrir la bitácora forense en tu editor predeterminado? (s/N): '), (answer) => {
|
|
26
|
+
if (answer.toLowerCase() === 's' || answer.toLowerCase() === 'y') {
|
|
27
|
+
const cmd = process.platform === 'win32' ? 'start ""' : process.platform === 'darwin' ? 'open' : 'xdg-open';
|
|
28
|
+
(0, child_process_1.exec)(`${cmd} "${logPath}"`);
|
|
29
|
+
}
|
|
30
|
+
rl.close();
|
|
31
|
+
resolve();
|
|
32
|
+
});
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
async function interactiveMenu(program) {
|
|
36
|
+
const rl = readline_1.default.createInterface({ input: process.stdin, output: process.stdout });
|
|
37
|
+
const ask = (query) => new Promise(resolve => rl.question(query, resolve));
|
|
38
|
+
console.log(picocolors_1.default.cyan(`\n=== AUM-IC Sanitizer v${PKG_VERSION} - Central Forense ===`));
|
|
39
|
+
console.log(picocolors_1.default.gray('Creado por Ingeniería Creativa bajo el Estándar AUM-IC 7:2026\n'));
|
|
40
|
+
console.log('1) ' + picocolors_1.default.yellow('Auditoría') + ' (Simulación Dry-Run sin editar archivos)');
|
|
41
|
+
console.log('2) ' + picocolors_1.default.green('Sanear Proyecto') + ' (Escáner y Destrucción de Entropía)');
|
|
42
|
+
console.log('3) ' + picocolors_1.default.red('Restauración') + ' (Rollback usando aumic-history.json)');
|
|
43
|
+
console.log('4) ' + picocolors_1.default.blue('Instalar Git Hook Local') + ' (Protección en este repositorio)');
|
|
44
|
+
console.log('5) ' + picocolors_1.default.blue('Instalar Git Hook Global') + ' (Protección en todo el equipo)');
|
|
45
|
+
console.log('6) ' + picocolors_1.default.gray('Generar aumic.config.json') + ' (Configuración Inicial)');
|
|
46
|
+
console.log('7) ' + picocolors_1.default.white('Mostrar Ayuda de Consola'));
|
|
47
|
+
console.log('0) ' + picocolors_1.default.gray('Salir'));
|
|
48
|
+
const answer = await ask(picocolors_1.default.cyan('\nSelecciona una operación [0-7]: '));
|
|
49
|
+
const choice = answer.trim();
|
|
50
|
+
if (['1', '2', '3'].includes(choice)) {
|
|
51
|
+
const target = await ask(picocolors_1.default.gray('\nDestino (Ruta de archivo/carpeta o ENTER para todo el proyecto): '));
|
|
52
|
+
rl.close();
|
|
53
|
+
const args = ['node', 'aumic-sanitizer'];
|
|
54
|
+
if (choice === '1')
|
|
55
|
+
args.push('audit');
|
|
56
|
+
if (choice === '2')
|
|
57
|
+
args.push('scan');
|
|
58
|
+
if (choice === '3')
|
|
59
|
+
args.push('restore');
|
|
60
|
+
if (target.trim() !== '')
|
|
61
|
+
args.push(target.trim());
|
|
62
|
+
await program.parseAsync(args);
|
|
63
|
+
}
|
|
64
|
+
else {
|
|
65
|
+
rl.close();
|
|
66
|
+
switch (choice) {
|
|
67
|
+
case '4':
|
|
68
|
+
await program.parseAsync(['node', 'aumic-sanitizer', 'hook']);
|
|
69
|
+
break;
|
|
70
|
+
case '5':
|
|
71
|
+
await program.parseAsync(['node', 'aumic-sanitizer', 'hook', '--global']);
|
|
72
|
+
break;
|
|
73
|
+
case '6':
|
|
74
|
+
await program.parseAsync(['node', 'aumic-sanitizer', 'init']);
|
|
75
|
+
break;
|
|
76
|
+
case '7':
|
|
77
|
+
program.outputHelp();
|
|
78
|
+
break;
|
|
79
|
+
case '0': process.exit(0);
|
|
80
|
+
default:
|
|
81
|
+
console.log(picocolors_1.default.red('Opción inválida.'));
|
|
82
|
+
process.exit(1);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
async function runCLI() {
|
|
87
|
+
const program = new commander_1.Command();
|
|
88
|
+
program.name('aumic-sanitizer').description('Motor Forense Anti-Mojibake y Erradicador de Entropía').version(PKG_VERSION);
|
|
89
|
+
program.command('init')
|
|
90
|
+
.description('Genera aumic.config.json para establecer reglas de gobernanza (exclusiones y configuracion de modulos)')
|
|
91
|
+
.action(() => {
|
|
92
|
+
(0, config_1.initConfig)(process.cwd());
|
|
93
|
+
console.log(picocolors_1.default.green('âœ" aumic.config.json generado exitosamente.'));
|
|
94
|
+
});
|
|
95
|
+
program.command('hook')
|
|
96
|
+
.description('Instala el interceptor Auto-Curativo en Git')
|
|
97
|
+
.option('--global', 'Instala el hook globalmente para todos los repositorios del equipo')
|
|
98
|
+
.action((options) => {
|
|
99
|
+
if (options.global) {
|
|
100
|
+
(0, HookManager_1.installGlobalGitHook)();
|
|
101
|
+
}
|
|
102
|
+
else {
|
|
103
|
+
(0, HookManager_1.installGitHook)(process.cwd());
|
|
104
|
+
}
|
|
105
|
+
});
|
|
106
|
+
program.command('restore [target]')
|
|
107
|
+
.description('Restaura los archivos a su estado original usando el log forense aumic-history.json')
|
|
108
|
+
.action(async (target) => {
|
|
109
|
+
const targetPath = target ? path_1.default.resolve(process.cwd(), target) : null;
|
|
110
|
+
const historyPath = path_1.default.join(process.cwd(), 'aumic-history.json');
|
|
111
|
+
try {
|
|
112
|
+
const fsPromises = require('fs/promises');
|
|
113
|
+
const data = await fsPromises.readFile(historyPath, 'utf8');
|
|
114
|
+
const parsed = JSON.parse(data);
|
|
115
|
+
const history = Array.isArray(parsed) ? parsed : (parsed.history || []);
|
|
116
|
+
for (const entry of history) {
|
|
117
|
+
if (targetPath && !entry.filepath.startsWith(targetPath))
|
|
118
|
+
continue;
|
|
119
|
+
await fsPromises.writeFile(entry.filepath, entry.originalContent, 'utf8');
|
|
120
|
+
console.log(picocolors_1.default.green('[Restaurado] ' + path_1.default.relative(process.cwd(), entry.filepath)));
|
|
121
|
+
}
|
|
122
|
+
console.log(picocolors_1.default.cyan('\nRestauración completada con éxito.'));
|
|
123
|
+
await promptOpenLog(historyPath);
|
|
124
|
+
}
|
|
125
|
+
catch (e) {
|
|
126
|
+
console.log(picocolors_1.default.red('Error: No se encontró el archivo forense aumic-history.json o está roto.'));
|
|
127
|
+
}
|
|
128
|
+
});
|
|
129
|
+
program.command('audit [target]')
|
|
130
|
+
.description('Simula el escáner (Dry-Run) sin modificar archivos')
|
|
131
|
+
.action(async (target) => {
|
|
132
|
+
const args = ['node', 'aumic-sanitizer', 'scan'];
|
|
133
|
+
if (target)
|
|
134
|
+
args.push(target);
|
|
135
|
+
args.push('--audit');
|
|
136
|
+
await program.parseAsync(args);
|
|
137
|
+
});
|
|
138
|
+
program.command('scan [target]')
|
|
139
|
+
.description('Ejecuta el escáner en la carpeta actual')
|
|
140
|
+
.option('--audit', 'Modo lectura: escanea y retorna exit 1 si hay infección')
|
|
141
|
+
.option('--git-stage', 'Ejecuta git add automáticamente en los archivos reparados')
|
|
142
|
+
.option('--delta', 'Escaneo diferencial vía Git')
|
|
143
|
+
.option('--eradicate', 'Ignora la configuración y fuerza la purga de console.logs y debuggers')
|
|
144
|
+
.option('--from-hook', 'Uso interno para Git Hooks')
|
|
145
|
+
.option('-c, --concurrency <number>', 'Límite de concurrencia', '50')
|
|
146
|
+
.action(async (target, options) => {
|
|
147
|
+
if (typeof target === 'object' && !options) {
|
|
148
|
+
options = target;
|
|
149
|
+
target = undefined;
|
|
150
|
+
}
|
|
151
|
+
const targetPath = target ? path_1.default.resolve(process.cwd(), target) : process.cwd();
|
|
152
|
+
const targetDir = require('fs').statSync(targetPath).isFile() ? path_1.default.dirname(targetPath) : targetPath;
|
|
153
|
+
const config = (0, config_1.loadConfig)(targetDir);
|
|
154
|
+
let isAudit = !!options.audit;
|
|
155
|
+
let isGitStage = !!options.gitStage;
|
|
156
|
+
// Lógica de Self-Healing (Intercepción del Hook)
|
|
157
|
+
if (options.fromHook) {
|
|
158
|
+
if (config.gitMode === 'off') {
|
|
159
|
+
console.log(picocolors_1.default.gray('AUM-IC Hook desactivado por configuración.'));
|
|
160
|
+
process.exit(0);
|
|
161
|
+
}
|
|
162
|
+
if (config.gitMode === 'auto') {
|
|
163
|
+
isAudit = false;
|
|
164
|
+
isGitStage = true;
|
|
165
|
+
console.log(picocolors_1.default.blue('ðŸ›¡ï¸ AUM-IC Self-Healing Activado. Curando antes del commit...'));
|
|
166
|
+
}
|
|
167
|
+
else if (config.gitMode === 'block') {
|
|
168
|
+
isAudit = true;
|
|
169
|
+
isGitStage = false;
|
|
170
|
+
console.log(picocolors_1.default.magenta('ðŸ›¡ï¸ AUM-IC Sentinel Activado. Auditando antes del commit...'));
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
else {
|
|
174
|
+
console.log(`\n${picocolors_1.default.yellow('Iniciando Escáner Forense AUM-IC en:')} ${picocolors_1.default.white(targetPath)}`);
|
|
175
|
+
}
|
|
176
|
+
// Forzar el erradicador por bandera si es necesario
|
|
177
|
+
if (options.eradicate)
|
|
178
|
+
config.rules.eradicator = true;
|
|
179
|
+
const sanitizeOpts = {
|
|
180
|
+
audit: isAudit, gitStage: isGitStage, concurrency: parseInt(options.concurrency, 10), config
|
|
181
|
+
};
|
|
182
|
+
const files = (0, scanner_1.getTargetFiles)(targetPath, !!options.delta);
|
|
183
|
+
if (files.length === 0)
|
|
184
|
+
return;
|
|
185
|
+
const startTime = performance.now();
|
|
186
|
+
let totalFixed = 0, totalCorruptions = 0;
|
|
187
|
+
const globalHistory = [];
|
|
188
|
+
const progressBar = new cli_progress_1.default.SingleBar({
|
|
189
|
+
format: `${picocolors_1.default.cyan('Escaneando')} |${picocolors_1.default.blue('{bar}')}| {percentage}% || {value}/{total} Archivos || ⏱️ {duration_formatted}`,
|
|
190
|
+
barCompleteChar: '\u2588', barIncompleteChar: '\u2591', hideCursor: true
|
|
191
|
+
});
|
|
192
|
+
if (!options.fromHook)
|
|
193
|
+
progressBar.start(files.length, 0);
|
|
194
|
+
const chunkSize = sanitizeOpts.concurrency;
|
|
195
|
+
const reportLogs = [];
|
|
196
|
+
const Piscina = require('piscina');
|
|
197
|
+
const pool = new Piscina({ filename: path_1.default.join(__dirname, '../3-cells/worker.js'), maxThreads: sanitizeOpts.concurrency });
|
|
198
|
+
const promises = files.map(f => pool.run({ filepath: f, options: sanitizeOpts }).then((res) => {
|
|
199
|
+
if (!options.fromHook)
|
|
200
|
+
progressBar.increment();
|
|
201
|
+
if (res.modified) {
|
|
202
|
+
globalHistory.push(res);
|
|
203
|
+
totalFixed++;
|
|
204
|
+
totalCorruptions += res.corruptions;
|
|
205
|
+
const status = sanitizeOpts.audit ? picocolors_1.default.red('Infectado') : picocolors_1.default.green('Reparado');
|
|
206
|
+
const relPath = path_1.default.relative(process.cwd(), res.filepath);
|
|
207
|
+
let log = `[${status}] ${relPath} ${picocolors_1.default.gray(`(${res.corruptions} curaciones)`)}`;
|
|
208
|
+
if (sanitizeOpts.gitStage && !sanitizeOpts.audit)
|
|
209
|
+
log += `\n ${picocolors_1.default.cyan('> Auto-staged (git add)')}`;
|
|
210
|
+
reportLogs.push(log);
|
|
211
|
+
}
|
|
212
|
+
}));
|
|
213
|
+
await Promise.all(promises);
|
|
214
|
+
await pool.destroy();
|
|
215
|
+
const timeTaken = ((performance.now() - startTime) / 1000).toFixed(2);
|
|
216
|
+
if (!options.fromHook) {
|
|
217
|
+
progressBar.stop();
|
|
218
|
+
console.log('');
|
|
219
|
+
}
|
|
220
|
+
if (reportLogs.length > 0) {
|
|
221
|
+
if (options.fromHook)
|
|
222
|
+
console.log(`\n${picocolors_1.default.red('[!] ATENCIÓN: Se detectaron y/o purgaron anomalías:')}`);
|
|
223
|
+
console.log(reportLogs.join('\n'));
|
|
224
|
+
}
|
|
225
|
+
if (!options.fromHook) {
|
|
226
|
+
console.log(`\n${picocolors_1.default.cyan('========================================')}`);
|
|
227
|
+
console.log(picocolors_1.default.cyan(sanitizeOpts.audit ? ' AUDITORÍA COMPLETADA ' : ' SANEAMIENTO COMPLETADO '));
|
|
228
|
+
console.log(picocolors_1.default.cyan('========================================'));
|
|
229
|
+
if (sanitizeOpts.audit) {
|
|
230
|
+
console.log(`${picocolors_1.default.yellow('Archivos infectados:')} ${picocolors_1.default.white(totalFixed)}`);
|
|
231
|
+
console.log(`${picocolors_1.default.yellow('Entropía detectada:')} ${picocolors_1.default.white(totalCorruptions)} items`);
|
|
232
|
+
}
|
|
233
|
+
else {
|
|
234
|
+
console.log(`${picocolors_1.default.yellow('Archivos curados:')} ${picocolors_1.default.white(totalFixed)}`);
|
|
235
|
+
console.log(`${picocolors_1.default.yellow('Entropía destruida:')} ${picocolors_1.default.white(totalCorruptions)} items`);
|
|
236
|
+
}
|
|
237
|
+
console.log(`${picocolors_1.default.yellow('Tiempo de ejecución:')} ${picocolors_1.default.white(timeTaken + 's')}`);
|
|
238
|
+
console.log(`${picocolors_1.default.cyan('========================================')}`);
|
|
239
|
+
console.log(picocolors_1.default.gray('Creado por Ingeniería Creativa bajo el Estándar AUM-IC 7:2026\n'));
|
|
240
|
+
}
|
|
241
|
+
if (globalHistory.length > 0 || options.audit) {
|
|
242
|
+
const historyPath = require('path').join(targetDir, 'aumic-history.json');
|
|
243
|
+
const historyData = globalHistory.map(r => ({
|
|
244
|
+
filepath: r.filepath,
|
|
245
|
+
corruptions: r.corruptions,
|
|
246
|
+
originalContent: r.originalContent
|
|
247
|
+
}));
|
|
248
|
+
const reportObject = {
|
|
249
|
+
metadata: {
|
|
250
|
+
timestamp: new Date().toISOString(),
|
|
251
|
+
operacion: sanitizeOpts.audit ? 'AUDITORIA (DRY-RUN)' : 'SANEAMIENTO (DESTRUCTIVO)',
|
|
252
|
+
destino: targetPath,
|
|
253
|
+
archivosEscaneados: files.length,
|
|
254
|
+
archivosAfectados: totalFixed,
|
|
255
|
+
entropiaDestruida: totalCorruptions,
|
|
256
|
+
tiempoEjecucionSegundos: parseFloat(timeTaken)
|
|
257
|
+
},
|
|
258
|
+
history: historyData
|
|
259
|
+
};
|
|
260
|
+
require('fs').writeFileSync(historyPath, JSON.stringify(reportObject, null, 2), 'utf8');
|
|
261
|
+
// AUM-IC Auto-Gitignore Firewall
|
|
262
|
+
const gitignorePath = require('path').join(targetDir, '.gitignore');
|
|
263
|
+
if (require('fs').existsSync(gitignorePath)) {
|
|
264
|
+
const currentIgnore = require('fs').readFileSync(gitignorePath, 'utf8');
|
|
265
|
+
if (!currentIgnore.includes('aumic-history.json')) {
|
|
266
|
+
require('fs').appendFileSync(gitignorePath, '\n# AUM-IC Forensic Log\naumic-history.json\n', 'utf8');
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
else {
|
|
270
|
+
require('fs').writeFileSync(gitignorePath, '# AUM-IC Forensic Log\naumic-history.json\n', 'utf8');
|
|
271
|
+
}
|
|
272
|
+
if (!options.fromHook)
|
|
273
|
+
console.log(picocolors_1.default.gray('\nInteligencia Forense guardada en: aumic-history.json'));
|
|
274
|
+
if (!options.fromHook)
|
|
275
|
+
await promptOpenLog(historyPath);
|
|
276
|
+
}
|
|
277
|
+
if (options.fromHook && sanitizeOpts.audit && totalFixed > 0) {
|
|
278
|
+
console.log(`\n${picocolors_1.default.red('AUM-IC SECURITY: COMMIT BLOQUEADO.')}`);
|
|
279
|
+
console.log(`${picocolors_1.default.yellow('Archivos Infectados:')} ${picocolors_1.default.white(String(totalFixed))}`);
|
|
280
|
+
console.log(`${picocolors_1.default.yellow('Entropía detectada:')} ${picocolors_1.default.white(String(totalCorruptions))} items`);
|
|
281
|
+
console.log(`${picocolors_1.default.yellow('Tiempo de ejecución:')} ${picocolors_1.default.white(timeTaken + 's')}`);
|
|
282
|
+
console.log(picocolors_1.default.gray('Creado por Ingeniería Creativa bajo el Estándar AUM-IC 7:2026'));
|
|
283
|
+
console.log(`${picocolors_1.default.yellow('Solución:')} Revisa los archivos y vuelve a intentar el commit.\n`);
|
|
284
|
+
process.exit(1);
|
|
285
|
+
}
|
|
286
|
+
});
|
|
287
|
+
if (process.argv.length <= 2 && process.stdin.isTTY) {
|
|
288
|
+
await interactiveMenu(program);
|
|
289
|
+
}
|
|
290
|
+
else {
|
|
291
|
+
program.parse(process.argv);
|
|
292
|
+
}
|
|
293
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* [AUM-IC DORMANT MODULE] - Native Compiler
|
|
4
|
+
*
|
|
5
|
+
* Estado: APAGADO (Latente).
|
|
6
|
+
*
|
|
7
|
+
* Justificación Arquitectónica:
|
|
8
|
+
* Este módulo contiene las rutinas de compilación nativa (Bun / Node SEA) para crear binarios .exe.
|
|
9
|
+
* Actualmente está desactivado a nivel genético porque AUM-IC 7 favorece la topología fractal
|
|
10
|
+
* y la compilación modular TSC transparente.
|
|
11
|
+
*
|
|
12
|
+
* Para despertar el módulo en un futuro, un Arquitecto debe eliminar la excepción y cablearlo al CLI.
|
|
13
|
+
*/
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.NativeBinaryCompiler = void 0;
|
|
16
|
+
class NativeBinaryCompiler {
|
|
17
|
+
static compileToExe() {
|
|
18
|
+
throw new Error("[AUM-IC] El módulo Native Compiler está en estado Latente (Apagado).");
|
|
19
|
+
/*
|
|
20
|
+
// LÓGICA LATENTE (Código genético para el futuro)
|
|
21
|
+
console.log(pc.yellow('Despertando Compilador Nativo (Bun / Node SEA)...'));
|
|
22
|
+
try {
|
|
23
|
+
// Ejemplo de orquestación de Bun para un binario Standalone:
|
|
24
|
+
execSync('bun build ./src/index.ts --compile --outfile aumic-sanitize.exe', { stdio: 'inherit' });
|
|
25
|
+
console.log(pc.green('Binario nativo forjado con éxito.'));
|
|
26
|
+
} catch (e) {
|
|
27
|
+
console.error(pc.red('Fallo en la forja binaria.'), e);
|
|
28
|
+
}
|
|
29
|
+
*/
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
exports.NativeBinaryCompiler = NativeBinaryCompiler;
|
package/dist/index.js
ADDED
package/package.json
CHANGED
|
@@ -1,6 +1,41 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ingcrea/aumic-sanitizer",
|
|
3
|
-
"version": "
|
|
4
|
-
"
|
|
5
|
-
"
|
|
6
|
-
|
|
3
|
+
"version": "5.4.2",
|
|
4
|
+
"description": "Motor Forense Anti-Mojibake de Alto Rendimiento",
|
|
5
|
+
"main": "dist/index.js",
|
|
6
|
+
"bin": {
|
|
7
|
+
"aumic-sanitizer": "dist/index.js"
|
|
8
|
+
},
|
|
9
|
+
"scripts": {
|
|
10
|
+
"build": "tsc",
|
|
11
|
+
"start": "node dist/index.js"
|
|
12
|
+
},
|
|
13
|
+
"author": "Ingeniería Creativa",
|
|
14
|
+
"license": "AGPL-3.0-or-later",
|
|
15
|
+
"dependencies": {
|
|
16
|
+
"@babel/parser": "^7.29.9",
|
|
17
|
+
"@babel/traverse": "^8.0.6",
|
|
18
|
+
"@types/babel__parser": "^7.0.0",
|
|
19
|
+
"@types/babel__traverse": "^7.28.0",
|
|
20
|
+
"cli-progress": "^3.12.0",
|
|
21
|
+
"commander": "^11.1.0",
|
|
22
|
+
"fast-glob": "^3.3.2",
|
|
23
|
+
"magic-string": "^1.4.3",
|
|
24
|
+
"picocolors": "^1.0.0",
|
|
25
|
+
"piscina": "^5.3.2"
|
|
26
|
+
},
|
|
27
|
+
"devDependencies": {
|
|
28
|
+
"@types/cli-progress": "^3.11.6",
|
|
29
|
+
"@types/node": "^20.0.0"
|
|
30
|
+
},
|
|
31
|
+
"files": [
|
|
32
|
+
"dist",
|
|
33
|
+
"LICENSE*",
|
|
34
|
+
"README*",
|
|
35
|
+
"MANIFEST*"
|
|
36
|
+
],
|
|
37
|
+
"overrides": {
|
|
38
|
+
"braces": "^3.0.3",
|
|
39
|
+
"micromatch": "^4.0.8"
|
|
40
|
+
}
|
|
41
|
+
}
|