@ask-ell/back-end 0.1.1 → 0.2.3
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/CHANGELOG.md +11 -0
- package/jest.config.ts +0 -1
- package/package.json +4 -2
- package/project.json +4 -7
- package/src/http/index.ts +1 -0
- package/src/http/types.ts +4 -0
- package/src/index.ts +2 -2
- package/src/keyv.store.adapter.factory.ts +31 -25
- package/src/nest/add-ons/add-on.interface.ts +5 -0
- package/src/nest/add-ons/add-on.wrapper.ts +31 -0
- package/src/{add-ons → nest/add-ons}/implementations/security/security.add-on.ts +3 -4
- package/src/nest/add-ons/implementations/sentry/sentry.add-on.interface.ts +8 -0
- package/src/{add-ons → nest/add-ons}/implementations/sentry/sentry.add-on.state.interface.ts +1 -1
- package/src/{add-ons → nest/add-ons}/implementations/sentry/sentry.add-on.ts +8 -9
- package/src/nest/add-ons/implementations/swagger/swagger.add-on.interface.ts +8 -0
- package/src/{add-ons → nest/add-ons}/implementations/swagger/swagger.add-on.state.interface.ts +3 -2
- package/src/nest/add-ons/implementations/swagger/swagger.add-on.ts +59 -0
- package/src/nest/add-ons/implementations/swagger/types.ts +1 -0
- package/src/nest/add-ons/index.ts +6 -0
- package/src/nest/add-ons/types.ts +7 -0
- package/src/nest/application.base.ts +18 -0
- package/src/nest/application.factory.ts +23 -0
- package/src/nest/filters/http.exception.filter.ts +23 -0
- package/src/nest/filters/index.ts +1 -0
- package/src/nest/index.ts +6 -0
- package/src/nest/interceptors/error.interceptor.ts +25 -0
- package/src/nest/interceptors/index.ts +2 -0
- package/src/nest/interceptors/response.format.interceptor.ts +29 -0
- package/src/nest/modules/health/health.module.ts +20 -0
- package/src/nest/modules/health/index.ts +1 -0
- package/src/nest/modules/health/middlewares/index.ts +1 -0
- package/src/nest/modules/health/middlewares/ping.middleware.ts +9 -0
- package/src/nest/modules/index.ts +2 -0
- package/src/nest/modules/requirement/index.ts +1 -0
- package/src/nest/modules/requirement/requirement.module.ts +56 -0
- package/src/scripts/move-keyv-data.script.ts +69 -48
- package/src/scripts/update-dependencies-versions.script.ts +164 -130
- package/src/secrets/docker.secret.getter.ts +6 -5
- package/src/secrets/file.secret.getter.ts +19 -16
- package/src/secrets/index.ts +2 -2
- package/src/secrets/local.secret.getter.ts +6 -5
- package/src/tmp.ts +15 -0
- package/src/add-ons/add-on.interface.ts +0 -5
- package/src/add-ons/add-on.wrapper.ts +0 -36
- package/src/add-ons/implementations/sentry/sentry.add-on.interface.ts +0 -8
- package/src/add-ons/implementations/swagger/swagger.add-on.interface.ts +0 -7
- package/src/add-ons/implementations/swagger/swagger.add-on.ts +0 -43
- package/src/add-ons/implementations/swagger/types.ts +0 -1
- package/src/add-ons/index.ts +0 -1
- package/src/add-ons/types.ts +0 -7
- package/src/application.base.ts +0 -15
- package/src/requirement.module.ts +0 -57
- package/src/utils/index.ts +0 -1
- package/src/utils/tmp.ts +0 -16
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
import { Entity, type IResult, ok } from "@ask-ell/core";
|
|
2
|
-
import { type INestApplication } from "@nestjs/common";
|
|
3
|
-
import {
|
|
4
|
-
DocumentBuilder,
|
|
5
|
-
type OpenAPIObject,
|
|
6
|
-
SwaggerModule,
|
|
7
|
-
} from "@nestjs/swagger";
|
|
8
|
-
|
|
9
|
-
import { ISwaggerAddOnState } from "./swagger.add-on.state.interface";
|
|
10
|
-
import { ISwaggerAddOn } from "./swagger.add-on.interface";
|
|
11
|
-
import { AuthMethod } from "./types";
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
export class SwaggerAddon<T>
|
|
15
|
-
extends Entity<ISwaggerAddOnState>
|
|
16
|
-
implements ISwaggerAddOn<T>
|
|
17
|
-
{
|
|
18
|
-
checkStateValidity(): IResult<void> {
|
|
19
|
-
return ok();
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
apply(application: INestApplication<T>): void {
|
|
23
|
-
const { title, auths } = this.getSnapshot();
|
|
24
|
-
|
|
25
|
-
const documentBuilder: DocumentBuilder = new DocumentBuilder().setTitle(title)
|
|
26
|
-
|
|
27
|
-
auths?.forEach((auth: AuthMethod): void => {
|
|
28
|
-
if (auth === 'bearer') {
|
|
29
|
-
documentBuilder.addBearerAuth();
|
|
30
|
-
}
|
|
31
|
-
});
|
|
32
|
-
|
|
33
|
-
const documentBuild: Omit<OpenAPIObject, "paths"> = documentBuilder.build();
|
|
34
|
-
|
|
35
|
-
const documentFactory = (): OpenAPIObject =>
|
|
36
|
-
SwaggerModule.createDocument(application, documentBuild);
|
|
37
|
-
|
|
38
|
-
SwaggerModule.setup("/swagger", application, documentFactory, {
|
|
39
|
-
customSiteTitle: title,
|
|
40
|
-
jsonDocumentUrl: "/swagger/json",
|
|
41
|
-
});
|
|
42
|
-
}
|
|
43
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export type AuthMethod = 'bearer' | 'cookie';
|
package/src/add-ons/index.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from './add-on.wrapper'
|
package/src/add-ons/types.ts
DELETED
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import { ISentryAddOnState } from "./implementations/sentry/sentry.add-on.state.interface";
|
|
2
|
-
import { ISwaggerAddOnState } from "./implementations/swagger/swagger.add-on.state.interface";
|
|
3
|
-
|
|
4
|
-
export type AddOnWrapperParams = Partial<{
|
|
5
|
-
swagger: ISwaggerAddOnState;
|
|
6
|
-
sentry: ISentryAddOnState;
|
|
7
|
-
}>;
|
package/src/application.base.ts
DELETED
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import { DynamicModule, Provider } from "@nestjs/common";
|
|
2
|
-
|
|
3
|
-
import { RequirementModule } from "./requirement.module";
|
|
4
|
-
|
|
5
|
-
export class ApplicationBase {
|
|
6
|
-
static withProviders(providers: Provider[]): DynamicModule {
|
|
7
|
-
const providersAndExports: Provider[] = [...providers];
|
|
8
|
-
return {
|
|
9
|
-
module: this,
|
|
10
|
-
imports: [RequirementModule],
|
|
11
|
-
providers: providersAndExports,
|
|
12
|
-
exports: [...providersAndExports]
|
|
13
|
-
}
|
|
14
|
-
}
|
|
15
|
-
}
|
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
import { Global, Module } from "@nestjs/common";
|
|
2
|
-
import { ConfigModule } from "@nestjs/config";
|
|
3
|
-
import { APP_FILTER, APP_GUARD, APP_INTERCEPTOR } from "@nestjs/core";
|
|
4
|
-
import { ThrottlerGuard, ThrottlerModule } from "@nestjs/throttler";
|
|
5
|
-
import type { ILogger } from "@ask-ell/core";
|
|
6
|
-
import { NestLogger, HealthModule, ResponseFormatInterceptor, HttpExceptionFilter } from "@ask-ell/nest";
|
|
7
|
-
import { SentryGlobalFilter, SentryModule } from '@sentry/nestjs/setup';
|
|
8
|
-
|
|
9
|
-
import { KeyvStoreAdapterFactory } from "./keyv.store.adapter.factory";
|
|
10
|
-
import { dockerSecretGetter, localSecretGetter } from "./secrets";
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
const configModuleLogger: ILogger = NestLogger.fromClass(ConfigModule);
|
|
14
|
-
|
|
15
|
-
@Global()
|
|
16
|
-
@Module({
|
|
17
|
-
imports: [
|
|
18
|
-
HealthModule,
|
|
19
|
-
SentryModule.forRoot(),
|
|
20
|
-
ThrottlerModule.forRoot([{
|
|
21
|
-
ttl: 60000,
|
|
22
|
-
limit: 30,
|
|
23
|
-
}]),
|
|
24
|
-
ConfigModule.forRoot({
|
|
25
|
-
isGlobal: true,
|
|
26
|
-
load: [
|
|
27
|
-
dockerSecretGetter(configModuleLogger),
|
|
28
|
-
localSecretGetter(configModuleLogger)
|
|
29
|
-
]
|
|
30
|
-
})
|
|
31
|
-
],
|
|
32
|
-
providers: [
|
|
33
|
-
KeyvStoreAdapterFactory,
|
|
34
|
-
{
|
|
35
|
-
provide: APP_GUARD,
|
|
36
|
-
useClass: ThrottlerGuard
|
|
37
|
-
},
|
|
38
|
-
{
|
|
39
|
-
provide: APP_INTERCEPTOR,
|
|
40
|
-
useClass: ResponseFormatInterceptor
|
|
41
|
-
},
|
|
42
|
-
{
|
|
43
|
-
provide: APP_FILTER,
|
|
44
|
-
useClass: HttpExceptionFilter
|
|
45
|
-
},
|
|
46
|
-
{
|
|
47
|
-
provide: APP_FILTER,
|
|
48
|
-
useClass: SentryGlobalFilter
|
|
49
|
-
}
|
|
50
|
-
],
|
|
51
|
-
exports: [
|
|
52
|
-
ConfigModule,
|
|
53
|
-
SentryModule,
|
|
54
|
-
KeyvStoreAdapterFactory
|
|
55
|
-
]
|
|
56
|
-
})
|
|
57
|
-
export class RequirementModule { }
|
package/src/utils/index.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from './tmp';
|
package/src/utils/tmp.ts
DELETED
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import { ILogger } from "@ask-ell/core";
|
|
2
|
-
import { existsSync, mkdirSync } from "node:fs";
|
|
3
|
-
import { join } from "node:path";
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
export const TMP_FOLDER_PATH: string = join(process.cwd(), 'tmp');
|
|
7
|
-
|
|
8
|
-
export const createTmpFolder = (logger: ILogger): void => {
|
|
9
|
-
const isTmpFolderExists: boolean = existsSync(TMP_FOLDER_PATH);
|
|
10
|
-
if(isTmpFolderExists){
|
|
11
|
-
logger.info(`"${TMP_FOLDER_PATH}" folder already exists.`);
|
|
12
|
-
return;
|
|
13
|
-
}
|
|
14
|
-
mkdirSync(TMP_FOLDER_PATH);
|
|
15
|
-
logger.info(`"${TMP_FOLDER_PATH}" folder created.`);
|
|
16
|
-
}
|