zeti-framework 0.1.0 → 0.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,244 +1,244 @@
1
- # @zeti/framework
2
-
3
- Framework Hono com suporte a multi-tenancy, Prisma e Swagger automático.
4
-
5
- ## 🚀 Instalação
6
-
7
- ```bash
8
- npm install @zeti/framework @prisma/client
9
- # ou
10
- pnpm add @zeti/framework @prisma/client
11
- # ou
12
- yarn add @zeti/framework @prisma/client
13
- ```
14
-
15
- ## 🔨 Build
16
-
17
- A biblioteca usa TypeScript compiler padrão, funciona com qualquer gerenciador de pacotes:
18
-
19
- ```bash
20
- # Build
21
- npm run build
22
-
23
- # Desenvolvimento (watch mode)
24
- npm run dev
25
- ```
26
-
27
- > **Nota sobre Performance:** O uso de `tsc` ao invés de Bun não afeta a performance da biblioteca em runtime. O código JavaScript compilado é idêntico e roda com a mesma velocidade. A única diferença é no tempo de build durante desenvolvimento. Veja `PERFORMANCE.md` para mais detalhes.
28
-
29
- ## 📖 Uso Básico
30
-
31
- ### 1. Configuração
32
-
33
- ```typescript
34
- // zeti.config.ts
35
- import { defineZetiConfig } from '@zeti/framework';
36
- import { PrismaClient } from '@prisma/client';
37
-
38
- export default defineZetiConfig({
39
- databases: {
40
- connections: {
41
- main: process.env.DATABASE_URL!,
42
- mongo: process.env.MONGO_URL!,
43
- },
44
- cache: {
45
- maxClients: 50,
46
- ttl: 300000,
47
- cleanupInterval: 60000,
48
- },
49
- },
50
- specialDatabases: {
51
- analytics: process.env.ANALYTICS_DB_URL!,
52
- },
53
- prisma: {
54
- adapter: 'pg',
55
- logLevel: ['error'],
56
- },
57
- swagger: {
58
- enabled: true,
59
- title: 'My API',
60
- version: '1.0.0',
61
- servers: [{ url: 'http://localhost:3334' }],
62
- },
63
- errorHandler: {
64
- // Opcional: customizar formatação de erros
65
- formatError: (error, context) => {
66
- // Sua lógica customizada
67
- return { data: null, status: 500, message: 'Error' };
68
- },
69
- // Opcional: customizar logging
70
- logError: (error, context) => {
71
- console.error('Error:', error);
72
- },
73
- },
74
- middlewares: {
75
- global: [
76
- // Middlewares globais
77
- ],
78
- named: {
79
- // Middlewares nomeados
80
- auth: createAuthMiddleware({ jwtSecret: '...' }),
81
- requireRole: (roles: string[]) => createRoleMiddleware(roles),
82
- },
83
- },
84
- });
85
- ```
86
-
87
- ### 2. Inicialização
88
-
89
- ```typescript
90
- // src/zeti/index.ts
91
- import { createZetiApp } from '@zeti/framework';
92
- import { PrismaClient } from '@prisma/client';
93
- import config from '../../zeti.config';
94
-
95
- /**
96
- * IMPORTANTE: Passe o PrismaClient como generic para inferência de tipos
97
- *
98
- * Isso permite que TypeScript saiba todos os modelos do seu schema.prisma
99
- * e forneça autocomplete completo em todas as rotas!
100
- */
101
- const app = createZetiApp<PrismaClient>({
102
- config,
103
- prismaClient: PrismaClient,
104
- });
105
-
106
- export const { get, post, put, del, patch } = app;
107
- export const { honoApp } = app;
108
- ```
109
-
110
- ### 3. Criar Rotas
111
-
112
- ```typescript
113
- // src/controllers/users/get.ts
114
- import { get } from '../../zeti';
115
-
116
- get('/users', {
117
- middleware: {
118
- use: ['auth'],
119
- schema: (z) => ({
120
- query: {
121
- page: z.number().optional(),
122
- },
123
- }),
124
- },
125
- route: async ({ db, query, user }) => {
126
- /**
127
- * db é automaticamente tipado como PrismaClient do seu projeto!
128
- *
129
- * TypeScript sabe todos os modelos do seu schema.prisma:
130
- * - db.user ✅
131
- * - db.post ✅
132
- * - etc...
133
- *
134
- * Autocomplete funciona perfeitamente!
135
- */
136
- const users = await db.user.findMany({
137
- skip: query.page ? (query.page - 1) * 10 : 0,
138
- take: 10,
139
- });
140
- return { data: users };
141
- },
142
- });
143
- ```
144
-
145
- ## 🔍 Como Funciona a Inferência de Tipos?
146
-
147
- A biblioteca usa **TypeScript Generics** para propagar o tipo do `PrismaClient` do seu projeto para todas as rotas.
148
-
149
- ### Fluxo de Inferência
150
-
151
- 1. **Você passa o tipo:**
152
- ```typescript
153
- const app = createZetiApp<PrismaClient>({ ... });
154
- ```
155
-
156
- 2. **Biblioteca propaga o tipo:**
157
- ```typescript
158
- // Internamente
159
- ZetiApp<TPrisma> → ZetiMethodOptions<..., TPrisma> → ZetiRouteProps<..., TPrisma>
160
- ```
161
-
162
- 3. **Nas rotas, `db` é tipado automaticamente:**
163
- ```typescript
164
- route: async ({ db }) => {
165
- // db é PrismaClient do seu projeto!
166
- await db.user.findMany(); // ✅ Autocomplete funciona!
167
- }
168
- ```
169
-
170
- Veja `examples/type-inference-explained.md` para explicação detalhada.
171
-
172
- ## 🔧 Middlewares Customizados
173
-
174
- A biblioteca não implementa lógica de negócio. Você define seus próprios middlewares:
175
-
176
- ```typescript
177
- // src/middleware/auth.ts
178
- import { Middleware } from 'hono';
179
-
180
- export function createAuthMiddleware(config: {
181
- jwtSecret: string;
182
- }): Middleware {
183
- return async (c, next) => {
184
- // Sua lógica de autenticação
185
- const user = await verifyToken(c.req.header('authorization'));
186
- c.set('user', user);
187
- await next();
188
- };
189
- }
190
- ```
191
-
192
- ## 🔧 Scripts de Geração
193
-
194
- A biblioteca inclui scripts para gerar automaticamente:
195
-
196
- ### 1. Registry de Controllers
197
-
198
- Gera imports automáticos dos controllers:
199
-
200
- ```typescript
201
- import { generateRegistry } from '@zeti/framework';
202
-
203
- await generateRegistry({
204
- controllersPath: './src/controllers',
205
- indexPath: './src/zeti/index.ts',
206
- });
207
- ```
208
-
209
- ### 2. Tipos do Swagger
210
-
211
- Gera schemas Zod a partir dos tipos de retorno das rotas:
212
-
213
- ```typescript
214
- import { generateSwaggerTypes } from '@zeti/framework';
215
-
216
- await generateSwaggerTypes({
217
- controllersPath: './src/controllers',
218
- outputPath: './src/zeti/swagger-schemas.generated.ts',
219
- });
220
- ```
221
-
222
- ### Uso no package.json
223
-
224
- ```json
225
- {
226
- "scripts": {
227
- "prebuild": "node --loader ts-node/esm scripts/generate-swagger.ts",
228
- "build": "tsc"
229
- }
230
- }
231
- ```
232
-
233
- Veja `examples/scripts-usage.ts` para mais detalhes.
234
-
235
- ## 📚 Documentação Completa
236
-
237
- - `examples/scripts-usage.ts` - Uso dos scripts de geração
238
- - `examples/graceful-shutdown.ts` - Graceful shutdown
239
- - `examples/database-config-example.ts` - Configuração de databases
240
- - `examples/metrics-usage.ts` - Uso de métricas
241
-
242
- ## 📝 Licença
243
-
244
- MIT
1
+ # zeti-framework
2
+
3
+ Framework Hono com suporte a multi-tenancy, Prisma e Swagger automático.
4
+
5
+ ## 🚀 Instalação
6
+
7
+ ```bash
8
+ npm install zeti-framework @prisma/client
9
+ # ou
10
+ pnpm add zeti-framework @prisma/client
11
+ # ou
12
+ yarn add zeti-framework @prisma/client
13
+ ```
14
+
15
+ ## 🔨 Build
16
+
17
+ A biblioteca usa TypeScript compiler padrão, funciona com qualquer gerenciador de pacotes:
18
+
19
+ ```bash
20
+ # Build
21
+ npm run build
22
+
23
+ # Desenvolvimento (watch mode)
24
+ npm run dev
25
+ ```
26
+
27
+ > **Nota sobre Performance:** O uso de `tsc` ao invés de Bun não afeta a performance da biblioteca em runtime. O código JavaScript compilado é idêntico e roda com a mesma velocidade. A única diferença é no tempo de build durante desenvolvimento. Veja `PERFORMANCE.md` para mais detalhes.
28
+
29
+ ## 📖 Uso Básico
30
+
31
+ ### 1. Configuração
32
+
33
+ ```typescript
34
+ // zeti.config.ts
35
+ import { defineZetiConfig } from 'zeti-framework';
36
+ import { PrismaClient } from '@prisma/client';
37
+
38
+ export default defineZetiConfig({
39
+ databases: {
40
+ connections: {
41
+ main: process.env.DATABASE_URL!,
42
+ mongo: process.env.MONGO_URL!,
43
+ },
44
+ cache: {
45
+ maxClients: 50,
46
+ ttl: 300000,
47
+ cleanupInterval: 60000,
48
+ },
49
+ },
50
+ specialDatabases: {
51
+ analytics: process.env.ANALYTICS_DB_URL!,
52
+ },
53
+ prisma: {
54
+ adapter: 'pg',
55
+ logLevel: ['error'],
56
+ },
57
+ swagger: {
58
+ enabled: true,
59
+ title: 'My API',
60
+ version: '1.0.0',
61
+ servers: [{ url: 'http://localhost:3334' }],
62
+ },
63
+ errorHandler: {
64
+ // Opcional: customizar formatação de erros
65
+ formatError: (error, context) => {
66
+ // Sua lógica customizada
67
+ return { data: null, status: 500, message: 'Error' };
68
+ },
69
+ // Opcional: customizar logging
70
+ logError: (error, context) => {
71
+ console.error('Error:', error);
72
+ },
73
+ },
74
+ middlewares: {
75
+ global: [
76
+ // Middlewares globais
77
+ ],
78
+ named: {
79
+ // Middlewares nomeados
80
+ auth: createAuthMiddleware({ jwtSecret: '...' }),
81
+ requireRole: (roles: string[]) => createRoleMiddleware(roles),
82
+ },
83
+ },
84
+ });
85
+ ```
86
+
87
+ ### 2. Inicialização
88
+
89
+ ```typescript
90
+ // src/zeti/index.ts
91
+ import { createZetiApp } from 'zeti-framework';
92
+ import { PrismaClient } from '@prisma/client';
93
+ import config from '../../zeti.config';
94
+
95
+ /**
96
+ * IMPORTANTE: Passe o PrismaClient como generic para inferência de tipos
97
+ *
98
+ * Isso permite que TypeScript saiba todos os modelos do seu schema.prisma
99
+ * e forneça autocomplete completo em todas as rotas!
100
+ */
101
+ const app = createZetiApp<PrismaClient>({
102
+ config,
103
+ prismaClient: PrismaClient,
104
+ });
105
+
106
+ export const { get, post, put, del, patch } = app;
107
+ export const { honoApp } = app;
108
+ ```
109
+
110
+ ### 3. Criar Rotas
111
+
112
+ ```typescript
113
+ // src/controllers/users/get.ts
114
+ import { get } from '../../zeti';
115
+
116
+ get('/users', {
117
+ middleware: {
118
+ use: ['auth'],
119
+ schema: (z) => ({
120
+ query: {
121
+ page: z.number().optional(),
122
+ },
123
+ }),
124
+ },
125
+ route: async ({ db, query, user }) => {
126
+ /**
127
+ * db é automaticamente tipado como PrismaClient do seu projeto!
128
+ *
129
+ * TypeScript sabe todos os modelos do seu schema.prisma:
130
+ * - db.user ✅
131
+ * - db.post ✅
132
+ * - etc...
133
+ *
134
+ * Autocomplete funciona perfeitamente!
135
+ */
136
+ const users = await db.user.findMany({
137
+ skip: query.page ? (query.page - 1) * 10 : 0,
138
+ take: 10,
139
+ });
140
+ return { data: users };
141
+ },
142
+ });
143
+ ```
144
+
145
+ ## 🔍 Como Funciona a Inferência de Tipos?
146
+
147
+ A biblioteca usa **TypeScript Generics** para propagar o tipo do `PrismaClient` do seu projeto para todas as rotas.
148
+
149
+ ### Fluxo de Inferência
150
+
151
+ 1. **Você passa o tipo:**
152
+ ```typescript
153
+ const app = createZetiApp<PrismaClient>({ ... });
154
+ ```
155
+
156
+ 2. **Biblioteca propaga o tipo:**
157
+ ```typescript
158
+ // Internamente
159
+ ZetiApp<TPrisma> → ZetiMethodOptions<..., TPrisma> → ZetiRouteProps<..., TPrisma>
160
+ ```
161
+
162
+ 3. **Nas rotas, `db` é tipado automaticamente:**
163
+ ```typescript
164
+ route: async ({ db }) => {
165
+ // db é PrismaClient do seu projeto!
166
+ await db.user.findMany(); // ✅ Autocomplete funciona!
167
+ }
168
+ ```
169
+
170
+ Veja `examples/type-inference-explained.md` para explicação detalhada.
171
+
172
+ ## 🔧 Middlewares Customizados
173
+
174
+ A biblioteca não implementa lógica de negócio. Você define seus próprios middlewares:
175
+
176
+ ```typescript
177
+ // src/middleware/auth.ts
178
+ import { Middleware } from 'hono';
179
+
180
+ export function createAuthMiddleware(config: {
181
+ jwtSecret: string;
182
+ }): Middleware {
183
+ return async (c, next) => {
184
+ // Sua lógica de autenticação
185
+ const user = await verifyToken(c.req.header('authorization'));
186
+ c.set('user', user);
187
+ await next();
188
+ };
189
+ }
190
+ ```
191
+
192
+ ## 🔧 Scripts de Geração
193
+
194
+ A biblioteca inclui scripts para gerar automaticamente:
195
+
196
+ ### 1. Registry de Controllers
197
+
198
+ Gera imports automáticos dos controllers:
199
+
200
+ ```typescript
201
+ import { generateRegistry } from 'zeti-framework';
202
+
203
+ await generateRegistry({
204
+ controllersPath: './src/controllers',
205
+ indexPath: './src/zeti/index.ts',
206
+ });
207
+ ```
208
+
209
+ ### 2. Tipos do Swagger
210
+
211
+ Gera schemas Zod a partir dos tipos de retorno das rotas:
212
+
213
+ ```typescript
214
+ import { generateSwaggerTypes } from '@zeti/framework';
215
+
216
+ await generateSwaggerTypes({
217
+ controllersPath: './src/controllers',
218
+ outputPath: './src/zeti/swagger-schemas.generated.ts',
219
+ });
220
+ ```
221
+
222
+ ### Uso no package.json
223
+
224
+ ```json
225
+ {
226
+ "scripts": {
227
+ "prebuild": "node --loader ts-node/esm scripts/generate-swagger.ts",
228
+ "build": "tsc"
229
+ }
230
+ }
231
+ ```
232
+
233
+ Veja `examples/scripts-usage.ts` para mais detalhes.
234
+
235
+ ## 📚 Documentação Completa
236
+
237
+ - `examples/scripts-usage.ts` - Uso dos scripts de geração
238
+ - `examples/graceful-shutdown.ts` - Graceful shutdown
239
+ - `examples/database-config-example.ts` - Configuração de databases
240
+ - `examples/metrics-usage.ts` - Uso de métricas
241
+
242
+ ## 📝 Licença
243
+
244
+ MIT
@@ -45,4 +45,17 @@ export declare function createZetiApp<TPrisma extends PrismaClientBase = PrismaC
45
45
  config: ZetiConfig;
