@simitgroup/simpleapp-generator 1.0.20 → 1.0.22

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (54) hide show
  1. package/README copy.md +882 -0
  2. package/README.md +53 -824
  3. package/definations/category.cat.jsonschema.json +11 -13
  4. package/definations/level.lvl.jsonschema.json +48 -0
  5. package/definations/product.prd.jsonschema.json +8 -2
  6. package/dist/framework.js +180 -0
  7. package/dist/framework.js.map +1 -0
  8. package/dist/generate.js +5 -5
  9. package/dist/generate.js.map +1 -1
  10. package/dist/index.js +45 -28
  11. package/dist/index.js.map +1 -1
  12. package/openapitools.json +7 -0
  13. package/package.json +2 -10
  14. package/sampleconfig.json +3 -0
  15. package/src/framework.ts +151 -0
  16. package/src/generate.ts +5 -5
  17. package/src/index.ts +23 -42
  18. package/templates/nest/nest.env.eta +7 -0
  19. package/templates/{nest.main.eta → nest/nest.main.eta} +1 -1
  20. package/templates/nuxt/env.eta +5 -3
  21. package/backend1/.eslintrc.js +0 -25
  22. package/backend1/.prettierrc +0 -4
  23. package/backend1/README.md +0 -73
  24. package/backend1/nest-cli.json +0 -8
  25. package/backend1/package.json +0 -69
  26. package/backend1/pnpm-lock.yaml +0 -5208
  27. package/backend1/src/app.controller.js +0 -71
  28. package/backend1/src/app.controller.js.map +0 -1
  29. package/backend1/src/app.controller.spec.js +0 -21
  30. package/backend1/src/app.controller.spec.js.map +0 -1
  31. package/backend1/src/app.controller.spec.ts +0 -22
  32. package/backend1/src/app.controller.ts +0 -12
  33. package/backend1/src/app.module.js +0 -67
  34. package/backend1/src/app.module.js.map +0 -1
  35. package/backend1/src/app.module.ts +0 -10
  36. package/backend1/src/app.service.js +0 -64
  37. package/backend1/src/app.service.js.map +0 -1
  38. package/backend1/src/app.service.ts +0 -8
  39. package/backend1/src/main.js +0 -10
  40. package/backend1/src/main.js.map +0 -1
  41. package/backend1/src/main.ts +0 -8
  42. package/backend1/test/app.e2e-spec.js +0 -45
  43. package/backend1/test/app.e2e-spec.js.map +0 -1
  44. package/backend1/test/app.e2e-spec.ts +0 -24
  45. package/backend1/test/jest-e2e.json +0 -9
  46. package/backend1/tsconfig.build.json +0 -4
  47. package/backend1/tsconfig.json +0 -21
  48. package/src/installdependency.ts +0 -4
  49. package/templates/SimpleAppClient.eta +0 -116
  50. package/templates/app.vue.eta +0 -21
  51. package/templates/nest.env.eta +0 -5
  52. /package/templates/{SimpleAppController.eta → nest/SimpleAppController.eta} +0 -0
  53. /package/templates/{SimpleAppService.eta → nest/SimpleAppService.eta} +0 -0
  54. /package/templates/{app.module.eta → nest/app.module.eta} +0 -0
