From 02dd4939d4ce1a11d77a06825151f3153efffe36 Mon Sep 17 00:00:00 2001 From: Suyi Date: Thu, 18 Jan 2024 20:41:59 +0800 Subject: [PATCH] feat: rename koa plugin and support nestjs --- common/config/rush/pnpm-lock.yaml | 432 +++++++++++++++++- .../README.md | 0 .../package.json | 4 +- .../src/bootstrap.ts | 0 .../src/config/config.default.ts | 0 .../src/config/plugin.ts | 0 .../src/controller/home.ts | 0 .../src/router.ts | 0 .../src/types.ts | 0 .../tsconfig.json | 0 .../apps/{artusx-web => artusx-koa}/README.md | 0 .../{artusx-web => artusx-koa}/package.json | 10 +- .../src/bootstrap.ts | 0 .../src/config/config.default.ts | 0 .../src/config/plugin.ts | 0 .../src/controller/home.ts | 0 .../{artusx-web => artusx-koa}/src/types.ts | 0 .../{artusx-web => artusx-koa}/tsconfig.json | 0 packages/apps/artusx-nest/README.md | 27 ++ packages/apps/artusx-nest/package.json | 29 ++ packages/apps/artusx-nest/src/bootstrap.ts | 9 + .../artusx-nest/src/config/config.default.ts | 7 + .../apps/artusx-nest/src/config/plugin.ts | 6 + .../artusx-nest/src/root/app.controller.ts | 13 + .../apps/artusx-nest/src/root/app.module.ts | 16 + .../apps/artusx-nest/src/root/app.service.ts | 13 + .../artusx-nest/src/root/base/base.module.ts | 25 + .../artusx-nest/src/root/base/base.service.ts | 19 + packages/apps/artusx-nest/src/service/info.ts | 12 + packages/apps/artusx-nest/src/types.ts | 2 + packages/apps/artusx-nest/tsconfig.json | 12 + packages/libs/core/package.json | 2 +- packages/libs/core/src/config/plugin.ts | 4 +- packages/libs/core/src/lifecycle.ts | 2 +- packages/libs/core/src/types.ts | 2 +- packages/plugins/application-http/meta.json | 3 - .../{application-http => koa}/.gitignore | 0 .../{application-http => koa}/README.md | 0 packages/plugins/koa/meta.json | 3 + .../{application-http => koa}/package.json | 4 +- .../{application-http => koa}/pnpm-lock.yaml | 0 .../src/config/config.default.ts | 0 .../src/constants.ts | 0 .../src/decorator.ts | 0 .../{application-http => koa}/src/index.ts | 0 .../src/koa/application.ts | 0 .../src/koa/router.ts | 0 .../src/lifecycle.ts | 0 .../{application-http => koa}/src/pipeline.ts | 0 .../{application-http => koa}/src/types.ts | 0 .../{application-http => koa}/tsconfig.json | 0 packages/plugins/nest/.gitignore | 1 + packages/plugins/nest/README.md | 3 + packages/plugins/nest/meta.json | 3 + packages/plugins/nest/package.json | 56 +++ packages/plugins/nest/pnpm-lock.yaml | 300 ++++++++++++ packages/plugins/nest/src/client.ts | 26 ++ .../plugins/nest/src/config/config.default.ts | 7 + packages/plugins/nest/src/constants.ts | 3 + packages/plugins/nest/src/index.ts | 3 + packages/plugins/nest/src/lifecycle.ts | 30 ++ packages/plugins/nest/tsconfig.json | 12 + rush.json | 24 +- 63 files changed, 1091 insertions(+), 33 deletions(-) rename packages/apps/{artusx-legacy => artusx-express}/README.md (100%) rename packages/apps/{artusx-legacy => artusx-express}/package.json (88%) rename packages/apps/{artusx-legacy => artusx-express}/src/bootstrap.ts (100%) rename packages/apps/{artusx-legacy => artusx-express}/src/config/config.default.ts (100%) rename packages/apps/{artusx-legacy => artusx-express}/src/config/plugin.ts (100%) rename packages/apps/{artusx-legacy => artusx-express}/src/controller/home.ts (100%) rename packages/apps/{artusx-legacy => artusx-express}/src/router.ts (100%) rename packages/apps/{artusx-legacy => artusx-express}/src/types.ts (100%) rename packages/apps/{artusx-legacy => artusx-express}/tsconfig.json (100%) rename packages/apps/{artusx-web => artusx-koa}/README.md (100%) rename packages/apps/{artusx-web => artusx-koa}/package.json (78%) rename packages/apps/{artusx-web => artusx-koa}/src/bootstrap.ts (100%) rename packages/apps/{artusx-web => artusx-koa}/src/config/config.default.ts (100%) rename packages/apps/{artusx-web => artusx-koa}/src/config/plugin.ts (100%) rename packages/apps/{artusx-web => artusx-koa}/src/controller/home.ts (100%) rename packages/apps/{artusx-web => artusx-koa}/src/types.ts (100%) rename packages/apps/{artusx-web => artusx-koa}/tsconfig.json (100%) create mode 100644 packages/apps/artusx-nest/README.md create mode 100644 packages/apps/artusx-nest/package.json create mode 100644 packages/apps/artusx-nest/src/bootstrap.ts create mode 100644 packages/apps/artusx-nest/src/config/config.default.ts create mode 100644 packages/apps/artusx-nest/src/config/plugin.ts create mode 100644 packages/apps/artusx-nest/src/root/app.controller.ts create mode 100644 packages/apps/artusx-nest/src/root/app.module.ts create mode 100644 packages/apps/artusx-nest/src/root/app.service.ts create mode 100644 packages/apps/artusx-nest/src/root/base/base.module.ts create mode 100644 packages/apps/artusx-nest/src/root/base/base.service.ts create mode 100644 packages/apps/artusx-nest/src/service/info.ts create mode 100644 packages/apps/artusx-nest/src/types.ts create mode 100644 packages/apps/artusx-nest/tsconfig.json delete mode 100644 packages/plugins/application-http/meta.json rename packages/plugins/{application-http => koa}/.gitignore (100%) rename packages/plugins/{application-http => koa}/README.md (100%) create mode 100644 packages/plugins/koa/meta.json rename packages/plugins/{application-http => koa}/package.json (93%) rename packages/plugins/{application-http => koa}/pnpm-lock.yaml (100%) rename packages/plugins/{application-http => koa}/src/config/config.default.ts (100%) rename packages/plugins/{application-http => koa}/src/constants.ts (100%) rename packages/plugins/{application-http => koa}/src/decorator.ts (100%) rename packages/plugins/{application-http => koa}/src/index.ts (100%) rename packages/plugins/{application-http => koa}/src/koa/application.ts (100%) rename packages/plugins/{application-http => koa}/src/koa/router.ts (100%) rename packages/plugins/{application-http => koa}/src/lifecycle.ts (100%) rename packages/plugins/{application-http => koa}/src/pipeline.ts (100%) rename packages/plugins/{application-http => koa}/src/types.ts (100%) rename packages/plugins/{application-http => koa}/tsconfig.json (100%) create mode 100644 packages/plugins/nest/.gitignore create mode 100644 packages/plugins/nest/README.md create mode 100644 packages/plugins/nest/meta.json create mode 100644 packages/plugins/nest/package.json create mode 100644 packages/plugins/nest/pnpm-lock.yaml create mode 100644 packages/plugins/nest/src/client.ts create mode 100644 packages/plugins/nest/src/config/config.default.ts create mode 100644 packages/plugins/nest/src/constants.ts create mode 100644 packages/plugins/nest/src/index.ts create mode 100644 packages/plugins/nest/src/lifecycle.ts create mode 100644 packages/plugins/nest/tsconfig.json diff --git a/common/config/rush/pnpm-lock.yaml b/common/config/rush/pnpm-lock.yaml index 2c6d802b..fb207189 100644 --- a/common/config/rush/pnpm-lock.yaml +++ b/common/config/rush/pnpm-lock.yaml @@ -56,7 +56,7 @@ importers: tslib: 2.6.2 typescript: 4.9.5 - ../../packages/apps/artusx-legacy: + ../../packages/apps/artusx-express: specifiers: '@artus/core': ^2.x '@artus/tsconfig': ~1.0.1 @@ -81,7 +81,7 @@ importers: tslib: 2.6.2 typescript: 5.3.3 - ../../packages/apps/artusx-web: + ../../packages/apps/artusx-koa: specifiers: '@artus/core': ^2.x '@artus/tsconfig': ~1.0.1 @@ -106,12 +106,45 @@ importers: tslib: 2.6.2 typescript: 5.3.3 + ../../packages/apps/artusx-nest: + specifiers: + '@artus/core': ^2.x + '@artus/tsconfig': ~1.0.1 + '@artusx/plugin-nest': workspace:* + '@artusx/utils': workspace:* + '@nestjs/common': ~10.3.0 + '@nestjs/core': ~10.3.0 + '@nestjs/platform-express': ~10.3.0 + '@types/node': ~20.10.6 + nodemon: ~3.0.2 + reflect-metadata: ^0.1.13 + rxjs: ~7.8.1 + ts-node: ~10.9.2 + tslib: ~2.6.2 + typescript: ~5.3.3 + dependencies: + '@artus/core': 2.2.1_reflect-metadata@0.1.14 + '@artusx/plugin-nest': link:../../plugins/nest + '@artusx/utils': link:../../libs/utils + '@nestjs/common': 10.3.0_rcbhqa4so6dtcde4mhxkgzk6je + '@nestjs/core': 10.3.0_ti5phmpc6dupjzhqk2m4uyikty + '@nestjs/platform-express': 10.3.0_3rapiyhwjmezpbsl5hhpinbhca + nodemon: 3.0.2 + reflect-metadata: 0.1.14 + rxjs: 7.8.1 + devDependencies: + '@artus/tsconfig': 1.0.1_@types+node@20.10.8 + '@types/node': 20.10.8 + ts-node: 10.9.2_cn4friaqt4kegyh625i7tshlpe + tslib: 2.6.2 + typescript: 5.3.3 + ../../packages/libs/core: specifiers: '@artus/core': ^2.x '@artus/pipeline': ^0.2 '@artus/tsconfig': ^1.0.1 - '@artusx/plugin-application-http': workspace:* + '@artusx/plugin-koa': workspace:* '@koa/bodyparser': ~5.0.0 '@koa/cors': ~5.0.0 '@types/koa__cors': ~5.0.0 @@ -122,7 +155,7 @@ importers: dependencies: '@artus/core': 2.2.1 '@artus/pipeline': 0.2.3 - '@artusx/plugin-application-http': link:../../plugins/application-http + '@artusx/plugin-koa': link:../../plugins/koa '@koa/bodyparser': 5.0.0 '@koa/cors': 5.0.0 devDependencies: @@ -152,7 +185,28 @@ importers: tslib: 2.6.2 typescript: 4.9.5 - ../../packages/plugins/application-http: + ../../packages/plugins/express: + specifiers: + '@artus/core': ^2.x + '@artus/pipeline': ^0.2 + '@artus/tsconfig': ^1.0.1 + '@types/express': ~4.17.21 + '@types/node': ^18.11.17 + express: ~4.18.2 + tslib: ^2.5.0 + typescript: ^4.9.4 + dependencies: + '@artus/core': 2.2.1 + '@artus/pipeline': 0.2.3 + express: 4.18.2 + devDependencies: + '@artus/tsconfig': 1.0.1_@types+node@18.19.7 + '@types/express': 4.17.21 + '@types/node': 18.19.7 + tslib: 2.6.2 + typescript: 4.9.5 + + ../../packages/plugins/koa: specifiers: '@artus/core': ^2.x '@artus/pipeline': ^0.2 @@ -177,23 +231,23 @@ importers: tslib: 2.6.2 typescript: 4.9.5 - ../../packages/plugins/express: + ../../packages/plugins/nest: specifiers: '@artus/core': ^2.x '@artus/pipeline': ^0.2 '@artus/tsconfig': ^1.0.1 - '@types/express': ~4.17.21 + '@nestjs/common': ~10.3.0 + '@nestjs/core': ~10.3.0 '@types/node': ^18.11.17 - express: ~4.18.2 tslib: ^2.5.0 typescript: ^4.9.4 dependencies: '@artus/core': 2.2.1 '@artus/pipeline': 0.2.3 - express: 4.18.2 + '@nestjs/common': 10.3.0 + '@nestjs/core': 10.3.0_@nestjs+common@10.3.0 devDependencies: '@artus/tsconfig': 1.0.1_@types+node@18.19.7 - '@types/express': 4.17.21 '@types/node': 18.19.7 tslib: 2.6.2 typescript: 4.9.5 @@ -353,6 +407,137 @@ packages: - supports-color dev: false + /@lukeed/csprng/1.1.0: + resolution: {integrity: sha512-Z7C/xXCiGWsg0KuKsHTKJxbWhpI3Vs5GwLfOean7MGyVFGqdRgBbAjOCh6u4bbjPc/8MJ2pZmK/0DLdCbivLDA==} + engines: {node: '>=8'} + dev: false + + /@nestjs/common/10.3.0: + resolution: {integrity: sha512-DGv34UHsZBxCM3H5QGE2XE/+oLJzz5+714JQjBhjD9VccFlQs3LRxo/epso4l7nJIiNlZkPyIUC8WzfU/5RTsQ==} + peerDependencies: + class-transformer: '*' + class-validator: '*' + reflect-metadata: ^0.1.12 + rxjs: ^7.1.0 + peerDependenciesMeta: + class-transformer: + optional: true + class-validator: + optional: true + dependencies: + iterare: 1.2.1 + tslib: 2.6.2 + uid: 2.0.2 + dev: false + + /@nestjs/common/10.3.0_rcbhqa4so6dtcde4mhxkgzk6je: + resolution: {integrity: sha512-DGv34UHsZBxCM3H5QGE2XE/+oLJzz5+714JQjBhjD9VccFlQs3LRxo/epso4l7nJIiNlZkPyIUC8WzfU/5RTsQ==} + peerDependencies: + class-transformer: '*' + class-validator: '*' + reflect-metadata: ^0.1.12 + rxjs: ^7.1.0 + peerDependenciesMeta: + class-transformer: + optional: true + class-validator: + optional: true + dependencies: + iterare: 1.2.1 + reflect-metadata: 0.1.14 + rxjs: 7.8.1 + tslib: 2.6.2 + uid: 2.0.2 + dev: false + + /@nestjs/core/10.3.0_@nestjs+common@10.3.0: + resolution: {integrity: sha512-N06P5ncknW/Pm8bj964WvLIZn2gNhHliCBoAO1LeBvNImYkecqKcrmLbY49Fa1rmMfEM3MuBHeDys3edeuYAOA==} + requiresBuild: true + peerDependencies: + '@nestjs/common': ^10.0.0 + '@nestjs/microservices': ^10.0.0 + '@nestjs/platform-express': ^10.0.0 + '@nestjs/websockets': ^10.0.0 + reflect-metadata: ^0.1.12 + rxjs: ^7.1.0 + peerDependenciesMeta: + '@nestjs/microservices': + optional: true + '@nestjs/platform-express': + optional: true + '@nestjs/websockets': + optional: true + dependencies: + '@nestjs/common': 10.3.0 + '@nuxtjs/opencollective': 0.3.2 + fast-safe-stringify: 2.1.1 + iterare: 1.2.1 + path-to-regexp: 3.2.0 + tslib: 2.6.2 + uid: 2.0.2 + transitivePeerDependencies: + - encoding + dev: false + + /@nestjs/core/10.3.0_ti5phmpc6dupjzhqk2m4uyikty: + resolution: {integrity: sha512-N06P5ncknW/Pm8bj964WvLIZn2gNhHliCBoAO1LeBvNImYkecqKcrmLbY49Fa1rmMfEM3MuBHeDys3edeuYAOA==} + requiresBuild: true + peerDependencies: + '@nestjs/common': ^10.0.0 + '@nestjs/microservices': ^10.0.0 + '@nestjs/platform-express': ^10.0.0 + '@nestjs/websockets': ^10.0.0 + reflect-metadata: ^0.1.12 + rxjs: ^7.1.0 + peerDependenciesMeta: + '@nestjs/microservices': + optional: true + '@nestjs/platform-express': + optional: true + '@nestjs/websockets': + optional: true + dependencies: + '@nestjs/common': 10.3.0_rcbhqa4so6dtcde4mhxkgzk6je + '@nestjs/platform-express': 10.3.0_3rapiyhwjmezpbsl5hhpinbhca + '@nuxtjs/opencollective': 0.3.2 + fast-safe-stringify: 2.1.1 + iterare: 1.2.1 + path-to-regexp: 3.2.0 + reflect-metadata: 0.1.14 + rxjs: 7.8.1 + tslib: 2.6.2 + uid: 2.0.2 + transitivePeerDependencies: + - encoding + dev: false + + /@nestjs/platform-express/10.3.0_3rapiyhwjmezpbsl5hhpinbhca: + resolution: {integrity: sha512-E4hUW48bYv8OHbP9XQg6deefmXb0pDSSuE38SdhA0mJ37zGY7C5EqqBUdlQk4ttfD+OdnbIgJ1zOokT6dd2d7A==} + peerDependencies: + '@nestjs/common': ^10.0.0 + '@nestjs/core': ^10.0.0 + dependencies: + '@nestjs/common': 10.3.0_rcbhqa4so6dtcde4mhxkgzk6je + '@nestjs/core': 10.3.0_ti5phmpc6dupjzhqk2m4uyikty + body-parser: 1.20.2 + cors: 2.8.5 + express: 4.18.2 + multer: 1.4.4-lts.1 + tslib: 2.6.2 + dev: false + + /@nuxtjs/opencollective/0.3.2: + resolution: {integrity: sha512-um0xL3fO7Mf4fDxcqx9KryrB7zgRM5JSlvGN5AGkP6JLM5XEKyjeAiPbNxdXVXQ16isuAhYpvP88NgL2BGd6aA==} + engines: {node: '>=8.0.0', npm: '>=5.0.0'} + hasBin: true + dependencies: + chalk: 4.1.2 + consola: 2.15.3 + node-fetch: 2.7.0 + transitivePeerDependencies: + - encoding + dev: false + /@tsconfig/node10/1.0.9: resolution: {integrity: sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==} dev: true @@ -562,6 +747,13 @@ packages: hasBin: true dev: true + /ansi-styles/4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} + dependencies: + color-convert: 2.0.1 + dev: false + /anymatch/3.1.3: resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} engines: {node: '>= 8'} @@ -570,6 +762,10 @@ packages: picomatch: 2.3.1 dev: false + /append-field/1.0.0: + resolution: {integrity: sha512-klpgFSWLW1ZEs8svjfb7g4qWY0YS5imI82dTg+QahUvJ8YqAY0P10Uk8tTyh9ZGuYEZEMaeJYCF5BFuX552hsw==} + dev: false + /arg/4.1.3: resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} dev: true @@ -605,6 +801,24 @@ packages: unpipe: 1.0.0 dev: false + /body-parser/1.20.2: + resolution: {integrity: sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==} + engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} + dependencies: + bytes: 3.1.2 + content-type: 1.0.5 + debug: 2.6.9 + depd: 2.0.0 + destroy: 1.2.0 + http-errors: 2.0.0 + iconv-lite: 0.4.24 + on-finished: 2.4.1 + qs: 6.11.0 + raw-body: 2.5.2 + type-is: 1.6.18 + unpipe: 1.0.0 + dev: false + /brace-expansion/1.1.11: resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} dependencies: @@ -625,6 +839,17 @@ packages: fill-range: 7.0.1 dev: false + /buffer-from/1.1.2: + resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} + dev: false + + /busboy/1.6.0: + resolution: {integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==} + engines: {node: '>=10.16.0'} + dependencies: + streamsearch: 1.1.0 + dev: false + /bytes/3.1.2: resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} engines: {node: '>= 0.8'} @@ -646,6 +871,14 @@ packages: set-function-length: 1.2.0 dev: false + /chalk/4.1.2: + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + dev: false + /chokidar/3.5.3: resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} engines: {node: '>= 8.10.0'} @@ -680,10 +913,35 @@ packages: engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'} dev: false + /color-convert/2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} + dependencies: + color-name: 1.1.4 + dev: false + + /color-name/1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + dev: false + /concat-map/0.0.1: resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} dev: false + /concat-stream/1.6.2: + resolution: {integrity: sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==} + engines: {'0': node >= 0.8} + dependencies: + buffer-from: 1.1.2 + inherits: 2.0.4 + readable-stream: 2.3.8 + typedarray: 0.0.6 + dev: false + + /consola/2.15.3: + resolution: {integrity: sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw==} + dev: false + /content-disposition/0.5.4: resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==} engines: {node: '>= 0.6'} @@ -713,6 +971,18 @@ packages: keygrip: 1.1.0 dev: false + /core-util-is/1.0.3: + resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} + dev: false + + /cors/2.8.5: + resolution: {integrity: sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==} + engines: {node: '>= 0.10'} + dependencies: + object-assign: 4.1.1 + vary: 1.1.2 + dev: false + /create-require/1.1.1: resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} dev: true @@ -869,6 +1139,10 @@ packages: vary: 1.1.2 dev: false + /fast-safe-stringify/2.1.1: + resolution: {integrity: sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==} + dev: false + /fill-range/7.0.1: resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} engines: {node: '>=8'} @@ -972,6 +1246,11 @@ packages: engines: {node: '>=4'} dev: false + /has-flag/4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} + dev: false + /has-property-descriptors/1.0.1: resolution: {integrity: sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==} dependencies: @@ -1128,6 +1407,15 @@ packages: resolution: {integrity: sha512-Ks/IoX00TtClbGQr4TWXemAnktAQvYB7HzcCxDGqEZU6oCmb2INHuOoKxbtR+HFkmYWBKv/dOZtGRiAjDhj92g==} dev: false + /isarray/1.0.0: + resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} + dev: false + + /iterare/1.2.1: + resolution: {integrity: sha512-RKYVTCjAnRthyJes037NX/IiqeidgN1xc3j1RjFfECFp28A1GVwK9nA+i0rJPaHqSZwygLzRnFlzUuHFoWWy+Q==} + engines: {node: '>=6'} + dev: false + /jsonfile/6.1.0: resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} dependencies: @@ -1276,6 +1564,17 @@ packages: brace-expansion: 2.0.1 dev: false + /minimist/1.2.8: + resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} + dev: false + + /mkdirp/0.5.6: + resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} + hasBin: true + dependencies: + minimist: 1.2.8 + dev: false + /moment-timezone/0.5.44: resolution: {integrity: sha512-nv3YpzI/8lkQn0U6RkLd+f0W/zy/JnoR5/EyPz/dNkPTBjA2jNLCVxaiQ8QpeLymhSZvX0wCL5s27NQWdOPwAw==} dependencies: @@ -1298,6 +1597,19 @@ packages: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} dev: false + /multer/1.4.4-lts.1: + resolution: {integrity: sha512-WeSGziVj6+Z2/MwQo3GvqzgR+9Uc+qt8SwHKh3gvNPiISKfsMfG4SvCOFYlxxgkXt7yIV2i1yczehm0EOKIxIg==} + engines: {node: '>= 6.0.0'} + dependencies: + append-field: 1.0.0 + busboy: 1.6.0 + concat-stream: 1.6.2 + mkdirp: 0.5.6 + object-assign: 4.1.1 + type-is: 1.6.18 + xtend: 4.0.2 + dev: false + /mysql2/3.7.0: resolution: {integrity: sha512-c45jA3Jc1X8yJKzrWu1GpplBKGwv/wIV6ITZTlCSY7npF2YfJR+6nMP5e+NTQhUeJPSyOQAbGDCGEHbAl8HN9w==} engines: {node: '>= 8.0'} @@ -1324,6 +1636,18 @@ packages: engines: {node: '>= 0.6'} dev: false + /node-fetch/2.7.0: + resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} + engines: {node: 4.x || >=6.0.0} + peerDependencies: + encoding: ^0.1.0 + peerDependenciesMeta: + encoding: + optional: true + dependencies: + whatwg-url: 5.0.0 + dev: false + /nodemon/3.0.2: resolution: {integrity: sha512-9qIN2LNTrEzpOPBaWHTm4Asy1LxXLSickZStAQ4IZe7zsoIpD/A7LWxhZV3t4Zu352uBcqVnRsDXSMR2Sc3lTA==} engines: {node: '>=10'} @@ -1353,6 +1677,11 @@ packages: engines: {node: '>=0.10.0'} dev: false + /object-assign/4.1.1: + resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} + engines: {node: '>=0.10.0'} + dev: false + /object-inspect/1.13.1: resolution: {integrity: sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==} dev: false @@ -1388,6 +1717,10 @@ packages: resolution: {integrity: sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==} dev: false + /path-to-regexp/3.2.0: + resolution: {integrity: sha512-jczvQbCUS7XmS7o+y1aEO9OBVFeZBQ1MDSEqmO7xSoPgOPoowY/SxLpZ6Vh97/8qHZOteiCKb7gkG9gA2ZUxJA==} + dev: false + /path-to-regexp/6.2.1: resolution: {integrity: sha512-JLyh7xT1kizaEvcaXOQwOc2/Yhw6KZOvPf1S8401UyLk86CU79LN3vl7ztXGm/pZ+YjoyAJ4rxmHwbkBXJX+yw==} dev: false @@ -1401,6 +1734,10 @@ packages: engines: {node: '>=8.6'} dev: false + /process-nextick-args/2.0.1: + resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} + dev: false + /proxy-addr/2.0.7: resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} engines: {node: '>= 0.10'} @@ -1456,6 +1793,18 @@ packages: unpipe: 1.0.0 dev: false + /readable-stream/2.3.8: + resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} + dependencies: + core-util-is: 1.0.3 + inherits: 2.0.4 + isarray: 1.0.0 + process-nextick-args: 2.0.1 + safe-buffer: 5.1.2 + string_decoder: 1.1.1 + util-deprecate: 1.0.2 + dev: false + /readdirp/3.6.0: resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} engines: {node: '>=8.10.0'} @@ -1483,6 +1832,16 @@ packages: resolution: {integrity: sha512-XgmCoxKWkDofwH8WddD0w85ZfqYz+ZHlr5yo+3YUCfycWawU56T5ckWXsScsj5B8tqUcIG67DxXByo3VUgiAdA==} dev: false + /rxjs/7.8.1: + resolution: {integrity: sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==} + dependencies: + tslib: 2.6.2 + dev: false + + /safe-buffer/5.1.2: + resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} + dev: false + /safe-buffer/5.2.1: resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} dev: false @@ -1723,6 +2082,17 @@ packages: engines: {node: '>= 0.8'} dev: false + /streamsearch/1.1.0: + resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==} + engines: {node: '>=10.0.0'} + dev: false + + /string_decoder/1.1.1: + resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} + dependencies: + safe-buffer: 5.1.2 + dev: false + /supports-color/5.5.0: resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} engines: {node: '>=4'} @@ -1730,6 +2100,13 @@ packages: has-flag: 3.0.0 dev: false + /supports-color/7.2.0: + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} + dependencies: + has-flag: 4.0.0 + dev: false + /to-regex-range/5.0.1: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} engines: {node: '>=8.0'} @@ -1753,6 +2130,10 @@ packages: nopt: 1.0.10 dev: false + /tr46/0.0.3: + resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} + dev: false + /ts-node/10.9.2_6p2jia37wfm7i7vql2orj6p3e4: resolution: {integrity: sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==} hasBin: true @@ -1831,6 +2212,10 @@ packages: mime-types: 2.1.35 dev: false + /typedarray/0.0.6: + resolution: {integrity: sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==} + dev: false + /typescript/4.9.5: resolution: {integrity: sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==} engines: {node: '>=4.2.0'} @@ -1843,6 +2228,13 @@ packages: hasBin: true dev: true + /uid/2.0.2: + resolution: {integrity: sha512-u3xV3X7uzvi5b1MncmZo3i2Aw222Zk1keqLA1YkHldREkAhAqi65wuPfe7lHx8H/Wzy+8CE7S7uS3jekIM5s8g==} + engines: {node: '>=8'} + dependencies: + '@lukeed/csprng': 1.1.0 + dev: false + /undefsafe/2.0.5: resolution: {integrity: sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==} dev: false @@ -1860,6 +2252,10 @@ packages: engines: {node: '>= 0.8'} dev: false + /util-deprecate/1.0.2: + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + dev: false + /utils-merge/1.0.1: resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==} engines: {node: '>= 0.4.0'} @@ -1884,6 +2280,17 @@ packages: engines: {node: '>= 0.8'} dev: false + /webidl-conversions/3.0.1: + resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} + dev: false + + /whatwg-url/5.0.0: + resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} + dependencies: + tr46: 0.0.3 + webidl-conversions: 3.0.1 + dev: false + /wkx/0.5.0: resolution: {integrity: sha512-Xng/d4Ichh8uN4l0FToV/258EjMGU9MGcA0HV2d9B/ZpZB3lqQm7nkOdZdm5GhKtLLhAE7PiVQwN4eN+2YJJUg==} dependencies: @@ -1894,6 +2301,11 @@ packages: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} dev: false + /xtend/4.0.2: + resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} + engines: {node: '>=0.4'} + dev: false + /yallist/4.0.0: resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} dev: false diff --git a/packages/apps/artusx-legacy/README.md b/packages/apps/artusx-express/README.md similarity index 100% rename from packages/apps/artusx-legacy/README.md rename to packages/apps/artusx-express/README.md diff --git a/packages/apps/artusx-legacy/package.json b/packages/apps/artusx-express/package.json similarity index 88% rename from packages/apps/artusx-legacy/package.json rename to packages/apps/artusx-express/package.json index 60dabe68..aa65e9d4 100644 --- a/packages/apps/artusx-legacy/package.json +++ b/packages/apps/artusx-express/package.json @@ -1,7 +1,7 @@ { - "name": "artusx-legacy", + "name": "artusx-express", "version": "1.0.0", - "description": "legacy for artusx", + "description": "express for artusx", "main": "index.js", "scripts": { "build": "", diff --git a/packages/apps/artusx-legacy/src/bootstrap.ts b/packages/apps/artusx-express/src/bootstrap.ts similarity index 100% rename from packages/apps/artusx-legacy/src/bootstrap.ts rename to packages/apps/artusx-express/src/bootstrap.ts diff --git a/packages/apps/artusx-legacy/src/config/config.default.ts b/packages/apps/artusx-express/src/config/config.default.ts similarity index 100% rename from packages/apps/artusx-legacy/src/config/config.default.ts rename to packages/apps/artusx-express/src/config/config.default.ts diff --git a/packages/apps/artusx-legacy/src/config/plugin.ts b/packages/apps/artusx-express/src/config/plugin.ts similarity index 100% rename from packages/apps/artusx-legacy/src/config/plugin.ts rename to packages/apps/artusx-express/src/config/plugin.ts diff --git a/packages/apps/artusx-legacy/src/controller/home.ts b/packages/apps/artusx-express/src/controller/home.ts similarity index 100% rename from packages/apps/artusx-legacy/src/controller/home.ts rename to packages/apps/artusx-express/src/controller/home.ts diff --git a/packages/apps/artusx-legacy/src/router.ts b/packages/apps/artusx-express/src/router.ts similarity index 100% rename from packages/apps/artusx-legacy/src/router.ts rename to packages/apps/artusx-express/src/router.ts diff --git a/packages/apps/artusx-legacy/src/types.ts b/packages/apps/artusx-express/src/types.ts similarity index 100% rename from packages/apps/artusx-legacy/src/types.ts rename to packages/apps/artusx-express/src/types.ts diff --git a/packages/apps/artusx-legacy/tsconfig.json b/packages/apps/artusx-express/tsconfig.json similarity index 100% rename from packages/apps/artusx-legacy/tsconfig.json rename to packages/apps/artusx-express/tsconfig.json diff --git a/packages/apps/artusx-web/README.md b/packages/apps/artusx-koa/README.md similarity index 100% rename from packages/apps/artusx-web/README.md rename to packages/apps/artusx-koa/README.md diff --git a/packages/apps/artusx-web/package.json b/packages/apps/artusx-koa/package.json similarity index 78% rename from packages/apps/artusx-web/package.json rename to packages/apps/artusx-koa/package.json index e99691be..64a04b76 100644 --- a/packages/apps/artusx-web/package.json +++ b/packages/apps/artusx-koa/package.json @@ -1,17 +1,17 @@ { - "name": "artusx-web", + "name": "artusx-koa", "version": "1.0.0", - "description": "web for artusx", + "description": "koa for artusx", "main": "index.js", "scripts": { - "dev": "npx nodemon src/bootstrap.ts", - "build": "" + "build": "", + "dev": "npx nodemon src/bootstrap.ts" }, "dependencies": { - "nodemon": "~3.0.2", "@artus/core": "^2.x", "@artusx/core": "workspace:*", "@artusx/utils": "workspace:*", + "nodemon": "~3.0.2", "reflect-metadata": "^0.1.13" }, "devDependencies": { diff --git a/packages/apps/artusx-web/src/bootstrap.ts b/packages/apps/artusx-koa/src/bootstrap.ts similarity index 100% rename from packages/apps/artusx-web/src/bootstrap.ts rename to packages/apps/artusx-koa/src/bootstrap.ts diff --git a/packages/apps/artusx-web/src/config/config.default.ts b/packages/apps/artusx-koa/src/config/config.default.ts similarity index 100% rename from packages/apps/artusx-web/src/config/config.default.ts rename to packages/apps/artusx-koa/src/config/config.default.ts diff --git a/packages/apps/artusx-web/src/config/plugin.ts b/packages/apps/artusx-koa/src/config/plugin.ts similarity index 100% rename from packages/apps/artusx-web/src/config/plugin.ts rename to packages/apps/artusx-koa/src/config/plugin.ts diff --git a/packages/apps/artusx-web/src/controller/home.ts b/packages/apps/artusx-koa/src/controller/home.ts similarity index 100% rename from packages/apps/artusx-web/src/controller/home.ts rename to packages/apps/artusx-koa/src/controller/home.ts diff --git a/packages/apps/artusx-web/src/types.ts b/packages/apps/artusx-koa/src/types.ts similarity index 100% rename from packages/apps/artusx-web/src/types.ts rename to packages/apps/artusx-koa/src/types.ts diff --git a/packages/apps/artusx-web/tsconfig.json b/packages/apps/artusx-koa/tsconfig.json similarity index 100% rename from packages/apps/artusx-web/tsconfig.json rename to packages/apps/artusx-koa/tsconfig.json diff --git a/packages/apps/artusx-nest/README.md b/packages/apps/artusx-nest/README.md new file mode 100644 index 00000000..844b7082 --- /dev/null +++ b/packages/apps/artusx-nest/README.md @@ -0,0 +1,27 @@ +# ArtusX-API + +> undefined project with web-server powered by ArtusX. + +## Usage + +### Development + +```bash +pnpm i +pnpm run dev +``` + +### Production + +```bash +pnpm run start + +# nohup +nohup pnpm run start & +``` + +### Requirement + +- Docker +- Node.js 18.x +- Typescript 4.x+ diff --git a/packages/apps/artusx-nest/package.json b/packages/apps/artusx-nest/package.json new file mode 100644 index 00000000..1b57a4ee --- /dev/null +++ b/packages/apps/artusx-nest/package.json @@ -0,0 +1,29 @@ +{ + "name": "artusx-nest", + "version": "1.0.0", + "description": "nest for artusx", + "main": "index.js", + "scripts": { + "build": "", + "dev": "npx nodemon src/bootstrap.ts" + }, + "dependencies": { + "@artus/core": "^2.x", + "@artusx/plugin-nest": "workspace:*", + "@artusx/utils": "workspace:*", + "@nestjs/common": "~10.3.0", + "@nestjs/core": "~10.3.0", + "@nestjs/platform-express": "~10.3.0", + "nodemon": "~3.0.2", + "reflect-metadata": "^0.1.13", + "rxjs": "~7.8.1" + }, + "devDependencies": { + "@artus/tsconfig": "~1.0.1", + "@types/node": "~20.10.6", + "nodemon": "~3.0.2", + "ts-node": "~10.9.2", + "tslib": "~2.6.2", + "typescript": "~5.3.3" + } +} diff --git a/packages/apps/artusx-nest/src/bootstrap.ts b/packages/apps/artusx-nest/src/bootstrap.ts new file mode 100644 index 00000000..269a0040 --- /dev/null +++ b/packages/apps/artusx-nest/src/bootstrap.ts @@ -0,0 +1,9 @@ +import path from 'path'; +import { Application } from '@artusx/utils'; + +(async () => { + await Application.start({ + root: path.resolve(__dirname), + configDir: 'config' + }); +})(); diff --git a/packages/apps/artusx-nest/src/config/config.default.ts b/packages/apps/artusx-nest/src/config/config.default.ts new file mode 100644 index 00000000..1b23727a --- /dev/null +++ b/packages/apps/artusx-nest/src/config/config.default.ts @@ -0,0 +1,7 @@ +import { AppModule } from '../root/app.module'; + +export default { + nest: { + rootModule: AppModule + } +}; diff --git a/packages/apps/artusx-nest/src/config/plugin.ts b/packages/apps/artusx-nest/src/config/plugin.ts new file mode 100644 index 00000000..c19be200 --- /dev/null +++ b/packages/apps/artusx-nest/src/config/plugin.ts @@ -0,0 +1,6 @@ +export default { + nest: { + enable: true, + package: '@artusx/plugin-nest' + } +}; diff --git a/packages/apps/artusx-nest/src/root/app.controller.ts b/packages/apps/artusx-nest/src/root/app.controller.ts new file mode 100644 index 00000000..856585c6 --- /dev/null +++ b/packages/apps/artusx-nest/src/root/app.controller.ts @@ -0,0 +1,13 @@ +import { Controller, Get } from '@nestjs/common'; +import { AppService } from './app.service'; + +@Controller() +export class AppController { + constructor(private appService: AppService) {} + + @Get() + async getHome(): Promise { + const message = await this.appService.getHome(); + return message; + } +} diff --git a/packages/apps/artusx-nest/src/root/app.module.ts b/packages/apps/artusx-nest/src/root/app.module.ts new file mode 100644 index 00000000..6d8f51e1 --- /dev/null +++ b/packages/apps/artusx-nest/src/root/app.module.ts @@ -0,0 +1,16 @@ +import { Module, DynamicModule } from '@nestjs/common'; +import { AppController } from './app.controller'; +import { AppService } from './app.service'; +import { BaseModule } from './base/base.module'; + +@Module({}) +export class AppModule { + static registerAsync(options: any): DynamicModule { + return { + module: AppModule, + imports: [BaseModule.register(options)], + controllers: [AppController], + providers: [AppService] + }; + } +} diff --git a/packages/apps/artusx-nest/src/root/app.service.ts b/packages/apps/artusx-nest/src/root/app.service.ts new file mode 100644 index 00000000..bfa40e35 --- /dev/null +++ b/packages/apps/artusx-nest/src/root/app.service.ts @@ -0,0 +1,13 @@ +import { Inject, Injectable } from '@nestjs/common'; +import { BaseService } from './base/base.service'; + +@Injectable() +export class AppService { + @Inject(BaseService) + baseService: BaseService; + + async getHome(): Promise { + const message = await this.baseService.getWelcomeMessage(); + return message; + } +} diff --git a/packages/apps/artusx-nest/src/root/base/base.module.ts b/packages/apps/artusx-nest/src/root/base/base.module.ts new file mode 100644 index 00000000..c9a22a42 --- /dev/null +++ b/packages/apps/artusx-nest/src/root/base/base.module.ts @@ -0,0 +1,25 @@ +import { DynamicModule, Module } from '@nestjs/common'; +import { BaseService } from './base.service'; + +export const BASE_MODULE_OPTIONS = 'BASE_MODULE_OPTIONS'; + +export interface BaseModuleOptions { + container?: any; +} + +@Module({}) +export class BaseModule { + static register(options: BaseModuleOptions): DynamicModule { + return { + module: BaseModule, + providers: [ + { + provide: BASE_MODULE_OPTIONS, + useValue: options + }, + BaseService + ], + exports: [BaseService] + }; + } +} diff --git a/packages/apps/artusx-nest/src/root/base/base.service.ts b/packages/apps/artusx-nest/src/root/base/base.service.ts new file mode 100644 index 00000000..ae3af72f --- /dev/null +++ b/packages/apps/artusx-nest/src/root/base/base.service.ts @@ -0,0 +1,19 @@ +import { Container } from '@artus/core'; +import { Inject, Injectable } from '@nestjs/common'; +import { BASE_MODULE_OPTIONS, BaseModuleOptions } from './base.module'; +import InfoService from '../../service/info'; + +@Injectable() +export class BaseService { + container: Container; + + constructor(@Inject(BASE_MODULE_OPTIONS) options: BaseModuleOptions) { + this.container = options.container; + } + + async getWelcomeMessage(): Promise { + const infoService = this.container.get(InfoService) as InfoService; + const info = await infoService.getName(); + return info; + } +} diff --git a/packages/apps/artusx-nest/src/service/info.ts b/packages/apps/artusx-nest/src/service/info.ts new file mode 100644 index 00000000..c6b832d1 --- /dev/null +++ b/packages/apps/artusx-nest/src/service/info.ts @@ -0,0 +1,12 @@ +import { Inject, Injectable, ArtusInjectEnum, ArtusApplication } from '@artus/core'; + +@Injectable() +export default class InfoService { + @Inject(ArtusInjectEnum.Application) + app: ArtusApplication; + + async getName(): Promise { + console.log('app.config', this.app.config); + return 'InfoService'; + } +} diff --git a/packages/apps/artusx-nest/src/types.ts b/packages/apps/artusx-nest/src/types.ts new file mode 100644 index 00000000..5b3c9afa --- /dev/null +++ b/packages/apps/artusx-nest/src/types.ts @@ -0,0 +1,2 @@ +export * from '@artusx/plugin-nest'; +export { default as INestClient } from '@artusx/plugin-nest/client'; diff --git a/packages/apps/artusx-nest/tsconfig.json b/packages/apps/artusx-nest/tsconfig.json new file mode 100644 index 00000000..8b822701 --- /dev/null +++ b/packages/apps/artusx-nest/tsconfig.json @@ -0,0 +1,12 @@ +{ + "extends": "@artus/tsconfig", + "compilerOptions": { + "baseUrl": ".", + "strictNullChecks": true, + "resolveJsonModule": true, + "module": "NodeNext", + "moduleResolution": "NodeNext", + "outDir": "dist" + }, + "include": ["src/**/*.ts", "src/**/*.json"] +} diff --git a/packages/libs/core/package.json b/packages/libs/core/package.json index a212d8f1..70ce42a6 100644 --- a/packages/libs/core/package.json +++ b/packages/libs/core/package.json @@ -34,7 +34,7 @@ "dependencies": { "@artus/core": "^2.x", "@artus/pipeline": "^0.2", - "@artusx/plugin-application-http": "workspace:*", + "@artusx/plugin-koa": "workspace:*", "@koa/bodyparser": "~5.0.0", "@koa/cors": "~5.0.0" }, diff --git a/packages/libs/core/src/config/plugin.ts b/packages/libs/core/src/config/plugin.ts index 2a1612f5..df4c4325 100644 --- a/packages/libs/core/src/config/plugin.ts +++ b/packages/libs/core/src/config/plugin.ts @@ -1,6 +1,6 @@ export default { - 'application-http': { + koa: { enable: true, - package: '@artusx/plugin-application-http' + package: '@artusx/plugin-koa' } }; diff --git a/packages/libs/core/src/lifecycle.ts b/packages/libs/core/src/lifecycle.ts index 90ffe378..0a3bf614 100644 --- a/packages/libs/core/src/lifecycle.ts +++ b/packages/libs/core/src/lifecycle.ts @@ -9,7 +9,7 @@ import { import cors from '@koa/cors'; import { bodyParser } from '@koa/bodyparser'; -import { KoaApplication } from '@artusx/plugin-application-http'; +import { KoaApplication } from '@artusx/plugin-koa'; @LifecycleHookUnit() export default class ArtusXCoreLifecycle implements ApplicationLifecycle { diff --git a/packages/libs/core/src/types.ts b/packages/libs/core/src/types.ts index 1c7a3358..6c622e3c 100644 --- a/packages/libs/core/src/types.ts +++ b/packages/libs/core/src/types.ts @@ -1 +1 @@ -export * from '@artusx/plugin-application-http'; +export * from '@artusx/plugin-koa'; diff --git a/packages/plugins/application-http/meta.json b/packages/plugins/application-http/meta.json deleted file mode 100644 index c5d1d907..00000000 --- a/packages/plugins/application-http/meta.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "name": "application-http" -} diff --git a/packages/plugins/application-http/.gitignore b/packages/plugins/koa/.gitignore similarity index 100% rename from packages/plugins/application-http/.gitignore rename to packages/plugins/koa/.gitignore diff --git a/packages/plugins/application-http/README.md b/packages/plugins/koa/README.md similarity index 100% rename from packages/plugins/application-http/README.md rename to packages/plugins/koa/README.md diff --git a/packages/plugins/koa/meta.json b/packages/plugins/koa/meta.json new file mode 100644 index 00000000..858676e8 --- /dev/null +++ b/packages/plugins/koa/meta.json @@ -0,0 +1,3 @@ +{ + "name": "koa" +} diff --git a/packages/plugins/application-http/package.json b/packages/plugins/koa/package.json similarity index 93% rename from packages/plugins/application-http/package.json rename to packages/plugins/koa/package.json index 8f9d853c..758cefc1 100644 --- a/packages/plugins/application-http/package.json +++ b/packages/plugins/koa/package.json @@ -1,7 +1,7 @@ { - "name": "@artusx/plugin-application-http", + "name": "@artusx/plugin-koa", "version": "1.0.1-dev.16", - "description": "application-http plugin for artusx", + "description": "koa plugin for artusx", "keywords": [ "artus.js" ], diff --git a/packages/plugins/application-http/pnpm-lock.yaml b/packages/plugins/koa/pnpm-lock.yaml similarity index 100% rename from packages/plugins/application-http/pnpm-lock.yaml rename to packages/plugins/koa/pnpm-lock.yaml diff --git a/packages/plugins/application-http/src/config/config.default.ts b/packages/plugins/koa/src/config/config.default.ts similarity index 100% rename from packages/plugins/application-http/src/config/config.default.ts rename to packages/plugins/koa/src/config/config.default.ts diff --git a/packages/plugins/application-http/src/constants.ts b/packages/plugins/koa/src/constants.ts similarity index 100% rename from packages/plugins/application-http/src/constants.ts rename to packages/plugins/koa/src/constants.ts diff --git a/packages/plugins/application-http/src/decorator.ts b/packages/plugins/koa/src/decorator.ts similarity index 100% rename from packages/plugins/application-http/src/decorator.ts rename to packages/plugins/koa/src/decorator.ts diff --git a/packages/plugins/application-http/src/index.ts b/packages/plugins/koa/src/index.ts similarity index 100% rename from packages/plugins/application-http/src/index.ts rename to packages/plugins/koa/src/index.ts diff --git a/packages/plugins/application-http/src/koa/application.ts b/packages/plugins/koa/src/koa/application.ts similarity index 100% rename from packages/plugins/application-http/src/koa/application.ts rename to packages/plugins/koa/src/koa/application.ts diff --git a/packages/plugins/application-http/src/koa/router.ts b/packages/plugins/koa/src/koa/router.ts similarity index 100% rename from packages/plugins/application-http/src/koa/router.ts rename to packages/plugins/koa/src/koa/router.ts diff --git a/packages/plugins/application-http/src/lifecycle.ts b/packages/plugins/koa/src/lifecycle.ts similarity index 100% rename from packages/plugins/application-http/src/lifecycle.ts rename to packages/plugins/koa/src/lifecycle.ts diff --git a/packages/plugins/application-http/src/pipeline.ts b/packages/plugins/koa/src/pipeline.ts similarity index 100% rename from packages/plugins/application-http/src/pipeline.ts rename to packages/plugins/koa/src/pipeline.ts diff --git a/packages/plugins/application-http/src/types.ts b/packages/plugins/koa/src/types.ts similarity index 100% rename from packages/plugins/application-http/src/types.ts rename to packages/plugins/koa/src/types.ts diff --git a/packages/plugins/application-http/tsconfig.json b/packages/plugins/koa/tsconfig.json similarity index 100% rename from packages/plugins/application-http/tsconfig.json rename to packages/plugins/koa/tsconfig.json diff --git a/packages/plugins/nest/.gitignore b/packages/plugins/nest/.gitignore new file mode 100644 index 00000000..a65b4177 --- /dev/null +++ b/packages/plugins/nest/.gitignore @@ -0,0 +1 @@ +lib diff --git a/packages/plugins/nest/README.md b/packages/plugins/nest/README.md new file mode 100644 index 00000000..a3183c91 --- /dev/null +++ b/packages/plugins/nest/README.md @@ -0,0 +1,3 @@ +# ArtusX plugin redis + +> https://github.com/thonatos/artusx diff --git a/packages/plugins/nest/meta.json b/packages/plugins/nest/meta.json new file mode 100644 index 00000000..29c27360 --- /dev/null +++ b/packages/plugins/nest/meta.json @@ -0,0 +1,3 @@ +{ + "name": "nest" +} diff --git a/packages/plugins/nest/package.json b/packages/plugins/nest/package.json new file mode 100644 index 00000000..82c9003a --- /dev/null +++ b/packages/plugins/nest/package.json @@ -0,0 +1,56 @@ +{ + "name": "@artusx/plugin-nest", + "version": "1.0.1-dev.16", + "description": "nest plugin for artusx", + "keywords": [ + "artus.js" + ], + "license": "MIT", + "author": "Suyi ", + "exports": { + ".": { + "types": "./lib/index.d.ts", + "default": "./lib/index.js" + }, + "./constants": { + "types": "./lib/constants.d.ts", + "default": "./lib/constants.js" + }, + "./client": { + "types": "./lib/client.d.ts", + "default": "./lib/client.js" + }, + "./lifecycle": { + "types": "./lib/lifecycle.d.ts", + "default": "./lib/lifecycle.js" + } + }, + "main": "lib/index.js", + "types": "lib/index.d.js", + "files": [ + "lib" + ], + "scripts": { + "build": "npm run tsc && npm run build:metadata", + "build:metadata": "cp meta.json ./lib/meta.json", + "tsc": "rm -rf lib && tsc" + }, + "dependencies": { + "@artus/core": "^2.x", + "@artus/pipeline": "^0.2", + "@nestjs/common": "~10.3.0", + "@nestjs/core": "~10.3.0" + }, + "devDependencies": { + "@artus/tsconfig": "^1.0.1", + "@types/node": "^18.11.17", + "tslib": "^2.5.0", + "typescript": "^4.9.4" + }, + "peerDependencies": { + "reflect-metadata": "^0.1.13" + }, + "publishConfig": { + "access": "public" + } +} diff --git a/packages/plugins/nest/pnpm-lock.yaml b/packages/plugins/nest/pnpm-lock.yaml new file mode 100644 index 00000000..8643ee4c --- /dev/null +++ b/packages/plugins/nest/pnpm-lock.yaml @@ -0,0 +1,300 @@ +lockfileVersion: '6.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +dependencies: + '@artus/core': + specifier: ^1.0.3 + version: 1.0.9(reflect-metadata@0.1.14) + '@artus/pipeline': + specifier: ^0.2.2 + version: 0.2.3 + ioredis: + specifier: ^5.3.1 + version: 5.3.2 + +devDependencies: + '@artus/tsconfig': + specifier: ^1.0.1 + version: 1.0.1(@types/node@18.19.4) + '@types/node': + specifier: ^18.11.17 + version: 18.19.4 + prettier: + specifier: ^2.8.4 + version: 2.8.8 + ts-node: + specifier: ^10.9.1 + version: 10.9.2(@types/node@18.19.4)(typescript@4.9.5) + tslib: + specifier: ^2.5.0 + version: 2.6.2 + typescript: + specifier: ^4.9.4 + version: 4.9.5 + +packages: + + /@artus/core@1.0.9(reflect-metadata@0.1.14): + resolution: {integrity: sha512-6/jaSThVFhV9jLR98aJ4u4JSB3ObQ2wt54XGn4YfJsYt2OpPw2rD6/vQFeZtRoZ9CpTiLeKgNuz6Fe4EzYXbsQ==} + peerDependencies: + reflect-metadata: ^0.1.13 + dependencies: + '@artus/injection': 0.5.2 + '@artus/pipeline': 0.2.3 + deepmerge: 4.3.1 + minimatch: 5.1.6 + reflect-metadata: 0.1.14 + dev: false + + /@artus/injection@0.5.2: + resolution: {integrity: sha512-rWjXd2Th+Q3PmmoLsjT3Fh5TyIXb6Ee/heyAI7U8/PmPXfG+rXvLVOSYHm414fIzDkoUHSE5HoMMLpvGK/RUrg==} + dev: false + + /@artus/pipeline@0.2.3: + resolution: {integrity: sha512-W4gBvkjD5bh7DScWn5DIdg3mRi93kabYCsOPTVN1sjtYVHlLX3xikyscdFphTjYlrmO4G+tP2lPH4pfBm3Sepg==} + dependencies: + tslib: 2.6.2 + dev: false + + /@artus/tsconfig@1.0.1(@types/node@18.19.4): + resolution: {integrity: sha512-IxBvvg6I7+3do+CCxZq/LSvZiMFRwVFwUVkJWEunVGXtggq9Q0cnlrdJnnjnnbAlIgmH1knRc4z/atItnHjDEg==} + peerDependencies: + '@types/node': '*' + peerDependenciesMeta: + '@types/node': + optional: true + dependencies: + '@types/node': 18.19.4 + dev: true + + /@cspotcode/source-map-support@0.8.1: + resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} + engines: {node: '>=12'} + dependencies: + '@jridgewell/trace-mapping': 0.3.9 + dev: true + + /@ioredis/commands@1.2.0: + resolution: {integrity: sha512-Sx1pU8EM64o2BrqNpEO1CNLtKQwyhuXuqyfH7oGKCk+1a33d2r5saW8zNwm3j6BTExtjrv2BxTgzzkMwts6vGg==} + dev: false + + /@jridgewell/resolve-uri@3.1.1: + resolution: {integrity: sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==} + engines: {node: '>=6.0.0'} + dev: true + + /@jridgewell/sourcemap-codec@1.4.15: + resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} + dev: true + + /@jridgewell/trace-mapping@0.3.9: + resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} + dependencies: + '@jridgewell/resolve-uri': 3.1.1 + '@jridgewell/sourcemap-codec': 1.4.15 + dev: true + + /@tsconfig/node10@1.0.9: + resolution: {integrity: sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==} + dev: true + + /@tsconfig/node12@1.0.11: + resolution: {integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==} + dev: true + + /@tsconfig/node14@1.0.3: + resolution: {integrity: sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==} + dev: true + + /@tsconfig/node16@1.0.4: + resolution: {integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==} + dev: true + + /@types/node@18.19.4: + resolution: {integrity: sha512-xNzlUhzoHotIsnFoXmJB+yWmBvFZgKCI9TtPIEdYIMM1KWfwuY8zh7wvc1u1OAXlC7dlf6mZVx/s+Y5KfFz19A==} + dependencies: + undici-types: 5.26.5 + dev: true + + /acorn-walk@8.3.1: + resolution: {integrity: sha512-TgUZgYvqZprrl7YldZNoa9OciCAyZR+Ejm9eXzKCmjsF5IKp/wgQ7Z/ZpjpGTIUPwrHQIcYeI8qDh4PsEwxMbw==} + engines: {node: '>=0.4.0'} + dev: true + + /acorn@8.11.3: + resolution: {integrity: sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==} + engines: {node: '>=0.4.0'} + hasBin: true + dev: true + + /arg@4.1.3: + resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} + dev: true + + /balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + dev: false + + /brace-expansion@2.0.1: + resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} + dependencies: + balanced-match: 1.0.2 + dev: false + + /cluster-key-slot@1.1.2: + resolution: {integrity: sha512-RMr0FhtfXemyinomL4hrWcYJxmX6deFdCxpJzhDttxgO1+bcCnkk+9drydLVDmAMG7NE6aN/fl4F7ucU/90gAA==} + engines: {node: '>=0.10.0'} + dev: false + + /create-require@1.1.1: + resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} + dev: true + + /debug@4.3.4: + resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.1.2 + dev: false + + /deepmerge@4.3.1: + resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} + engines: {node: '>=0.10.0'} + dev: false + + /denque@2.1.0: + resolution: {integrity: sha512-HVQE3AAb/pxF8fQAoiqpvg9i3evqug3hoiwakOyZAwJm+6vZehbkYXZ0l4JxS+I3QxM97v5aaRNhj8v5oBhekw==} + engines: {node: '>=0.10'} + dev: false + + /diff@4.0.2: + resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} + engines: {node: '>=0.3.1'} + dev: true + + /ioredis@5.3.2: + resolution: {integrity: sha512-1DKMMzlIHM02eBBVOFQ1+AolGjs6+xEcM4PDL7NqOS6szq7H9jSaEkIUH6/a5Hl241LzW6JLSiAbNvTQjUupUA==} + engines: {node: '>=12.22.0'} + dependencies: + '@ioredis/commands': 1.2.0 + cluster-key-slot: 1.1.2 + debug: 4.3.4 + denque: 2.1.0 + lodash.defaults: 4.2.0 + lodash.isarguments: 3.1.0 + redis-errors: 1.2.0 + redis-parser: 3.0.0 + standard-as-callback: 2.1.0 + transitivePeerDependencies: + - supports-color + dev: false + + /lodash.defaults@4.2.0: + resolution: {integrity: sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==} + dev: false + + /lodash.isarguments@3.1.0: + resolution: {integrity: sha512-chi4NHZlZqZD18a0imDHnZPrDeBbTtVN7GXMwuGdRH9qotxAjYs3aVLKc7zNOG9eddR5Ksd8rvFEBc9SsggPpg==} + dev: false + + /make-error@1.3.6: + resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} + dev: true + + /minimatch@5.1.6: + resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==} + engines: {node: '>=10'} + dependencies: + brace-expansion: 2.0.1 + dev: false + + /ms@2.1.2: + resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} + dev: false + + /prettier@2.8.8: + resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==} + engines: {node: '>=10.13.0'} + hasBin: true + dev: true + + /redis-errors@1.2.0: + resolution: {integrity: sha512-1qny3OExCf0UvUV/5wpYKf2YwPcOqXzkwKKSmKHiE6ZMQs5heeE/c8eXK+PNllPvmjgAbfnsbpkGZWy8cBpn9w==} + engines: {node: '>=4'} + dev: false + + /redis-parser@3.0.0: + resolution: {integrity: sha512-DJnGAeenTdpMEH6uAJRK/uiyEIH9WVsUmoLwzudwGJUwZPp80PDBWPHXSAGNPwNvIXAbe7MSUB1zQFugFml66A==} + engines: {node: '>=4'} + dependencies: + redis-errors: 1.2.0 + dev: false + + /reflect-metadata@0.1.14: + resolution: {integrity: sha512-ZhYeb6nRaXCfhnndflDK8qI6ZQ/YcWZCISRAWICW9XYqMUwjZM9Z0DveWX/ABN01oxSHwVxKQmxeYZSsm0jh5A==} + dev: false + + /standard-as-callback@2.1.0: + resolution: {integrity: sha512-qoRRSyROncaz1z0mvYqIE4lCd9p2R90i6GxW3uZv5ucSu8tU7B5HXUP1gG8pVZsYNVaXjk8ClXHPttLyxAL48A==} + dev: false + + /ts-node@10.9.2(@types/node@18.19.4)(typescript@4.9.5): + resolution: {integrity: sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==} + hasBin: true + peerDependencies: + '@swc/core': '>=1.2.50' + '@swc/wasm': '>=1.2.50' + '@types/node': '*' + typescript: '>=2.7' + peerDependenciesMeta: + '@swc/core': + optional: true + '@swc/wasm': + optional: true + dependencies: + '@cspotcode/source-map-support': 0.8.1 + '@tsconfig/node10': 1.0.9 + '@tsconfig/node12': 1.0.11 + '@tsconfig/node14': 1.0.3 + '@tsconfig/node16': 1.0.4 + '@types/node': 18.19.4 + acorn: 8.11.3 + acorn-walk: 8.3.1 + arg: 4.1.3 + create-require: 1.1.1 + diff: 4.0.2 + make-error: 1.3.6 + typescript: 4.9.5 + v8-compile-cache-lib: 3.0.1 + yn: 3.1.1 + dev: true + + /tslib@2.6.2: + resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} + + /typescript@4.9.5: + resolution: {integrity: sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==} + engines: {node: '>=4.2.0'} + hasBin: true + dev: true + + /undici-types@5.26.5: + resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} + dev: true + + /v8-compile-cache-lib@3.0.1: + resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} + dev: true + + /yn@3.1.1: + resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==} + engines: {node: '>=6'} + dev: true diff --git a/packages/plugins/nest/src/client.ts b/packages/plugins/nest/src/client.ts new file mode 100644 index 00000000..48218361 --- /dev/null +++ b/packages/plugins/nest/src/client.ts @@ -0,0 +1,26 @@ +import { Injectable, ScopeEnum } from '@artus/core'; +import { ArtusXInjectEnum } from './constants'; +import { NestFactory } from '@nestjs/core'; +import type { NestApplicationOptions, INestApplication } from '@nestjs/common'; + +export interface NestConfig extends NestApplicationOptions { + port: number; + rootModule: any; +} + +@Injectable({ + id: ArtusXInjectEnum.Nest, + scope: ScopeEnum.SINGLETON +}) +export default class Client { + private _app: INestApplication; + + async init(module: any, options?: NestApplicationOptions) { + const app = await NestFactory.create(module, options); + this._app = app; + } + + get app() { + return this._app; + } +} diff --git a/packages/plugins/nest/src/config/config.default.ts b/packages/plugins/nest/src/config/config.default.ts new file mode 100644 index 00000000..b141940d --- /dev/null +++ b/packages/plugins/nest/src/config/config.default.ts @@ -0,0 +1,7 @@ +import { NestConfig } from '../client'; + +export default { + nest: { + port: 7001 + } as NestConfig +}; diff --git a/packages/plugins/nest/src/constants.ts b/packages/plugins/nest/src/constants.ts new file mode 100644 index 00000000..1ae34d96 --- /dev/null +++ b/packages/plugins/nest/src/constants.ts @@ -0,0 +1,3 @@ +export enum ArtusXInjectEnum { + Nest = 'ARTUSX_NEST' +} diff --git a/packages/plugins/nest/src/index.ts b/packages/plugins/nest/src/index.ts new file mode 100644 index 00000000..939ee073 --- /dev/null +++ b/packages/plugins/nest/src/index.ts @@ -0,0 +1,3 @@ +export * from './client'; +export * from './constants'; +export * from './lifecycle'; diff --git a/packages/plugins/nest/src/lifecycle.ts b/packages/plugins/nest/src/lifecycle.ts new file mode 100644 index 00000000..f099079b --- /dev/null +++ b/packages/plugins/nest/src/lifecycle.ts @@ -0,0 +1,30 @@ +import { + ArtusApplication, + ArtusInjectEnum, + ApplicationLifecycle, + Inject, + LifecycleHook, + LifecycleHookUnit +} from '@artus/core'; +import { ArtusXInjectEnum } from './constants'; +import Nest, { NestConfig } from './client'; + +@LifecycleHookUnit() +export default class NestLifecycle implements ApplicationLifecycle { + @Inject(ArtusInjectEnum.Application) + app: ArtusApplication; + + @LifecycleHook() + async willReady() { + const nest = this.app.container.get(ArtusXInjectEnum.Nest) as Nest; + const { port = 7001, rootModule } = this.app.config.nest as NestConfig; + await nest.init( + rootModule.registerAsync({ + container: this.app.container + }) + ); + const app = nest.app; + await app.listen(port); + console.log(`Server listening on: http://localhost:${port}`); + } +} diff --git a/packages/plugins/nest/tsconfig.json b/packages/plugins/nest/tsconfig.json new file mode 100644 index 00000000..6aede3a1 --- /dev/null +++ b/packages/plugins/nest/tsconfig.json @@ -0,0 +1,12 @@ +{ + "extends": "@artus/tsconfig", + "compilerOptions": { + "baseUrl": ".", + "strictNullChecks": true, + "resolveJsonModule": true, + "module": "NodeNext", + "moduleResolution": "NodeNext", + "outDir": "lib" + }, + "include": ["src/**/*.ts", "src/**/*.json"] +} diff --git a/rush.json b/rush.json index befaf0f8..455357f6 100644 --- a/rush.json +++ b/rush.json @@ -356,6 +356,13 @@ "shouldPublish": true, "versionPolicyName": "public-library" }, + { + "packageName": "@artusx/plugin-nest", + "projectFolder": "packages/plugins/nest", + "tags": ["artus-plugin"], + "shouldPublish": true, + "versionPolicyName": "public-library" + }, { "packageName": "@artusx/plugin-express", "projectFolder": "packages/plugins/express", @@ -364,8 +371,8 @@ "versionPolicyName": "public-library" }, { - "packageName": "@artusx/plugin-application-http", - "projectFolder": "packages/plugins/application-http", + "packageName": "@artusx/plugin-koa", + "projectFolder": "packages/plugins/koa", "tags": ["artus-plugin"], "shouldPublish": true, "versionPolicyName": "public-library" @@ -389,13 +396,18 @@ // application { - "packageName": "artusx-legacy", - "projectFolder": "packages/apps/artusx-legacy", + "packageName": "artusx-nest", + "projectFolder": "packages/apps/artusx-nest", + "tags": ["webapp"] + }, + { + "packageName": "artusx-express", + "projectFolder": "packages/apps/artusx-express", "tags": ["webapp"] }, { - "packageName": "artusx-web", - "projectFolder": "packages/apps/artusx-web", + "packageName": "artusx-koa", + "projectFolder": "packages/apps/artusx-koa", "tags": ["webapp"] }, {