@innv/nest-initializer 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +257 -0
- package/dist/cjs/core/app-initializer.js +431 -0
- package/dist/cjs/core/auto-discovery.helper.js +46 -0
- package/dist/cjs/core/config-validator.helper.js +28 -0
- package/dist/cjs/core/index.js +17 -0
- package/dist/cjs/features/health.controller.js +92 -0
- package/dist/cjs/features/index.js +18 -0
- package/dist/cjs/features/metrics/metrics.controller.js +41 -0
- package/dist/cjs/features/metrics/metrics.interceptor.js +45 -0
- package/dist/cjs/features/metrics/metrics.module.js +38 -0
- package/dist/cjs/features/metrics/metrics.provider.js +29 -0
- package/dist/cjs/features/metrics/metrics.tokens.js +5 -0
- package/dist/cjs/features/terminus-health-check.module.js +39 -0
- package/dist/cjs/index.js +18 -0
- package/dist/cjs/plugins/index.js +19 -0
- package/dist/cjs/plugins/rate-limiter.plugin.js +26 -0
- package/dist/cjs/plugins/request-logger.plugin.js +13 -0
- package/dist/cjs/plugins/typeorm-migration.plugin.js +30 -0
- package/dist/cjs/starters/caching.starter.js +27 -0
- package/dist/cjs/starters/index.js +19 -0
- package/dist/cjs/starters/mongoose.starter.js +24 -0
- package/dist/cjs/starters/typeorm.starter.js +31 -0
- package/dist/esm/core/app-initializer.js +431 -0
- package/dist/esm/core/auto-discovery.helper.js +46 -0
- package/dist/esm/core/config-validator.helper.js +28 -0
- package/dist/esm/core/index.js +17 -0
- package/dist/esm/features/health.controller.js +92 -0
- package/dist/esm/features/index.js +18 -0
- package/dist/esm/features/metrics/metrics.controller.js +41 -0
- package/dist/esm/features/metrics/metrics.interceptor.js +45 -0
- package/dist/esm/features/metrics/metrics.module.js +38 -0
- package/dist/esm/features/metrics/metrics.provider.js +29 -0
- package/dist/esm/features/metrics/metrics.tokens.js +5 -0
- package/dist/esm/features/terminus-health-check.module.js +39 -0
- package/dist/esm/index.js +18 -0
- package/dist/esm/plugins/index.js +19 -0
- package/dist/esm/plugins/rate-limiter.plugin.js +26 -0
- package/dist/esm/plugins/request-logger.plugin.js +13 -0
- package/dist/esm/plugins/typeorm-migration.plugin.js +30 -0
- package/dist/esm/starters/caching.starter.js +27 -0
- package/dist/esm/starters/index.js +19 -0
- package/dist/esm/starters/mongoose.starter.js +24 -0
- package/dist/esm/starters/typeorm.starter.js +31 -0
- package/dist/types/core/app-initializer.d.ts +206 -0
- package/dist/types/core/auto-discovery.helper.d.ts +15 -0
- package/dist/types/core/config-validator.helper.d.ts +9 -0
- package/dist/types/core/index.d.ts +1 -0
- package/dist/types/features/health.controller.d.ts +11 -0
- package/dist/types/features/index.d.ts +2 -0
- package/dist/types/features/metrics/metrics.controller.d.ts +6 -0
- package/dist/types/features/metrics/metrics.interceptor.d.ts +8 -0
- package/dist/types/features/metrics/metrics.module.d.ts +4 -0
- package/dist/types/features/metrics/metrics.provider.d.ts +2 -0
- package/dist/types/features/metrics/metrics.tokens.d.ts +2 -0
- package/dist/types/features/terminus-health-check.module.d.ts +11 -0
- package/dist/types/index.d.ts +6 -0
- package/dist/types/plugins/index.d.ts +3 -0
- package/dist/types/plugins/rate-limiter.plugin.d.ts +8 -0
- package/dist/types/plugins/request-logger.plugin.d.ts +5 -0
- package/dist/types/plugins/typeorm-migration.plugin.d.ts +15 -0
- package/dist/types/starters/caching.starter.d.ts +20 -0
- package/dist/types/starters/index.d.ts +3 -0
- package/dist/types/starters/mongoose.starter.d.ts +24 -0
- package/dist/types/starters/typeorm.starter.d.ts +19 -0
- package/package.json +159 -0
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { DynamicModule } from '@nestjs/common';
|
|
2
|
+
export interface TerminusHealthCheckOptions {
|
|
3
|
+
database?: boolean;
|
|
4
|
+
memory?: {
|
|
5
|
+
heapThreshold?: number;
|
|
6
|
+
rssThreshold?: number;
|
|
7
|
+
};
|
|
8
|
+
}
|
|
9
|
+
export declare class TerminusHealthCheckModule {
|
|
10
|
+
static forRoot(options: TerminusHealthCheckOptions): DynamicModule;
|
|
11
|
+
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export * from './core/app-initializer';
|
|
2
|
+
export { TypeOrmStarterOptions } from './starters/typeorm.starter';
|
|
3
|
+
export { MongooseStarterOptions } from './starters/mongoose.starter';
|
|
4
|
+
export { CachingStarterOptions } from './starters/caching.starter';
|
|
5
|
+
export { TerminusHealthCheckOptions } from './features/terminus-health-check.module';
|
|
6
|
+
export * from './plugins';
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { INestApplication } from '@nestjs/common';
|
|
2
|
+
import { Options as RateLimitOptions } from 'express-rate-limit';
|
|
3
|
+
import { AppInitializerPlugin } from '../core';
|
|
4
|
+
export declare class RateLimiterPlugin implements AppInitializerPlugin {
|
|
5
|
+
private readonly options;
|
|
6
|
+
constructor(options?: Partial<RateLimitOptions>);
|
|
7
|
+
apply(app: INestApplication): void;
|
|
8
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { INestApplication } from '@nestjs/common';
|
|
2
|
+
import { AppInitializerPlugin } from '../core';
|
|
3
|
+
/**
|
|
4
|
+
* Um plugin do AppInitializer que executa automaticamente as migrations
|
|
5
|
+
* do TypeORM na inicialização da aplicação.
|
|
6
|
+
*/
|
|
7
|
+
export declare class TypeOrmMigrationPlugin implements AppInitializerPlugin {
|
|
8
|
+
private readonly logger;
|
|
9
|
+
/**
|
|
10
|
+
* Método 'apply' que será chamado pelo AppInitializer durante o bootstrap.
|
|
11
|
+
* Este método é assíncrono para poder aguardar a conclusão das migrations.
|
|
12
|
+
* @param app A instância da aplicação NestJS.
|
|
13
|
+
*/
|
|
14
|
+
apply(app: INestApplication): Promise<void>;
|
|
15
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Opções para o "Starter" de Cache (Redis).
|
|
3
|
+
*/
|
|
4
|
+
export interface CachingStarterOptions {
|
|
5
|
+
/**
|
|
6
|
+
* Chave do .env que contém a URL de conexão com o Redis.
|
|
7
|
+
* (Padrão: 'REDIS_URL')
|
|
8
|
+
*/
|
|
9
|
+
redisUrlEnvKey?: string;
|
|
10
|
+
/**
|
|
11
|
+
* Tempo de vida (TTL) padrão para os itens em cache, em segundos.
|
|
12
|
+
* (Padrão: 300 segundos / 5 minutos)
|
|
13
|
+
*/
|
|
14
|
+
defaultTtlInSeconds?: number;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Cria o módulo dinâmico para o "Starter" de Cache.
|
|
18
|
+
* Configura o CacheModule para ser global e usar o Redis.
|
|
19
|
+
*/
|
|
20
|
+
export declare function createCachingStarter(options?: CachingStarterOptions): import("@nestjs/common").DynamicModule;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { MongooseModuleOptions } from '@nestjs/mongoose';
|
|
2
|
+
/**
|
|
3
|
+
* Opções para o "Starter" de Mongoose (MongoDB).
|
|
4
|
+
*/
|
|
5
|
+
export interface MongooseStarterOptions {
|
|
6
|
+
/**
|
|
7
|
+
* Chave do .env que contém a URI de conexão com o MongoDB.
|
|
8
|
+
* (Padrão: 'MONGO_URI')
|
|
9
|
+
*/
|
|
10
|
+
uriEnvKey?: string;
|
|
11
|
+
/**
|
|
12
|
+
* Permite sobrescrever qualquer outra opção de configuração do Mongoose
|
|
13
|
+
* (ex: { retryAttempts: 2 }).
|
|
14
|
+
*/
|
|
15
|
+
mongooseOptions?: Omit<MongooseModuleOptions, 'uri'>;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Cria o módulo dinâmico para o "Starter" de Mongoose.
|
|
19
|
+
* Configura o MongooseModule para ser global e usar a URI do .env.
|
|
20
|
+
*/
|
|
21
|
+
export declare function createMongooseStarter(options?: MongooseStarterOptions): {
|
|
22
|
+
module: import("@nestjs/common").DynamicModule;
|
|
23
|
+
plugins: never[];
|
|
24
|
+
};
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { TypeOrmModuleOptions } from '@nestjs/typeorm';
|
|
2
|
+
import { AppInitializerPlugin } from '../core';
|
|
3
|
+
/**
|
|
4
|
+
* Opções para o "Starter" de TypeORM.
|
|
5
|
+
*/
|
|
6
|
+
export interface TypeOrmStarterOptions {
|
|
7
|
+
autoLoadEntities?: boolean;
|
|
8
|
+
runMigrationsOnStartup?: boolean;
|
|
9
|
+
databaseUrlEnvKey?: string;
|
|
10
|
+
typeOrmOptions?: Omit<TypeOrmModuleOptions, 'url' | 'autoLoadEntities' | 'synchronize'>;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Cria o módulo dinâmico para o "Starter" de TypeORM.
|
|
14
|
+
* Esta função constrói toda a configuração necessária para o TypeOrmModule.
|
|
15
|
+
*/
|
|
16
|
+
export declare function createTypeOrmStarter(options?: TypeOrmStarterOptions): {
|
|
17
|
+
module: import("@nestjs/common").DynamicModule;
|
|
18
|
+
plugins: AppInitializerPlugin[];
|
|
19
|
+
};
|
package/package.json
ADDED
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@innv/nest-initializer",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "Uma plataforma fluente e opinativa para inicializar e configurar aplicações NestJS com as melhores práticas.",
|
|
5
|
+
"author": "Innovare",
|
|
6
|
+
"license": "MIT",
|
|
7
|
+
"repository": {
|
|
8
|
+
"type": "git",
|
|
9
|
+
"url": "git+https://github.com/innovare-tech/nest-initializer.git"
|
|
10
|
+
},
|
|
11
|
+
"bugs": {
|
|
12
|
+
"url": "https://github.com/innovare-tech/nest-initializer/issues"
|
|
13
|
+
},
|
|
14
|
+
"homepage": "https://github.com/innovare-tech/nest-initializer/issues#readme",
|
|
15
|
+
"main": "dist/cjs/index.js",
|
|
16
|
+
"module": "dist/esm/index.js",
|
|
17
|
+
"types": "dist/types/index.d.ts",
|
|
18
|
+
"files": [
|
|
19
|
+
"dist"
|
|
20
|
+
],
|
|
21
|
+
"engines": {
|
|
22
|
+
"node": ">=18.0.0"
|
|
23
|
+
},
|
|
24
|
+
"scripts": {
|
|
25
|
+
"test": "jest --coverage",
|
|
26
|
+
"test:watch": "jest --watch",
|
|
27
|
+
"build:clean": "rimraf dist",
|
|
28
|
+
"build:cjs": "tsc -p tsconfig.build-cjs.json",
|
|
29
|
+
"build:esm": "tsc -p tsconfig.build-esm.json",
|
|
30
|
+
"build:types": "tsc -p tsconfig.build-types.json",
|
|
31
|
+
"build": "npm run build:clean && npm run build:cjs && npm run build:esm && npm run build:types",
|
|
32
|
+
"lint": "eslint .",
|
|
33
|
+
"lint:fix": "eslint . --fix",
|
|
34
|
+
"format": "prettier --write \"{src,test}/**/*.ts\"",
|
|
35
|
+
"prepare": "husky install",
|
|
36
|
+
"prepublishOnly": "npm run lint && npm test && npm run build"
|
|
37
|
+
},
|
|
38
|
+
"dependencies": {
|
|
39
|
+
"cache-manager-redis-store": "3.0.1",
|
|
40
|
+
"compression": "1.8.1",
|
|
41
|
+
"glob": "11.0.3",
|
|
42
|
+
"helmet": "8.1.0",
|
|
43
|
+
"morgan": "^1.10.1",
|
|
44
|
+
"zod": "4.1.12"
|
|
45
|
+
},
|
|
46
|
+
"peerDependencies": {
|
|
47
|
+
"@nestjs/axios": "^4.0.1",
|
|
48
|
+
"@nestjs/cache-manager": "^3.0.1",
|
|
49
|
+
"@nestjs/common": "^10.0.0 || ^11.0.0",
|
|
50
|
+
"@nestjs/config": "^4.0.2",
|
|
51
|
+
"@nestjs/core": "^10.0.0 || ^11.0.0",
|
|
52
|
+
"@nestjs/mongoose": "^10.0.0 || ^11.0.0",
|
|
53
|
+
"@nestjs/platform-express": "^10.0.0 || ^11.0.0",
|
|
54
|
+
"@nestjs/platform-fastify": "^10.0.0 || ^11.0.0",
|
|
55
|
+
"@nestjs/swagger": "^7.0.0",
|
|
56
|
+
"@nestjs/terminus": "^10.0.0 || ^11.0.0",
|
|
57
|
+
"@nestjs/typeorm": "^10.0.0",
|
|
58
|
+
"axios": "^1.6.0",
|
|
59
|
+
"mongoose": "^8.0.0",
|
|
60
|
+
"prom-client": "^15.0.0",
|
|
61
|
+
"reflect-metadata": "^0.1.13 || ^0.2.0",
|
|
62
|
+
"rxjs": "^7.0.0",
|
|
63
|
+
"typeorm": "^0.3.0"
|
|
64
|
+
},
|
|
65
|
+
"peerDependenciesMeta": {
|
|
66
|
+
"@nestjs/axios": {
|
|
67
|
+
"optional": true
|
|
68
|
+
},
|
|
69
|
+
"@nestjs/cache-manager": {
|
|
70
|
+
"optional": true
|
|
71
|
+
},
|
|
72
|
+
"@nestjs/config": {
|
|
73
|
+
"optional": true
|
|
74
|
+
},
|
|
75
|
+
"@nestjs/mongoose": {
|
|
76
|
+
"optional": true
|
|
77
|
+
},
|
|
78
|
+
"@nestjs/platform-express": {
|
|
79
|
+
"optional": true
|
|
80
|
+
},
|
|
81
|
+
"@nestjs/platform-fastify": {
|
|
82
|
+
"optional": true
|
|
83
|
+
},
|
|
84
|
+
"@nestjs/swagger": {
|
|
85
|
+
"optional": true
|
|
86
|
+
},
|
|
87
|
+
"@nestjs/terminus": {
|
|
88
|
+
"optional": true
|
|
89
|
+
},
|
|
90
|
+
"@nestjs/typeorm": {
|
|
91
|
+
"optional": true
|
|
92
|
+
},
|
|
93
|
+
"axios": {
|
|
94
|
+
"optional": true
|
|
95
|
+
},
|
|
96
|
+
"mongoose": {
|
|
97
|
+
"optional": true
|
|
98
|
+
},
|
|
99
|
+
"prom-client": {
|
|
100
|
+
"optional": true
|
|
101
|
+
},
|
|
102
|
+
"typeorm": {
|
|
103
|
+
"optional": true
|
|
104
|
+
}
|
|
105
|
+
},
|
|
106
|
+
"devDependencies": {
|
|
107
|
+
"@commitlint/cli": "^19.3.0",
|
|
108
|
+
"@commitlint/config-conventional": "^19.2.2",
|
|
109
|
+
"@eslint/js": "^9.38.0",
|
|
110
|
+
"@nestjs/axios": "^4.0.1",
|
|
111
|
+
"@nestjs/cache-manager": "^3.0.1",
|
|
112
|
+
"@nestjs/common": "^11.1.6",
|
|
113
|
+
"@nestjs/config": "^4.0.2",
|
|
114
|
+
"@nestjs/core": "^11.1.6",
|
|
115
|
+
"@nestjs/mongoose": "^11.0.3",
|
|
116
|
+
"@nestjs/platform-express": "^11.1.6",
|
|
117
|
+
"@nestjs/swagger": "^11.2.1",
|
|
118
|
+
"@nestjs/terminus": "^11.0.0",
|
|
119
|
+
"@nestjs/testing": "^11.1.7",
|
|
120
|
+
"@nestjs/typeorm": "^11.0.0",
|
|
121
|
+
"@types/compression": "^1.7.5",
|
|
122
|
+
"@types/jest": "^29.5.14",
|
|
123
|
+
"@types/morgan": "^1.9.10",
|
|
124
|
+
"@types/node": "^18.19.3",
|
|
125
|
+
"@typescript-eslint/eslint-plugin": "^7.10.0",
|
|
126
|
+
"@typescript-eslint/parser": "^7.10.0",
|
|
127
|
+
"class-transformer": "^0.5.1",
|
|
128
|
+
"class-validator": "^0.14.2",
|
|
129
|
+
"eslint": "^8.57.0",
|
|
130
|
+
"eslint-config-prettier": "^9.1.0",
|
|
131
|
+
"eslint-plugin-prettier": "^5.1.3",
|
|
132
|
+
"express-rate-limit": "^8.1.0",
|
|
133
|
+
"globals": "^15.0.0",
|
|
134
|
+
"husky": "^9.0.11",
|
|
135
|
+
"jest": "^29.7.0",
|
|
136
|
+
"prettier": "^3.2.5",
|
|
137
|
+
"prom-client": "^15.1.3",
|
|
138
|
+
"reflect-metadata": "^0.2.2",
|
|
139
|
+
"rimraf": "^5.0.7",
|
|
140
|
+
"rxjs": "^7.8.1",
|
|
141
|
+
"ts-jest": "^29.4.5",
|
|
142
|
+
"typeorm": "^0.3.27",
|
|
143
|
+
"typescript": "^5.4.5",
|
|
144
|
+
"typescript-eslint": "^8.46.2"
|
|
145
|
+
},
|
|
146
|
+
"keywords": [
|
|
147
|
+
"nestjs",
|
|
148
|
+
"nest",
|
|
149
|
+
"initializer",
|
|
150
|
+
"bootstrap",
|
|
151
|
+
"builder",
|
|
152
|
+
"configuration",
|
|
153
|
+
"fluent",
|
|
154
|
+
"opinionated",
|
|
155
|
+
"starter",
|
|
156
|
+
"actuator",
|
|
157
|
+
"auto-discovery"
|
|
158
|
+
]
|
|
159
|
+
}
|