@@ -0,0 +1,151 @@
1
+ import fs from 'fs'
2
+ import {spawn,exec} from "child_process"
3
+ import { Logger, ILogObj } from "tslog";
4
+ import * as constants from './constant'
5
+ import {Eta} from 'eta';
6
+ const log: Logger<ILogObj> = new Logger();
7
+
8
+ let config = {
9
+ "definationsFolder":"./definations",
10
+ "backendFolder":"./mybackend",
11
+ "backendPort":"8000",
12
+ "mongoConnectStr":'mongodb://<user>:<pass>@<host>:<port>/<db>?authMechanism=DEFAULT',
13
+ "frontendFolder":"./myfrontend",
14
+ "frontendPort":"8080",
15
+ "openapi3Yaml":"../openapi.yaml",
16
+ }
17
+
18
+ export const setConfiguration=(paraconfig)=>{
19
+ config=paraconfig
20
+ }
21
+ //create empty nest project
22
+ export const runCreateNest= (callback:Function) =>{
23
+ const backendFolder=config.backendFolder
24
+ if(!fs.existsSync(backendFolder)){
25
+ const child = spawn('npm',['install','-g','pnpm', '@nestjs/cli', '@openapitools/openapi-generator-cli', 'nuxi'],
26
+ { stdio: 'inherit',})
27
+ child.on('close',(exitCode)=>{
28
+ const child2 = spawn('nest',['new', '-p', 'pnpm', backendFolder],{ stdio: "inherit"})
29
+ child2.on('close',(exitCode)=>{
30
+ callback()
31
+ })
32
+ })
33
+ }else{
34
+ callback()
35
+ }
36
+ }
37
+ //create empty nuxt project
38
+ export const runCreateNuxt = (callback:Function) =>{
39
+ const frontendFolder=config.frontendFolder
40
+ if(!fs.existsSync(frontendFolder)){
41
+ const child3 = spawn('npx',['nuxi@latest','init',frontendFolder],{ stdio: 'inherit',})
42
+ child3.on('close',(exitCode)=>{
43
+ callback()
44
+ })
45
+ }else{
46
+ callback()
47
+ }
48
+ }
49
+
50
+ export const prepareNest = (callback:Function)=>{
51
+ const targetfolder =config.backendFolder
52
+ log.info(`creating backend project ${targetfolder}`)
53
+ exec(`cd ${targetfolder};pnpm install --save @nestjs/swagger @nestjs/mongoose mongoose ajv ajv-formats @nestjs/config`,async (error, stdout, stderr)=>{
54
+ // log.info(`dependency installed`)
55
+ if(!error){
56
+ exec(`pnpm install ajv ajv-formats axios json-schema`, (error, stdout, stderr)=>{
57
+ const eta = new Eta({views: constants.templatedir});
58
+ const variables={
59
+ backendPort:config.backendPort,
60
+ mongoConnectStr:config.mongoConnectStr
61
+ }
62
+ const txtEnv = eta.render('./nest/nest.env.eta', variables);
63
+ const txtMain = eta.render('./nest/nest.main.eta', variables);
64
+
65
+ fs.writeFileSync(`${targetfolder}/.env`, txtEnv);
66
+ fs.writeFileSync(`${targetfolder}/src/main.ts`, txtMain);
67
+ const tsconfigpath = process.cwd()+'/'+`${targetfolder}/tsconfig.json`
68
+ const tsconfig = require(tsconfigpath)
69
+ tsconfig.compilerOptions.esModuleInterop=true
70
+ tsconfig.compilerOptions.resolveJsonModule=true
71
+ fs.writeFileSync(tsconfigpath, JSON.stringify(tsconfig));
72
+
73
+ log.info("nest project completed")
74
+ callback()
75
+ })
76
+ } else{
77
+ log.error(stderr)
78
+ throw error
79
+ }
80
+ })
81
+ }
82
+ //prepare nuxt project for simpleapp generator
83
+ export const prepareNuxt = (callback:Function)=>{
84
+ const targetfolder = config.frontendFolder
85
+ if(!fs.existsSync(`${targetfolder}/.env`)){
86
+ //asume no environment. prepare now
87
+ exec(`cd ${targetfolder};pnpm install;pnpm install -D @types/node @vueuse/nuxt @sidebase/nuxt-auth @vueuse/core nuxt-security prettier @nuxtjs/tailwindcss`, (error, stdout, stderr)=>{
88
+ //;pnpm install
89
+ console.log(error, stdout, stderr)
90
+ exec(`cd ${targetfolder};pnpm install --save ajv dotenv @fullcalendar/core @fullcalendar/vue3 quill uuid ajv-formats primeflex primeicons prettier primevue axios json-schema mitt @simitgroup/simpleapp-vue-component@latest`, (error, stdout, stderr)=>{
91
+ console.log(error, stdout, stderr)
92
+
93
+ fs.mkdirSync(`${targetfolder}/assets/css/`,{recursive:true})
94
+ fs.mkdirSync(`${targetfolder}/layouts`,{recursive:true})
95
+ fs.mkdirSync(`${targetfolder}/components`,{recursive:true})
96
+ fs.mkdirSync(`${targetfolder}/server/api`,{recursive:true})
97
+ fs.mkdirSync(`${targetfolder}/pages`,{recursive:true})
98
+ fs.mkdirSync(`${targetfolder}/plugins`,{recursive:true})
99
+ const eta = new Eta({views: `${constants.templatedir}/nuxt`});
100
+ const variables={
101
+ backendPort:config.backendPort,
102
+ frontendPort:config.frontendPort
103
+ }
104
+ const writes = {
105
+ './app.vue.eta':'app.vue',
106
+ './components.eventmonitor.vue.eta':'components/EventMonitor.vue',
107
+ './components.menus.vue.eta':'components/Menus.vue',
108
+ './components.crudsimple.vue.eta':'components/CrudSimple.vue',
109
+ './components.debugdocdata.vue.eta':'components/DebugDocumentData.vue',
110
+ './layouts.default.vue.eta':'layouts/default.vue',
111
+ './server.api.ts.eta':'server/api/[...].ts',
112
+ './nuxt.config.ts.eta':'nuxt.config.ts',
113
+ './pages.index.vue.eta':'pages/index.vue',
114
+ './plugins.simpleapp.ts.eta':'plugins/simpleapp.ts',
115
+ './tailwind.config.ts.eta':'tailwind.config.ts',
116
+ './tailwind.css.eta':'assets/css/tailwind.css',
117
+ './env.eta':'.env',
118
+ }
119
+
120
+ const templates = Object.getOwnPropertyNames(writes)
121
+ for(let i=0; i<templates.length;i++){
122
+ const template = templates[i]
123
+ const filename = writes[template]
124
+ const txt = eta.render(template, variables);
125
+ const file =`${targetfolder}/${filename}`
126
+ log.info("writing ",file)
127
+ fs.writeFileSync(file, txt);
128
+ }
129
+
130
+ log.info("nuxt project completed")
131
+ callback()
132
+ })
133
+
134
+ })
135
+ }else{
136
+ //assume environment ready
137
+ callback()
138
+ }
139
+ }
140
+
141
+ export const prettyNuxt = ()=>{
142
+ exec(`cd ${config.frontendFolder};npx prettier --write "./pages/**/*.vue" "./simpleapp/**/*" `)
143
+
144
+ }
145
+ export const prettyNest = ()=>{
146
+ exec(`cd ${config.backendFolder};npx run format `)
147
+ }
148
+
149
+ export const prepareOpenApiClient = () => {
150
+ exec(`openapi-generator-cli generate -i ${config.openapi3Yaml} -o ${config.frontendFolder}/simpleapp/openapi -g typescript-axios --skip-validate-spec`)
151
+ }
package/src/generate.ts CHANGED
@@ -21,7 +21,7 @@ const extjsonschema = '.jsonschema.json';
21
21
  let jsonschemas = {};
