@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.
Files changed (54) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/jest.config.ts +0 -1
  3. package/package.json +4 -2
  4. package/project.json +4 -7
  5. package/src/http/index.ts +1 -0
  6. package/src/http/types.ts +4 -0
  7. package/src/index.ts +2 -2
  8. package/src/keyv.store.adapter.factory.ts +31 -25
  9. package/src/nest/add-ons/add-on.interface.ts +5 -0
  10. package/src/nest/add-ons/add-on.wrapper.ts +31 -0
  11. package/src/{add-ons → nest/add-ons}/implementations/security/security.add-on.ts +3 -4
  12. package/src/nest/add-ons/implementations/sentry/sentry.add-on.interface.ts +8 -0
  13. package/src/{add-ons → nest/add-ons}/implementations/sentry/sentry.add-on.state.interface.ts +1 -1
  14. package/src/{add-ons → nest/add-ons}/implementations/sentry/sentry.add-on.ts +8 -9
  15. package/src/nest/add-ons/implementations/swagger/swagger.add-on.interface.ts +8 -0
  16. package/src/{add-ons → nest/add-ons}/implementations/swagger/swagger.add-on.state.interface.ts +3 -2
  17. package/src/nest/add-ons/implementations/swagger/swagger.add-on.ts +59 -0
  18. package/src/nest/add-ons/implementations/swagger/types.ts +1 -0
  19. package/src/nest/add-ons/index.ts +6 -0
  20. package/src/nest/add-ons/types.ts +7 -0
  21. package/src/nest/application.base.ts +18 -0
  22. package/src/nest/application.factory.ts +23 -0
  23. package/src/nest/filters/http.exception.filter.ts +23 -0
  24. package/src/nest/filters/index.ts +1 -0
  25. package/src/nest/index.ts +6 -0
  26. package/src/nest/interceptors/error.interceptor.ts +25 -0
  27. package/src/nest/interceptors/index.ts +2 -0
  28. package/src/nest/interceptors/response.format.interceptor.ts +29 -0
  29. package/src/nest/modules/health/health.module.ts +20 -0
  30. package/src/nest/modules/health/index.ts +1 -0
  31. package/src/nest/modules/health/middlewares/index.ts +1 -0
  32. package/src/nest/modules/health/middlewares/ping.middleware.ts +9 -0
  33. package/src/nest/modules/index.ts +2 -0
  34. package/src/nest/modules/requirement/index.ts +1 -0
  35. package/src/nest/modules/requirement/requirement.module.ts +56 -0
  36. package/src/scripts/move-keyv-data.script.ts +69 -48
  37. package/src/scripts/update-dependencies-versions.script.ts +164 -130
  38. package/src/secrets/docker.secret.getter.ts +6 -5
  39. package/src/secrets/file.secret.getter.ts +19 -16
  40. package/src/secrets/index.ts +2 -2
  41. package/src/secrets/local.secret.getter.ts +6 -5
  42. package/src/tmp.ts +15 -0
  43. package/src/add-ons/add-on.interface.ts +0 -5
  44. package/src/add-ons/add-on.wrapper.ts +0 -36
  45. package/src/add-ons/implementations/sentry/sentry.add-on.interface.ts +0 -8
  46. package/src/add-ons/implementations/swagger/swagger.add-on.interface.ts +0 -7
  47. package/src/add-ons/implementations/swagger/swagger.add-on.ts +0 -43
  48. package/src/add-ons/implementations/swagger/types.ts +0 -1
  49. package/src/add-ons/index.ts +0 -1
  50. package/src/add-ons/types.ts +0 -7
  51. package/src/application.base.ts +0 -15
  52. package/src/requirement.module.ts +0 -57
  53. package/src/utils/index.ts +0 -1
  54. 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';
@@ -1 +0,0 @@
1
- export * from './add-on.wrapper'
@@ -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
- }>;
@@ -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 { }
@@ -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
- }