46
46
  prismaClient: new (...args: any[]) => TPrisma;
47
47
  }): ZetiApp<TPrisma, TUser>;
48
+ export declare function initializeZetiApp<TPrisma extends PrismaClientBase = PrismaClientBase, TUser = any>(options: {
49
+ config: ZetiConfig;
50
+ prismaClient: new (...args: any[]) => TPrisma;
51
+ }): ZetiApp<TPrisma, TUser>;
52
+ export declare function generateSwaggerFromGlobal(loadGeneratedSchemas?: () => Promise<{
53
+ routeResponseSchemas: Record<string, Record<string, {
54
+ schema: any;
55
+ ref: string | null;
56
+ }>>;
57
+ namedSchemas: Record<string, any>;
58
+ }>): any;
59
+ export declare function getZetiApp(): ZetiApp<any, any> | null;
60
+ export declare const honoRoutesZeti: Hono<import("hono/types").BlankEnv, import("hono/types").BlankSchema, "/">;
48
61
  //# sourceMappingURL=framework.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"framework.d.ts","sourceRoot":"","sources":["../../src/core/framework.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAG5B,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,KAAK,EACV,iBAAiB,EAEjB,gBAAgB,EAKjB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAItD,MAAM,WAAW,OAAO,CACtB,OAAO,SAAS,gBAAgB,GAAG,gBAAgB,EACnD,KAAK,GAAG,GAAG;IAEX,GAAG,EAAE,CAAC,KAAK,SAAS,MAAM,EAAE,OAAO,SAAS,gBAAgB,GAAG,EAAE,EAC/D,GAAG,EAAE,KAAK,EACV,OAAO,EAAE,iBAAiB,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,KACvD,IAAI,CAAC;IAEV,IAAI,EAAE,CAAC,KAAK,SAAS,MAAM,EAAE,OAAO,SAAS,gBAAgB,GAAG,EAAE,EAChE,GAAG,EAAE,KAAK,EACV,OAAO,EAAE,iBAAiB,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,KACvD,IAAI,CAAC;IAEV,GAAG,EAAE,CAAC,KAAK,SAAS,MAAM,EAAE,OAAO,SAAS,gBAAgB,GAAG,EAAE,EAC/D,GAAG,EAAE,KAAK,EACV,OAAO,EAAE,iBAAiB,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,KACvD,IAAI,CAAC;IAEV,GAAG,EAAE,CAAC,KAAK,SAAS,MAAM,EAAE,OAAO,SAAS,gBAAgB,GAAG,EAAE,EAC/D,GAAG,EAAE,KAAK,EACV,OAAO,EAAE,iBAAiB,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,KACvD,IAAI,CAAC;IAEV,KAAK,EAAE,CAAC,KAAK,SAAS,MAAM,EAAE,OAAO,SAAS,gBAAgB,GAAG,EAAE,EACjE,GAAG,EAAE,KAAK,EACV,OAAO,EAAE,iBAAiB,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,KACvD,IAAI,CAAC;IAEV,OAAO,EAAE,IAAI,CAAC;IACd,eAAe,EAAE,eAAe,CAAC;IACjC,aAAa,EAAE,aAAa,CAAC;IAC7B,QAAQ,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC/B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,aAAa,CAC3B,OAAO,SAAS,gBAAgB,GAAG,gBAAgB,EACnD,KAAK,GAAG,GAAG,EACX,OAAO,EAAE;IACT,MAAM,EAAE,UAAU,CAAC;IACnB,YAAY,EAAE,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,OAAO,CAAC;CAC/C,GAAG,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,CA4P1B"}
