From 20f4ced81196ef5adf8ccfbfdcba870df16422cc Mon Sep 17 00:00:00 2001 From: Mathieu Collette Date: Fri, 11 Oct 2024 18:10:50 +0200 Subject: [PATCH] feat: choice presenter persistence --- .../server/src/app/app.module.ts | 53 ++++++++++------ .../server/src/environment/env.schema.ts | 10 +++ apps/pathway-design/server/src/main.ts | 57 +++++++++--------- .../specs/change-title-pathway/index.feature | 9 ++- .../specs/change-title-pathway/index.step.ts | 28 +++++---- .../specs/initialize-pathway/index.feature | 10 +-- .../specs/initialize-pathway/index.step.ts | 22 ++++--- biome.json | 3 + bun.lockb | Bin 623151 -> 623494 bytes libs/common/configs/server/env/.swcrc | 22 +++++++ libs/common/configs/server/env/biome.json | 17 ++++++ libs/common/configs/server/env/cucumber.js | 11 ++++ libs/common/configs/server/env/package.json | 9 +++ libs/common/configs/server/env/project.json | 50 +++++++++++++++ libs/common/configs/server/env/src/index.ts | 2 + .../server/env/src/lib/check-env-variables.ts | 15 +++++ .../server/env/src/lib/get-env-variables.ts | 4 ++ libs/common/configs/server/env/tsconfig.json | 22 +++++++ .../configs/server/env/tsconfig.lib.json | 11 ++++ .../configs/server/env/tsconfig.spec.json | 10 +++ libs/common/configs/server/swagger/.swcrc | 22 +++++++ libs/common/configs/server/swagger/biome.json | 17 ++++++ .../common/configs/server/swagger/cucumber.js | 11 ++++ .../configs/server/swagger/package.json | 9 +++ .../configs/server/swagger/project.json | 50 +++++++++++++++ .../configs/server/swagger/src/index.ts | 1 + .../server/swagger/src/lib/swagger.config.ts | 30 +++++++++ .../configs/server/swagger/src/lib/types.ts | 7 +++ .../configs/server/swagger/tsconfig.json | 22 +++++++ .../configs/server/swagger/tsconfig.lib.json | 11 ++++ .../configs/server/swagger/tsconfig.spec.json | 10 +++ .../specs/initialize-pathway.usecase.step.ts | 2 +- .../business/src/lib/entities/pathway.ts | 14 ++++- .../lib/events/pathway-initialized.event.ts | 12 +++- .../change-name/change-title-pathway.step.ts | 2 +- .../initialize/initialize-pathway.step.ts | 13 +++- .../pathway/infrastructure/src/index.ts | 6 +- ...thway-persistence-infrastructure.module.ts | 6 +- .../server/pathway/presenters/src/index.ts | 6 +- .../src/lib/pathway-presenters.module.ts | 6 +- package.json | 5 +- tsconfig.base.json | 2 + 42 files changed, 538 insertions(+), 91 deletions(-) create mode 100644 apps/pathway-design/server/src/environment/env.schema.ts create mode 100644 libs/common/configs/server/env/.swcrc create mode 100644 libs/common/configs/server/env/biome.json create mode 100644 libs/common/configs/server/env/cucumber.js create mode 100644 libs/common/configs/server/env/package.json create mode 100644 libs/common/configs/server/env/project.json create mode 100644 libs/common/configs/server/env/src/index.ts create mode 100644 libs/common/configs/server/env/src/lib/check-env-variables.ts create mode 100644 libs/common/configs/server/env/src/lib/get-env-variables.ts create mode 100644 libs/common/configs/server/env/tsconfig.json create mode 100644 libs/common/configs/server/env/tsconfig.lib.json create mode 100644 libs/common/configs/server/env/tsconfig.spec.json create mode 100644 libs/common/configs/server/swagger/.swcrc create mode 100644 libs/common/configs/server/swagger/biome.json create mode 100644 libs/common/configs/server/swagger/cucumber.js create mode 100644 libs/common/configs/server/swagger/package.json create mode 100644 libs/common/configs/server/swagger/project.json create mode 100644 libs/common/configs/server/swagger/src/index.ts create mode 100644 libs/common/configs/server/swagger/src/lib/swagger.config.ts create mode 100644 libs/common/configs/server/swagger/src/lib/types.ts create mode 100644 libs/common/configs/server/swagger/tsconfig.json create mode 100644 libs/common/configs/server/swagger/tsconfig.lib.json create mode 100644 libs/common/configs/server/swagger/tsconfig.spec.json diff --git a/apps/pathway-design/server/src/app/app.module.ts b/apps/pathway-design/server/src/app/app.module.ts index 82731a6c..ee3fb2dd 100644 --- a/apps/pathway-design/server/src/app/app.module.ts +++ b/apps/pathway-design/server/src/app/app.module.ts @@ -1,25 +1,44 @@ import { Module } from '@nestjs/common'; -import { PDSPIPPathwayPersistenceInfrastructureModule } from '@bewoak/pathway-design-server-pathway-infrastructure'; +import { + PDSPIPPathwayPersistenceInfrastructureModule, + type PDSPIPPersistenceDriverAuthorized, +} from '@bewoak/pathway-design-server-pathway-infrastructure'; import { PDSPIAChangeTitlePathwayInterfaceAdaptersModule, PDSPIAInitializePathwayInterfaceAdaptersModule, } from '@bewoak/pathway-design-server-pathway-interface-adapters'; -import { PDSPPPathwayPresentersModule } from '@bewoak/pathway-design-server-pathway-presenters'; +import { + PDSPPPathwayPresentersModule, + type PDSPPPresenterDriverAuthorized, +} from '@bewoak/pathway-design-server-pathway-presenters'; import { CqrsModule } from '@nestjs/cqrs'; -@Module({ - imports: [ - PDSPIAChangeTitlePathwayInterfaceAdaptersModule.withPresenter(PDSPPPathwayPresentersModule.use('toJson')) - .withPersistence(PDSPIPPathwayPersistenceInfrastructureModule.use('inMemory')) - .build(), - PDSPIAInitializePathwayInterfaceAdaptersModule.withPresenter(PDSPPPathwayPresentersModule.use('toJson')) - .withPersistence(PDSPIPPathwayPersistenceInfrastructureModule.use('inMemory')) - .build(), - CqrsModule.forRoot(), - CqrsModule.forRoot(), - ], - controllers: [], - providers: [], -}) -export class AppModule {} +interface ApplicationBootstrapOptions { + persistenceDriver: PDSPIPPersistenceDriverAuthorized; + presenterDriver: PDSPPPresenterDriverAuthorized; +} + +@Module({}) +// biome-ignore lint/complexity/noStaticOnlyClass: +export class AppModule { + static register(options: ApplicationBootstrapOptions) { + return { + module: AppModule, + imports: [ + PDSPIAChangeTitlePathwayInterfaceAdaptersModule.withPresenter( + PDSPPPathwayPresentersModule.use(options.presenterDriver) + ) + .withPersistence(PDSPIPPathwayPersistenceInfrastructureModule.use(options.persistenceDriver)) + .build(), + PDSPIAInitializePathwayInterfaceAdaptersModule.withPresenter( + PDSPPPathwayPresentersModule.use(options.presenterDriver) + ) + .withPersistence(PDSPIPPathwayPersistenceInfrastructureModule.use(options.persistenceDriver)) + .build(), + CqrsModule.forRoot(), + CqrsModule.forRoot(), + ], + }; + } +} diff --git a/apps/pathway-design/server/src/environment/env.schema.ts b/apps/pathway-design/server/src/environment/env.schema.ts new file mode 100644 index 00000000..84dba52f --- /dev/null +++ b/apps/pathway-design/server/src/environment/env.schema.ts @@ -0,0 +1,10 @@ +import { pDSPIPPersistenceKeys } from '@bewoak/pathway-design-server-pathway-infrastructure'; +import { pDSPPPresenterKeys } from '@bewoak/pathway-design-server-pathway-presenters'; +import { z } from 'zod'; + +export const envSchema = z.object({ + GLOBAL_PREFIX: z.string(), + PERSISTENCE_DRIVER: z.enum(pDSPIPPersistenceKeys), + PORT: z.string().transform((value) => Number.parseInt(value, 10)), + PRESENTER_DRIVER: z.enum(pDSPPPresenterKeys), +}); diff --git a/apps/pathway-design/server/src/main.ts b/apps/pathway-design/server/src/main.ts index 85148de1..7ccb3275 100644 --- a/apps/pathway-design/server/src/main.ts +++ b/apps/pathway-design/server/src/main.ts @@ -1,40 +1,37 @@ -/** - * This is not a production server yet! - * This is only a minimal backend to get started. - */ - import { Logger } from '@nestjs/common'; import { NestFactory } from '@nestjs/core'; -import { DocumentBuilder, SwaggerModule } from '@nestjs/swagger'; import { AppModule } from './app/app.module'; +import { cCSECheckEnvironmentVariables, cCSEGetEnvironmentVariables } from '@bewoak/common-configs-server-env'; +import { cCSSSetupSwaggerDocument } from '@bewoak/common-configs-server-swagger'; +import { envSchema } from './environment/env.schema'; + async function bootstrap() { - const app = await NestFactory.create(AppModule, { bufferLogs: true }); - const globalPrefix = 'api'; + cCSECheckEnvironmentVariables(envSchema); + + const env = cCSEGetEnvironmentVariables(envSchema); + const persistenceDriver = env.PERSISTENCE_DRIVER; + const presenterDriver = env.PRESENTER_DRIVER; + const port = env.PORT; + const globalPrefix = env.GLOBAL_PREFIX; + + const app = await NestFactory.create( + AppModule.register({ + persistenceDriver, + presenterDriver, + }), + { bufferLogs: true } + ); app.setGlobalPrefix(globalPrefix); - const port = process.env.PORT ?? 3000; - - // Setting up Swagger document - const options = new DocumentBuilder() - .setTitle('Pathway design Application') - .setDescription('Application Programming Interface (API) of Pathway design Application') - .setVersion('1.0') - .addBearerAuth( - { - description: 'Please enter token in following format: Bearer ', - name: 'Authorization', - bearerFormat: 'Bearer', - scheme: 'Bearer', - type: 'http', - in: 'Header', - }, - 'access-token' - ) - .build(); - const document = SwaggerModule.createDocument(app, options); - - SwaggerModule.setup('api', app, document); + + cCSSSetupSwaggerDocument(app, { + description: 'API for Pathway Design', + hasBearerAuth: true, + path: 'api', + title: 'Pathway Design API', + version: '1.0', + }); await app.listen(port); Logger.log(`🚀 Application is running on: http://localhost:${port}/${globalPrefix}`); diff --git a/apps/pathway-design/server/src/specs/change-title-pathway/index.feature b/apps/pathway-design/server/src/specs/change-title-pathway/index.feature index 401a4bf2..b654e475 100644 --- a/apps/pathway-design/server/src/specs/change-title-pathway/index.feature +++ b/apps/pathway-design/server/src/specs/change-title-pathway/index.feature @@ -1,8 +1,8 @@ -Feature: Platform - Change the title of a pathway in a memory database with json presenter +Feature: Platform - Change the title of a pathway Scenario: I want to change the title of a learning pathway on the platform - Given I am authenticated on the platform for change the title of the pathway in memory persistence and json presenter - Given I have a pathway on the platform recorded in memory with these data + Given I am authenticated on the platform for change the title of the pathway with "" and "" + Given I have a pathway on the platform with these data | title | description | researchField | | My Pathway | A test pathway | biology | When I want to change the title of the pathway on the platform "My New Pathway" @@ -10,3 +10,6 @@ Feature: Platform - Change the title of a pathway in a memory database with json | title | | My New Pathway | + Examples: + | presenter | persistence | + | toJson | inMemory | \ No newline at end of file diff --git a/apps/pathway-design/server/src/specs/change-title-pathway/index.step.ts b/apps/pathway-design/server/src/specs/change-title-pathway/index.step.ts index 91b947d8..a9e96333 100644 --- a/apps/pathway-design/server/src/specs/change-title-pathway/index.step.ts +++ b/apps/pathway-design/server/src/specs/change-title-pathway/index.step.ts @@ -1,16 +1,22 @@ -import { PDSPIPPathwayPersistenceInfrastructureModule } from '@bewoak/pathway-design-server-pathway-infrastructure'; +import { strict as assert } from 'node:assert'; +import type { Http2Server } from 'node:http2'; +import { + PDSPIPPathwayPersistenceInfrastructureModule, + type PDSPIPPersistenceDriverAuthorized, +} from '@bewoak/pathway-design-server-pathway-infrastructure'; import { PDSPIAChangeTitlePathwayInterfaceAdaptersModule, PDSPIAInitializePathwayInterfaceAdaptersModule, } from '@bewoak/pathway-design-server-pathway-interface-adapters'; -import { PDSPPPathwayPresentersModule } from '@bewoak/pathway-design-server-pathway-presenters'; +import { + PDSPPPathwayPresentersModule, + type PDSPPPresenterDriverAuthorized, +} from '@bewoak/pathway-design-server-pathway-presenters'; import type { DataTable } from '@cucumber/cucumber'; import type { INestApplication } from '@nestjs/common'; import { CqrsModule } from '@nestjs/cqrs'; import { Test } from '@nestjs/testing'; import { binding, given, then, when } from 'cucumber-tsflow'; -import { strict as assert } from 'node:assert'; -import type { Http2Server } from 'node:http2'; import request from 'supertest'; @binding() @@ -19,15 +25,15 @@ class ControllerSteps { private httpServer: Http2Server; private response: request.Response; - @given('I am authenticated on the platform for change the title of the pathway in memory persistence and json presenter') - public async connectToPlatform() { + @given('I am authenticated on the platform for change the title of the pathway with {string} and {string}') + public async connectToPlatform(presenter: PDSPPPresenterDriverAuthorized, persistence: PDSPIPPersistenceDriverAuthorized) { const testingModule = await Test.createTestingModule({ imports: [ - PDSPIAChangeTitlePathwayInterfaceAdaptersModule.withPresenter(PDSPPPathwayPresentersModule.use('toJson')) - .withPersistence(PDSPIPPathwayPersistenceInfrastructureModule.use('inMemory')) + PDSPIAChangeTitlePathwayInterfaceAdaptersModule.withPresenter(PDSPPPathwayPresentersModule.use(presenter)) + .withPersistence(PDSPIPPathwayPersistenceInfrastructureModule.use(persistence)) .build(), - PDSPIAInitializePathwayInterfaceAdaptersModule.withPresenter(PDSPPPathwayPresentersModule.use('toJson')) - .withPersistence(PDSPIPPathwayPersistenceInfrastructureModule.use('inMemory')) + PDSPIAInitializePathwayInterfaceAdaptersModule.withPresenter(PDSPPPathwayPresentersModule.use(presenter)) + .withPersistence(PDSPIPPathwayPersistenceInfrastructureModule.use(persistence)) .build(), CqrsModule.forRoot(), ], @@ -38,7 +44,7 @@ class ControllerSteps { this.httpServer = this.app.getHttpServer(); } - @given('I have a pathway on the platform recorded in memory with these data') + @given('I have a pathway on the platform with these data') public async givenIHaveAPathwayRecordedInMemroy(dataTable: DataTable) { const firstRow = dataTable.hashes()[0]; diff --git a/apps/pathway-design/server/src/specs/initialize-pathway/index.feature b/apps/pathway-design/server/src/specs/initialize-pathway/index.feature index 452b2674..71d8a19d 100644 --- a/apps/pathway-design/server/src/specs/initialize-pathway/index.feature +++ b/apps/pathway-design/server/src/specs/initialize-pathway/index.feature @@ -1,7 +1,7 @@ -Feature: Platform - Initialize Pathway in a memory database with json presenter +Feature: Platform - Initialize a Pathway Scenario: I want to initialize a learning pathway on the platform - Given I am authenticated on the platform for initialize a pathway in memory persistence and json presenter + Given I am authenticated on the platform for initialize a pathway with "" and "" When I want to initialize on the platform a pathway with these data | title | description | researchField | | My Pathway | A test pathway | biology | @@ -9,5 +9,7 @@ Feature: Platform - Initialize Pathway in a memory database with json presenter | title | description | researchField | | My Pathway | A test pathway | biology | Then The pathway received from the platform should be have a unique identifier - - \ No newline at end of file + + Examples: + | presenter | persistence | + | toJson | inMemory | \ No newline at end of file diff --git a/apps/pathway-design/server/src/specs/initialize-pathway/index.step.ts b/apps/pathway-design/server/src/specs/initialize-pathway/index.step.ts index 054b562c..84f88bef 100644 --- a/apps/pathway-design/server/src/specs/initialize-pathway/index.step.ts +++ b/apps/pathway-design/server/src/specs/initialize-pathway/index.step.ts @@ -1,13 +1,19 @@ -import { PDSPIPPathwayPersistenceInfrastructureModule } from '@bewoak/pathway-design-server-pathway-infrastructure'; +import { strict as assert } from 'node:assert'; +import type { Http2Server } from 'node:http2'; +import { + PDSPIPPathwayPersistenceInfrastructureModule, + type PDSPIPPersistenceDriverAuthorized, +} from '@bewoak/pathway-design-server-pathway-infrastructure'; import { PDSPIAInitializePathwayInterfaceAdaptersModule } from '@bewoak/pathway-design-server-pathway-interface-adapters'; -import { PDSPPPathwayPresentersModule } from '@bewoak/pathway-design-server-pathway-presenters'; +import { + PDSPPPathwayPresentersModule, + type PDSPPPresenterDriverAuthorized, +} from '@bewoak/pathway-design-server-pathway-presenters'; import type { DataTable } from '@cucumber/cucumber'; import type { INestApplication } from '@nestjs/common'; import { CqrsModule } from '@nestjs/cqrs'; import { Test } from '@nestjs/testing'; import { binding, given, then, when } from 'cucumber-tsflow'; -import { strict as assert } from 'node:assert'; -import type { Http2Server } from 'node:http2'; import request from 'supertest'; @binding() @@ -16,12 +22,12 @@ class ControllerSteps { private httpServer: Http2Server; private response: request.Response; - @given('I am authenticated on the platform for initialize a pathway in memory persistence and json presenter') - public async connectToServer() { + @given('I am authenticated on the platform for initialize a pathway with {string} and {string}') + public async connectToServer(presenter: PDSPPPresenterDriverAuthorized, persistence: PDSPIPPersistenceDriverAuthorized) { const testingModule = await Test.createTestingModule({ imports: [ - PDSPIAInitializePathwayInterfaceAdaptersModule.withPresenter(PDSPPPathwayPresentersModule.use('toJson')) - .withPersistence(PDSPIPPathwayPersistenceInfrastructureModule.use('inMemory')) + PDSPIAInitializePathwayInterfaceAdaptersModule.withPresenter(PDSPPPathwayPresentersModule.use(presenter)) + .withPersistence(PDSPIPPathwayPersistenceInfrastructureModule.use(persistence)) .build(), CqrsModule.forRoot(), ], diff --git a/biome.json b/biome.json index 8033b956..a0bb79fa 100644 --- a/biome.json +++ b/biome.json @@ -26,6 +26,9 @@ "noVoidTypeReturn": { "level": "error" } + }, + "complexity": { + "noForEach": "off" } } }, diff --git a/bun.lockb b/bun.lockb index 264c6df2dc48eb9c7cec6a4c81272b741ad7210f..0b6e79ccf8e76dd904cd8362316437cae8c5a6f8 100755 GIT binary patch delta 119007 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 delta 119007 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 mYXrY0dVAz5MjCx{UL@v^;xk) => { + const parsedEnv = envSchema.safeParse(process.env); + + if (parsedEnv.success === false) { + const { errors } = parsedEnv.error; + + errors.forEach((err) => { + Logger.error(`Invalid ${err.path} environment variable: ${err.message}`, 'EnvValidation'); + }); + process.exit(1); + } +}; diff --git a/libs/common/configs/server/env/src/lib/get-env-variables.ts b/libs/common/configs/server/env/src/lib/get-env-variables.ts new file mode 100644 index 00000000..6609da5d --- /dev/null +++ b/libs/common/configs/server/env/src/lib/get-env-variables.ts @@ -0,0 +1,4 @@ +import type { ZodObject, ZodRawShape, z } from 'zod'; + +export const cCSEGetEnvironmentVariables = (envSchema: ZodObject) => + envSchema.safeParse(process.env).data as z.infer; diff --git a/libs/common/configs/server/env/tsconfig.json b/libs/common/configs/server/env/tsconfig.json new file mode 100644 index 00000000..679400da --- /dev/null +++ b/libs/common/configs/server/env/tsconfig.json @@ -0,0 +1,22 @@ +{ + "extends": "../../../../../tsconfig.base.json", + "compilerOptions": { + "module": "es2022", + "forceConsistentCasingInFileNames": true, + "strict": true, + "noImplicitOverride": true, + "noPropertyAccessFromIndexSignature": true, + "noImplicitReturns": true, + "noFallthroughCasesInSwitch": true + }, + "files": [], + "include": [], + "references": [ + { + "path": "./tsconfig.lib.json" + }, + { + "path": "./tsconfig.spec.json" + } + ] +} diff --git a/libs/common/configs/server/env/tsconfig.lib.json b/libs/common/configs/server/env/tsconfig.lib.json new file mode 100644 index 00000000..5c40769b --- /dev/null +++ b/libs/common/configs/server/env/tsconfig.lib.json @@ -0,0 +1,11 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "../../../../../dist/out-tsc", + "types": ["node"], + "composite": true, + "declaration": true + }, + "include": ["src/**/*.ts"], + "exclude": ["src/**/*.spec.ts", "src/**/*.test.ts", "src/**/*.step.ts"] +} diff --git a/libs/common/configs/server/env/tsconfig.spec.json b/libs/common/configs/server/env/tsconfig.spec.json new file mode 100644 index 00000000..a8c23a46 --- /dev/null +++ b/libs/common/configs/server/env/tsconfig.spec.json @@ -0,0 +1,10 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "module": "CommonJS", + "esModuleInterop": true, + "composite": true, + "declaration": true + }, + "include": ["src/**/*.ts"] +} diff --git a/libs/common/configs/server/swagger/.swcrc b/libs/common/configs/server/swagger/.swcrc new file mode 100644 index 00000000..d24f1ace --- /dev/null +++ b/libs/common/configs/server/swagger/.swcrc @@ -0,0 +1,22 @@ +{ + "jsc": { + "target": "es2022", + "parser": { + "syntax": "typescript", + "decorators": true, + "dynamicImport": true + }, + "transform": { + "decoratorMetadata": true, + "legacyDecorator": true + }, + "keepClassNames": true, + "externalHelpers": true, + "loose": true + }, + "module": { + "type": "es6" + }, + "sourceMaps": true, + "exclude": [".*\\.spec.tsx?$", ".*\\.step.ts$", ".*\\.test.tsx?$", ".*.js$"] +} diff --git a/libs/common/configs/server/swagger/biome.json b/libs/common/configs/server/swagger/biome.json new file mode 100644 index 00000000..7a38d8eb --- /dev/null +++ b/libs/common/configs/server/swagger/biome.json @@ -0,0 +1,17 @@ +{ + "$schema": "../../../../../node_modules/@biomejs/biome/configuration_schema.json", + "extends": ["../../../../../biome.json"], + "linter": { + "rules": { + "nursery": { + "noRestrictedImports": { + "options": { + "paths": {} + }, + "level": "error" + } + } + } + }, + "overrides": [{}] +} diff --git a/libs/common/configs/server/swagger/cucumber.js b/libs/common/configs/server/swagger/cucumber.js new file mode 100644 index 00000000..866229c8 --- /dev/null +++ b/libs/common/configs/server/swagger/cucumber.js @@ -0,0 +1,11 @@ +module.exports = { + default: { + paths: ['libs/common/configs/server/swagger/src/lib/**/*.feature'], + requireModule: ['ts-node/register', 'tsconfig-paths/register'], + require: ['libs/common/configs/server/swagger/src/lib/**/*.step.ts'], + format: [ + 'json:dist/reports/libs/common/configs/server/swagger/test-feature/index.json', + 'html:dist/reports/libs/common/configs/server/swagger/test-feature/index.html', + ], + }, +}; diff --git a/libs/common/configs/server/swagger/package.json b/libs/common/configs/server/swagger/package.json new file mode 100644 index 00000000..f7bd6cde --- /dev/null +++ b/libs/common/configs/server/swagger/package.json @@ -0,0 +1,9 @@ +{ + "name": "@bewoak/common-configs-server-swagger", + "version": "0.0.1", + "dependencies": { + "@swc/helpers": "~0.5.11" + }, + "main": "./src/index.js", + "typings": "./src/index.d.ts" +} diff --git a/libs/common/configs/server/swagger/project.json b/libs/common/configs/server/swagger/project.json new file mode 100644 index 00000000..91bb1f0c --- /dev/null +++ b/libs/common/configs/server/swagger/project.json @@ -0,0 +1,50 @@ +{ + "name": "common-configs-server-swagger", + "$schema": "../../../../../node_modules/nx/schemas/project-schema.json", + "sourceRoot": "libs/common/configs/server/swagger/src", + "projectType": "library", + "targets": { + "build": { + "executor": "@nx/js:swc", + "outputs": ["{options.outputPath}"], + "options": { + "outputPath": "dist/libs/common/configs/server/swagger", + "main": "libs/common/configs/server/swagger/src/index.ts", + "tsConfig": "libs/common/configs/server/swagger/tsconfig.lib.json", + "assets": [] + } + }, + "nx-release-publish": { + "options": { + "packageRoot": "dist/{projectRoot}" + } + }, + "lint": { + "executor": "nx:run-commands", + "options": { + "command": "bun run biome check --write {projectRoot} --config-path={projectRoot}/biome.json" + } + }, + "test": { + "executor": "nx:run-commands", + "options": { + "command": "bun test --coverage --coverage-dir=dist/reports/{projectRoot}/coverage --coverage-reporter=lcov {projectRoot}" + } + }, + "test-feature": { + "executor": "nx:run-commands", + "options": { + "command": "TS_NODE_PROJECT='{projectRoot}/tsconfig.spec.json' bun run cucumber-js --config={projectRoot}/cucumber.js" + } + } + }, + "tags": ["type:common:configs:server:swagger"], + "release": { + "version": { + "generatorOptions": { + "packageRoot": "dist/{projectRoot}", + "currentVersionResolver": "git-tag" + } + } + } +} diff --git a/libs/common/configs/server/swagger/src/index.ts b/libs/common/configs/server/swagger/src/index.ts new file mode 100644 index 00000000..7ef58bc3 --- /dev/null +++ b/libs/common/configs/server/swagger/src/index.ts @@ -0,0 +1 @@ +export { cCSSSetupSwaggerDocument } from './lib/swagger.config'; diff --git a/libs/common/configs/server/swagger/src/lib/swagger.config.ts b/libs/common/configs/server/swagger/src/lib/swagger.config.ts new file mode 100644 index 00000000..539e5089 --- /dev/null +++ b/libs/common/configs/server/swagger/src/lib/swagger.config.ts @@ -0,0 +1,30 @@ +import type { INestApplication } from '@nestjs/common'; +import { DocumentBuilder, SwaggerModule } from '@nestjs/swagger'; +import type { SwaggerOptions } from './types'; + +export const cCSSSetupSwaggerDocument = (app: INestApplication, options: SwaggerOptions) => { + const documentOptions = new DocumentBuilder() + .setTitle(options.title) + .setDescription(options.description) + .setVersion(options.version); + + const documentOptionsWithBearerAuth = options.hasBearerAuth + ? documentOptions.addBearerAuth( + { + description: 'Please enter token in following format: Bearer ', + name: 'Authorization', + bearerFormat: 'Bearer', + scheme: 'Bearer', + type: 'http', + in: 'Header', + }, + 'access-token' + ) + : documentOptions; + + const documentOptionsBuilt = documentOptionsWithBearerAuth.build(); + + const document = SwaggerModule.createDocument(app, documentOptionsBuilt); + + SwaggerModule.setup(options.path, app, document); +}; diff --git a/libs/common/configs/server/swagger/src/lib/types.ts b/libs/common/configs/server/swagger/src/lib/types.ts new file mode 100644 index 00000000..a3b61ba5 --- /dev/null +++ b/libs/common/configs/server/swagger/src/lib/types.ts @@ -0,0 +1,7 @@ +export interface SwaggerOptions { + description: string; + hasBearerAuth: boolean; + path: string; + title: string; + version: string; +} diff --git a/libs/common/configs/server/swagger/tsconfig.json b/libs/common/configs/server/swagger/tsconfig.json new file mode 100644 index 00000000..679400da --- /dev/null +++ b/libs/common/configs/server/swagger/tsconfig.json @@ -0,0 +1,22 @@ +{ + "extends": "../../../../../tsconfig.base.json", + "compilerOptions": { + "module": "es2022", + "forceConsistentCasingInFileNames": true, + "strict": true, + "noImplicitOverride": true, + "noPropertyAccessFromIndexSignature": true, + "noImplicitReturns": true, + "noFallthroughCasesInSwitch": true + }, + "files": [], + "include": [], + "references": [ + { + "path": "./tsconfig.lib.json" + }, + { + "path": "./tsconfig.spec.json" + } + ] +} diff --git a/libs/common/configs/server/swagger/tsconfig.lib.json b/libs/common/configs/server/swagger/tsconfig.lib.json new file mode 100644 index 00000000..5c40769b --- /dev/null +++ b/libs/common/configs/server/swagger/tsconfig.lib.json @@ -0,0 +1,11 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "../../../../../dist/out-tsc", + "types": ["node"], + "composite": true, + "declaration": true + }, + "include": ["src/**/*.ts"], + "exclude": ["src/**/*.spec.ts", "src/**/*.test.ts", "src/**/*.step.ts"] +} diff --git a/libs/common/configs/server/swagger/tsconfig.spec.json b/libs/common/configs/server/swagger/tsconfig.spec.json new file mode 100644 index 00000000..a8c23a46 --- /dev/null +++ b/libs/common/configs/server/swagger/tsconfig.spec.json @@ -0,0 +1,10 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "module": "CommonJS", + "esModuleInterop": true, + "composite": true, + "declaration": true + }, + "include": ["src/**/*.ts"] +} diff --git a/libs/pathway-design/server/pathway/application/src/lib/initialize/specs/initialize-pathway.usecase.step.ts b/libs/pathway-design/server/pathway/application/src/lib/initialize/specs/initialize-pathway.usecase.step.ts index 2f222521..09654cdf 100644 --- a/libs/pathway-design/server/pathway/application/src/lib/initialize/specs/initialize-pathway.usecase.step.ts +++ b/libs/pathway-design/server/pathway/application/src/lib/initialize/specs/initialize-pathway.usecase.step.ts @@ -1,3 +1,4 @@ +import { strict as assert } from 'node:assert'; import type { PDSPBEPathwayEntity, PDSPBPInitializePathwayPersistencePort, @@ -7,7 +8,6 @@ import type { import type { DataTable } from '@cucumber/cucumber'; import type { EventPublisher } from '@nestjs/cqrs'; import { before, binding, then, when } from 'cucumber-tsflow'; -import { strict as assert } from 'node:assert'; import sinon from 'sinon'; import { PDSPAIUInitializePathwayUsecase } from '../usecase/initialize-pathway.usecase'; diff --git a/libs/pathway-design/server/pathway/business/src/lib/entities/pathway.ts b/libs/pathway-design/server/pathway/business/src/lib/entities/pathway.ts index 6d87f7cc..22ac5020 100644 --- a/libs/pathway-design/server/pathway/business/src/lib/entities/pathway.ts +++ b/libs/pathway-design/server/pathway/business/src/lib/entities/pathway.ts @@ -35,9 +35,17 @@ export class PDSPBEPathwayEntity extends AggregateRoot { this.#researchField = researchField; this.#title = title; - this.apply(new PDSPBEPathwayInitializedEvent(this), { - skipHandler: true, - }); + this.apply( + new PDSPBEPathwayInitializedEvent(this.id, { + pathwayId: this.id, + title: this.title, + description: this.description, + researchField: this.researchField, + }), + { + skipHandler: true, + } + ); } changeTitle(title: PDSPBVOTitleValueObjects) { diff --git a/libs/pathway-design/server/pathway/business/src/lib/events/pathway-initialized.event.ts b/libs/pathway-design/server/pathway/business/src/lib/events/pathway-initialized.event.ts index b45a4fac..40e20313 100644 --- a/libs/pathway-design/server/pathway/business/src/lib/events/pathway-initialized.event.ts +++ b/libs/pathway-design/server/pathway/business/src/lib/events/pathway-initialized.event.ts @@ -1,5 +1,11 @@ -import type { PDSPBEPathwayEntity } from '../entities/pathway'; +import { type CEEvent, CE_EVENT_TYPE_PATHWAY_INITIALIZED, CE_EVENT_VERSION } from '@bewoak/common-events'; -export class PDSPBEPathwayInitializedEvent { - constructor(public readonly pathway: PDSPBEPathwayEntity) {} +export class PDSPBEPathwayInitializedEvent implements CEEvent { + public readonly eventType = CE_EVENT_TYPE_PATHWAY_INITIALIZED; + public readonly version = CE_EVENT_VERSION; + + constructor( + public readonly aggregateId: string, + public readonly payload: Record + ) {} } diff --git a/libs/pathway-design/server/pathway/business/src/lib/specs/change-name/change-title-pathway.step.ts b/libs/pathway-design/server/pathway/business/src/lib/specs/change-name/change-title-pathway.step.ts index 56d147a5..89fe4e47 100644 --- a/libs/pathway-design/server/pathway/business/src/lib/specs/change-name/change-title-pathway.step.ts +++ b/libs/pathway-design/server/pathway/business/src/lib/specs/change-name/change-title-pathway.step.ts @@ -1,6 +1,6 @@ +import { strict as assert } from 'node:assert'; import type { DataTable } from '@cucumber/cucumber'; import { binding, given, then, when } from 'cucumber-tsflow'; -import { strict as assert } from 'node:assert'; import sinon from 'sinon'; import type { PDSPBEPathwayEntity } from '../../entities/pathway'; import { PDSPBEPathwayTitleChangedEvent } from '../../events/pathway-title-changed.event'; diff --git a/libs/pathway-design/server/pathway/business/src/lib/specs/initialize/initialize-pathway.step.ts b/libs/pathway-design/server/pathway/business/src/lib/specs/initialize/initialize-pathway.step.ts index 8ba03dbf..973c24fd 100644 --- a/libs/pathway-design/server/pathway/business/src/lib/specs/initialize/initialize-pathway.step.ts +++ b/libs/pathway-design/server/pathway/business/src/lib/specs/initialize/initialize-pathway.step.ts @@ -1,6 +1,6 @@ +import { strict as assert } from 'node:assert'; import type { DataTable } from '@cucumber/cucumber'; import { binding, given, then, when } from 'cucumber-tsflow'; -import { strict as assert } from 'node:assert'; import sinon from 'sinon'; import { PDSPBEPathwayEntity } from '../../entities/pathway'; import { PDSPBEPathwayInitializedEvent } from '../../events/pathway-initialized.event'; @@ -84,7 +84,16 @@ export default class PathwaySteps { @then('It should apply an event indicating that the pathway has been initialized') public thenItShouldApplyAnEvent() { - const expectedEvent = new PDSPBEPathwayInitializedEvent(this.pDSPBEPathwayEntity as PDSPBEPathwayEntity); + if (this.pDSPBEPathwayEntity === undefined) { + throw new Error('Pathway is not initialized'); + } + + const expectedEvent = new PDSPBEPathwayInitializedEvent(this.pDSPBEPathwayEntity.id, { + pathwayId: this.pDSPBEPathwayEntity.id, + title: this.pDSPBEPathwayEntity.title, + description: this.pDSPBEPathwayEntity.description, + researchField: this.pDSPBEPathwayEntity.researchField, + }); const callArgs = this.applyMethodSpy?.getCall(0).args[0]; assert(this.applyMethodSpy?.calledOnce); diff --git a/libs/pathway-design/server/pathway/infrastructure/src/index.ts b/libs/pathway-design/server/pathway/infrastructure/src/index.ts index d20115cb..d0615b4a 100644 --- a/libs/pathway-design/server/pathway/infrastructure/src/index.ts +++ b/libs/pathway-design/server/pathway/infrastructure/src/index.ts @@ -1 +1,5 @@ -export { PDSPIPPathwayPersistenceInfrastructureModule } from './lib/persistence/pathway-persistence-infrastructure.module'; +export { + PDSPIPPathwayPersistenceInfrastructureModule, + PDSPIPPersistenceDriverAuthorized, + pDSPIPPersistenceKeys, +} from './lib/persistence/pathway-persistence-infrastructure.module'; diff --git a/libs/pathway-design/server/pathway/infrastructure/src/lib/persistence/pathway-persistence-infrastructure.module.ts b/libs/pathway-design/server/pathway/infrastructure/src/lib/persistence/pathway-persistence-infrastructure.module.ts index 474fb73a..b1185634 100644 --- a/libs/pathway-design/server/pathway/infrastructure/src/lib/persistence/pathway-persistence-infrastructure.module.ts +++ b/libs/pathway-design/server/pathway/infrastructure/src/lib/persistence/pathway-persistence-infrastructure.module.ts @@ -24,12 +24,14 @@ const persistenceProvidersMap: Record<'inMemory', Provider[]> = { ], }; -type PersistenceDriverAuthorized = keyof typeof persistenceProvidersMap; +export const pDSPIPPersistenceKeys = Object.keys(persistenceProvidersMap) as [PDSPIPPersistenceDriverAuthorized]; + +export type PDSPIPPersistenceDriverAuthorized = keyof typeof persistenceProvidersMap; @Module({}) // biome-ignore lint/complexity/noStaticOnlyClass: not pertinent here because this is a module export class PDSPIPPathwayPersistenceInfrastructureModule { - static use(driver: PersistenceDriverAuthorized) { + static use(driver: PDSPIPPersistenceDriverAuthorized) { const persistenceProviders = persistenceProvidersMap[driver]; return { diff --git a/libs/pathway-design/server/pathway/presenters/src/index.ts b/libs/pathway-design/server/pathway/presenters/src/index.ts index 34dc7759..579de838 100644 --- a/libs/pathway-design/server/pathway/presenters/src/index.ts +++ b/libs/pathway-design/server/pathway/presenters/src/index.ts @@ -1 +1,5 @@ -export { PDSPPPathwayPresentersModule } from './lib/pathway-presenters.module'; +export { + PDSPPPathwayPresentersModule, + PDSPPPresenterDriverAuthorized, + pDSPPPresenterKeys, +} from './lib/pathway-presenters.module'; diff --git a/libs/pathway-design/server/pathway/presenters/src/lib/pathway-presenters.module.ts b/libs/pathway-design/server/pathway/presenters/src/lib/pathway-presenters.module.ts index e73c5876..41f4b058 100644 --- a/libs/pathway-design/server/pathway/presenters/src/lib/pathway-presenters.module.ts +++ b/libs/pathway-design/server/pathway/presenters/src/lib/pathway-presenters.module.ts @@ -5,12 +5,14 @@ const presenterModuleMap: Record<'toJson', typeof ToJsonPathwayPresenterModule> toJson: ToJsonPathwayPresenterModule, }; -type PresenterDriverAuthorized = keyof typeof presenterModuleMap; +export const pDSPPPresenterKeys = Object.keys(presenterModuleMap) as [PDSPPPresenterDriverAuthorized]; + +export type PDSPPPresenterDriverAuthorized = keyof typeof presenterModuleMap; @Module({}) // biome-ignore lint/complexity/noStaticOnlyClass: not pertinent here because this is a module export class PDSPPPathwayPresentersModule { - static use(driver: PresenterDriverAuthorized) { + static use(driver: PDSPPPresenterDriverAuthorized) { const presenterModule = presenterModuleMap[driver]; return { diff --git a/package.json b/package.json index 15a653af..4c8a93d8 100644 --- a/package.json +++ b/package.json @@ -13,7 +13,8 @@ "rxjs": "^7.8.0", "swagger-ui-express": "^5.0.1", "swc-loader": "^0.2.6", - "tslib": "^2.3.0" + "tslib": "^2.3.0", + "zod": "^3.23.8" }, "devDependencies": { "@biomejs/biome": "^1.8.3", @@ -61,7 +62,7 @@ "lint": "nx run-many --target=lint --parallel=4", "nx": "nx", "postinstall": "chmod +x .hooks/* && git config core.hooksPath .hooks", - "start": "nx serve pathway-design-server", + "start:pathway-design:app": "PORT=3000 GLOBAL_PREFIX=api PERSISTENCE_DRIVER=inMemory PRESENTER_DRIVER=toJson nx serve pathway-design-server", "test": "nx run-many --target=test --parallel=4", "test:feature": "nx run-many --target=test-feature --parallel=4", "tools:autocanon": "autocannon -c 10 -d 10s http://localhost:3000/api/pathway/initialize", diff --git a/tsconfig.base.json b/tsconfig.base.json index ec6e1435..5a314759 100644 --- a/tsconfig.base.json +++ b/tsconfig.base.json @@ -10,6 +10,8 @@ "module": "ES2022", "moduleResolution": "node", "paths": { + "@bewoak/common-configs-server-env": ["libs/common/configs/server/env/src/index.ts"], + "@bewoak/common-configs-server-swagger": ["libs/common/configs/server/swagger/src/index.ts"], "@bewoak/common-events": ["libs/common/events/src/index.ts"], "@bewoak/common-tools-server-http-exceptions": ["libs/common/tools/server/http-exceptions/src/index.ts"], "@bewoak/pathway-design-server-pathway-application": ["libs/pathway-design/server/pathway/application/src/index.ts"],