22
22
  const docs = [];
23
23
 
24
- export const initialize = async (defFolder:string,backendfolder:string,frontendfolder:string) => {
24
+ export const initialize = async (defFolder:string,backendfolder:string,frontendfolder:string,callback:Function) => {
25
25
  prepareEnvironments(backendfolder,frontendfolder)
26
26
  let activatemodules:ModuleObject[]=[]
27
27
  //
@@ -58,7 +58,7 @@ export const initialize = async (defFolder:string,backendfolder:string,frontend
58
58
  log.info("Activated backend modules: ",JSON.stringify(activatemodules))
59
59
  // log.info(activatemodules)
60
60
  finalize(activatemodules,backendfolder,frontendfolder)
61
- return Promise.resolve(true)
61
+ callback()
62
62
  }
63
63
 
64
64
 
@@ -251,10 +251,10 @@ const prepareEnvironments = (backendfolder:string,frontendfolder:string)=>{
251
251
 
252
252
  //copy over backend service class
253
253
 
254
- copyFileSync(`${constants.templatedir}/SimpleAppService.eta`,`${targetfolder}/SimpleAppService.ts`)
254
+ copyFileSync(`${constants.templatedir}/nest/SimpleAppService.eta`,`${targetfolder}/SimpleAppService.ts`)
255
255
 
256
256
  //copy over backend controller
257
- copyFileSync(`${constants.templatedir}/SimpleAppController.eta`,`${targetfolder}/SimpleAppController.ts`)
257
+ copyFileSync(`${constants.templatedir}/nest/SimpleAppController.eta`,`${targetfolder}/SimpleAppController.ts`)
258
258
 
259
259
  //copy over frontend apiabstract class
260
260
  // copyFileSync(`${constants.templatedir}/nuxt.apigateway.eta`,`${targetfrontendfolder}/[...].ts`)
@@ -271,7 +271,7 @@ const finalize=(modules:ModuleObject[],backendfolder:string,frontendfolder:strin
271
271
  mkdirSync(`${frontendfolder}/composables/`,{ recursive: true });
272
272
 
273
273
  const eta = new Eta({views:constants.templatedir});
274
- const txtMainModule = eta.render('app.module.eta', modules);
274
+ const txtMainModule = eta.render('./nest/app.module.eta', modules);
275
275
  writeFileSync(`${backendfolder}/src/app.module.ts`, txtMainModule);
276
276
 
277
277
  const foreignkeyfile =`${backendfolder}/src/dicts/foreignkeys.json`
package/src/index.ts CHANGED
@@ -1,8 +1,11 @@
1
1
  #! /usr/bin/env node
2
2
  import { error } from "console"
3
+ import * as fw from './framework'
4
+ import * as generate from './generate'
3
5
  const program = require("commander") // add this line
4
6
  const Fieldtypes= require( './type')
5
- const generator= require( './generate')
7
+ // const generate= require( './generate')
8
+
6
9
  const fs = require( 'fs')
7
10
  const createproject =require( './createproject')
8
11
  const ps = require( "child_process")
@@ -40,48 +43,26 @@ if(!options.configFile){
40
43
  }
41
44
  const configs = require(path)
42
45
  console.log("configurations: ",configs)
43
- const definationsFolder = configs.definationsFolder ?? options.definationsFolder
44
- const backendFolder = configs.backendFolder ?? options.backendFolder
45
- const frontendFolder = configs.frontendFolder ?? options.frontendFolder
46
-
47
-
48
-
49
-
50
-
51
-
52
-
46
+ const definationsFolder = configs.definationsFolder
47
+ const backendFolder = configs.backendFolder
48
+ const frontendFolder = configs.frontendFolder
49
+ const openapi3Yaml = configs.openapi3Yaml
53
50
 
54
- const runGenerator = async () =>{
55
-
56
- if(!fs.existsSync(backendFolder)){
57
- // npm install -g
58
- const child = ps.spawn('npm',['install','pnpm', '@nestjs/cli', '@openapitools/openapi-generator-cli', 'nuxi'],
59
- { stdio: 'inherit',})
60
-
61
- child.on('exit',(a,b)=>{
62
- console.log("install dependency ",a,b)
63
- const child2 = ps.spawn('nest',['new', '-p', 'pnpm', backendFolder],{ stdio: 'inherit',})
51
+ const run = async()=>{
52
+ fw.setConfiguration(configs)
53
+ fw.runCreateNuxt(()=>{
54
+ fw.runCreateNest(()=>{
55
+ fw.prepareNest(()=>{
56
+ fw.prepareNuxt(()=>{
57
+ generate.initialize(definationsFolder,backendFolder,frontendFolder,()=>{
58
+ fw.prepareOpenApiClient()
59
+ fw.prettyNuxt()
60
+ fw.prettyNest()
61
+ })
62
+ })
63
+ })
64
64
  })
65
-
66
- }
67
- if(!fs.existsSync(frontendFolder)){
68
- // const child3 = ps.spawn('npx',['nuxi@latest','init',frontendFolder],{ stdio: 'inherit',})
69
- }
70
- //
71
-
72
- // child.stdout.on('data', (data) => {
73
- // console.log(`child stdout:\n${data}`);
74
- // });
75
- // process.stdin.pipe(child.stdin)
76
-
77
- // const installnest=()=>{}
78
- // const installnuxt=()=>{}
79
- // const installdependency=()=>{}
80
- // Promise.all([installdependency(),installnuxt(),installnest()]).then(()=>{
81
- // //run generate source code
82
-
83
- // })
65
+ })
84
66
  }
85
67
 
86
-
87
- runGenerator()
68
+ run()
@@ -0,0 +1,7 @@
1
+ MONGODB_URL=<%=it.mongoConnectStr%>
2
+
3
+ HTTP_PORT=<%=it.backendPort%>
4
+
5
+ PROJECT_NAME=SimpleApp Demo1
6
+ PROJECT_DESCRIPTION=Try CRUD
7
+ PROJECT_Version=1.0.0
@@ -15,6 +15,6 @@ async function bootstrap() {
15
15
  swaggerOptions: { showExtensions: true },
16
16
  });
17
17
 
18
- await app.listen(process.env.HTTP_PORT ?? 8000); //listen which port
18
+ await app.listen(process.env.HTTP_PORT ?? <%=it.backendPort%>); //listen which port
19
19
  }
20
20
  bootstrap();
@@ -1,3 +1,5 @@
1
- PORT=8800
2
- SIMPLEAPP_BACKEND_URL=http://localhost:8000
3
- APP_URL=http://localhost:8800
1
+ PORT=<%=it.frontendPort%>
2
+
3
+ SIMPLEAPP_BACKEND_URL=http://localhost:<%=it.backendPort%>
4
+
5
+ APP_URL=http://localhost:<%=it.frontendPort%>
@@ -1,25 +0,0 @@
1
- module.exports = {
2
- parser: '@typescript-eslint/parser',
3
- parserOptions: {
4
- project: 'tsconfig.json',
5
- tsconfigRootDir: __dirname,
6
- sourceType: 'module',
7
- },
8
- plugins: ['@typescript-eslint/eslint-plugin'],
9
- extends: [
10
- 'plugin:@typescript-eslint/recommended',
11
- 'plugin:prettier/recommended',
12
- ],
13
- root: true,
14
- env: {
15
- node: true,
16
- jest: true,
17
- },
18
- ignorePatterns: ['.eslintrc.js'],
19
- rules: {
20
- '@typescript-eslint/interface-name-prefix': 'off',
21
- '@typescript-eslint/explicit-function-return-type': 'off',
22
- '@typescript-eslint/explicit-module-boundary-types': 'off',
23
- '@typescript-eslint/no-explicit-any': 'off',
24
- },
25
- };
@@ -1,4 +0,0 @@
1
- {
2
- "singleQuote": true,
3
- "trailingComma": "all"
4
- }
@@ -1,73 +0,0 @@
1
- <p align="center">
2
- <a href="http://nestjs.com/" target="blank"><img src="https://nestjs.com/img/logo-small.svg" width="200" alt="Nest Logo" /></a>
3
- </p>
4
-
5
- [circleci-image]: https://img.shields.io/circleci/build/github/nestjs/nest/master?token=abc123def456
6
- [circleci-url]: https://circleci.com/gh/nestjs/nest
7
-
8
- <p align="center">A progressive <a href="http://nodejs.org" target="_blank">Node.js</a> framework for building efficient and scalable server-side applications.</p>
9
- <p align="center">
10
- <a href="https://www.npmjs.com/~nestjscore" target="_blank"><img src="https://img.shields.io/npm/v/@nestjs/core.svg" alt="NPM Version" /></a>
11
- <a href="https://www.npmjs.com/~nestjscore" target="_blank"><img src="https://img.shields.io/npm/l/@nestjs/core.svg" alt="Package License" /></a>
12
- <a href="https://www.npmjs.com/~nestjscore" target="_blank"><img src="https://img.shields.io/npm/dm/@nestjs/common.svg" alt="NPM Downloads" /></a>
13
- <a href="https://circleci.com/gh/nestjs/nest" target="_blank"><img src="https://img.shields.io/circleci/build/github/nestjs/nest/master" alt="CircleCI" /></a>
14
- <a href="https://coveralls.io/github/nestjs/nest?branch=master" target="_blank"><img src="https://coveralls.io/repos/github/nestjs/nest/badge.svg?branch=master#9" alt="Coverage" /></a>
15
- <a href="https://discord.gg/G7Qnnhy" target="_blank"><img src="https://img.shields.io/badge/discord-online-brightgreen.svg" alt="Discord"/></a>
16
- <a href="https://opencollective.com/nest#backer" target="_blank"><img src="https://opencollective.com/nest/backers/badge.svg" alt="Backers on Open Collective" /></a>
17
- <a href="https://opencollective.com/nest#sponsor" target="_blank"><img src="https://opencollective.com/nest/sponsors/badge.svg" alt="Sponsors on Open Collective" /></a>
18
- <a href="https://paypal.me/kamilmysliwiec" target="_blank"><img src="https://img.shields.io/badge/Donate-PayPal-ff3f59.svg"/></a>
19
- <a href="https://opencollective.com/nest#sponsor" target="_blank"><img src="https://img.shields.io/badge/Support%20us-Open%20Collective-41B883.svg" alt="Support us"></a>
20
- <a href="https://twitter.com/nestframework" target="_blank"><img src="https://img.shields.io/twitter/follow/nestframework.svg?style=social&label=Follow"></a>
21
- </p>
22
- <!--[![Backers on Open Collective](https://opencollective.com/nest/backers/badge.svg)](https://opencollective.com/nest#backer)
23
- [![Sponsors on Open Collective](https://opencollective.com/nest/sponsors/badge.svg)](https://opencollective.com/nest#sponsor)-->
24
-
25
- ## Description
26
-
27
- [Nest](https://github.com/nestjs/nest) framework TypeScript starter repository.
28
-
29
- ## Installation
30
-
31
- ```bash
32
- $ pnpm install
33
- ```
34
-
35
- ## Running the app
36
-
37
- ```bash
38
- # development
39
- $ pnpm run start
40
-
41
- # watch mode
42
- $ pnpm run start:dev
43
-
44
- # production mode
45
- $ pnpm run start:prod
46
- ```
47
-
48
- ## Test
49
-
50
- ```bash
51
- # unit tests
52
- $ pnpm run test
53
-
54
- # e2e tests
55
- $ pnpm run test:e2e
56
-
57
- # test coverage
58
- $ pnpm run test:cov
59
- ```
60
-
61
- ## Support
62
-
63
- Nest is an MIT-licensed open source project. It can grow thanks to the sponsors and support by the amazing backers. If you'd like to join them, please [read more here](https://docs.nestjs.com/support).
64
-
65
- ## Stay in touch
66
-
67
- - Author - [Kamil Myśliwiec](https://kamilmysliwiec.com)
68
- - Website - [https://nestjs.com](https://nestjs.com/)
69
- - Twitter - [@nestframework](https://twitter.com/nestframework)
70
-
71
- ## License
72
-
73
- Nest is [MIT licensed](LICENSE).
@@ -1,8 +0,0 @@
1
- {
2
- "$schema": "https://json.schemastore.org/nest-cli",
3
- "collection": "@nestjs/schematics",
4
- "sourceRoot": "src",
5
- "compilerOptions": {
6
- "deleteOutDir": true
7
- }
8
- }
@@ -1,69 +0,0 @@
1
- {
2
- "name": "backend1",
3
- "version": "0.0.1",
4
- "description": "",
5
- "author": "",
6
- "private": true,
7
- "license": "UNLICENSED",
8
- "scripts": {
9
- "build": "nest build",
10
- "format": "prettier --write \"src/**/*.ts\" \"test/**/*.ts\"",
11
- "start": "nest start",
12
- "start:dev": "nest start --watch",
13
- "start:debug": "nest start --debug --watch",
14
- "start:prod": "node dist/main",
15
- "lint": "eslint \"{src,apps,libs,test}/**/*.ts\" --fix",
16
- "test": "jest",
17
- "test:watch": "jest --watch",
18
- "test:cov": "jest --coverage",
19
- "test:debug": "node --inspect-brk -r tsconfig-paths/register -r ts-node/register node_modules/.bin/jest --runInBand",
20
- "test:e2e": "jest --config ./test/jest-e2e.json"
21
- },
22
- "dependencies": {
23
- "@nestjs/common": "^10.0.0",
24
- "@nestjs/core": "^10.0.0",
25
- "@nestjs/platform-express": "^10.0.0",
26
- "reflect-metadata": "^0.1.13",
27
- "rxjs": "^7.8.1"
28
- },
29
- "devDependencies": {
30
- "@nestjs/cli": "^10.0.0",
31
- "@nestjs/schematics": "^10.0.0",
32
- "@nestjs/testing": "^10.0.0",
33
- "@types/express": "^4.17.17",
34
- "@types/jest": "^29.5.2",
35
- "@types/node": "^20.3.1",
36
- "@types/supertest": "^2.0.12",
37
- "@typescript-eslint/eslint-plugin": "^6.0.0",
38
- "@typescript-eslint/parser": "^6.0.0",
39
- "eslint": "^8.42.0",
40
- "eslint-config-prettier": "^9.0.0",
41
- "eslint-plugin-prettier": "^5.0.0",
42
- "jest": "^29.5.0",
43
- "prettier": "^3.0.0",
44
- "source-map-support": "^0.5.21",
45
- "supertest": "^6.3.3",
46
- "ts-jest": "^29.1.0",
47
- "ts-loader": "^9.4.3",
48
- "ts-node": "^10.9.1",
49
- "tsconfig-paths": "^4.2.0",
50
- "typescript": "^5.1.3"
51
- },
52
- "jest": {
53
- "moduleFileExtensions": [
54
- "js",
55
- "json",
56
- "ts"
57
- ],
58
- "rootDir": "src",
59
- "testRegex": ".*\\.spec\\.ts$",
60
- "transform": {
61
- "^.+\\.(t|j)s$": "ts-jest"
62
- },
63
- "collectCoverageFrom": [
64
- "**/*.(t|j)s"
65
- ],
66
- "coverageDirectory": "../coverage",
67
- "testEnvironment": "node"
68
- }
69
- }