1
+ {"version":3,"file":"framework.d.ts","sourceRoot":"","sources":["../../src/core/framework.ts"],"names":[],"mappings":"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"}
@@ -35,10 +35,65 @@ export function createZetiApp(options) {
35
35
  const honoApp = new Hono();
36
36
  const tenantManager = new TenantManager(config.databases, config.prisma, config.specialDatabases);
37
37
  const swaggerRegistry = new SwaggerRegistry();
38
+ // Aplica logger se habilitado
39
+ if (config.logger !== false) {
40
+ // eslint-disable-next-line @typescript-eslint/no-require-imports
41
+ const { logger } = require('hono/logger');
42
+ honoApp.use('*', logger());
43
+ }
44
+ // Aplica CORS se habilitado
45
+ if (config.cors?.enabled !== false) {
46
+ // eslint-disable-next-line @typescript-eslint/no-require-imports
47
+ const { cors } = require('hono/cors');
48
+ honoApp.use('*', cors({
49
+ origin: config.cors?.origin || '*',
50
+ allowMethods: config.cors?.allowMethods || ['GET', 'HEAD', 'PUT', 'PATCH', 'POST', 'DELETE', 'OPTIONS'],
51
+ allowHeaders: config.cors?.allowHeaders || ['*'],
52
+ credentials: config.cors?.credentials !== false,
53
+ maxAge: config.cors?.maxAge,
54
+ }));
55
+ }
56
+ // Aplica error handler
38
57
  if (config.errorHandler !== false) {
39
58
  const errorHandlerConfig = typeof config.errorHandler === 'object' ? config.errorHandler : undefined;
40
59
  honoApp.use('*', createErrorHandler(errorHandlerConfig));
41
60
  }
61
+ // Adiciona rotas do Swagger se habilitado
62
+ if (config.swagger.enabled) {
63
+ const uiPath = config.swagger.uiPath || '/swagger';
64
+ const docPath = config.swagger.docPath || '/swagger/doc';
65
+ // eslint-disable-next-line @typescript-eslint/no-require-imports
66
+ const { swaggerUI } = require('@hono/swagger-ui');
67
+ honoApp.get(uiPath, swaggerUI({ url: docPath }));
68
+ honoApp.get(docPath, async (c) => {
69
+ const { generateSwagger } = await import('../swagger/generator');
70
+ const spec = await generateSwagger(swaggerRegistry, config.swagger, {
71
+ loadGeneratedSchemas: async () => {
72
+ try {
73
+ // Tenta carregar schemas gerados se o outputPath estiver configurado
74
+ if (config.swagger.outputPath) {
75
+ const generated = await import(config.swagger.outputPath.replace(/\.ts$/, '.js'));
76
+ return {
77
+ routeResponseSchemas: generated.routeResponseSchemas || {},
78
+ namedSchemas: generated.namedSchemas || {},
79
+ };
80
+ }
81
+ return {
82
+ routeResponseSchemas: {},
83
+ namedSchemas: {},
84
+ };
85
+ }
86
+ catch {
87
+ return {
88
+ routeResponseSchemas: {},
89
+ namedSchemas: {},
90
+ };
91
+ }
92
+ },
93
+ });
94
+ return c.json(spec);
95
+ });
96
+ }
42
97
  const createMethod = (httpMethod) => {
43
98
  return (url, options) => {
44
99
  const middlewares = [];
@@ -233,4 +288,45 @@ export function createZetiApp(options) {
233
288
  },
234
289
  };
235
290
  }
291
+ let globalAppInstance = null;
292
+ let globalHonoApp = null;
293
+ let globalConfig = null;
294
+ export function initializeZetiApp(options) {
295
+ if (globalAppInstance) {
296
+ return globalAppInstance;
297
+ }
298
+ if (options.config.auth?.jwt) {
299
+ // eslint-disable-next-line @typescript-eslint/no-require-imports
300
+ const { setJwtConfig } = require('../utils/jwt');
301
+ setJwtConfig({
302
+ secret: options.config.auth.jwt.secret || process.env.JWT_SECRET || '',
303
+ expiresIn: options.config.auth.jwt.expiresIn || '14d',
304
+ });
305
+ }
306
+ globalConfig = options.config;
307
+ globalAppInstance = createZetiApp(options);
308
+ globalHonoApp = globalAppInstance.honoApp;
309
+ return globalAppInstance;
310
+ }
311
+ export function generateSwaggerFromGlobal(loadGeneratedSchemas) {
312
+ if (!globalAppInstance || !globalConfig) {
313
+ throw new Error('Zeti app não foi inicializado. Chame initializeZetiApp() primeiro.');
314
+ }
315
+ // eslint-disable-next-line @typescript-eslint/no-require-imports
316
+ const { generateSwagger } = require('../swagger/generator');
317
+ return generateSwagger(globalAppInstance.swaggerRegistry, globalConfig.swagger, {
318
+ loadGeneratedSchemas,
319
+ });
320
+ }
321
+ export function getZetiApp() {
322
+ return globalAppInstance;
323
+ }
324
+ export const honoRoutesZeti = new Proxy({}, {
325
+ get(_target, prop) {
326
+ if (!globalHonoApp) {
327
+ throw new Error('Zeti app não foi inicializado. Chame initializeZetiApp() primeiro.');
328
+ }
329
+ return globalHonoApp[prop];
330
+ },
331
+ });
236
332
  //# sourceMappingURL=framework.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"framework.js","sourceRoot":"","sources":["../../src/core/framework.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"framework.js","sourceRoot":"","sources":["../../src/core/framework.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -7,6 +7,10 @@ export * from './tenants/metrics';
7
7
  export * from './swagger/generator';
8
8
  export * from './swagger/registry';
9
9
  export * from './utils/error-handler';
10
+ export * from './utils/password';
11
+ export * from './utils/jwt';
12
+ export * from './utils/http-exceptions';
10
13
  export * from './scripts/generate-registry';
11
14
  export * from './scripts/generate-swagger-types';
15
+ export { initializeZetiApp, getZetiApp, honoRoutesZeti, generateSwaggerFromGlobal } from './core/framework';
12
16
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,uBAAuB,CAAC;AACtC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,kCAAkC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,uBAAuB,CAAC;AACtC,cAAc,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC;AAC5B,cAAc,yBAAyB,CAAC;AACxC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,kCAAkC,CAAC;AAEjD,OAAO,EAAE,iBAAiB,EAAE,UAAU,EAAE,cAAc,EAAE,yBAAyB,EAAE,MAAM,kBAAkB,CAAC"}
package/dist/index.js CHANGED
@@ -7,6 +7,10 @@ export * from './tenants/metrics';
7
7
  export * from './swagger/generator';
8
8
  export * from './swagger/registry';
9
9
  export * from './utils/error-handler';
10
+ export * from './utils/password';
11
+ export * from './utils/jwt';
12
+ export * from './utils/http-exceptions';
10
13
  export * from './scripts/generate-registry';
11
14
  export * from './scripts/generate-swagger-types';
15
+ export { initializeZetiApp, getZetiApp, honoRoutesZeti, generateSwaggerFromGlobal } from './core/framework';
12
16
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,uBAAuB,CAAC;AACtC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,kCAAkC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,uBAAuB,CAAC;AACtC,cAAc,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC;AAC5B,cAAc,yBAAyB,CAAC;AACxC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,kCAAkC,CAAC;AAEjD,OAAO,EAAE,iBAAiB,EAAE,UAAU,EAAE,cAAc,EAAE,yBAAyB,EAAE,MAAM,kBAAkB,CAAC"}
@@ -21,6 +21,14 @@ export interface ZetiPrismaConfig {
21
21
  connectionTimeoutMillis?: number;
22
22
  };
23
23
  }
