electron-injector 1.1.6 → 1.1.8

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 CHANGED
@@ -4,31 +4,62 @@
4
4
 
5
5
  Nace de la necesidad de crear aplicaciones de escritorio multiplataforma donde no solo importa la experiencia de usuario (UX), sino también una experiencia de desarrollo (DX) ágil y bien estructurada.
6
6
 
7
- ## ✨ Características
8
- Sistema de Inyección de Dependencias completo con contenedor IoC
7
+ ## ✨ ¿Por qué electron-injector?
8
+ Electron es poderoso pero su arquitectura multi-proceso puede volverse caótica rápidamente. electron-injector resuelve esto proporcionando:
9
9
 
10
- Decoradores para IPC (@OnSend, @OnInvoke) inspirados en NestJS
10
+ Arquitectura limpia - Separación clara de responsabilidades
11
11
 
12
- Gestión automática de handlers de Electron IPC
12
+ Código mantenible - DI/IoC para un acoplamiento reducido
13
13
 
14
- Soporte para Guards (autorización y validación)
14
+ Testing simplificado - Servicios fácilmente mockeables
15
15
 
16
- Metadata reflection para parametrización avanzada
16
+ Comunicación IPC tipada - Seguridad en tiempo de compilación
17
17
 
18
- Soporte para RxJS (Observables) en guards y handlers
18
+ Experiencia NestJS-like - Sintaxis familiar para full-stack developers
19
19
 
20
- ✅ Control de ciclo de vida (singleton/transient)
21
20
 
22
- Sistema de logging diferenciado (desarrollo/producción)
21
+ ## 🚀 Características
23
22
 
24
- Detección de dependencias circulares
23
+ ### Core
24
+ - Sistema de Inyección de Dependencias completo con contenedor IoC
25
+
26
+ - Decoradores inspirados en NestJS para IPC (@OnSend, @OnInvoke)
27
+
28
+ - Gestión automática de handlers de Electron IPC
29
+
30
+ - Tipado TypeScript completo con inferencia automática
31
+
32
+ ### Seguridad & Validación
33
+ - Guards para autorización y validación
34
+
35
+ - Integración con class-validator para DTOs tipados
36
+
37
+ - Metadata reflection para parametrización avanzada
38
+
39
+ ### Rendimiento & Control
40
+ - Control de ciclo de vida (singleton/transient)
41
+
42
+ - Detección de dependencias circulares
43
+
44
+ - Sistema de logging diferenciado (dev/prod)
45
+
46
+ - Soporte para RxJS en guards y handlers
25
47
 
26
- ✅ Tipado TypeScript completo
27
48
 
28
49
  ## 📦 Instalación
29
50
  ```bash
30
51
  npm install electron-injector rxjs class-validator class-transformer
31
52
  ```
53
+ ### Configuración TypeScript
54
+ Asegúrate de habilitar estos flags en tu tsconfig.json:
55
+ ```json
56
+ {
57
+ "compilerOptions": {
58
+ "experimentalDecorators": true,
59
+ "emitDecoratorMetadata": true
60
+ }
61
+ }
62
+ ```
32
63
 
33
64
  > **Nota:**
34
65
  > Si estás usando Vite, también debes instalar `@swc/core` y configurar el plugin correspondiente en tu archivo de configuración de Vite:
@@ -39,7 +70,7 @@ npm install electron-injector rxjs class-validator class-transformer
39
70
  >
40
71
  > Luego, agrega el plugin de SWC en tu `vite.config.js` o `vite.config.ts` según la documentación de Vite y el plugin que utilices.
41
72
 
42
- ## 1. Configuración Principal
73
+ ## 🎯 Empezando Rápido
43
74
  ```ts
44
75
  // main.ts
45
76
  import 'reflect-metadata';
@@ -58,7 +89,8 @@ function createWindow() {
58
89
  ...(process.platform === 'linux' ? { icon } : {}),
59
90
  webPreferences: {
60
91
  preload: join(__dirname, '../preload/index.js'),
61
- sandbox: false
92
+ sandbox: false,
93
+ partition: 'persist:your-app'
62
94
  }
63
95
  })
64
96
 
package/dist/index.cjs CHANGED
@@ -264,8 +264,8 @@ var Container = class {
264
264
  var import_debug = __toESM(require("debug"), 1);
265
265
  var prodLogger = (0, import_debug.default)("app:prod");
266
266
  var devLogger = (0, import_debug.default)("app:dev");
267
- if (process.env.APP_LOGGER && process.env.APP_LOGGER.toLowerCase() === "true") import_debug.default.enable("app:prod");
268
- else import_debug.default.enable("app:*");
267
+ if (process.env.APP_LOGGER && process.env.APP_LOGGER.toLowerCase() === "true") import_debug.default.enable("app:*");
268
+ else import_debug.default.enable("app:prod");
269
269
  var PROD_LOGGER = prodLogger;
270
270
  var DEV_LOGGER = devLogger;
271
271
 
@@ -323,10 +323,7 @@ var Application = class _Application {
323
323
  for (const guard of guards) {
324
324
  try {
325
325
  const response = await this.guardExecute(guard, executionContext);
326
- if (!response) return {
327
- success: false,
328
- error: new ForbiddenAccessError(path, guard.constructor.prototype.name)
329
- };
326
+ if (!response) throw new ForbiddenAccessError(path, guard.constructor.prototype.name);
330
327
  } catch (e) {
331
328
  return await this.useFilter(e, executionContext);
332
329
  }
package/dist/index.js CHANGED
@@ -208,8 +208,8 @@ var Container = class {
208
208
  import debug from "debug";
209
209
  var prodLogger = debug("app:prod");
210
210
  var devLogger = debug("app:dev");
211
- if (process.env.APP_LOGGER && process.env.APP_LOGGER.toLowerCase() === "true") debug.enable("app:prod");
212
- else debug.enable("app:*");
211
+ if (process.env.APP_LOGGER && process.env.APP_LOGGER.toLowerCase() === "true") debug.enable("app:*");
212
+ else debug.enable("app:prod");
213
213
  var PROD_LOGGER = prodLogger;
214
214
  var DEV_LOGGER = devLogger;
215
215
 
@@ -267,10 +267,7 @@ var Application = class _Application {
267
267
  for (const guard of guards) {
268
268
  try {
269
269
  const response = await this.guardExecute(guard, executionContext);
270
- if (!response) return {
271
- success: false,
272
- error: new ForbiddenAccessError(path, guard.constructor.prototype.name)
273
- };
270
+ if (!response) throw new ForbiddenAccessError(path, guard.constructor.prototype.name);
274
271
  } catch (e) {
275
272
  return await this.useFilter(e, executionContext);
276
273
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "electron-injector",
3
- "version": "1.1.6",
3
+ "version": "1.1.8",
4
4
  "description": "Biblioteca para el desarrollo de aplicaciones con electron que proporciona una arquitectura robusta con inyección e inversion de dependencias.",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",