neekuro 2.1.0 → 2.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.
@@ -1,389 +1,427 @@
1
1
  //#region constants
2
-
3
- /**
4
- * Categoria SFW
5
- * aqui encontraras categorias no nsfw como accion y reaccion
6
- * @example
7
- * // obtiene el objeto SFW
8
- * const SFW = require('neekuro').SFW
9
- */
10
- export const SFW: {
11
- /**
12
- * Funcion principal para obtener gifs de cierta categoria
13
- * @param category category: corresponde a la subcategoria de SFW
14
- * @param gif gif: corresponde al gif que quieras obtener por categoria
15
- * @example
16
- * const { SFW } = require('neekuro')
17
- *
18
- * // se obtiene el objeto (es necesario que esto sea dentro de una funcion asincrona)
19
- * let cuddle = await SFW.getGif('action', 'cuddle')
20
- *
21
- * // obtener url
22
- * cuddle.getUrl();
23
- * // obtener anime
24
- * cuddle.getAnime();
25
- */
26
- getGif<T extends SfwCategories>(category: T, gif: GifMap[T]): Promise<NekoGif>
27
- }
28
-
29
- //#endregion
30
-
31
- //#region types
32
-
33
- export type ActionGifs =
34
- 'cook' |
35
- 'cuddle' |
36
- 'cure' |
37
- 'draw' |
38
- 'drive' |
39
- 'eat' |
40
- 'explosion' |
41
- 'feed' |
42
- 'hug' |
43
- 'kickbut' |
44
- 'kill' |
45
- 'kiss' |
46
- 'lick' |
47
- 'pat' |
48
- 'peek' |
49
- 'playing' |
50
- 'poke' |
51
- 'punch' |
52
- 'run' |
53
- 'sape' |
54
- 'shoot' |
55
- 'sip' |
56
- 'slap' |
57
- 'sleep' |
58
- 'stare' |
59
- 'tickle' |
60
- 'travel' |
61
- 'work';
62
-
63
- export type ReactionGifs = 'angry' |
64
- 'blush' |
65
- 'bored' |
66
- 'confused' |
67
- 'cry' |
68
- 'dance' |
69
- 'laugh' |
70
- 'like' |
71
- 'pout' |
72
- 'scream' |
73
- 'smug' |
74
- 'think' |
75
- 'vomit' |
76
- 'wink';
77
-
78
- export type SfwCategories = 'action' | 'reaction';
79
-
80
- export type FontNames = 'arial' | 'calibri' | 'custom';
81
-
82
- //#endregion
83
-
84
-
85
- //#region inferfaces
86
-
87
- export interface APIClientData {
88
- token: string
89
- }
90
-
91
- export interface WelcomeBackgroundData {
92
- type: 'color' | 'image'
93
- value: string | Buffer
94
- }
95
-
96
- export interface WelcomeAvatarData {
97
- x?: number
98
- y?: number
99
- border?: string
100
- radio?: number
101
- }
102
-
103
- export interface WelcomeTextData {
104
- x?: number
105
- y?: number
106
- font_size?: number
107
- text_color?: string
108
- }
109
-
2
+
3
+ /**
4
+ * Categoria SFW
5
+ * aqui encontraras categorias no nsfw como accion y reaccion
6
+ * @example
7
+ * // obtiene el objeto SFW
8
+ * const SFW = require('neekuro').SFW
9
+ */
10
+ export const SFW: {
11
+ /**
12
+ * Funcion principal para obtener gifs de cierta categoria
13
+ * @param category category: corresponde a la subcategoria de SFW
14
+ * @param gif gif: corresponde al gif que quieras obtener por categoria
15
+ * @example
16
+ * const { SFW } = require('neekuro')
17
+ *
18
+ * // se obtiene el objeto (es necesario que esto sea dentro de una funcion asincrona)
19
+ * let cuddle = await SFW.getGif('action', 'cuddle')
20
+ *
21
+ * // obtener url
22
+ * cuddle.getUrl();
23
+ * // obtener anime
24
+ * cuddle.getAnime();
25
+ */
26
+ getGif<T extends SfwCategories>(category: T, gif: GifMap[T]): Promise<NekoGif>
27
+ /** Obtiene todos los GIF disponibles y utiliza la caché interna. */
28
+ getGifs<T extends SfwCategories>(category: T, gif: GifMap[T]): Promise<NekoGif[]>
29
+ /** Limpia toda la caché de imágenes. */
30
+ clearCache(): void
31
+ /** Limpia la caché de una categoría completa o de una subcategoría. */
32
+ clearCache<T extends SfwCategories>(category: T, gif?: GifMap[T]): void
33
+ /** Cambia la URL HTTPS utilizada para consultar SFW. */
34
+ setBaseURL(url: string): void
35
+ /** Configura el TTL en milisegundos. El valor cero desactiva la caché. */
36
+ setCacheTTL(milliseconds: number): void
37
+ }
38
+
39
+ //#endregion
40
+
41
+ //#region types
42
+
43
+ export type ActionGifs =
44
+ 'cook' |
45
+ 'cuddle' |
46
+ 'cure' |
47
+ 'draw' |
48
+ 'drive' |
49
+ 'eat' |
50
+ 'explosion' |
51
+ 'feed' |
52
+ 'handhold' |
53
+ 'highfive' |
54
+ 'hug' |
55
+ 'kickbut' |
56
+ 'kill' |
57
+ 'kiss' |
58
+ 'lick' |
59
+ 'pat' |
60
+ 'peek' |
61
+ 'playing' |
62
+ 'poke' |
63
+ 'punch' |
64
+ 'read' |
65
+ 'run' |
66
+ 'sape' |
67
+ 'shoot' |
68
+ 'sip' |
69
+ 'slap' |
70
+ 'sleep' |
71
+ 'stare' |
72
+ 'tickle' |
73
+ 'travel' |
74
+ 'wave' |
75
+ 'work';
76
+
77
+ export type ReactionGifs = 'angry' |
78
+ 'blush' |
79
+ 'bored' |
80
+ 'confused' |
81
+ 'cry' |
82
+ 'dance' |
83
+ 'disgust' |
84
+ 'facepalm' |
85
+ 'happy' |
86
+ 'laugh' |
87
+ 'like' |
88
+ 'love' |
89
+ 'nervous' |
90
+ 'pout' |
91
+ 'scream' |
92
+ 'shrug' |
93
+ 'smug' |
94
+ 'surprised' |
95
+ 'think' |
96
+ 'vomit' |
97
+ 'wink';
98
+
99
+ export type SfwCategories = 'action' | 'reaction';
100
+
101
+ export type FontNames = 'arial' | 'calibri' | 'custom';
102
+
103
+ //#endregion
104
+
105
+
106
+ //#region inferfaces
107
+
108
+ export interface APIClientData {
109
+ token: string
110
+ }
111
+
112
+ export interface WelcomeBackgroundData {
113
+ type: 'color' | 'image'
114
+ value: string | Buffer
115
+ }
116
+
117
+ export interface WelcomeAvatarData {
118
+ x?: number
119
+ y?: number
120
+ border?: string
121
+ radio?: number
122
+ }
123
+
124
+ export interface WelcomeTextData {
125
+ x?: number
126
+ y?: number
127
+ font_size?: number
128
+ text_color?: string
129
+ }
130
+
110
131
  export interface WelcomeData {
111
132
  font: FontNames;
112
133
  layout: 'center' | 'manual';
113
- width: number;
114
- height: number;
115
- background: WelcomeBackgroundData;
116
- avatar: {
117
- source: string | Buffer | null;
118
- x: number;
119
- y: number;
120
- radio: number;
121
- border: string;
122
- };
123
- title: {
124
- content: string | null;
125
- x: number;
126
- y: number;
127
- font_size: number;
128
- text_color: string;
129
- };
130
- description: {
131
- content: string | null;
132
- x: number;
133
- y: number;
134
- font_size: number;
135
- text_color: string;
136
- };
137
- }
138
-
139
- export interface NekoGifInterface {
140
- url: string | null
141
- anime?: string | null
142
- }
143
-
144
- export declare interface GifMap {
145
- action: ActionGifs
146
- reaction: ReactionGifs
147
- }
148
-
134
+ width: number;
135
+ height: number;
136
+ background: WelcomeBackgroundData;
137
+ avatar: {
138
+ source: string | Buffer | null;
139
+ x: number;
140
+ y: number;
141
+ radio: number;
142
+ border: string;
143
+ };
144
+ title: {
145
+ content: string | null;
146
+ x: number;
147
+ y: number;
148
+ font_size: number;
149
+ text_color: string;
150
+ };
151
+ description: {
152
+ content: string | null;
153
+ x: number;
154
+ y: number;
155
+ font_size: number;
156
+ text_color: string;
157
+ };
158
+ }
159
+
160
+ export interface NekoGifInterface {
161
+ url: string | null
162
+ anime?: string | null
163
+ }
164
+
165
+ export interface GifData {
166
+ url: string
167
+ anime: string
168
+ }
169
+
170
+ export declare interface GifMap {
171
+ action: ActionGifs
172
+ reaction: ReactionGifs
173
+ }
174
+
149
175
  export interface GifResponse extends ApiResponse {
150
- data: {
151
- url: string;
152
- anime: string;
153
- }
154
- }
155
-
156
- export interface ApiResponse {
157
- message?: string,
158
- code: number
159
- }
160
-
161
- //#endregion
162
-
163
- //#region Classes
164
-
165
- /**
166
- * Clase Welcome
167
- * Genera una imagen de bienvenida para discord
168
- * @example
169
- * const welcome = new neekuro.Welcome()
170
- * .setResolution(1200, 600)
171
- * .setFont('arial')
172
- * .setTitle('¡Bienvenido!', { text_color: '#FF5733' })
173
- * .setDescription('Al servidor de la comunidad', { font_size: 24 });
174
- */
175
- export class Welcome {
176
- private data: WelcomeData;
177
-
178
- /**
179
- * Construye una nueva instancia de Welcome con configuración predeterminada
180
- */
181
- constructor();
182
-
183
- /**
184
- * Establece la resolución de la imagen de bienvenida
185
- * @param width Ancho en píxeles o 'default' para 1024px
186
- * @param height Alto en píxeles o 'default' para 450px
187
- * @throws {NekoError} Si los parámetros son inválidos
188
- */
176
+ data: GifData
177
+ }
178
+
179
+ export interface GifListResponse extends ApiResponse {
180
+ data: GifData[]
181
+ }
182
+
183
+ export interface ApiResponse {
184
+ message?: string,
185
+ code: number
186
+ }
187
+
188
+ //#endregion
189
+
190
+ //#region Classes
191
+
192
+ /**
193
+ * Clase Welcome
194
+ * Genera una imagen de bienvenida para discord
195
+ * @example
196
+ * const welcome = new neekuro.Welcome()
197
+ * .setResolution(1200, 600)
198
+ * .setFont('arial')
199
+ * .setTitle('¡Bienvenido!', { text_color: '#FF5733' })
200
+ * .setDescription('Al servidor de la comunidad', { font_size: 24 });
201
+ */
202
+ export class Welcome {
203
+ private data: WelcomeData;
204
+
205
+ /**
206
+ * Construye una nueva instancia de Welcome con configuración predeterminada
207
+ */
208
+ constructor();
209
+
210
+ /**
211
+ * Establece la resolución de la imagen de bienvenida
212
+ * @param width Ancho en píxeles o 'default' para 1140px
213
+ * @param height Alto en píxeles o 'default' para 520px
214
+ * @throws {NekoError} Si los parámetros son inválidos
215
+ */
189
216
  setResolution(width: number | 'default', height: number | 'default'): this;
190
217
 
191
218
  /** Selecciona distribución automática centrada o coordenadas manuales. */
192
219
  setLayout(layout: 'center' | 'manual'): this;
193
-
194
- /**
195
- * Configura la tipografía para el texto de la imagen
196
- * @param name Nombre de la fuente predefinida o 'custom' para personalizada
197
- * @param dir Ruta al archivo .ttf (requerido si name='custom')
198
- * @throws {NekoError} Si la fuente no existe o los parámetros son inválidos
199
- */
200
- setFont(name: FontNames, dir?: string): this;
201
-
202
- /**
203
- * Agrega un título a la imagen de bienvenida
204
- * @param text Texto del título
205
- * @param data Configuración opcional del título
206
- * @throws {NekoError} Si los parámetros son inválidos
207
- */
208
- setTitle(text: string, data?: WelcomeTextData): this;
209
-
210
- /**
211
- * Agrega una descripción a la imagen de bienvenida
212
- * @param text Texto de la descripción
213
- * @param data Configuración opcional de la descripción
214
- * @throws {NekoError} Si los parámetros son inválidos
215
- */
216
- setDescription(text: string, data?: WelcomeTextData): this;
217
-
218
- /**
219
- * Establece el fondo de la imagen (color o imagen)
220
- * @param type Tipo de fondo ('color' o 'image')
221
- * @param value Color hexadecimal o imagen (URL/Buffer)
222
- * @throws {NekoError} Si los parámetros son inválidos
223
- */
224
- setBackground(type: 'color' | 'image', value: string | Buffer): this;
225
-
226
- /**
227
- * Establece el avatar y su configuración
228
- * @param source URL o Buffer de la imagen (formatos soportados: JPEG, PNG, GIF)
229
- * @param data Configuración opcional del avatar
230
- * @throws {NekoError} Si los parámetros son inválidos o el formato no es soportado
231
- */
232
- setAvatar(source: string | Buffer, data?: WelcomeAvatarData): this;
233
-
234
- /**
235
- * Genera la imagen de bienvenida con la configuración actual
236
- * @returns Buffer de la imagen generada
237
- * @throws {NekoError} Si faltan datos requeridos
238
- * @throws {Error} Si hay problemas al cargar imágenes
239
- */
240
- build(): Promise<Buffer>;
241
- }
242
-
243
- /**
244
- * Clase Usuario
245
- * Instancia al usuario que va a usar la api
246
- * @example
247
- * let { User } = require('neekuro')
248
- * let user = new User('token')
249
- */
250
- export class User {
251
- private token_: string | undefined;
252
- private getToken(): string;
253
-
254
- /**
255
- * puedes establecer el token a partir de aqui, pero recomiendo usar el metodo dedicado
256
- * @param token Token de la api
257
- */
220
+
221
+ /**
222
+ * Configura la tipografía para el texto de la imagen
223
+ * @param name Nombre de la fuente predefinida o 'custom' para personalizada
224
+ * @param dir Ruta al archivo .ttf (requerido si name='custom')
225
+ * @throws {NekoError} Si la fuente no existe o los parámetros son inválidos
226
+ */
227
+ setFont(name: FontNames, dir?: string): this;
228
+
229
+ /**
230
+ * Agrega un título a la imagen de bienvenida
231
+ * @param text Texto del título
232
+ * @param data Configuración opcional del título
233
+ * @throws {NekoError} Si los parámetros son inválidos
234
+ */
235
+ setTitle(text: string, data?: WelcomeTextData): this;
236
+
237
+ /**
238
+ * Agrega una descripción a la imagen de bienvenida
239
+ * @param text Texto de la descripción
240
+ * @param data Configuración opcional de la descripción
241
+ * @throws {NekoError} Si los parámetros son inválidos
242
+ */
243
+ setDescription(text: string, data?: WelcomeTextData): this;
244
+
245
+ /**
246
+ * Establece el fondo de la imagen (color o imagen)
247
+ * @param type Tipo de fondo ('color' o 'image')
248
+ * @param value Color hexadecimal o imagen (URL/Buffer)
249
+ * @throws {NekoError} Si los parámetros son inválidos
250
+ */
251
+ setBackground(type: 'color' | 'image', value: string | Buffer): this;
252
+
253
+ /**
254
+ * Establece el avatar y su configuración
255
+ * @param source URL o Buffer de la imagen (formatos soportados: JPEG, PNG, GIF)
256
+ * @param data Configuración opcional del avatar
257
+ * @throws {NekoError} Si los parámetros son inválidos o el formato no es soportado
258
+ */
259
+ setAvatar(source: string | Buffer, data?: WelcomeAvatarData): this;
260
+
261
+ /**
262
+ * Genera la imagen de bienvenida con la configuración actual
263
+ * @returns Buffer de la imagen generada
264
+ * @throws {NekoError} Si faltan datos requeridos
265
+ * @throws {Error} Si hay problemas al cargar imágenes
266
+ */
267
+ build(): Promise<Buffer>;
268
+ }
269
+
270
+ /**
271
+ * Clase Usuario
272
+ * Instancia al usuario que va a usar la api
273
+ * @example
274
+ * let { User } = require('neekuro')
275
+ * let user = new User('token')
276
+ */
277
+ export class User {
278
+ #private;
279
+ private token_: string | undefined;
280
+
281
+ /**
282
+ * puedes establecer el token a partir de aqui, pero recomiendo usar el metodo dedicado
283
+ * @param token Token de la api
284
+ */
258
285
  constructor(token?: string);
259
- /**
260
- * establece el token para usar la api
261
- * @example
262
- * // no tan recomendada (token expuesto)
263
- * user.setToken('mf3a***');
264
- * // recomendada (token oculto)
265
- * user.setToken(process.env['NeeKuroToken']);
266
- */
267
- public token(token: string): void;
268
- }
269
-
270
- /**
271
- * Clase NekoGif
272
- * Crea un objeto Gif a partir de la respuesta del servidor
273
- */
274
- export class NekoGif {
275
- private url: string | null;
276
- private anime: string | null;
277
-
278
- /**
279
- * Recepcion de la respuesta del servidor.
280
- * @param response respuesta del servidor
281
- */
282
- constructor(response: GifResponse);
283
-
284
- /**
285
- * Obten la url del gif
286
- * @returns {string | null} string: URL
287
- */
288
- public getUrl(): string | null;
289
- /**
290
- * Obten el anime del gif
291
- * @returns {string | null} string: Anime
292
- */
293
- public getAnime(): string | null;
294
- }
295
-
296
- /**
297
- * Clase BaseUser
298
- * Unicamente es para el manejo del token a traves de todo el paquete
299
- */
300
- export class BaseUser {
301
-
302
- /**
303
- * Obten el token del usuario si este ya se estableció
304
- * @returns {string} Token de usuario
305
- */
306
- public static getToken(): string
307
-
308
- /**
309
- * Establece el token "global" para todo el paquete
310
- * @param token token: token a establecer
311
- */
312
- public static setToken(token: string): void
313
- }
314
-
315
- /**
316
- * Clase APIClient
317
- * Se encarga de hacer las solicitudes al servidor
318
- */
286
+ /**
287
+ * establece el token para usar la api
288
+ * @example
289
+ * // no tan recomendada (token expuesto)
290
+ * user.token('mf3a***');
291
+ * // recomendada (token fuera del código fuente)
292
+ * user.token(process.env['NeeKuroToken']);
293
+ */
294
+ public token(token: string): void;
295
+ }
296
+
297
+ /**
298
+ * Clase NekoGif
299
+ * Crea un objeto Gif a partir de la respuesta del servidor
300
+ */
301
+ export class NekoGif {
302
+ private url: string | null;
303
+ private anime: string | null;
304
+
305
+ /**
306
+ * Recepcion de la respuesta del servidor.
307
+ * @param response respuesta del servidor
308
+ */
309
+ constructor(response: GifResponse);
310
+
311
+ /**
312
+ * Obten la url del gif
313
+ * @returns {string | null} string: URL
314
+ */
315
+ public getUrl(): string | null;
316
+ /**
317
+ * Obten el anime del gif
318
+ * @returns {string | null} string: Anime
319
+ */
320
+ public getAnime(): string | null;
321
+ }
322
+
323
+ /**
324
+ * Clase BaseUser
325
+ * Unicamente es para el manejo del token a traves de todo el paquete
326
+ */
327
+ export class BaseUser {
328
+
329
+ /**
330
+ * Obten el token del usuario si este ya se estableció
331
+ * @returns {string} Token de usuario
332
+ */
333
+ public static getToken(): string | null
334
+
335
+ /** Versión interna que cambia cuando se establece un token diferente. */
336
+ public static getTokenVersion(): number
337
+
338
+ /**
339
+ * Establece el token "global" para todo el paquete
340
+ * @param token token: token a establecer
341
+ */
342
+ public static setToken(token: string): void
343
+ }
344
+
345
+ /**
346
+ * Clase APIClient
347
+ * Se encarga de hacer las solicitudes al servidor
348
+ */
319
349
  export class APIClient {
320
- /**
321
- * Instanciamiento de la clase
322
- * @param baseUrl baseUrl: link principal de la api
323
- * @param data data: objeto para las solicitudes (unicamente requiere el token dentro)
324
- * @example
325
- * new APIClient('/ruta', { token: '***' });
326
- */
327
- constructor(baseUrl: string, data: APIClientData);
328
- /**
329
- * Obtiene el objeto compartido por la api rest a traves de la ruta y con autorizacion por token
330
- * @param endpoint establece la ruta a la que se quiere comunicar en la api
331
- * @throws {APIError} solo si sucede un error entre solicitudes
332
- */
333
- public get(endpoint: string, options?: { timeout?: number }): Promise<GifResponse>
334
- }
335
-
336
- /**
337
- * Clase APIError
338
- * Errores personalizados respecto a la api rest
339
- */
340
- export class APIError extends Error {
341
-
342
- /**
343
- * url a la que se realizo la solicitud
344
- */
345
- url: string;
346
-
347
- /**
348
- * codigo HTTP de la api
349
- */
350
- statusCode: number;
351
-
352
- /**
353
- * respuesta de la api
354
- */
355
- data: ApiResponse;
356
-
357
- /**
358
- * Determina el mensaje del error basado en el codigo
359
- * @param response respuesta de la api
360
- * @returns Mensaje de error
361
- */
362
- private determineMessage(response: ApiResponse): string;
363
-
364
- /**
365
- * Instanciamiento de un error de api
366
- * @param endpoint endpoint: ruta solicitada
350
+ /**
351
+ * Instanciamiento de la clase
352
+ * @param baseUrl baseUrl: link principal de la api
353
+ * @param data data: objeto para las solicitudes (unicamente requiere el token dentro)
354
+ * @example
355
+ * new APIClient('/ruta', { token: '***' });
356
+ */
357
+ constructor(baseUrl: string, data: APIClientData);
358
+ /**
359
+ * Obtiene el objeto compartido por la api rest a traves de la ruta y con autorizacion por token
360
+ * @param endpoint establece la ruta a la que se quiere comunicar en la api
361
+ * @throws {APIError} solo si sucede un error entre solicitudes
362
+ */
363
+ public get<T extends ApiResponse = GifResponse>(endpoint: string, options?: { timeout?: number }): Promise<T>
364
+ }
365
+
366
+ /**
367
+ * Clase APIError
368
+ * Errores personalizados respecto a la api rest
369
+ */
370
+ export class APIError extends Error {
371
+
372
+ /**
373
+ * url a la que se realizo la solicitud
374
+ */
375
+ url: string;
376
+
377
+ /**
378
+ * codigo HTTP de la api
379
+ */
380
+ statusCode: number;
381
+
382
+ /**
383
+ * respuesta de la api
384
+ */
385
+ data: ApiResponse;
386
+
387
+ /**
388
+ * Determina el mensaje del error basado en el codigo
389
+ * @param response respuesta de la api
390
+ * @returns Mensaje de error
391
+ */
392
+ static determineMessage(response?: ApiResponse): string;
393
+
394
+ /**
395
+ * Crea un error para fallos de red o timeout (código 503)
396
+ * @param endpoint ruta solicitada
397
+ * @param url URL completa de la solicitud
398
+ * @param message descripción del fallo
399
+ */
400
+ static fromNetworkError(endpoint: string, url: string, message: string): APIError;
401
+
402
+ /**
403
+ * Instanciamiento de un error de api
404
+ * @param endpoint endpoint: ruta solicitada
367
405
  * @param response respuesta HTTP o representación de un error de red
368
- * @param data data: objeto dado por la api
369
- */
406
+ * @param data data: objeto dado por la api
407
+ */
370
408
  constructor(endpoint: string, response: { url?: string; status?: number }, data: ApiResponse);
371
- }
372
-
373
- /**
374
- * Clase NekoError
375
- * Errores personalizados respecto al paquete
376
- */
409
+ }
410
+
411
+ /**
412
+ * Clase NekoError
413
+ * Errores personalizados respecto al paquete
414
+ */
377
415
  export class NekoError extends Error {
378
- /**
379
- * Instanciamiento de un error del paquete
380
- * @param name name: nombre del error
381
- * @param message message: mensaje del error
382
- */
383
- constructor(name: string, message: string);
416
+ /**
417
+ * Instanciamiento de un error del paquete
418
+ * @param name name: nombre del error
419
+ * @param message message: mensaje del error
420
+ */
421
+ constructor(name: string, message: string);
384
422
  }
385
423
 
386
424
  /** Alias heredado de versiones 2.0.x. Prefiere NekoError. */
387
425
  export { NekoError as Error };
388
-
426
+
389
427
  //#endregion