24
+ export interface ZetiCorsConfig {
25
+ enabled?: boolean;
26
+ origin?: string | string[] | ((origin: string) => boolean);
27
+ allowMethods?: string[];
28
+ allowHeaders?: string[];
29
+ credentials?: boolean;
30
+ maxAge?: number;
31
+ }
24
32
  export interface ZetiSwaggerConfig {
25
33
  enabled: boolean;
26
34
  title: string;
@@ -31,6 +39,8 @@ export interface ZetiSwaggerConfig {
31
39
  }>;
32
40
  outputPath?: string;
33
41
  generateOnBuild?: boolean;
42
+ uiPath?: string;
43
+ docPath?: string;
34
44
  }
35
45
  export interface ZetiHeadersConfig {
36
46
  tenant?: string;
@@ -47,13 +57,24 @@ export interface ZetiMiddlewareConfig {
47
57
  named?: Record<string, Middleware | ((...args: any[]) => Middleware)>;
48
58
  }
49
59
  import type { ZetiErrorHandlerConfig } from '../utils/error-handler';
60
+ export interface ZetiAuthConfig {
61
+ jwt?: {
62
+ secret?: string;
63
+ expiresIn?: string;
64
+ };
65
+ password?: {
66
+ bcryptSaltRounds?: number;
67
+ };
68
+ }
50
69
  export interface ZetiConfig {
51
70
  databases: ZetiDatabaseConfig;
52
71
  specialDatabases?: Record<string, string>;
53
72
  prisma: ZetiPrismaConfig;
54
73
  swagger: ZetiSwaggerConfig;
55
74
  tenant?: ZetiTenantConfig;
56
- auth?: Record<string, any>;
75
+ cors?: ZetiCorsConfig;
76
+ logger?: boolean;
77
+ auth?: ZetiAuthConfig;
57
78
  headers?: ZetiHeadersConfig;
58
79
  middlewares?: ZetiMiddlewareConfig;
59
80
  errorHandler?: ZetiErrorHandlerConfig | boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/types/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/types/config.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/types/config.ts"],"names":[],"mappings":"AAwEA,MAAM,UAAU,gBAAgB,CAAC,MAAkB;IACjD,OAAO,MAAM,CAAC;AAChB,CAAC"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/types/config.ts"],"names":[],"mappings":"AA+FA,MAAM,UAAU,gBAAgB,CAAC,MAAkB;IACjD,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -0,0 +1,9 @@
1
+ export declare function badRequestError(message: string, cause?: any): never;
2
+ export declare function unauthorizedError(message: string, cause?: any): never;
3
+ export declare function forbiddenError(message: string, cause?: any): never;
4
+ export declare function notFoundError(message: string, cause?: any): never;
5
+ export declare function conflictError(message: string, cause?: any): never;
6
+ export declare function goneError(message: string, cause?: any): never;
7
+ export declare function unprocessableEntityError(message: string, cause?: any): never;
8
+ export declare function internalServerError(message: string, cause?: any): never;
9
+ //# sourceMappingURL=http-exceptions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http-exceptions.d.ts","sourceRoot":"","sources":["../../src/utils/http-exceptions.ts"],"names":[],"mappings":"AAEA,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,GAAG,GAAG,KAAK,CAEnE;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,GAAG,GAAG,KAAK,CAErE;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,GAAG,GAAG,KAAK,CAElE;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,GAAG,GAAG,KAAK,CAEjE;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,GAAG,GAAG,KAAK,CAEjE;AAED,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,GAAG,GAAG,KAAK,CAE7D;AAED,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,GAAG,GAAG,KAAK,CAE5E;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,GAAG,GAAG,KAAK,CAEvE"}
@@ -0,0 +1,26 @@
1
+ import { HTTPException } from 'hono/http-exception';
2
+ export function badRequestError(message, cause) {
3
+ throw new HTTPException(400, { message, cause });
4
+ }
5
+ export function unauthorizedError(message, cause) {
6
+ throw new HTTPException(401, { message, cause });
7
+ }
8
+ export function forbiddenError(message, cause) {
9
+ throw new HTTPException(403, { message, cause });
10
+ }
11
+ export function notFoundError(message, cause) {
12
+ throw new HTTPException(404, { message, cause });
13
+ }
14
+ export function conflictError(message, cause) {
15
+ throw new HTTPException(409, { message, cause });
16
+ }
17
+ export function goneError(message, cause) {
18
+ throw new HTTPException(410, { message, cause });
19
+ }
20
+ export function unprocessableEntityError(message, cause) {
21
+ throw new HTTPException(422, { message, cause });
22
+ }
23
+ export function internalServerError(message, cause) {
24
+ throw new HTTPException(500, { message, cause });
25
+ }
26
+ //# sourceMappingURL=http-exceptions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http-exceptions.js","sourceRoot":"","sources":["../../src/utils/http-exceptions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEpD,MAAM,UAAU,eAAe,CAAC,OAAe,EAAE,KAAW;IAC1D,MAAM,IAAI,aAAa,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;AACnD,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,OAAe,EAAE,KAAW;IAC5D,MAAM,IAAI,aAAa,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;AACnD,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,OAAe,EAAE,KAAW;IACzD,MAAM,IAAI,aAAa,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;AACnD,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,OAAe,EAAE,KAAW;IACxD,MAAM,IAAI,aAAa,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;AACnD,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,OAAe,EAAE,KAAW;IACxD,MAAM,IAAI,aAAa,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;AACnD,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,OAAe,EAAE,KAAW;IACpD,MAAM,IAAI,aAAa,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;AACnD,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,OAAe,EAAE,KAAW;IACnE,MAAM,IAAI,aAAa,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;AACnD,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,OAAe,EAAE,KAAW;IAC9D,MAAM,IAAI,aAAa,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;AACnD,CAAC"}
@@ -0,0 +1,15 @@
1
+ export interface ZetiJwtConfig {
2
+ secret: string;
3
+ expiresIn?: string;
4
+ }
5
+ export interface TokenPayload {
6
+ id: string;
7
+ iat?: number;
8
+ exp?: number;
9
+ [key: string]: any;
10
+ }
11
+ export declare function setJwtConfig(config: ZetiJwtConfig): void;
12
+ export declare function getJwtConfig(): ZetiJwtConfig | null;
13
+ export declare function signToken(payload: Omit<TokenPayload, 'iat' | 'exp'>, config?: ZetiJwtConfig): string;
14
+ export declare function verifyToken(token: string, config?: ZetiJwtConfig): TokenPayload;
15
+ //# sourceMappingURL=jwt.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jwt.d.ts","sourceRoot":"","sources":["../../src/utils/jwt.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB;AAID,wBAAgB,YAAY,CAAC,MAAM,EAAE,aAAa,GAAG,IAAI,CAExD;AAED,wBAAgB,YAAY,IAAI,aAAa,GAAG,IAAI,CAEnD;AAED,wBAAgB,SAAS,CACvB,OAAO,EAAE,IAAI,CAAC,YAAY,EAAE,KAAK,GAAG,KAAK,CAAC,EAC1C,MAAM,CAAC,EAAE,aAAa,GACrB,MAAM,CAYR;AAED,wBAAgB,WAAW,CACzB,KAAK,EAAE,MAAM,EACb,MAAM,CAAC,EAAE,aAAa,GACrB,YAAY,CAed"}
@@ -0,0 +1,33 @@
1
+ let globalJwtConfig = null;
2
+ export function setJwtConfig(config) {
3
+ globalJwtConfig = config;
4
+ }
5
+ export function getJwtConfig() {
6
+ return globalJwtConfig;
7
+ }
8
+ export function signToken(payload, config) {
9
+ const jwtConfig = config || globalJwtConfig;
10
+ if (!jwtConfig || !jwtConfig.secret || typeof jwtConfig.secret !== 'string') {
11
+ throw new Error('JWT_SECRET is required. Configure auth.jwt.secret in zetiConfig or pass config parameter.');
12
+ }
13
+ // eslint-disable-next-line @typescript-eslint/no-require-imports
14
+ const jwt = require('jsonwebtoken');
15
+ return jwt.sign(payload, jwtConfig.secret, {
16
+ expiresIn: jwtConfig.expiresIn || '14d',
17
+ });
18
+ }
19
+ export function verifyToken(token, config) {
20
+ const jwtConfig = config || globalJwtConfig;
21
+ if (!jwtConfig || !jwtConfig.secret || typeof jwtConfig.secret !== 'string') {
22
+ throw new Error('JWT_SECRET is required. Configure auth.jwt.secret in zetiConfig or pass config parameter.');
23
+ }
24
+ // eslint-disable-next-line @typescript-eslint/no-require-imports
25
+ const jwt = require('jsonwebtoken');
26
+ try {
27
+ return jwt.verify(token, jwtConfig.secret);
28
+ }
29
+ catch (error) {
30
+ throw new Error('Token inválido ou expirado');
31
+ }
32
+ }
33
+ //# sourceMappingURL=jwt.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jwt.js","sourceRoot":"","sources":["../../src/utils/jwt.ts"],"names":[],"mappings":"AAYA,IAAI,eAAe,GAAyB,IAAI,CAAC;AAEjD,MAAM,UAAU,YAAY,CAAC,MAAqB;IAChD,eAAe,GAAG,MAAM,CAAC;AAC3B,CAAC;AAED,MAAM,UAAU,YAAY;IAC1B,OAAO,eAAe,CAAC;AACzB,CAAC;AAED,MAAM,UAAU,SAAS,CACvB,OAA0C,EAC1C,MAAsB;IAEtB,MAAM,SAAS,GAAG,MAAM,IAAI,eAAe,CAAC;IAE5C,IAAI,CAAC,SAAS,IAAI,CAAC,SAAS,CAAC,MAAM,IAAI,OAAO,SAAS,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC5E,MAAM,IAAI,KAAK,CAAC,2FAA2F,CAAC,CAAC;IAC/G,CAAC;IAED,iEAAiE;IACjE,MAAM,GAAG,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;IACpC,OAAO,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,MAAM,EAAE;QACzC,SAAS,EAAE,SAAS,CAAC,SAAS,IAAI,KAAK;KACxC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,WAAW,CACzB,KAAa,EACb,MAAsB;IAEtB,MAAM,SAAS,GAAG,MAAM,IAAI,eAAe,CAAC;IAE5C,IAAI,CAAC,SAAS,IAAI,CAAC,SAAS,CAAC,MAAM,IAAI,OAAO,SAAS,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC5E,MAAM,IAAI,KAAK,CAAC,2FAA2F,CAAC,CAAC;IAC/G,CAAC;IAED,iEAAiE;IACjE,MAAM,GAAG,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;IAEpC,IAAI,CAAC;QACH,OAAO,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,SAAS,CAAC,MAAM,CAAiB,CAAC;IAC7D,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;IAChD,CAAC;AACH,CAAC"}
@@ -0,0 +1,6 @@
1
+ export interface ZetiPasswordConfig {
2
+ bcryptSaltRounds?: number;
3
+ }
4
+ export declare function hashPassword(value: string, saltRounds?: number): Promise<string>;
5
+ export declare function comparePassword(value: string, hashedValue: string): Promise<boolean>;
6
+ //# sourceMappingURL=password.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"password.d.ts","sourceRoot":"","sources":["../../src/utils/password.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,kBAAkB;IACjC,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,wBAAsB,YAAY,CAChC,KAAK,EAAE,MAAM,EACb,UAAU,GAAE,MAAW,GACtB,OAAO,CAAC,MAAM,CAAC,CAIjB;AAED,wBAAsB,eAAe,CACnC,KAAK,EAAE,MAAM,EACb,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,OAAO,CAAC,CAIlB"}
@@ -0,0 +1,11 @@
1
+ export async function hashPassword(value, saltRounds = 10) {
2
+ // eslint-disable-next-line @typescript-eslint/no-require-imports
3
+ const bcryptjs = require('bcryptjs');
4
+ return await bcryptjs.hash(value, saltRounds);
5
+ }
6
+ export async function comparePassword(value, hashedValue) {
7
+ // eslint-disable-next-line @typescript-eslint/no-require-imports
8
+ const bcryptjs = require('bcryptjs');
9
+ return await bcryptjs.compare(value, hashedValue);
10
+ }
11
+ //# sourceMappingURL=password.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"password.js","sourceRoot":"","sources":["../../src/utils/password.ts"],"names":[],"mappings":"AAIA,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,KAAa,EACb,aAAqB,EAAE;IAEvB,iEAAiE;IACjE,MAAM,QAAQ,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IACrC,OAAO,MAAM,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;AAChD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,KAAa,EACb,WAAmB;IAEnB,iEAAiE;IACjE,MAAM,QAAQ,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IACrC,OAAO,MAAM,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;AACpD,CAAC"}
package/package.json CHANGED
@@ -1,67 +1,71 @@
1
- {
2
- "name": "zeti-framework",
3
- "version": "0.1.0",
4
- "description": "Framework Hono com suporte a multi-tenancy, Prisma e Swagger automático",
5
- "type": "module",
6
- "main": "./dist/index.js",
7
- "types": "./dist/index.d.ts",
8
- "exports": {
9
- ".": {
10
- "import": "./dist/index.js",
11
- "types": "./dist/index.d.ts"
12
- },
13
- "./swagger": {
14
- "import": "./dist/swagger/index.js",
15
- "types": "./dist/swagger/index.d.ts"
16
- },
17
- "./tenants": {
18
- "import": "./dist/tenants/index.js",
19
- "types": "./dist/tenants/index.d.ts"
20
- }
21
- },
22
- "files": [
23
- "dist",
24
- "README.md"
25
- ],
26
- "scripts": {
27
- "build": "tsc",
28
- "dev": "tsc --watch",
29
- "prepublishOnly": "npm run build",
30
- "clean": "rm -rf dist"
31
- },
32
- "keywords": [
33
- "hono",
34
- "prisma",
35
- "multi-tenant",
36
- "swagger",
37
- "typescript",
38
- "framework"
39
- ],
40
- "author": "",
41
- "license": "MIT",
42
- "dependencies": {
43
- "@prisma/adapter-pg": "^7.2.0",
44
- "@hono/zod-validator": "^0.4.0",
45
- "hono": "^4.6.0",
46
- "zod": "^3.23.0",
47
- "pg": "^8.17.1",
48
- "fast-glob": "^3.3.2"
49
- },
50
- "devDependencies": {
51
- "@types/node": "^25.0.9",
52
- "@types/pg": "^8.16.0",
53
- "typescript": "^5.9.3"
54
- },
55
- "peerDependencies": {
56
- "@prisma/client": "^7.0.0",
57
- "hono": "^4.0.0"
58
- },
59
- "peerDependenciesMeta": {
60
- "@prisma/client": {
61
- "optional": false
62
- },
63
- "hono": {
64
- "optional": false
65
- }
66
- }
67
- }
1
+ {
2
+ "name": "zeti-framework",
3
+ "version": "0.1.2",
4
+ "description": "Framework Hono com suporte a multi-tenancy, Prisma e Swagger automático",
5
+ "type": "module",
6
+ "main": "./dist/index.js",
7
+ "types": "./dist/index.d.ts",
8
+ "exports": {
9
+ ".": {
10
+ "import": "./dist/index.js",
11
+ "types": "./dist/index.d.ts"
12
+ },
13
+ "./swagger": {
14
+ "import": "./dist/swagger/index.js",
15
+ "types": "./dist/swagger/index.d.ts"
16
+ },
17
+ "./tenants": {
18
+ "import": "./dist/tenants/index.js",
19
+ "types": "./dist/tenants/index.d.ts"
20
+ },
21
+ "./scripts": {
22
+ "import": "./dist/scripts/index.js",
23
+ "types": "./dist/scripts/index.d.ts"
24
+ }
25
+ },
26
+ "files": [
27
+ "dist",
28
+ "README.md"
29
+ ],
30
+ "scripts": {
31
+ "build": "tsc",
32
+ "dev": "tsc --watch",
33
+ "prepublishOnly": "npm run build",
34
+ "clean": "rm -rf dist"
35
+ },
36
+ "keywords": [
37
+ "hono",
38
+ "prisma",
39
+ "multi-tenant",
40
+ "swagger",
41
+ "typescript",
42
+ "framework"
43
+ ],
44
+ "author": "",
45
+ "license": "MIT",
46
+ "dependencies": {
47
+ "@prisma/adapter-pg": "^7.2.0",
48
+ "@hono/zod-validator": "^0.4.0",
49
+ "hono": "^4.6.0",
50
+ "zod": "^3.23.0",
51
+ "pg": "^8.17.1",
52
+ "fast-glob": "^3.3.2"
53
+ },
54
+ "devDependencies": {
55
+ "@types/node": "^25.0.9",
56
+ "@types/pg": "^8.16.0",
57
+ "typescript": "^5.9.3"
58
+ },
59
+ "peerDependencies": {
60
+ "@prisma/client": "^7.0.0",
61
+ "hono": "^4.0.0"
62
+ },
63
+ "peerDependenciesMeta": {
64
+ "@prisma/client": {
65
+ "optional": false
66
+ },
67
+ "hono": {
68
+ "optional": false
69
+ }
70
+ }
71
+ }