@jesusacd/mediafire 1.1.0 → 1.3.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/README.md +325 -122
- package/dist/client.d.ts +12 -0
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +16 -0
- package/dist/client.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/dist/modules/files.d.ts +151 -0
- package/dist/modules/files.d.ts.map +1 -1
- package/dist/modules/files.js +407 -0
- package/dist/modules/files.js.map +1 -1
- package/dist/modules/folders.d.ts +118 -0
- package/dist/modules/folders.d.ts.map +1 -1
- package/dist/modules/folders.js +198 -0
- package/dist/modules/folders.js.map +1 -1
- package/dist/modules/upload.d.ts +115 -0
- package/dist/modules/upload.d.ts.map +1 -0
- package/dist/modules/upload.js +276 -0
- package/dist/modules/upload.js.map +1 -0
- package/package.json +1 -1
package/dist/modules/files.d.ts
CHANGED
|
@@ -52,6 +52,56 @@ export declare class FilesModule {
|
|
|
52
52
|
* ```
|
|
53
53
|
*/
|
|
54
54
|
search(query: string): Promise<SearchResults>;
|
|
55
|
+
/**
|
|
56
|
+
* Búsqueda inteligente que extrae palabras clave únicas del query
|
|
57
|
+
* y filtra los resultados para coincidir con el nombre buscado.
|
|
58
|
+
*
|
|
59
|
+
* La API de MediaFire no maneja bien queries con espacios o caracteres
|
|
60
|
+
* especiales, por lo que este método:
|
|
61
|
+
* 1. Extrae las palabras más únicas/distintivas del query
|
|
62
|
+
* 2. Busca usando esas palabras simples
|
|
63
|
+
* 3. Filtra los resultados para encontrar coincidencias reales
|
|
64
|
+
*
|
|
65
|
+
* @param query - Nombre del archivo o carpeta a buscar
|
|
66
|
+
* @param options - Opciones de búsqueda
|
|
67
|
+
* @returns Resultados filtrados que coinciden con el query
|
|
68
|
+
*
|
|
69
|
+
* @example
|
|
70
|
+
* ```typescript
|
|
71
|
+
* // Buscar con nombre completo
|
|
72
|
+
* const results = await client.files.smartSearch(
|
|
73
|
+
* 'La empresa de sillas (2025) Temporada 1 [1080p] {MAX} WEB-DL'
|
|
74
|
+
* );
|
|
75
|
+
*
|
|
76
|
+
* // Buscar solo carpetas
|
|
77
|
+
* const folders = await client.files.smartSearch('Mi Serie', {
|
|
78
|
+
* filter: 'folders'
|
|
79
|
+
* });
|
|
80
|
+
* ```
|
|
81
|
+
*/
|
|
82
|
+
smartSearch(query: string, options?: {
|
|
83
|
+
/** Filtrar por tipo: 'files', 'folders', o 'everything' */
|
|
84
|
+
filter?: 'files' | 'folders' | 'everything';
|
|
85
|
+
/** Si es true, requiere coincidencia exacta del nombre (sin case-sensitive) */
|
|
86
|
+
exactMatch?: boolean;
|
|
87
|
+
}): Promise<SearchResults>;
|
|
88
|
+
/**
|
|
89
|
+
* Extrae las palabras clave más distintivas de un query de búsqueda.
|
|
90
|
+
* Filtra palabras comunes, años, resoluciones, etc.
|
|
91
|
+
*/
|
|
92
|
+
private extractSearchKeywords;
|
|
93
|
+
/**
|
|
94
|
+
* Calcula un score de unicidad para una palabra
|
|
95
|
+
*/
|
|
96
|
+
private calculateWordScore;
|
|
97
|
+
/**
|
|
98
|
+
* Verifica si un nombre contiene todas las palabras clave
|
|
99
|
+
*/
|
|
100
|
+
private matchesAllKeywords;
|
|
101
|
+
/**
|
|
102
|
+
* Ordena los resultados por relevancia respecto al query original
|
|
103
|
+
*/
|
|
104
|
+
private sortByRelevance;
|
|
55
105
|
/**
|
|
56
106
|
* Set file privacy (public or private)
|
|
57
107
|
*
|
|
@@ -94,5 +144,106 @@ export declare class FilesModule {
|
|
|
94
144
|
* ```
|
|
95
145
|
*/
|
|
96
146
|
makePrivate(quickKey: string): Promise<boolean>;
|
|
147
|
+
/**
|
|
148
|
+
* Copy a file to another folder
|
|
149
|
+
*
|
|
150
|
+
* @param quickKey - File quick key (or comma-separated list)
|
|
151
|
+
* @param folderKey - Destination folder key (default: root)
|
|
152
|
+
* @returns New quick keys of copied files
|
|
153
|
+
*
|
|
154
|
+
* @example
|
|
155
|
+
* ```typescript
|
|
156
|
+
* const newKeys = await client.files.copy('abc123', 'destFolder');
|
|
157
|
+
* ```
|
|
158
|
+
*/
|
|
159
|
+
copy(quickKey: string, folderKey?: string): Promise<string[]>;
|
|
160
|
+
/**
|
|
161
|
+
* Delete a file (move to trash)
|
|
162
|
+
*
|
|
163
|
+
* @param quickKey - File quick key (or comma-separated list)
|
|
164
|
+
* @returns True if successful
|
|
165
|
+
*
|
|
166
|
+
* @example
|
|
167
|
+
* ```typescript
|
|
168
|
+
* await client.files.delete('abc123');
|
|
169
|
+
* ```
|
|
170
|
+
*/
|
|
171
|
+
delete(quickKey: string): Promise<boolean>;
|
|
172
|
+
/**
|
|
173
|
+
* Move a file to another folder
|
|
174
|
+
*
|
|
175
|
+
* @param quickKey - File quick key (or comma-separated list, max 500)
|
|
176
|
+
* @param folderKey - Destination folder key (default: root)
|
|
177
|
+
* @returns True if successful
|
|
178
|
+
*
|
|
179
|
+
* @example
|
|
180
|
+
* ```typescript
|
|
181
|
+
* await client.files.move('abc123', 'destFolder');
|
|
182
|
+
* ```
|
|
183
|
+
*/
|
|
184
|
+
move(quickKey: string, folderKey?: string): Promise<boolean>;
|
|
185
|
+
/**
|
|
186
|
+
* Rename a file
|
|
187
|
+
*
|
|
188
|
+
* @param quickKey - File quick key
|
|
189
|
+
* @param newName - New file name (with extension)
|
|
190
|
+
* @returns True if successful
|
|
191
|
+
*
|
|
192
|
+
* @example
|
|
193
|
+
* ```typescript
|
|
194
|
+
* await client.files.rename('abc123', 'newname.pdf');
|
|
195
|
+
* ```
|
|
196
|
+
*/
|
|
197
|
+
rename(quickKey: string, newName: string): Promise<boolean>;
|
|
198
|
+
/**
|
|
199
|
+
* Permanently delete a file (cannot be recovered)
|
|
200
|
+
*
|
|
201
|
+
* @param quickKey - File quick key (or comma-separated list)
|
|
202
|
+
* @returns True if successful
|
|
203
|
+
*
|
|
204
|
+
* @example
|
|
205
|
+
* ```typescript
|
|
206
|
+
* await client.files.purge('abc123');
|
|
207
|
+
* ```
|
|
208
|
+
*/
|
|
209
|
+
purge(quickKey: string): Promise<boolean>;
|
|
210
|
+
/**
|
|
211
|
+
* Restore a file from trash
|
|
212
|
+
*
|
|
213
|
+
* @param quickKey - File quick key (or comma-separated list)
|
|
214
|
+
* @returns True if successful
|
|
215
|
+
*
|
|
216
|
+
* @example
|
|
217
|
+
* ```typescript
|
|
218
|
+
* await client.files.restore('abc123');
|
|
219
|
+
* ```
|
|
220
|
+
*/
|
|
221
|
+
restore(quickKey: string): Promise<boolean>;
|
|
222
|
+
/**
|
|
223
|
+
* Get file version history
|
|
224
|
+
*
|
|
225
|
+
* @param quickKey - File quick key
|
|
226
|
+
* @returns Array of file versions
|
|
227
|
+
*
|
|
228
|
+
* @example
|
|
229
|
+
* ```typescript
|
|
230
|
+
* const versions = await client.files.getVersions('abc123');
|
|
231
|
+
* ```
|
|
232
|
+
*/
|
|
233
|
+
getVersions(quickKey: string): Promise<Array<{
|
|
234
|
+
revision: number;
|
|
235
|
+
date: string;
|
|
236
|
+
}>>;
|
|
237
|
+
/**
|
|
238
|
+
* Get recently modified files
|
|
239
|
+
*
|
|
240
|
+
* @returns Array of recently modified files
|
|
241
|
+
*
|
|
242
|
+
* @example
|
|
243
|
+
* ```typescript
|
|
244
|
+
* const recent = await client.files.getRecentlyModified();
|
|
245
|
+
* ```
|
|
246
|
+
*/
|
|
247
|
+
getRecentlyModified(): Promise<FileInfo[]>;
|
|
97
248
|
}
|
|
98
249
|
//# sourceMappingURL=files.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"files.d.ts","sourceRoot":"","sources":["../../src/modules/files.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAW,eAAe,EAAE,MAAM,QAAQ,CAAC;AAClD,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAe,aAAa,EAAE,MAAM,UAAU,CAAC;AAG/E;;GAEG;AACH,qBAAa,WAAW;IACV,OAAO,CAAC,UAAU;gBAAV,UAAU,EAAE,MAAM,eAAe,GAAG,IAAI;IAE5D;;;;;;;;;;;;OAYG;IACG,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IAqDlD;;;;;;;;;;;;OAYG;IACG,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IA2BxD;;;;;;;;;;;;;OAaG;IACG,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IA+DnD;;;;;;;;;;;;;;;;OAgBG;IACG,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,GAAG,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC;IAkBnF;;;;;;;;;;OAUG;IACG,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAIpD;;;;;;;;;;OAUG;IACG,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"files.d.ts","sourceRoot":"","sources":["../../src/modules/files.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAW,eAAe,EAAE,MAAM,QAAQ,CAAC;AAClD,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAe,aAAa,EAAE,MAAM,UAAU,CAAC;AAG/E;;GAEG;AACH,qBAAa,WAAW;IACV,OAAO,CAAC,UAAU;gBAAV,UAAU,EAAE,MAAM,eAAe,GAAG,IAAI;IAE5D;;;;;;;;;;;;OAYG;IACG,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IAqDlD;;;;;;;;;;;;OAYG;IACG,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IA2BxD;;;;;;;;;;;;;OAaG;IACG,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IA+DnD;;;;;;;;;;;;;;;;;;;;;;;;;;OA0BG;IACG,WAAW,CACf,KAAK,EAAE,MAAM,EACb,OAAO,GAAE;QACP,2DAA2D;QAC3D,MAAM,CAAC,EAAE,OAAO,GAAG,SAAS,GAAG,YAAY,CAAC;QAC5C,+EAA+E;QAC/E,UAAU,CAAC,EAAE,OAAO,CAAC;KACjB,GACL,OAAO,CAAC,aAAa,CAAC;IAoGzB;;;OAGG;IACH,OAAO,CAAC,qBAAqB;IAkE7B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAoB1B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAe1B;;OAEG;IACH,OAAO,CAAC,eAAe;IAyBvB;;;;;;;;;;;;;;;;OAgBG;IACG,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,GAAG,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC;IAkBnF;;;;;;;;;;OAUG;IACG,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAIpD;;;;;;;;;;OAUG;IACG,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAIrD;;;;;;;;;;;OAWG;IACG,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAkBnE;;;;;;;;;;OAUG;IACG,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAahD;;;;;;;;;;;OAWG;IACG,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAclE;;;;;;;;;;;OAWG;IACG,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAcjE;;;;;;;;;;OAUG;IACG,KAAK,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAa/C;;;;;;;;;;OAUG;IACG,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAajD;;;;;;;;;;OAUG;IACG,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAuBvF;;;;;;;;;OASG;IACG,mBAAmB,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;CA0BjD"}
|
package/dist/modules/files.js
CHANGED
|
@@ -139,6 +139,228 @@ class FilesModule {
|
|
|
139
139
|
total: items.length
|
|
140
140
|
};
|
|
141
141
|
}
|
|
142
|
+
/**
|
|
143
|
+
* Búsqueda inteligente que extrae palabras clave únicas del query
|
|
144
|
+
* y filtra los resultados para coincidir con el nombre buscado.
|
|
145
|
+
*
|
|
146
|
+
* La API de MediaFire no maneja bien queries con espacios o caracteres
|
|
147
|
+
* especiales, por lo que este método:
|
|
148
|
+
* 1. Extrae las palabras más únicas/distintivas del query
|
|
149
|
+
* 2. Busca usando esas palabras simples
|
|
150
|
+
* 3. Filtra los resultados para encontrar coincidencias reales
|
|
151
|
+
*
|
|
152
|
+
* @param query - Nombre del archivo o carpeta a buscar
|
|
153
|
+
* @param options - Opciones de búsqueda
|
|
154
|
+
* @returns Resultados filtrados que coinciden con el query
|
|
155
|
+
*
|
|
156
|
+
* @example
|
|
157
|
+
* ```typescript
|
|
158
|
+
* // Buscar con nombre completo
|
|
159
|
+
* const results = await client.files.smartSearch(
|
|
160
|
+
* 'La empresa de sillas (2025) Temporada 1 [1080p] {MAX} WEB-DL'
|
|
161
|
+
* );
|
|
162
|
+
*
|
|
163
|
+
* // Buscar solo carpetas
|
|
164
|
+
* const folders = await client.files.smartSearch('Mi Serie', {
|
|
165
|
+
* filter: 'folders'
|
|
166
|
+
* });
|
|
167
|
+
* ```
|
|
168
|
+
*/
|
|
169
|
+
async smartSearch(query, options = {}) {
|
|
170
|
+
const session = this.getSession();
|
|
171
|
+
if (!session) {
|
|
172
|
+
throw new Error('Not authenticated. Please call login() first.');
|
|
173
|
+
}
|
|
174
|
+
const { filter = 'everything', exactMatch = false } = options;
|
|
175
|
+
// Extraer palabras clave del query
|
|
176
|
+
const keywords = this.extractSearchKeywords(query);
|
|
177
|
+
if (keywords.length === 0) {
|
|
178
|
+
return { query, items: [], total: 0 };
|
|
179
|
+
}
|
|
180
|
+
// Usar la palabra más única/distintiva para la búsqueda API
|
|
181
|
+
const searchTerm = keywords[0];
|
|
182
|
+
const response = await (0, api_1.apiCall)('folder/search', {
|
|
183
|
+
search_text: searchTerm,
|
|
184
|
+
filter: 'everything'
|
|
185
|
+
}, session);
|
|
186
|
+
const results = response.results || [];
|
|
187
|
+
// Convertir y filtrar resultados
|
|
188
|
+
let items = results.map(item => {
|
|
189
|
+
if (item.type === 'folder') {
|
|
190
|
+
return {
|
|
191
|
+
id: item.folderkey || '',
|
|
192
|
+
folderKey: item.folderkey || '',
|
|
193
|
+
name: item.name || '',
|
|
194
|
+
created: undefined,
|
|
195
|
+
fileCount: 0,
|
|
196
|
+
folderCount: 0,
|
|
197
|
+
parentFolderKey: item.parent_folderkey,
|
|
198
|
+
parentName: item.parent_name,
|
|
199
|
+
isFolder: true
|
|
200
|
+
};
|
|
201
|
+
}
|
|
202
|
+
else {
|
|
203
|
+
const size = parseInt(item.size || '0', 10);
|
|
204
|
+
return {
|
|
205
|
+
id: item.quickkey || '',
|
|
206
|
+
quickKey: item.quickkey || '',
|
|
207
|
+
name: item.filename || item.name || '',
|
|
208
|
+
size,
|
|
209
|
+
sizeFormatted: (0, utils_1.formatBytes)(size),
|
|
210
|
+
mimeType: item.mimetype,
|
|
211
|
+
parentFolderKey: item.parent_folderkey,
|
|
212
|
+
parentName: item.parent_name,
|
|
213
|
+
isFolder: false
|
|
214
|
+
};
|
|
215
|
+
}
|
|
216
|
+
});
|
|
217
|
+
// Filtrar por tipo si es necesario
|
|
218
|
+
if (filter === 'files') {
|
|
219
|
+
items = items.filter(item => !item.isFolder);
|
|
220
|
+
}
|
|
221
|
+
else if (filter === 'folders') {
|
|
222
|
+
items = items.filter(item => item.isFolder);
|
|
223
|
+
}
|
|
224
|
+
// Filtrar por coincidencia con el query original
|
|
225
|
+
if (exactMatch) {
|
|
226
|
+
// Coincidencia exacta (case-insensitive)
|
|
227
|
+
const queryLower = query.toLowerCase().trim();
|
|
228
|
+
items = items.filter(item => item.name.toLowerCase().trim() === queryLower);
|
|
229
|
+
}
|
|
230
|
+
else {
|
|
231
|
+
// Verificar que todas las palabras clave estén en el nombre
|
|
232
|
+
items = items.filter(item => this.matchesAllKeywords(item.name, keywords));
|
|
233
|
+
}
|
|
234
|
+
// Ordenar por relevancia (coincidencia más cercana primero)
|
|
235
|
+
items = this.sortByRelevance(items, query);
|
|
236
|
+
return {
|
|
237
|
+
query,
|
|
238
|
+
items,
|
|
239
|
+
total: items.length
|
|
240
|
+
};
|
|
241
|
+
}
|
|
242
|
+
/**
|
|
243
|
+
* Extrae las palabras clave más distintivas de un query de búsqueda.
|
|
244
|
+
* Filtra palabras comunes, años, resoluciones, etc.
|
|
245
|
+
*/
|
|
246
|
+
extractSearchKeywords(query) {
|
|
247
|
+
// Palabras comunes a ignorar (stop words y términos técnicos genéricos)
|
|
248
|
+
const stopWords = new Set([
|
|
249
|
+
// Resoluciones y calidad
|
|
250
|
+
'1080p', '720p', '480p', '2160p', '4k', 'full', 'hd', 'uhd',
|
|
251
|
+
'web', 'dl', 'webrip', 'bluray', 'brrip', 'bdrip', 'bdremux', 'remux',
|
|
252
|
+
'hdr', 'hdr10', 'dv', 'dolby', 'vision', 'x264', 'x265', 'hevc', 'avc',
|
|
253
|
+
// Plataformas
|
|
254
|
+
'netflix', 'ntfx', 'amazon', 'amnz', 'hbo', 'max', 'disney', 'dsny',
|
|
255
|
+
'apple', 'aptv', 'paramount', 'prmnt', 'peacock', 'hulu', 'vix',
|
|
256
|
+
'mgm', 'mgm+', 'booh', 'booh!',
|
|
257
|
+
// Idiomas
|
|
258
|
+
'latino', 'español', 'castellano', 'ingles', 'inglés', 'subtitulado',
|
|
259
|
+
'dual', 'multi', 'español', 'portugués', 'ruso',
|
|
260
|
+
// Términos comunes
|
|
261
|
+
'temporada', 'temp', 'season', 'capitulo', 'cap', 'episode', 'ep',
|
|
262
|
+
'vip', 'hdlatino', 'us', 'com', 'www',
|
|
263
|
+
// Artículos y preposiciones
|
|
264
|
+
'el', 'la', 'los', 'las', 'un', 'una', 'de', 'del', 'en', 'con', 'por',
|
|
265
|
+
'para', 'the', 'a', 'an', 'of', 'in', 'on', 'at', 'to', 'for', 'and', 'or'
|
|
266
|
+
]);
|
|
267
|
+
// Limpiar el query: remover caracteres especiales excepto letras, números y espacios
|
|
268
|
+
let cleaned = query
|
|
269
|
+
.replace(/[\[\]{}()]/g, ' ') // Remover brackets
|
|
270
|
+
.replace(/[^\w\sáéíóúñü-]/gi, ' ') // Mantener solo alfanuméricos y acentos
|
|
271
|
+
.toLowerCase();
|
|
272
|
+
// Dividir en palabras
|
|
273
|
+
const words = cleaned.split(/\s+/).filter(word => word.length > 0);
|
|
274
|
+
// Filtrar palabras
|
|
275
|
+
const filtered = words.filter(word => {
|
|
276
|
+
// Ignorar palabras muy cortas
|
|
277
|
+
if (word.length < 3)
|
|
278
|
+
return false;
|
|
279
|
+
// Ignorar stop words
|
|
280
|
+
if (stopWords.has(word))
|
|
281
|
+
return false;
|
|
282
|
+
// Ignorar años (1900-2099)
|
|
283
|
+
if (/^(19|20)\d{2}$/.test(word))
|
|
284
|
+
return false;
|
|
285
|
+
// Ignorar números puros
|
|
286
|
+
if (/^\d+$/.test(word))
|
|
287
|
+
return false;
|
|
288
|
+
// Ignorar códigos de episodio (S01E01, etc.)
|
|
289
|
+
if (/^s\d+e?\d*$/i.test(word))
|
|
290
|
+
return false;
|
|
291
|
+
return true;
|
|
292
|
+
});
|
|
293
|
+
// Ordenar por unicidad (palabras menos comunes primero)
|
|
294
|
+
// Priorizar palabras más largas y con caracteres especiales
|
|
295
|
+
const scored = filtered.map(word => ({
|
|
296
|
+
word,
|
|
297
|
+
score: this.calculateWordScore(word, filtered)
|
|
298
|
+
}));
|
|
299
|
+
scored.sort((a, b) => b.score - a.score);
|
|
300
|
+
// Retornar palabras únicas
|
|
301
|
+
const unique = [...new Set(scored.map(s => s.word))];
|
|
302
|
+
return unique.slice(0, 5); // Máximo 5 palabras clave
|
|
303
|
+
}
|
|
304
|
+
/**
|
|
305
|
+
* Calcula un score de unicidad para una palabra
|
|
306
|
+
*/
|
|
307
|
+
calculateWordScore(word, allWords) {
|
|
308
|
+
let score = 0;
|
|
309
|
+
// Palabras más largas son más únicas
|
|
310
|
+
score += word.length * 2;
|
|
311
|
+
// Palabras con caracteres especiales/acentos son más distintivas
|
|
312
|
+
if (/[áéíóúñü]/.test(word))
|
|
313
|
+
score += 5;
|
|
314
|
+
// Palabras que aparecen una sola vez son más únicas
|
|
315
|
+
const count = allWords.filter(w => w === word).length;
|
|
316
|
+
if (count === 1)
|
|
317
|
+
score += 10;
|
|
318
|
+
// Penalizar palabras muy comunes en nombres de archivos
|
|
319
|
+
const commonWords = ['serie', 'movie', 'film', 'show', 'video'];
|
|
320
|
+
if (commonWords.includes(word))
|
|
321
|
+
score -= 5;
|
|
322
|
+
return score;
|
|
323
|
+
}
|
|
324
|
+
/**
|
|
325
|
+
* Verifica si un nombre contiene todas las palabras clave
|
|
326
|
+
*/
|
|
327
|
+
matchesAllKeywords(name, keywords) {
|
|
328
|
+
const nameLower = name.toLowerCase();
|
|
329
|
+
// Verificar que al menos la primera palabra clave (la más única) esté presente
|
|
330
|
+
if (keywords.length > 0 && !nameLower.includes(keywords[0])) {
|
|
331
|
+
return false;
|
|
332
|
+
}
|
|
333
|
+
// Para una coincidencia más flexible, verificar que al menos 60% de las palabras estén
|
|
334
|
+
const matchCount = keywords.filter(kw => nameLower.includes(kw)).length;
|
|
335
|
+
const matchRatio = matchCount / keywords.length;
|
|
336
|
+
return matchRatio >= 0.6;
|
|
337
|
+
}
|
|
338
|
+
/**
|
|
339
|
+
* Ordena los resultados por relevancia respecto al query original
|
|
340
|
+
*/
|
|
341
|
+
sortByRelevance(items, query) {
|
|
342
|
+
const queryLower = query.toLowerCase();
|
|
343
|
+
return items.sort((a, b) => {
|
|
344
|
+
const aName = a.name.toLowerCase();
|
|
345
|
+
const bName = b.name.toLowerCase();
|
|
346
|
+
// Coincidencia exacta primero
|
|
347
|
+
if (aName === queryLower && bName !== queryLower)
|
|
348
|
+
return -1;
|
|
349
|
+
if (bName === queryLower && aName !== queryLower)
|
|
350
|
+
return 1;
|
|
351
|
+
// Luego, contiene el query completo
|
|
352
|
+
const aContains = aName.includes(queryLower);
|
|
353
|
+
const bContains = bName.includes(queryLower);
|
|
354
|
+
if (aContains && !bContains)
|
|
355
|
+
return -1;
|
|
356
|
+
if (bContains && !aContains)
|
|
357
|
+
return 1;
|
|
358
|
+
// Luego, por similitud de longitud
|
|
359
|
+
const aDiff = Math.abs(a.name.length - query.length);
|
|
360
|
+
const bDiff = Math.abs(b.name.length - query.length);
|
|
361
|
+
return aDiff - bDiff;
|
|
362
|
+
});
|
|
363
|
+
}
|
|
142
364
|
/**
|
|
143
365
|
* Set file privacy (public or private)
|
|
144
366
|
*
|
|
@@ -195,6 +417,191 @@ class FilesModule {
|
|
|
195
417
|
async makePrivate(quickKey) {
|
|
196
418
|
return this.setPrivacy(quickKey, 'private');
|
|
197
419
|
}
|
|
420
|
+
/**
|
|
421
|
+
* Copy a file to another folder
|
|
422
|
+
*
|
|
423
|
+
* @param quickKey - File quick key (or comma-separated list)
|
|
424
|
+
* @param folderKey - Destination folder key (default: root)
|
|
425
|
+
* @returns New quick keys of copied files
|
|
426
|
+
*
|
|
427
|
+
* @example
|
|
428
|
+
* ```typescript
|
|
429
|
+
* const newKeys = await client.files.copy('abc123', 'destFolder');
|
|
430
|
+
* ```
|
|
431
|
+
*/
|
|
432
|
+
async copy(quickKey, folderKey) {
|
|
433
|
+
const session = this.getSession();
|
|
434
|
+
if (!session) {
|
|
435
|
+
throw new Error('Not authenticated. Please call login() first.');
|
|
436
|
+
}
|
|
437
|
+
const response = await (0, api_1.apiCall)('file/copy', {
|
|
438
|
+
quick_key: quickKey,
|
|
439
|
+
folder_key: folderKey || 'myfiles'
|
|
440
|
+
}, session);
|
|
441
|
+
return response.new_quickkeys || [];
|
|
442
|
+
}
|
|
443
|
+
/**
|
|
444
|
+
* Delete a file (move to trash)
|
|
445
|
+
*
|
|
446
|
+
* @param quickKey - File quick key (or comma-separated list)
|
|
447
|
+
* @returns True if successful
|
|
448
|
+
*
|
|
449
|
+
* @example
|
|
450
|
+
* ```typescript
|
|
451
|
+
* await client.files.delete('abc123');
|
|
452
|
+
* ```
|
|
453
|
+
*/
|
|
454
|
+
async delete(quickKey) {
|
|
455
|
+
const session = this.getSession();
|
|
456
|
+
if (!session) {
|
|
457
|
+
throw new Error('Not authenticated. Please call login() first.');
|
|
458
|
+
}
|
|
459
|
+
await (0, api_1.apiCall)('file/delete', {
|
|
460
|
+
quick_key: quickKey
|
|
461
|
+
}, session);
|
|
462
|
+
return true;
|
|
463
|
+
}
|
|
464
|
+
/**
|
|
465
|
+
* Move a file to another folder
|
|
466
|
+
*
|
|
467
|
+
* @param quickKey - File quick key (or comma-separated list, max 500)
|
|
468
|
+
* @param folderKey - Destination folder key (default: root)
|
|
469
|
+
* @returns True if successful
|
|
470
|
+
*
|
|
471
|
+
* @example
|
|
472
|
+
* ```typescript
|
|
473
|
+
* await client.files.move('abc123', 'destFolder');
|
|
474
|
+
* ```
|
|
475
|
+
*/
|
|
476
|
+
async move(quickKey, folderKey) {
|
|
477
|
+
const session = this.getSession();
|
|
478
|
+
if (!session) {
|
|
479
|
+
throw new Error('Not authenticated. Please call login() first.');
|
|
480
|
+
}
|
|
481
|
+
await (0, api_1.apiCall)('file/move', {
|
|
482
|
+
quick_key: quickKey,
|
|
483
|
+
folder_key: folderKey || 'myfiles'
|
|
484
|
+
}, session);
|
|
485
|
+
return true;
|
|
486
|
+
}
|
|
487
|
+
/**
|
|
488
|
+
* Rename a file
|
|
489
|
+
*
|
|
490
|
+
* @param quickKey - File quick key
|
|
491
|
+
* @param newName - New file name (with extension)
|
|
492
|
+
* @returns True if successful
|
|
493
|
+
*
|
|
494
|
+
* @example
|
|
495
|
+
* ```typescript
|
|
496
|
+
* await client.files.rename('abc123', 'newname.pdf');
|
|
497
|
+
* ```
|
|
498
|
+
*/
|
|
499
|
+
async rename(quickKey, newName) {
|
|
500
|
+
const session = this.getSession();
|
|
501
|
+
if (!session) {
|
|
502
|
+
throw new Error('Not authenticated. Please call login() first.');
|
|
503
|
+
}
|
|
504
|
+
await (0, api_1.apiCall)('file/update', {
|
|
505
|
+
quick_key: quickKey,
|
|
506
|
+
filename: newName
|
|
507
|
+
}, session);
|
|
508
|
+
return true;
|
|
509
|
+
}
|
|
510
|
+
/**
|
|
511
|
+
* Permanently delete a file (cannot be recovered)
|
|
512
|
+
*
|
|
513
|
+
* @param quickKey - File quick key (or comma-separated list)
|
|
514
|
+
* @returns True if successful
|
|
515
|
+
*
|
|
516
|
+
* @example
|
|
517
|
+
* ```typescript
|
|
518
|
+
* await client.files.purge('abc123');
|
|
519
|
+
* ```
|
|
520
|
+
*/
|
|
521
|
+
async purge(quickKey) {
|
|
522
|
+
const session = this.getSession();
|
|
523
|
+
if (!session) {
|
|
524
|
+
throw new Error('Not authenticated. Please call login() first.');
|
|
525
|
+
}
|
|
526
|
+
await (0, api_1.apiCall)('file/purge', {
|
|
527
|
+
quick_key: quickKey
|
|
528
|
+
}, session);
|
|
529
|
+
return true;
|
|
530
|
+
}
|
|
531
|
+
/**
|
|
532
|
+
* Restore a file from trash
|
|
533
|
+
*
|
|
534
|
+
* @param quickKey - File quick key (or comma-separated list)
|
|
535
|
+
* @returns True if successful
|
|
536
|
+
*
|
|
537
|
+
* @example
|
|
538
|
+
* ```typescript
|
|
539
|
+
* await client.files.restore('abc123');
|
|
540
|
+
* ```
|
|
541
|
+
*/
|
|
542
|
+
async restore(quickKey) {
|
|
543
|
+
const session = this.getSession();
|
|
544
|
+
if (!session) {
|
|
545
|
+
throw new Error('Not authenticated. Please call login() first.');
|
|
546
|
+
}
|
|
547
|
+
await (0, api_1.apiCall)('file/restore', {
|
|
548
|
+
quick_key: quickKey
|
|
549
|
+
}, session);
|
|
550
|
+
return true;
|
|
551
|
+
}
|
|
552
|
+
/**
|
|
553
|
+
* Get file version history
|
|
554
|
+
*
|
|
555
|
+
* @param quickKey - File quick key
|
|
556
|
+
* @returns Array of file versions
|
|
557
|
+
*
|
|
558
|
+
* @example
|
|
559
|
+
* ```typescript
|
|
560
|
+
* const versions = await client.files.getVersions('abc123');
|
|
561
|
+
* ```
|
|
562
|
+
*/
|
|
563
|
+
async getVersions(quickKey) {
|
|
564
|
+
const session = this.getSession();
|
|
565
|
+
if (!session) {
|
|
566
|
+
throw new Error('Not authenticated. Please call login() first.');
|
|
567
|
+
}
|
|
568
|
+
const response = await (0, api_1.apiCall)('file/get_versions', {
|
|
569
|
+
quick_key: quickKey
|
|
570
|
+
}, session);
|
|
571
|
+
return (response.file_versions || []).map(v => ({
|
|
572
|
+
revision: parseInt(v.revision, 10),
|
|
573
|
+
date: v.date
|
|
574
|
+
}));
|
|
575
|
+
}
|
|
576
|
+
/**
|
|
577
|
+
* Get recently modified files
|
|
578
|
+
*
|
|
579
|
+
* @returns Array of recently modified files
|
|
580
|
+
*
|
|
581
|
+
* @example
|
|
582
|
+
* ```typescript
|
|
583
|
+
* const recent = await client.files.getRecentlyModified();
|
|
584
|
+
* ```
|
|
585
|
+
*/
|
|
586
|
+
async getRecentlyModified() {
|
|
587
|
+
const session = this.getSession();
|
|
588
|
+
if (!session) {
|
|
589
|
+
throw new Error('Not authenticated. Please call login() first.');
|
|
590
|
+
}
|
|
591
|
+
const response = await (0, api_1.apiCall)('file/recently_modified', {}, session);
|
|
592
|
+
const files = [];
|
|
593
|
+
const quickKeys = response.quickkeys || [];
|
|
594
|
+
for (const qk of quickKeys.slice(0, 10)) {
|
|
595
|
+
try {
|
|
596
|
+
const info = await this.getInfo(qk);
|
|
597
|
+
files.push(info);
|
|
598
|
+
}
|
|
599
|
+
catch {
|
|
600
|
+
// Skip files that can't be retrieved
|
|
601
|
+
}
|
|
602
|
+
}
|
|
603
|
+
return files;
|
|
604
|
+
}
|
|
198
605
|
}
|
|
199
606
|
exports.FilesModule = FilesModule;
|
|
200
607
|
//# sourceMappingURL=files.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"files.js","sourceRoot":"","sources":["../../src/modules/files.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"files.js","sourceRoot":"","sources":["../../src/modules/files.ts"],"names":[],"mappings":";;;AAAA;;GAEG;AACH,gCAAkD;AAElD,oCAAuC;AAEvC;;GAEG;AACH,MAAa,WAAW;IACtB,YAAoB,UAAwC;QAAxC,eAAU,GAAV,UAAU,CAA8B;IAAG,CAAC;IAEhE;;;;;;;;;;;;OAYG;IACH,KAAK,CAAC,OAAO,CAAC,QAAgB;QAC5B,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QAClC,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;QACnE,CAAC;QAyBD,MAAM,QAAQ,GAAG,MAAM,IAAA,aAAO,EAAmB,eAAe,EAAE;YAChE,SAAS,EAAE,QAAQ;SACpB,EAAE,OAAO,CAAC,CAAC;QAEZ,MAAM,IAAI,GAAG,QAAQ,CAAC,SAAS,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC;QAC5D,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,MAAM,IAAI,KAAK,CAAC,mBAAmB,QAAQ,EAAE,CAAC,CAAC;QACjD,CAAC;QAED,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,GAAG,EAAE,EAAE,CAAC,CAAC;QAE5C,OAAO;YACL,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,IAAI,EAAE,IAAI,CAAC,QAAQ;YACnB,IAAI;YACJ,aAAa,EAAE,IAAA,mBAAW,EAAC,IAAI,CAAC;YAChC,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,SAAS,EAAE,QAAQ,CAAC,IAAI,CAAC,SAAS,IAAI,GAAG,EAAE,EAAE,CAAC;YAC9C,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,iBAAiB,EAAE,IAAI,CAAC,kBAAkB,KAAK,KAAK;SACrD,CAAC;IACJ,CAAC;IAED;;;;;;;;;;;;OAYG;IACH,KAAK,CAAC,QAAQ,CAAC,QAAgB;QAC7B,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QAClC,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;QACnE,CAAC;QASD,MAAM,QAAQ,GAAG,MAAM,IAAA,aAAO,EAAgB,gBAAgB,EAAE;YAC9D,SAAS,EAAE,QAAQ;YACnB,SAAS,EAAE,iBAAiB;SAC7B,EAAE,OAAO,CAAC,CAAC;QAEZ,MAAM,QAAQ,GAAG,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAE3C,OAAO;YACL,cAAc,EAAE,QAAQ,CAAC,eAAe;YACxC,cAAc,EAAE,QAAQ,CAAC,eAAe;YACxC,QAAQ,EAAE,kCAAkC,QAAQ,EAAE;SACvD,CAAC;IACJ,CAAC;IAED;;;;;;;;;;;;;OAaG;IACH,KAAK,CAAC,MAAM,CAAC,KAAa;QACxB,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QAClC,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;QACnE,CAAC;QAgBD,MAAM,QAAQ,GAAG,MAAM,IAAA,aAAO,EAAiB,eAAe,EAAE;YAC9D,WAAW,EAAE,KAAK;YAClB,MAAM,EAAE,YAAY;SACrB,EAAE,OAAO,CAAC,CAAC;QAEZ,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,IAAI,EAAE,CAAC;QAEvC,MAAM,KAAK,GAAkB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;YAC9C,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAC3B,OAAO;oBACL,EAAE,EAAE,IAAI,CAAC,SAAS,IAAI,EAAE;oBACxB,SAAS,EAAE,IAAI,CAAC,SAAS,IAAI,EAAE;oBAC/B,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,EAAE;oBACrB,OAAO,EAAE,SAAS;oBAClB,SAAS,EAAE,CAAC;oBACZ,WAAW,EAAE,CAAC;oBACd,eAAe,EAAE,IAAI,CAAC,gBAAgB;oBACtC,UAAU,EAAE,IAAI,CAAC,WAAW;oBAC5B,QAAQ,EAAE,IAAa;iBACxB,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,GAAG,EAAE,EAAE,CAAC,CAAC;gBAC5C,OAAO;oBACL,EAAE,EAAE,IAAI,CAAC,QAAQ,IAAI,EAAE;oBACvB,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,EAAE;oBAC7B,IAAI,EAAE,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,IAAI,IAAI,EAAE;oBACtC,IAAI;oBACJ,aAAa,EAAE,IAAA,mBAAW,EAAC,IAAI,CAAC;oBAChC,QAAQ,EAAE,IAAI,CAAC,QAAQ;oBACvB,eAAe,EAAE,IAAI,CAAC,gBAAgB;oBACtC,UAAU,EAAE,IAAI,CAAC,WAAW;oBAC5B,QAAQ,EAAE,KAAc;iBACzB,CAAC;YACJ,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,OAAO;YACL,KAAK;YACL,KAAK;YACL,KAAK,EAAE,KAAK,CAAC,MAAM;SACpB,CAAC;IACJ,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;OA0BG;IACH,KAAK,CAAC,WAAW,CACf,KAAa,EACb,UAKI,EAAE;QAEN,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QAClC,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;QACnE,CAAC;QAED,MAAM,EAAE,MAAM,GAAG,YAAY,EAAE,UAAU,GAAG,KAAK,EAAE,GAAG,OAAO,CAAC;QAE9D,mCAAmC;QACnC,MAAM,QAAQ,GAAG,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC;QAEnD,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC1B,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;QACxC,CAAC;QAED,4DAA4D;QAC5D,MAAM,UAAU,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;QAgB/B,MAAM,QAAQ,GAAG,MAAM,IAAA,aAAO,EAAiB,eAAe,EAAE;YAC9D,WAAW,EAAE,UAAU;YACvB,MAAM,EAAE,YAAY;SACrB,EAAE,OAAO,CAAC,CAAC;QAEZ,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,IAAI,EAAE,CAAC;QAEvC,iCAAiC;QACjC,IAAI,KAAK,GAAkB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;YAC5C,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAC3B,OAAO;oBACL,EAAE,EAAE,IAAI,CAAC,SAAS,IAAI,EAAE;oBACxB,SAAS,EAAE,IAAI,CAAC,SAAS,IAAI,EAAE;oBAC/B,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,EAAE;oBACrB,OAAO,EAAE,SAAS;oBAClB,SAAS,EAAE,CAAC;oBACZ,WAAW,EAAE,CAAC;oBACd,eAAe,EAAE,IAAI,CAAC,gBAAgB;oBACtC,UAAU,EAAE,IAAI,CAAC,WAAW;oBAC5B,QAAQ,EAAE,IAAa;iBACxB,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,GAAG,EAAE,EAAE,CAAC,CAAC;gBAC5C,OAAO;oBACL,EAAE,EAAE,IAAI,CAAC,QAAQ,IAAI,EAAE;oBACvB,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,EAAE;oBAC7B,IAAI,EAAE,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,IAAI,IAAI,EAAE;oBACtC,IAAI;oBACJ,aAAa,EAAE,IAAA,mBAAW,EAAC,IAAI,CAAC;oBAChC,QAAQ,EAAE,IAAI,CAAC,QAAQ;oBACvB,eAAe,EAAE,IAAI,CAAC,gBAAgB;oBACtC,UAAU,EAAE,IAAI,CAAC,WAAW;oBAC5B,QAAQ,EAAE,KAAc;iBACzB,CAAC;YACJ,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,mCAAmC;QACnC,IAAI,MAAM,KAAK,OAAO,EAAE,CAAC;YACvB,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC/C,CAAC;aAAM,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YAChC,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC9C,CAAC;QAED,iDAAiD;QACjD,IAAI,UAAU,EAAE,CAAC;YACf,yCAAyC;YACzC,MAAM,UAAU,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,CAAC;YAC9C,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAC1B,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,KAAK,UAAU,CAC9C,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,4DAA4D;YAC5D,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAC1B,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAC7C,CAAC;QACJ,CAAC;QAED,4DAA4D;QAC5D,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAE3C,OAAO;YACL,KAAK;YACL,KAAK;YACL,KAAK,EAAE,KAAK,CAAC,MAAM;SACpB,CAAC;IACJ,CAAC;IAED;;;OAGG;IACK,qBAAqB,CAAC,KAAa;QACzC,wEAAwE;QACxE,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC;YACxB,yBAAyB;YACzB,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK;YAC3D,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO;YACrE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK;YACtE,cAAc;YACd,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM;YACnE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK;YAC/D,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO;YAC9B,UAAU;YACV,QAAQ,EAAE,SAAS,EAAE,YAAY,EAAE,QAAQ,EAAE,QAAQ,EAAE,aAAa;YACpE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM;YAC/C,mBAAmB;YACnB,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI;YACjE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK;YACrC,4BAA4B;YAC5B,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK;YACtE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI;SAC3E,CAAC,CAAC;QAEH,qFAAqF;QACrF,IAAI,OAAO,GAAG,KAAK;aAChB,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC,CAAE,mBAAmB;aAChD,OAAO,CAAC,mBAAmB,EAAE,GAAG,CAAC,CAAE,wCAAwC;aAC3E,WAAW,EAAE,CAAC;QAEjB,sBAAsB;QACtB,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAEnE,mBAAmB;QACnB,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;YACnC,8BAA8B;YAC9B,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC;gBAAE,OAAO,KAAK,CAAC;YAElC,qBAAqB;YACrB,IAAI,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC;gBAAE,OAAO,KAAK,CAAC;YAEtC,2BAA2B;YAC3B,IAAI,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC;gBAAE,OAAO,KAAK,CAAC;YAE9C,wBAAwB;YACxB,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;gBAAE,OAAO,KAAK,CAAC;YAErC,6CAA6C;YAC7C,IAAI,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC;gBAAE,OAAO,KAAK,CAAC;YAE5C,OAAO,IAAI,CAAC;QACd,CAAC,CAAC,CAAC;QAEH,wDAAwD;QACxD,4DAA4D;QAC5D,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACnC,IAAI;YACJ,KAAK,EAAE,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,QAAQ,CAAC;SAC/C,CAAC,CAAC,CAAC;QAEJ,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;QAEzC,2BAA2B;QAC3B,MAAM,MAAM,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAErD,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAE,0BAA0B;IACxD,CAAC;IAED;;OAEG;IACK,kBAAkB,CAAC,IAAY,EAAE,QAAkB;QACzD,IAAI,KAAK,GAAG,CAAC,CAAC;QAEd,qCAAqC;QACrC,KAAK,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;QAEzB,iEAAiE;QACjE,IAAI,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;YAAE,KAAK,IAAI,CAAC,CAAC;QAEvC,oDAAoD;QACpD,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,MAAM,CAAC;QACtD,IAAI,KAAK,KAAK,CAAC;YAAE,KAAK,IAAI,EAAE,CAAC;QAE7B,wDAAwD;QACxD,MAAM,WAAW,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;QAChE,IAAI,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC;YAAE,KAAK,IAAI,CAAC,CAAC;QAE3C,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;OAEG;IACK,kBAAkB,CAAC,IAAY,EAAE,QAAkB;QACzD,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QAErC,+EAA+E;QAC/E,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAC5D,OAAO,KAAK,CAAC;QACf,CAAC;QAED,uFAAuF;QACvF,MAAM,UAAU,GAAG,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;QACxE,MAAM,UAAU,GAAG,UAAU,GAAG,QAAQ,CAAC,MAAM,CAAC;QAEhD,OAAO,UAAU,IAAI,GAAG,CAAC;IAC3B,CAAC;IAED;;OAEG;IACK,eAAe,CAAC,KAAoB,EAAE,KAAa;QACzD,MAAM,UAAU,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;QAEvC,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YACzB,MAAM,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YACnC,MAAM,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YAEnC,8BAA8B;YAC9B,IAAI,KAAK,KAAK,UAAU,IAAI,KAAK,KAAK,UAAU;gBAAE,OAAO,CAAC,CAAC,CAAC;YAC5D,IAAI,KAAK,KAAK,UAAU,IAAI,KAAK,KAAK,UAAU;gBAAE,OAAO,CAAC,CAAC;YAE3D,oCAAoC;YACpC,MAAM,SAAS,GAAG,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;YAC7C,MAAM,SAAS,GAAG,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;YAC7C,IAAI,SAAS,IAAI,CAAC,SAAS;gBAAE,OAAO,CAAC,CAAC,CAAC;YACvC,IAAI,SAAS,IAAI,CAAC,SAAS;gBAAE,OAAO,CAAC,CAAC;YAEtC,mCAAmC;YACnC,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;YACrD,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;YAErD,OAAO,KAAK,GAAG,KAAK,CAAC;QACvB,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;;;;;;;;;;;;;;;OAgBG;IACH,KAAK,CAAC,UAAU,CAAC,QAAgB,EAAE,OAA6B;QAC9D,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QAClC,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;QACnE,CAAC;QAMD,MAAM,IAAA,aAAO,EAAiB,aAAa,EAAE;YAC3C,SAAS,EAAE,QAAQ;YACnB,OAAO,EAAE,OAAO;SACjB,EAAE,OAAO,CAAC,CAAC;QAEZ,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;;;;;;OAUG;IACH,KAAK,CAAC,UAAU,CAAC,QAAgB;QAC/B,OAAO,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAC7C,CAAC;IAED;;;;;;;;;;OAUG;IACH,KAAK,CAAC,WAAW,CAAC,QAAgB;QAChC,OAAO,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IAC9C,CAAC;IAED;;;;;;;;;;;OAWG;IACH,KAAK,CAAC,IAAI,CAAC,QAAgB,EAAE,SAAkB;QAC7C,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QAClC,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;QACnE,CAAC;QAMD,MAAM,QAAQ,GAAG,MAAM,IAAA,aAAO,EAAe,WAAW,EAAE;YACxD,SAAS,EAAE,QAAQ;YACnB,UAAU,EAAE,SAAS,IAAI,SAAS;SACnC,EAAE,OAAO,CAAC,CAAC;QAEZ,OAAO,QAAQ,CAAC,aAAa,IAAI,EAAE,CAAC;IACtC,CAAC;IAED;;;;;;;;;;OAUG;IACH,KAAK,CAAC,MAAM,CAAC,QAAgB;QAC3B,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QAClC,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;QACnE,CAAC;QAED,MAAM,IAAA,aAAO,EAAC,aAAa,EAAE;YAC3B,SAAS,EAAE,QAAQ;SACpB,EAAE,OAAO,CAAC,CAAC;QAEZ,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;;;;;;;OAWG;IACH,KAAK,CAAC,IAAI,CAAC,QAAgB,EAAE,SAAkB;QAC7C,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QAClC,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;QACnE,CAAC;QAED,MAAM,IAAA,aAAO,EAAC,WAAW,EAAE;YACzB,SAAS,EAAE,QAAQ;YACnB,UAAU,EAAE,SAAS,IAAI,SAAS;SACnC,EAAE,OAAO,CAAC,CAAC;QAEZ,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;;;;;;;OAWG;IACH,KAAK,CAAC,MAAM,CAAC,QAAgB,EAAE,OAAe;QAC5C,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QAClC,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;QACnE,CAAC;QAED,MAAM,IAAA,aAAO,EAAC,aAAa,EAAE;YAC3B,SAAS,EAAE,QAAQ;YACnB,QAAQ,EAAE,OAAO;SAClB,EAAE,OAAO,CAAC,CAAC;QAEZ,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;;;;;;OAUG;IACH,KAAK,CAAC,KAAK,CAAC,QAAgB;QAC1B,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QAClC,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;QACnE,CAAC;QAED,MAAM,IAAA,aAAO,EAAC,YAAY,EAAE;YAC1B,SAAS,EAAE,QAAQ;SACpB,EAAE,OAAO,CAAC,CAAC;QAEZ,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;;;;;;OAUG;IACH,KAAK,CAAC,OAAO,CAAC,QAAgB;QAC5B,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QAClC,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;QACnE,CAAC;QAED,MAAM,IAAA,aAAO,EAAC,cAAc,EAAE;YAC5B,SAAS,EAAE,QAAQ;SACpB,EAAE,OAAO,CAAC,CAAC;QAEZ,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;;;;;;OAUG;IACH,KAAK,CAAC,WAAW,CAAC,QAAgB;QAChC,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QAClC,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;QACnE,CAAC;QASD,MAAM,QAAQ,GAAG,MAAM,IAAA,aAAO,EAAmB,mBAAmB,EAAE;YACpE,SAAS,EAAE,QAAQ;SACpB,EAAE,OAAO,CAAC,CAAC;QAEZ,OAAO,CAAC,QAAQ,CAAC,aAAa,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YAC9C,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC;YAClC,IAAI,EAAE,CAAC,CAAC,IAAI;SACb,CAAC,CAAC,CAAC;IACN,CAAC;IAED;;;;;;;;;OASG;IACH,KAAK,CAAC,mBAAmB;QACvB,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QAClC,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;QACnE,CAAC;QAMD,MAAM,QAAQ,GAAG,MAAM,IAAA,aAAO,EAAiB,wBAAwB,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC;QAEtF,MAAM,KAAK,GAAe,EAAE,CAAC;QAC7B,MAAM,SAAS,GAAG,QAAQ,CAAC,SAAS,IAAI,EAAE,CAAC;QAE3C,KAAK,MAAM,EAAE,IAAI,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;YACxC,IAAI,CAAC;gBACH,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;gBACpC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACnB,CAAC;YAAC,MAAM,CAAC;gBACP,qCAAqC;YACvC,CAAC;QACH,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;CACF;AA7uBD,kCA6uBC"}
|