fullnative 0.1.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.
- package/CHANGELOG.md +23 -0
- package/LICENSE +21 -0
- package/README.md +161 -0
- package/dist/core/env/env.d.ts +34 -0
- package/dist/core/env/env.d.ts.map +1 -0
- package/dist/core/env/env.js +134 -0
- package/dist/core/env/env.js.map +1 -0
- package/dist/core/env/index.d.ts +10 -0
- package/dist/core/env/index.d.ts.map +1 -0
- package/dist/core/env/index.js +10 -0
- package/dist/core/env/index.js.map +1 -0
- package/dist/core/file/File.d.ts +246 -0
- package/dist/core/file/File.d.ts.map +1 -0
- package/dist/core/file/File.js +397 -0
- package/dist/core/file/File.js.map +1 -0
- package/dist/core/file/Folder.d.ts +235 -0
- package/dist/core/file/Folder.d.ts.map +1 -0
- package/dist/core/file/Folder.js +427 -0
- package/dist/core/file/Folder.js.map +1 -0
- package/dist/core/index.d.ts +6 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +6 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/process/Command.d.ts +94 -0
- package/dist/core/process/Command.d.ts.map +1 -0
- package/dist/core/process/Command.js +143 -0
- package/dist/core/process/Command.js.map +1 -0
- package/dist/core/process/LiveProcess.d.ts +134 -0
- package/dist/core/process/LiveProcess.d.ts.map +1 -0
- package/dist/core/process/LiveProcess.js +214 -0
- package/dist/core/process/LiveProcess.js.map +1 -0
- package/dist/core/process/Process.d.ts +108 -0
- package/dist/core/process/Process.d.ts.map +1 -0
- package/dist/core/process/Process.js +138 -0
- package/dist/core/process/Process.js.map +1 -0
- package/dist/core/process/ProcessError.d.ts +50 -0
- package/dist/core/process/ProcessError.d.ts.map +1 -0
- package/dist/core/process/ProcessError.js +62 -0
- package/dist/core/process/ProcessError.js.map +1 -0
- package/dist/core/process/Result.d.ts +61 -0
- package/dist/core/process/Result.d.ts.map +1 -0
- package/dist/core/process/Result.js +89 -0
- package/dist/core/process/Result.js.map +1 -0
- package/dist/core/process/index.d.ts +7 -0
- package/dist/core/process/index.d.ts.map +1 -0
- package/dist/core/process/index.js +6 -0
- package/dist/core/process/index.js.map +1 -0
- package/dist/core/process/types.d.ts +17 -0
- package/dist/core/process/types.d.ts.map +1 -0
- package/dist/core/process/types.js +2 -0
- package/dist/core/process/types.js.map +1 -0
- package/dist/core/shell/Job.d.ts +149 -0
- package/dist/core/shell/Job.d.ts.map +1 -0
- package/dist/core/shell/Job.js +218 -0
- package/dist/core/shell/Job.js.map +1 -0
- package/dist/core/shell/Shell.d.ts +275 -0
- package/dist/core/shell/Shell.d.ts.map +1 -0
- package/dist/core/shell/Shell.js +461 -0
- package/dist/core/shell/Shell.js.map +1 -0
- package/dist/core/shell/index.d.ts +4 -0
- package/dist/core/shell/index.d.ts.map +1 -0
- package/dist/core/shell/index.js +3 -0
- package/dist/core/shell/index.js.map +1 -0
- package/dist/core/shell/types.d.ts +30 -0
- package/dist/core/shell/types.d.ts.map +1 -0
- package/dist/core/shell/types.js +2 -0
- package/dist/core/shell/types.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -0
- package/package.json +64 -0
|
@@ -0,0 +1,397 @@
|
|
|
1
|
+
import { promises as fs, createReadStream, createWriteStream } from "node:fs";
|
|
2
|
+
import * as path from "node:path";
|
|
3
|
+
import * as crypto from "node:crypto";
|
|
4
|
+
/**
|
|
5
|
+
* Representa un archivo individual accesible mediante una API sencilla.
|
|
6
|
+
* Las operaciones son perezosas: leen/escriben en disco solo cuando se invocan.
|
|
7
|
+
*/
|
|
8
|
+
export class File {
|
|
9
|
+
path;
|
|
10
|
+
constructor(path) {
|
|
11
|
+
this.path = path;
|
|
12
|
+
}
|
|
13
|
+
/** Nombre del archivo incluyendo su extensión. */
|
|
14
|
+
get name() {
|
|
15
|
+
return path.basename(this.path);
|
|
16
|
+
}
|
|
17
|
+
/** Nombre del archivo sin la extensión. */
|
|
18
|
+
get baseName() {
|
|
19
|
+
return path.basename(this.path, path.extname(this.path));
|
|
20
|
+
}
|
|
21
|
+
/** Extensión del archivo sin el punto inicial (ej. `txt`, `json`). */
|
|
22
|
+
get ext() {
|
|
23
|
+
return path.extname(this.path).slice(1);
|
|
24
|
+
}
|
|
25
|
+
/** Ruta absoluta del directorio que contiene al archivo. */
|
|
26
|
+
get dirname() {
|
|
27
|
+
return path.dirname(this.path);
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Tipo MIME inferido a partir de la extensión del archivo.
|
|
31
|
+
* Devuelve `application/octet-stream` para extensiones desconocidas.
|
|
32
|
+
*/
|
|
33
|
+
get mimeType() {
|
|
34
|
+
const ext = this.ext.toLowerCase();
|
|
35
|
+
const types = {
|
|
36
|
+
txt: "text/plain",
|
|
37
|
+
html: "text/html",
|
|
38
|
+
css: "text/css",
|
|
39
|
+
js: "text/javascript",
|
|
40
|
+
mjs: "text/javascript",
|
|
41
|
+
cjs: "text/javascript",
|
|
42
|
+
ts: "text/typescript",
|
|
43
|
+
json: "application/json",
|
|
44
|
+
xml: "application/xml",
|
|
45
|
+
yaml: "text/yaml",
|
|
46
|
+
yml: "text/yaml",
|
|
47
|
+
md: "text/markdown",
|
|
48
|
+
csv: "text/csv",
|
|
49
|
+
pdf: "application/pdf",
|
|
50
|
+
zip: "application/zip",
|
|
51
|
+
gz: "application/gzip",
|
|
52
|
+
png: "image/png",
|
|
53
|
+
jpg: "image/jpeg",
|
|
54
|
+
jpeg: "image/jpeg",
|
|
55
|
+
gif: "image/gif",
|
|
56
|
+
svg: "image/svg+xml",
|
|
57
|
+
webp: "image/webp",
|
|
58
|
+
mp3: "audio/mpeg",
|
|
59
|
+
mp4: "video/mp4",
|
|
60
|
+
webm: "video/webm",
|
|
61
|
+
};
|
|
62
|
+
return types[ext] ?? "application/octet-stream";
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Verifica si el archivo existe en disco.
|
|
66
|
+
* @returns `true` si el archivo existe, `false` en caso contrario.
|
|
67
|
+
*/
|
|
68
|
+
async exists() {
|
|
69
|
+
try {
|
|
70
|
+
await fs.access(this.path);
|
|
71
|
+
return true;
|
|
72
|
+
}
|
|
73
|
+
catch {
|
|
74
|
+
return false;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Obtiene los metadatos (stat) del archivo en disco.
|
|
79
|
+
* @returns Una promesa con el objeto `Stats` de Node.js.
|
|
80
|
+
*/
|
|
81
|
+
async stat() {
|
|
82
|
+
return fs.stat(this.path);
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Obtiene el tamaño del archivo en bytes.
|
|
86
|
+
* @returns Tamaño en bytes.
|
|
87
|
+
*/
|
|
88
|
+
async size() {
|
|
89
|
+
return (await this.stat()).size;
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Indica si el archivo está vacío (0 bytes).
|
|
93
|
+
* @returns `true` si el tamaño es 0, `false` en caso contrario.
|
|
94
|
+
*/
|
|
95
|
+
async isEmpty() {
|
|
96
|
+
return (await this.size()) === 0;
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Obtiene la fecha de creación del archivo.
|
|
100
|
+
* @returns La fecha (`birthtime`) de creación.
|
|
101
|
+
*/
|
|
102
|
+
async createdAt() {
|
|
103
|
+
return (await this.stat()).birthtime;
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Obtiene la fecha de última modificación del archivo.
|
|
107
|
+
* @returns La fecha (`mtime`) de última modificación.
|
|
108
|
+
*/
|
|
109
|
+
async modifiedAt() {
|
|
110
|
+
return (await this.stat()).mtime;
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Obtiene la fecha de último acceso al archivo.
|
|
114
|
+
* @returns La fecha (`atime`) de último acceso.
|
|
115
|
+
*/
|
|
116
|
+
async accessedAt() {
|
|
117
|
+
return (await this.stat()).atime;
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Lee el contenido del archivo como texto.
|
|
121
|
+
* @param encoding Codificación a utilizar (por defecto `utf8`).
|
|
122
|
+
* @returns El contenido del archivo como cadena.
|
|
123
|
+
*/
|
|
124
|
+
async read(encoding = "utf8") {
|
|
125
|
+
return fs.readFile(this.path, encoding);
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Lee el contenido del archivo como `Buffer` binario.
|
|
129
|
+
* @returns Un `Buffer` con los bytes del archivo.
|
|
130
|
+
*/
|
|
131
|
+
async readBuffer() {
|
|
132
|
+
return fs.readFile(this.path);
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Lee y parsea el contenido del archivo como JSON.
|
|
136
|
+
* @returns El valor parseado, tipado genéricamente como `T`.
|
|
137
|
+
*/
|
|
138
|
+
async readJson() {
|
|
139
|
+
return JSON.parse(await this.read());
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* Lee el contenido del archivo y lo divide en líneas.
|
|
143
|
+
* @returns Un arreglo de cadenas, una por línea.
|
|
144
|
+
*/
|
|
145
|
+
async readLines() {
|
|
146
|
+
const content = await this.read();
|
|
147
|
+
return content.split(/\r?\n/);
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Escribe datos en el archivo. Crea el directorio padre automáticamente
|
|
151
|
+
* si no existe (comportamiento intencional para que el caller no necesite
|
|
152
|
+
* un `mkdir -p` previo explícito). Sobrescribe el contenido existente.
|
|
153
|
+
* @param data Contenido a escribir (cadena, `Buffer` o `Uint8Array`).
|
|
154
|
+
* @returns Promesa que se resuelve cuando la escritura termina.
|
|
155
|
+
*/
|
|
156
|
+
async write(data) {
|
|
157
|
+
await fs.mkdir(path.dirname(this.path), { recursive: true });
|
|
158
|
+
await fs.writeFile(this.path, data);
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* Serializa `data` a JSON y lo escribe en el archivo (creando el directorio padre).
|
|
162
|
+
* @param data Valor a serializar.
|
|
163
|
+
* @param pretty Si `true` (por defecto), indenta con 2 espacios; si `false`, compacto.
|
|
164
|
+
* @returns Promesa que se resuelve cuando la escritura termina.
|
|
165
|
+
*/
|
|
166
|
+
async writeJson(data, pretty = true) {
|
|
167
|
+
await this.write(JSON.stringify(data, null, pretty ? 2 : 0));
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* Escribe un arreglo de líneas en el archivo, unidas por `\n`.
|
|
171
|
+
* Crea el directorio padre automáticamente.
|
|
172
|
+
* @param lines Líneas a escribir.
|
|
173
|
+
* @returns Promesa que se resuelve cuando la escritura termina.
|
|
174
|
+
*/
|
|
175
|
+
async writeLines(lines) {
|
|
176
|
+
await this.write(lines.join("\n"));
|
|
177
|
+
}
|
|
178
|
+
/**
|
|
179
|
+
* Añade datos al final del archivo. Crea el directorio padre automáticamente
|
|
180
|
+
* si no existe.
|
|
181
|
+
* @param data Contenido a añadir (cadena, `Buffer` o `Uint8Array`).
|
|
182
|
+
* @returns Promesa que se resuelve cuando la operación termina.
|
|
183
|
+
*/
|
|
184
|
+
async append(data) {
|
|
185
|
+
await fs.mkdir(path.dirname(this.path), { recursive: true });
|
|
186
|
+
await fs.appendFile(this.path, data);
|
|
187
|
+
}
|
|
188
|
+
/**
|
|
189
|
+
* Añade una línea al final del archivo, seguida de un salto de línea.
|
|
190
|
+
* Crea el directorio padre automáticamente.
|
|
191
|
+
* @param line Texto de la línea a añadir.
|
|
192
|
+
* @returns Promesa que se resuelve cuando la operación termina.
|
|
193
|
+
*/
|
|
194
|
+
async appendLine(line) {
|
|
195
|
+
await this.append(line + "\n");
|
|
196
|
+
}
|
|
197
|
+
/**
|
|
198
|
+
* Prependa datos al inicio del archivo, leyendo el contenido existente y
|
|
199
|
+
* reescribiendo el archivo completo. Crea el directorio padre automáticamente.
|
|
200
|
+
* @param data Contenido a prepend (cadena, `Buffer` o `Uint8Array`).
|
|
201
|
+
* @returns Promesa que se resuelve cuando la operación termina.
|
|
202
|
+
*/
|
|
203
|
+
async prepend(data) {
|
|
204
|
+
const existing = (await this.exists()) ? await this.readBuffer() : Buffer.alloc(0);
|
|
205
|
+
const next = Buffer.concat([Buffer.from(data), existing]);
|
|
206
|
+
await this.write(next);
|
|
207
|
+
}
|
|
208
|
+
/**
|
|
209
|
+
* Inserta una línea en una posición específica del archivo (por índice de línea).
|
|
210
|
+
* El índice se ajusta dentro de los límites válidos.
|
|
211
|
+
* @param lineIndex Índice (base 0) donde insertar la línea.
|
|
212
|
+
* @param content Texto de la línea a insertar.
|
|
213
|
+
* @returns Promesa que se resuelve cuando la escritura termina.
|
|
214
|
+
*/
|
|
215
|
+
async insertAt(lineIndex, content) {
|
|
216
|
+
const lines = await this.readLines();
|
|
217
|
+
const clamped = Math.max(0, Math.min(lineIndex, lines.length));
|
|
218
|
+
lines.splice(clamped, 0, content);
|
|
219
|
+
await this.writeLines(lines);
|
|
220
|
+
}
|
|
221
|
+
/**
|
|
222
|
+
* Reemplaza la primera ocurrencia de `search` por `replacement` en el contenido
|
|
223
|
+
* del archivo y lo reescribe.
|
|
224
|
+
* @param search Cadena o expresión regular a buscar.
|
|
225
|
+
* @param replacement Texto de reemplazo.
|
|
226
|
+
* @returns Promesa que se resuelve cuando la escritura termina.
|
|
227
|
+
*/
|
|
228
|
+
async replace(search, replacement) {
|
|
229
|
+
const content = await this.read();
|
|
230
|
+
await this.write(content.replace(search, replacement));
|
|
231
|
+
}
|
|
232
|
+
/**
|
|
233
|
+
* Aplica múltiples reemplazos en secuencia sobre el contenido del archivo.
|
|
234
|
+
* Renombrado desde `replaceAll()` para evitar colisión con el método nativo
|
|
235
|
+
* de cadenas. Cada reemplazo se aplica al resultado del anterior, en orden.
|
|
236
|
+
* @param replacements Arreglo de pares `{ search, replacement }` aplicados en orden.
|
|
237
|
+
* @returns Promesa que se resuelve cuando la escritura termina.
|
|
238
|
+
*/
|
|
239
|
+
async replaceMany(replacements) {
|
|
240
|
+
let content = await this.read();
|
|
241
|
+
for (const { search, replacement } of replacements) {
|
|
242
|
+
content = content.replace(search, replacement);
|
|
243
|
+
}
|
|
244
|
+
await this.write(content);
|
|
245
|
+
}
|
|
246
|
+
/**
|
|
247
|
+
* Trunca el archivo al tamaño indicado.
|
|
248
|
+
* @param size Tamaño en bytes (por defecto 0, vacía el archivo).
|
|
249
|
+
* @returns Promesa que se resuelve al completar el truncado.
|
|
250
|
+
*/
|
|
251
|
+
async truncate(size = 0) {
|
|
252
|
+
await fs.truncate(this.path, size);
|
|
253
|
+
}
|
|
254
|
+
/**
|
|
255
|
+
* Actualiza la fecha de acceso/modificación al momento actual, o crea el
|
|
256
|
+
* archivo vacío si no existe.
|
|
257
|
+
* @returns Promesa que se resuelve al completar la operación.
|
|
258
|
+
*/
|
|
259
|
+
async touch() {
|
|
260
|
+
const now = new Date();
|
|
261
|
+
if (await this.exists()) {
|
|
262
|
+
await fs.utimes(this.path, now, now);
|
|
263
|
+
}
|
|
264
|
+
else {
|
|
265
|
+
await this.write("");
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
/**
|
|
269
|
+
* Cambia los permisos del archivo.
|
|
270
|
+
* @param mode Máscode de permisos numérico (ej. `0o644`).
|
|
271
|
+
* @returns Promesa que se resuelve al completar el cambio.
|
|
272
|
+
*/
|
|
273
|
+
async chmod(mode) {
|
|
274
|
+
await fs.chmod(this.path, mode);
|
|
275
|
+
}
|
|
276
|
+
/**
|
|
277
|
+
* Establece el archivo como solo lectura (modo `0o444`).
|
|
278
|
+
* @returns Promesa que se resuelve al completar el cambio.
|
|
279
|
+
*/
|
|
280
|
+
async setReadOnly() {
|
|
281
|
+
await this.chmod(0o444);
|
|
282
|
+
}
|
|
283
|
+
/**
|
|
284
|
+
* Establece el archivo como lectura/escritura (modo `0o644`).
|
|
285
|
+
* @returns Promesa que se resuelve al completar el cambio.
|
|
286
|
+
*/
|
|
287
|
+
async setReadWrite() {
|
|
288
|
+
await this.chmod(0o644);
|
|
289
|
+
}
|
|
290
|
+
/**
|
|
291
|
+
* Calcula el hash criptográfico del contenido del archivo.
|
|
292
|
+
* @param algo Algoritmo de hash (por defecto `sha256`).
|
|
293
|
+
* @returns El hash en formato hexadecimal.
|
|
294
|
+
*/
|
|
295
|
+
async hash(algo = "sha256") {
|
|
296
|
+
return crypto.createHash(algo).update(await this.readBuffer()).digest("hex");
|
|
297
|
+
}
|
|
298
|
+
/**
|
|
299
|
+
* Compara este archivo con otro por contenido (usando hash).
|
|
300
|
+
* @param other Otro `File` a comparar.
|
|
301
|
+
* @returns `true` si ambos existen y su hash coincide, `false` en caso contrario.
|
|
302
|
+
*/
|
|
303
|
+
async equals(other) {
|
|
304
|
+
if (!(await this.exists()) || !(await other.exists()))
|
|
305
|
+
return false;
|
|
306
|
+
return (await this.hash()) === (await other.hash());
|
|
307
|
+
}
|
|
308
|
+
/**
|
|
309
|
+
* Compara el contenido del archivo con una cadena o `Buffer` dada.
|
|
310
|
+
* @param content Contenido a comparar.
|
|
311
|
+
* @returns `true` si el contenido coincide, `false` si no existe o difiere.
|
|
312
|
+
*/
|
|
313
|
+
async contentEquals(content) {
|
|
314
|
+
if (!(await this.exists()))
|
|
315
|
+
return false;
|
|
316
|
+
const existing = await this.readBuffer();
|
|
317
|
+
const incoming = Buffer.isBuffer(content) ? content : Buffer.from(content);
|
|
318
|
+
return existing.equals(incoming);
|
|
319
|
+
}
|
|
320
|
+
/**
|
|
321
|
+
* Crea un stream de lectura para el archivo.
|
|
322
|
+
* @returns Un `Readable` para consumir el contenido en streaming.
|
|
323
|
+
*/
|
|
324
|
+
readStream() {
|
|
325
|
+
return createReadStream(this.path);
|
|
326
|
+
}
|
|
327
|
+
/**
|
|
328
|
+
* Crea un stream de escritura hacia el archivo.
|
|
329
|
+
* @returns Un `Writable` para escribir contenido en streaming.
|
|
330
|
+
*/
|
|
331
|
+
writeStream() {
|
|
332
|
+
return createWriteStream(this.path);
|
|
333
|
+
}
|
|
334
|
+
/**
|
|
335
|
+
* Elimina el archivo del disco.
|
|
336
|
+
* @returns `true` si el archivo existía y fue eliminado, `false` si no existía.
|
|
337
|
+
*/
|
|
338
|
+
async delete() {
|
|
339
|
+
if (!(await this.exists()))
|
|
340
|
+
return false;
|
|
341
|
+
await fs.unlink(this.path);
|
|
342
|
+
return true;
|
|
343
|
+
}
|
|
344
|
+
/**
|
|
345
|
+
* Copia este archivo a una ruta destino. Crea el directorio padre del destino
|
|
346
|
+
* automáticamente si no existe.
|
|
347
|
+
* @param dest Ruta absoluta del archivo destino.
|
|
348
|
+
* @returns Una **nueva** instancia de `File` apuntando al destino.
|
|
349
|
+
*/
|
|
350
|
+
async copyTo(dest) {
|
|
351
|
+
await fs.mkdir(path.dirname(dest), { recursive: true });
|
|
352
|
+
await fs.copyFile(this.path, dest);
|
|
353
|
+
return new File(dest);
|
|
354
|
+
}
|
|
355
|
+
/**
|
|
356
|
+
* Copia este archivo dentro de un directorio, conservando su nombre.
|
|
357
|
+
* @param dir Ruta del directorio destino.
|
|
358
|
+
* @returns Una **nueva** instancia de `File` apuntando a `dir/name`.
|
|
359
|
+
*/
|
|
360
|
+
async copyInto(dir) {
|
|
361
|
+
return this.copyTo(path.join(dir, this.name));
|
|
362
|
+
}
|
|
363
|
+
/**
|
|
364
|
+
* Mueve este archivo a una ruta destino. Crea el directorio padre del destino
|
|
365
|
+
* automáticamente si no existe. **Muta `this.path`** al nuevo destino y
|
|
366
|
+
* devuelve `this` para encadenamiento.
|
|
367
|
+
* @param dest Ruta absoluta del archivo destino.
|
|
368
|
+
* @returns La misma instancia (`this`) con `path` actualizado.
|
|
369
|
+
*/
|
|
370
|
+
async moveTo(dest) {
|
|
371
|
+
await fs.mkdir(path.dirname(dest), { recursive: true });
|
|
372
|
+
await fs.rename(this.path, dest);
|
|
373
|
+
this.path = dest;
|
|
374
|
+
return this;
|
|
375
|
+
}
|
|
376
|
+
/**
|
|
377
|
+
* Mueve este archivo dentro de un directorio, conservando su nombre.
|
|
378
|
+
* **Muta `this.path`** y devuelve `this`.
|
|
379
|
+
* @param dir Ruta del directorio destino.
|
|
380
|
+
* @returns La misma instancia (`this`) con `path` actualizado.
|
|
381
|
+
*/
|
|
382
|
+
async moveInto(dir) {
|
|
383
|
+
await this.moveTo(path.join(dir, this.name));
|
|
384
|
+
return this;
|
|
385
|
+
}
|
|
386
|
+
/**
|
|
387
|
+
* Renombra este archivo dentro de su mismo directorio.
|
|
388
|
+
* **Muta `this.path`** y devuelve `this`.
|
|
389
|
+
* @param newName Nuevo nombre del archivo (sin ruta).
|
|
390
|
+
* @returns La misma instancia (`this`) con `path` actualizado.
|
|
391
|
+
*/
|
|
392
|
+
async rename(newName) {
|
|
393
|
+
await this.moveTo(path.join(this.dirname, newName));
|
|
394
|
+
return this;
|
|
395
|
+
}
|
|
396
|
+
}
|
|
397
|
+
//# sourceMappingURL=File.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"File.js","sourceRoot":"","sources":["../../../src/core/file/File.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,235 @@
|
|
|
1
|
+
import { type FSWatcher } from "node:fs";
|
|
2
|
+
import { File } from "./File.js";
|
|
3
|
+
/**
|
|
4
|
+
* Representa un directorio accesible mediante una API sencilla.
|
|
5
|
+
*/
|
|
6
|
+
export declare class Folder {
|
|
7
|
+
path: string;
|
|
8
|
+
constructor(path: string);
|
|
9
|
+
/** Nombre del directorio (último segmento de la ruta). */
|
|
10
|
+
get name(): string;
|
|
11
|
+
/** Ruta absoluta del directorio padre. */
|
|
12
|
+
get parent(): string;
|
|
13
|
+
/** Instancia de `Folder` que representa al directorio padre. */
|
|
14
|
+
get parentDir(): Folder;
|
|
15
|
+
/** Ruta absoluta resuelta del directorio. */
|
|
16
|
+
get absolute(): string;
|
|
17
|
+
/**
|
|
18
|
+
* Verifica si el directorio existe en disco.
|
|
19
|
+
* @returns `true` si existe y es un directorio, `false` en caso contrario.
|
|
20
|
+
*/
|
|
21
|
+
exists(): Promise<boolean>;
|
|
22
|
+
/**
|
|
23
|
+
* Indica si el directorio está vacío (sin entradas).
|
|
24
|
+
* @returns `true` si no existe o no contiene entradas, `false` si tiene contenido.
|
|
25
|
+
*/
|
|
26
|
+
isEmpty(): Promise<boolean>;
|
|
27
|
+
/**
|
|
28
|
+
* Obtiene los metadatos (stat) del directorio.
|
|
29
|
+
* @returns Una promesa con el objeto `Stats` de Node.js.
|
|
30
|
+
*/
|
|
31
|
+
stat(): Promise<import("node:fs").Stats>;
|
|
32
|
+
/**
|
|
33
|
+
* Obtiene la fecha de creación del directorio.
|
|
34
|
+
* @returns La fecha (`birthtime`) de creación.
|
|
35
|
+
*/
|
|
36
|
+
createdAt(): Promise<Date>;
|
|
37
|
+
/**
|
|
38
|
+
* Obtiene la fecha de última modificación del directorio.
|
|
39
|
+
* @returns La fecha (`mtime`) de última modificación.
|
|
40
|
+
*/
|
|
41
|
+
modifiedAt(): Promise<Date>;
|
|
42
|
+
/**
|
|
43
|
+
* Calcula el tamaño total del directorio sumando el tamaño de todos los
|
|
44
|
+
* archivos contenidos recursivamente.
|
|
45
|
+
* @returns Tamaño total en bytes (0 si no existe).
|
|
46
|
+
*/
|
|
47
|
+
size(): Promise<number>;
|
|
48
|
+
/**
|
|
49
|
+
* Crea el directorio (y sus padres) en disco.
|
|
50
|
+
* @returns Promesa que se resuelve al completar la creación.
|
|
51
|
+
*/
|
|
52
|
+
create(): Promise<void>;
|
|
53
|
+
/**
|
|
54
|
+
* Garantiza que el directorio exista, creándolo si es necesario.
|
|
55
|
+
* @returns Promesa que se resuelve al asegurar la existencia.
|
|
56
|
+
*/
|
|
57
|
+
ensure(): Promise<void>;
|
|
58
|
+
/**
|
|
59
|
+
* Elimina el directorio del disco.
|
|
60
|
+
* @param recursive Si `true`, elimina recursivamente su contenido.
|
|
61
|
+
* @returns `true` si existía y fue eliminado, `false` si no existía.
|
|
62
|
+
*/
|
|
63
|
+
delete(recursive?: boolean): Promise<boolean>;
|
|
64
|
+
/**
|
|
65
|
+
* Vacía el directorio eliminando todo su contenido (archivos y subdirectorios)
|
|
66
|
+
* sin eliminar el directorio mismo.
|
|
67
|
+
* @returns Promesa que se resuelve al completar el vaciado.
|
|
68
|
+
*/
|
|
69
|
+
clear(): Promise<void>;
|
|
70
|
+
/**
|
|
71
|
+
* Cambia los permisos del directorio.
|
|
72
|
+
* @param mode Máscode de permisos numérico (ej. `0o755`).
|
|
73
|
+
* @returns Promesa que se resuelve al completar el cambio.
|
|
74
|
+
*/
|
|
75
|
+
chmod(mode: number): Promise<void>;
|
|
76
|
+
/**
|
|
77
|
+
* Construye una referencia `File` a un archivo dentro de este directorio.
|
|
78
|
+
* @param name Nombre del archivo (relativo al directorio).
|
|
79
|
+
* @returns Una nueva instancia de `File` (no verifica existencia).
|
|
80
|
+
*/
|
|
81
|
+
file(name: string): File;
|
|
82
|
+
/**
|
|
83
|
+
* Construye una referencia `Folder` a un subdirectorio de este directorio.
|
|
84
|
+
* @param name Nombre del subdirectorio (relativo al directorio).
|
|
85
|
+
* @returns Una nueva instancia de `Folder` (no verifica existencia).
|
|
86
|
+
*/
|
|
87
|
+
dir(name: string): Folder;
|
|
88
|
+
/**
|
|
89
|
+
* Verifica si existe un archivo con el nombre dado dentro del directorio.
|
|
90
|
+
* @param name Nombre del archivo a buscar.
|
|
91
|
+
* @returns `true` si el archivo existe, `false` en caso contrario.
|
|
92
|
+
*/
|
|
93
|
+
hasFile(name: string): Promise<boolean>;
|
|
94
|
+
/**
|
|
95
|
+
* Verifica si existe un subdirectorio con el nombre dado.
|
|
96
|
+
* @param name Nombre del subdirectorio a buscar.
|
|
97
|
+
* @returns `true` si el subdirectorio existe, `false` en caso contrario.
|
|
98
|
+
*/
|
|
99
|
+
hasDir(name: string): Promise<boolean>;
|
|
100
|
+
/**
|
|
101
|
+
* Lista las entradas directas (archivos y subdirectorios) del directorio.
|
|
102
|
+
* @returns Arreglo de instancias `File` y `Folder`.
|
|
103
|
+
*/
|
|
104
|
+
list(): Promise<(File | Folder)[]>;
|
|
105
|
+
/**
|
|
106
|
+
* Lista solo los archivos (no directorios) en el nivel actual.
|
|
107
|
+
* @returns Arreglo de instancias `File`.
|
|
108
|
+
*/
|
|
109
|
+
listFiles(): Promise<File[]>;
|
|
110
|
+
/**
|
|
111
|
+
* Lista solo los subdirectorios en el nivel actual.
|
|
112
|
+
* @returns Arreglo de instancias `Folder`.
|
|
113
|
+
*/
|
|
114
|
+
listDirs(): Promise<Folder[]>;
|
|
115
|
+
/**
|
|
116
|
+
* Lista los nombres de las entradas directas del directorio.
|
|
117
|
+
* @returns Arreglo de cadenas con los nombres de las entradas.
|
|
118
|
+
*/
|
|
119
|
+
listNames(): Promise<string[]>;
|
|
120
|
+
/**
|
|
121
|
+
* Lista los archivos del nivel actual cuya extensión coincide con `ext`.
|
|
122
|
+
* @param ext Extensión a filtrar (con o sin punto inicial, sin distinguir mayúsculas).
|
|
123
|
+
* @returns Arreglo de instancias `File` que coinciden.
|
|
124
|
+
*/
|
|
125
|
+
listByExt(ext: string): Promise<File[]>;
|
|
126
|
+
/**
|
|
127
|
+
* Busca recursivamente un archivo por nombre exacto.
|
|
128
|
+
* @param name Nombre del archivo a buscar.
|
|
129
|
+
* @returns La instancia `File` si se encuentra, `undefined` en caso contrario.
|
|
130
|
+
*/
|
|
131
|
+
find(name: string): Promise<File | undefined>;
|
|
132
|
+
/**
|
|
133
|
+
* Busca recursivamente un subdirectorio por nombre exacto.
|
|
134
|
+
* @param name Nombre del subdirectorio a buscar.
|
|
135
|
+
* @returns La instancia `Folder` si se encuentra, `undefined` en caso contrario.
|
|
136
|
+
*/
|
|
137
|
+
findDir(name: string): Promise<Folder | undefined>;
|
|
138
|
+
/**
|
|
139
|
+
* Filtra archivos recursivamente mediante una expresión regular.
|
|
140
|
+
* Renombrado desde `glob()`: usa sintaxis **RegExp**, no patrones glob.
|
|
141
|
+
* @param pattern Expresión regular a probar contra la ruta completa de cada archivo.
|
|
142
|
+
* @returns Arreglo de instancias `File` cuya ruta coincide con el patrón.
|
|
143
|
+
*/
|
|
144
|
+
matchFiles(pattern: RegExp): Promise<File[]>;
|
|
145
|
+
/**
|
|
146
|
+
* Recorre recursivamente el directorio acumulando todas las entradas
|
|
147
|
+
* (archivos y subdirectorios) en un arreglo.
|
|
148
|
+
* @returns Arreglo con todas las instancias `File` y `Folder` encontradas.
|
|
149
|
+
*/
|
|
150
|
+
walk(): Promise<(File | Folder)[]>;
|
|
151
|
+
/**
|
|
152
|
+
* Recorre recursivamente y devuelve solo los archivos.
|
|
153
|
+
* @returns Arreglo con todas las instancias `File` encontradas.
|
|
154
|
+
*/
|
|
155
|
+
walkFiles(): Promise<File[]>;
|
|
156
|
+
/**
|
|
157
|
+
* Recorre recursivamente y devuelve solo los subdirectorios.
|
|
158
|
+
* @returns Arreglo con todas las instancias `Folder` encontradas.
|
|
159
|
+
*/
|
|
160
|
+
walkDirs(): Promise<Folder[]>;
|
|
161
|
+
/**
|
|
162
|
+
* Versión streaming de `walk()` como async generator, ideal para carpetas
|
|
163
|
+
* grandes: produce entradas (`File` o `Folder`) a medida que se recorre el
|
|
164
|
+
* árbol, sin acumular todo en memoria.
|
|
165
|
+
* @yields Instancias `File` o `Folder` conforme se descubre cada entrada.
|
|
166
|
+
*/
|
|
167
|
+
walkIter(): AsyncGenerator<File | Folder>;
|
|
168
|
+
/**
|
|
169
|
+
* Versión streaming de `walkFiles()` como async generator: produce solo
|
|
170
|
+
* archivos a medida que recorre el árbol, sin acumular todo en memoria.
|
|
171
|
+
* @yields Instancias `File` conforme se descubre cada archivo.
|
|
172
|
+
*/
|
|
173
|
+
walkFilesIter(): AsyncGenerator<File>;
|
|
174
|
+
/**
|
|
175
|
+
* Crea un archivo dentro de este directorio con el contenido indicado.
|
|
176
|
+
* @param name Nombre del archivo a crear.
|
|
177
|
+
* @param content Contenido inicial (cadena o `Buffer`, por defecto vacío).
|
|
178
|
+
* @returns La instancia `File` recién creada.
|
|
179
|
+
*/
|
|
180
|
+
createFile(name: string, content?: string | Buffer): Promise<File>;
|
|
181
|
+
/**
|
|
182
|
+
* Crea un subdirectorio dentro de este directorio (garantizando su existencia).
|
|
183
|
+
* @param name Nombre del subdirectorio a crear.
|
|
184
|
+
* @returns La instancia `Folder` del subdirectorio creado.
|
|
185
|
+
*/
|
|
186
|
+
createDir(name: string): Promise<Folder>;
|
|
187
|
+
/**
|
|
188
|
+
* Copia este directorio (y todo su contenido) a una ruta destino, creando
|
|
189
|
+
* el destino si no existe.
|
|
190
|
+
* @param dest Ruta absoluta del directorio destino.
|
|
191
|
+
* @returns Una **nueva** instancia de `Folder` apuntando al destino.
|
|
192
|
+
*/
|
|
193
|
+
copyTo(dest: string): Promise<Folder>;
|
|
194
|
+
/**
|
|
195
|
+
* Copia este directorio dentro de otro, conservando su nombre.
|
|
196
|
+
* @param parent Ruta del directorio padre destino.
|
|
197
|
+
* @returns Una **nueva** instancia de `Folder` apuntando a `parent/name`.
|
|
198
|
+
*/
|
|
199
|
+
copyInto(parent: string): Promise<Folder>;
|
|
200
|
+
/**
|
|
201
|
+
* Mueve este directorio a una ruta destino. Crea el directorio padre del
|
|
202
|
+
* destino automáticamente si no existe. **Muta `this.path`** al nuevo destino
|
|
203
|
+
* y devuelve `this` para encadenamiento.
|
|
204
|
+
* @param dest Ruta absoluta del directorio destino.
|
|
205
|
+
* @returns La misma instancia (`this`) con `path` actualizado.
|
|
206
|
+
*/
|
|
207
|
+
moveTo(dest: string): Promise<this>;
|
|
208
|
+
/**
|
|
209
|
+
* Mueve este directorio dentro de otro, conservando su nombre.
|
|
210
|
+
* **Muta `this.path`** y devuelve `this`.
|
|
211
|
+
* @param parent Ruta del directorio padre destino.
|
|
212
|
+
* @returns La misma instancia (`this`) con `path` actualizado.
|
|
213
|
+
*/
|
|
214
|
+
moveInto(parent: string): Promise<this>;
|
|
215
|
+
/**
|
|
216
|
+
* Renombra este directorio dentro de su mismo directorio padre.
|
|
217
|
+
* **Muta `this.path`** y devuelve `this`.
|
|
218
|
+
* @param newName Nuevo nombre del directorio (sin ruta).
|
|
219
|
+
* @returns La misma instancia (`this`) con `path` actualizado.
|
|
220
|
+
*/
|
|
221
|
+
rename(newName: string): Promise<this>;
|
|
222
|
+
/**
|
|
223
|
+
* Observa cambios en el directorio de forma recursiva.
|
|
224
|
+
* @param callback Función invocada por cada evento (`change` o `rename`).
|
|
225
|
+
* @returns Un `FSWatcher` que debe cerrarse cuando ya no se necesite.
|
|
226
|
+
*/
|
|
227
|
+
watch(callback: (event: "change" | "rename", filename: string | null) => void): Promise<FSWatcher>;
|
|
228
|
+
/**
|
|
229
|
+
* Genera una representación visual en árbol (tipo `tree`) del directorio y
|
|
230
|
+
* su contenido recursivo.
|
|
231
|
+
* @returns Una cadena con la representación del árbol.
|
|
232
|
+
*/
|
|
233
|
+
tree(): Promise<string>;
|
|
234
|
+
}
|
|
235
|
+
//# sourceMappingURL=Folder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Folder.d.ts","sourceRoot":"","sources":["../../../src/core/file/Folder.ts"],"names":[],"mappings":"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"}
|