Pārlūkot izejas kodu

Switch esbuild to SWC

Nicolas Meienberger 3 gadi atpakaļ
vecāks
revīzija
33e0343ba8

+ 5 - 5
docker-compose.dev.yml

@@ -12,8 +12,8 @@ services:
       - 5432:5432
     environment:
       POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
-      POSTGRES_USERNAME: tipi
-      POSTGRES_DBNAME: tipi
+      POSTGRES_USER: tipi
+      POSTGRES_DB: tipi
     healthcheck:
       test: [ "CMD-SHELL", "pg_isready -d tipi -U tipi" ]
       interval: 5s
@@ -26,7 +26,7 @@ services:
     build:
       context: .
       dockerfile: Dockerfile.dev
-    command: /bin/sh -c "cd /api && npm run dev"
+    command: /bin/sh -c "cd /api && npm run build && npm run dev"
     depends_on:
       tipi-db:
         condition: service_healthy
@@ -45,9 +45,9 @@ services:
       JWT_SECRET: ${JWT_SECRET}
       ROOT_FOLDER_HOST: ${ROOT_FOLDER_HOST}
       NGINX_PORT: ${NGINX_PORT}
-      POSTGRES_PASSWORD: tipi
+      POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
       POSTGRES_USERNAME: tipi
-      POSTGRES_DBNAME: ${POSTGRES_DBNAME}
+      POSTGRES_DBNAME: tipi
       POSTGRES_HOST: tipi-db
     networks:
       - tipi_main_network

+ 2 - 2
docker-compose.yml

@@ -26,8 +26,8 @@ services:
       - 5432:5432
     environment:
       POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
-      POSTGRES_USERNAME: tipi
-      POSTGRES_DBNAME: tipi
+      POSTGRES_USER: tipi
+      POSTGRES_DB: tipi
     healthcheck:
       test: [ "CMD-SHELL", "pg_isready -d tipi -U tipi" ]
       interval: 5s

+ 15 - 0
packages/system-api/.swcrc

@@ -0,0 +1,15 @@
+{
+  "jsc": {
+    "parser": {
+      "syntax": "typescript",
+      "tsx": false,
+      "decorators": true,
+      "dynamicImport": true
+    },
+    "target": "es2022"
+  },
+  "module": {
+    "type": "es6"
+  },
+  "isModule": true
+}

+ 6 - 4
packages/system-api/ormconfig.ts

@@ -1,12 +1,14 @@
 import { DataSource } from 'typeorm';
 
-export default new DataSource({
+export const connectionSource = new DataSource({
   type: 'postgres',
   host: 'localhost',
   port: 5432,
   username: 'postgres',
   password: 'postgres',
-  database: 'test-db',
-  entities: ['src/modules/**/*.entity.ts'],
-  migrations: ['src/config/migrations/*.ts'],
+  database: 'postgres',
+  logging: true,
+  synchronize: false,
+  entities: [process.cwd() + '/src/modules/**/*.entity.ts'],
+  migrations: [process.cwd() + '/src/config/migrations/*.ts'],
 });

+ 9 - 8
packages/system-api/package.json

@@ -3,7 +3,7 @@
   "version": "0.3.1",
   "description": "",
   "exports": "./dist/server.js",
-  "type": "commonjs",
+  "type": "module",
   "engines": {
     "node": ">=14.16"
   },
@@ -13,12 +13,13 @@
     "lint:fix": "eslint . --ext .ts --fix",
     "test": "jest --colors",
     "test:watch": "jest --watch",
-    "build": "esbuild --bundle src/server.ts --outdir=dist --allow-overwrite --sourcemap --platform=node --analyze=verbose --external:./node_modules/* --format=esm",
-    "build:watch": "esbuild --bundle src/server.ts --outdir=dist --allow-overwrite --sourcemap --platform=node --external:./node_modules/* --format=esm --watch",
-    "start:dev": "NODE_ENV=development nodemon --trace-deprecation --trace-warnings --watch dist dist/server.js",
+    "build": "rm -rf dist && swc ./src -d dist",
+    "build:watch": "swc ./src -d dist --watch",
+    "start:dev": "NODE_ENV=development && nodemon --experimental-specifier-resolution=node --trace-deprecation --trace-warnings --watch dist dist/server.js",
     "dev": "concurrently \"npm run build:watch\" \"npm run start:dev\"",
-    "start": "NODE_ENV=production node dist/server.js",
-    "typeorm": "node --require ts-node/register ./node_modules/typeorm/cli.js -d ormconfig.ts"
+    "start": "NODE_ENV=production && node --experimental-specifier-resolution=node dist/server.js",
+    "typeorm": "node --experimental-specifier-resolution=node --loader ts-node/esm ./node_modules/typeorm/cli.js -d ormconfig.ts",
+    "migration:generate": "npm run typeorm migration:generate ./src/config/migrations/$npm_config_name"
   },
   "author": "",
   "license": "ISC",
@@ -55,6 +56,8 @@
   },
   "devDependencies": {
     "@faker-js/faker": "^7.3.0",
+    "@swc/cli": "^0.1.57",
+    "@swc/core": "^1.2.210",
     "@types/compression": "^1.7.2",
     "@types/cookie-parser": "^1.4.3",
     "@types/cors": "^2.8.12",
@@ -71,7 +74,6 @@
     "@typescript-eslint/eslint-plugin": "^5.18.0",
     "@typescript-eslint/parser": "^5.22.0",
     "concurrently": "^7.1.0",
-    "esbuild": "^0.14.38",
     "eslint": "^8.13.0",
     "eslint-config-airbnb-typescript": "^17.0.0",
     "eslint-config-prettier": "^8.5.0",
@@ -83,7 +85,6 @@
     "rimraf": "^3.0.2",
     "ts-jest": "^28.0.2",
     "ts-node": "^10.8.2",
-    "tsconfig-paths": "^4.0.0",
     "typescript": "4.6.4"
   }
 }

+ 0 - 22
packages/system-api/src/config/config.ts

@@ -1,9 +1,4 @@
 import * as dotenv from 'dotenv';
-import path from 'path';
-import { DataSourceOptions } from 'typeorm';
-import App from '../modules/apps/app.entity';
-import User from '../modules/auth/user.entity';
-import { __prod__ } from './constants/constants';
 
 interface IConfig {
   logs: {
@@ -11,7 +6,6 @@ interface IConfig {
     LOGS_APP: string;
     LOGS_ERROR: string;
   };
-  typeorm: DataSourceOptions;
   NODE_ENV: string;
   ROOT_FOLDER: string;
   JWT_SECRET: string;
@@ -36,10 +30,6 @@ const {
   TIPI_VERSION = '',
   ROOT_FOLDER_HOST = '',
   NGINX_PORT = '80',
-  POSTGRES_DBNAME = '',
-  POSTGRES_HOST = '',
-  POSTGRES_USERNAME = '',
-  POSTGRES_PASSWORD = '',
 } = process.env;
 
 const config: IConfig = {
@@ -48,18 +38,6 @@ const config: IConfig = {
     LOGS_APP,
     LOGS_ERROR,
   },
-  typeorm: {
-    type: 'postgres',
-    host: POSTGRES_HOST,
-    database: POSTGRES_DBNAME,
-    username: POSTGRES_USERNAME,
-    password: POSTGRES_PASSWORD,
-    port: 5432,
-    logging: !__prod__,
-    synchronize: !__prod__,
-    entities: [App, User],
-    migrations: [path.join(__dirname, './migrations/*')],
-  },
   NODE_ENV,
   ROOT_FOLDER: '/tipi',
   JWT_SECRET,

+ 27 - 0
packages/system-api/src/config/datasource.ts

@@ -0,0 +1,27 @@
+import * as dotenv from 'dotenv';
+import { DataSource } from 'typeorm';
+import App from '../modules/apps/app.entity';
+import User from '../modules/auth/user.entity';
+import { __prod__ } from './constants/constants';
+
+if (process.env.NODE_ENV !== 'production') {
+  dotenv.config({ path: '.env.dev' });
+} else {
+  dotenv.config({ path: '.env' });
+}
+const { POSTGRES_DBNAME = '', POSTGRES_HOST = '', POSTGRES_USERNAME = '', POSTGRES_PASSWORD = '' } = process.env;
+
+console.log('PRODUCTION =>', __prod__);
+
+export default new DataSource({
+  type: 'postgres',
+  host: POSTGRES_HOST,
+  database: POSTGRES_DBNAME,
+  username: POSTGRES_USERNAME,
+  password: POSTGRES_PASSWORD,
+  port: 5432,
+  logging: !__prod__,
+  synchronize: !__prod__,
+  entities: [App, User],
+  migrations: [process.cwd() + '/dist/config/migrations/*.js'],
+});

+ 21 - 0
packages/system-api/src/config/migrations/1657122167397-Initial.ts

@@ -0,0 +1,21 @@
+import { MigrationInterface, QueryRunner } from 'typeorm';
+
+export class Initial1657122167397 implements MigrationInterface {
+  name = 'Initial1657122167397';
+
+  public async up(queryRunner: QueryRunner): Promise<void> {
+    await queryRunner.query(
+      `CREATE TABLE "user" ("id" SERIAL NOT NULL, "username" character varying NOT NULL, "password" character varying NOT NULL, "createdAt" TIMESTAMP NOT NULL DEFAULT now(), "updatedAt" TIMESTAMP NOT NULL DEFAULT now(), CONSTRAINT "UQ_78a916df40e02a9deb1c4b75edb" UNIQUE ("username"), CONSTRAINT "PK_cace4a159ff9f2512dd42373760" PRIMARY KEY ("id"))`,
+    );
+    await queryRunner.query(`CREATE TYPE "public"."app_status_enum" AS ENUM('running', 'stopped', 'installing', 'uninstalling', 'stopping', 'starting', 'missing')`);
+    await queryRunner.query(
+      `CREATE TABLE "app" ("id" character varying NOT NULL, "status" "public"."app_status_enum" NOT NULL DEFAULT 'stopped', "lastOpened" TIMESTAMP WITH TIME ZONE DEFAULT now(), "numOpened" integer NOT NULL DEFAULT '0', "config" jsonb NOT NULL, "createdAt" TIMESTAMP NOT NULL DEFAULT now(), "updatedAt" TIMESTAMP NOT NULL DEFAULT now(), CONSTRAINT "UQ_9478629fc093d229df09e560aea" UNIQUE ("id"), CONSTRAINT "PK_9478629fc093d229df09e560aea" PRIMARY KEY ("id"))`,
+    );
+  }
+
+  public async down(queryRunner: QueryRunner): Promise<void> {
+    await queryRunner.query(`DROP TABLE "app"`);
+    await queryRunner.query(`DROP TYPE "public"."app_status_enum"`);
+    await queryRunner.query(`DROP TABLE "user"`);
+  }
+}

+ 2 - 2
packages/system-api/src/core/middlewares/sessionMiddleware.ts

@@ -1,7 +1,7 @@
 import session from 'express-session';
 import config from '../../config';
 import SessionFileStore from 'session-file-store';
-import { COOKIE_MAX_AGE, __prod__ } from '../../config/constants/constants';
+import { COOKIE_MAX_AGE } from '../../config/constants/constants';
 
 const getSessionMiddleware = () => {
   const FileStore = SessionFileStore(session);
@@ -9,7 +9,7 @@ const getSessionMiddleware = () => {
   return session({
     name: 'qid',
     store: new FileStore(),
-    cookie: { maxAge: COOKIE_MAX_AGE, secure: __prod__, sameSite: 'lax', httpOnly: true },
+    cookie: { maxAge: COOKIE_MAX_AGE, secure: false, sameSite: 'lax', httpOnly: true },
     secret: config.JWT_SECRET,
     resave: false,
     saveUninitialized: false,

+ 4 - 5
packages/system-api/src/server.ts

@@ -2,7 +2,6 @@ import 'reflect-metadata';
 import express from 'express';
 import { ApolloServerPluginLandingPageGraphQLPlayground as Playground } from 'apollo-server-core';
 import config from './config';
-import { DataSource } from 'typeorm';
 import { ApolloServer } from 'apollo-server-express';
 import { createSchema } from './schema';
 import { ApolloLogs } from './config/logger/apollo.logger';
@@ -12,6 +11,7 @@ import getSessionMiddleware from './core/middlewares/sessionMiddleware';
 import { MyContext } from './types';
 import { __prod__ } from './config/constants/constants';
 import cors from 'cors';
+import datasource from './config/datasource';
 
 const main = async () => {
   try {
@@ -36,11 +36,10 @@ const main = async () => {
     );
     app.use(getSessionMiddleware());
 
-    const AppDataSource = new DataSource(config.typeorm);
-    await AppDataSource.initialize();
+    await datasource.initialize();
 
     if (__prod__) {
-      await AppDataSource.runMigrations();
+      await datasource.runMigrations();
     }
 
     const schema = await createSchema();
@@ -49,7 +48,7 @@ const main = async () => {
 
     const plugins = [ApolloLogs];
 
-    if (__prod__) {
+    if (!__prod__) {
       plugins.push(Playground({ settings: { 'request.credentials': 'include' } }));
     }
 

+ 6 - 4
packages/system-api/tsconfig.json

@@ -1,22 +1,24 @@
 {
   "compilerOptions": {
     "target": "es2018",
-    "lib": ["es2018", "esnext.asynciterable"],
+    "module": "es2022",
+    "lib": ["es2021", "ESNext.AsyncIterable"],
     "allowJs": true,
     "skipLibCheck": true,
     "strict": true,
     "forceConsistentCasingInFileNames": true,
     "noEmit": true,
     "esModuleInterop": true,
-    "module": "commonjs",
     "moduleResolution": "node",
     "resolveJsonModule": true,
     "isolatedModules": false,
     "jsx": "preserve",
     "incremental": true,
     "emitDecoratorMetadata": true,
-    "experimentalDecorators": true
+    "experimentalDecorators": true,
+    "allowSyntheticDefaultImports": true,
+    "outDir": "./dist"
   },
-  "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", "**/*.cjs", "jest.config.cjs", "ormconfig.js"],
+  "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", "**/*.cjs", "jest.config.cjs"],
   "exclude": ["node_modules"]
 }

+ 174 - 14
pnpm-lock.yaml

@@ -128,6 +128,8 @@ importers:
   packages/system-api:
     specifiers:
       '@faker-js/faker': ^7.3.0
+      '@swc/cli': ^0.1.57
+      '@swc/core': ^1.2.210
       '@types/compression': ^1.7.2
       '@types/cookie-parser': ^1.4.3
       '@types/cors': ^2.8.12
@@ -182,7 +184,6 @@ importers:
       tcp-port-used: ^1.0.2
       ts-jest: ^28.0.2
       ts-node: ^10.8.2
-      tsconfig-paths: ^4.0.0
       type-graphql: ^1.1.1
       typeorm: ^0.3.6
       typescript: 4.6.4
@@ -219,6 +220,8 @@ importers:
       winston: 3.7.2
     devDependencies:
       '@faker-js/faker': 7.3.0
+      '@swc/cli': 0.1.57_@swc+core@1.2.210
+      '@swc/core': 1.2.210
       '@types/compression': 1.7.2
       '@types/cookie-parser': 1.4.3
       '@types/cors': 2.8.12
@@ -246,8 +249,7 @@ importers:
       prettier: 2.6.2
       rimraf: 3.0.2
       ts-jest: 28.0.2_k4xvjffwcpckmnpd5fcvxvnd24
-      ts-node: 10.8.2_l47be6km5p57gglrggidw5gsgm
-      tsconfig-paths: 4.0.0
+      ts-node: 10.8.2_uva6s4l7h33czpzezvop6ux5pe
       typescript: 4.6.4
 
 packages:
@@ -3228,6 +3230,161 @@ packages:
     resolution: {integrity: sha512-O3uyB/JbkAEMZaP3YqyHH7TMnex7tWyCbCI4EfJdOCoN6HIhqdJBWTM6aCCiWQ/5f5wxjgU735QAIpJbjDvmzg==}
     dev: false
 
+  /@swc/cli/0.1.57_@swc+core@1.2.210:
+    resolution: {integrity: sha512-HxM8TqYHhAg+zp7+RdTU69bnkl4MWdt1ygyp6BDIPjTiaJVH6Dizn2ezbgDS8mnFZI1FyhKvxU/bbaUs8XhzQg==}
+    engines: {node: '>= 12.13'}
+    hasBin: true
+    peerDependencies:
+      '@swc/core': ^1.2.66
+      chokidar: ^3.5.1
+    peerDependenciesMeta:
+      chokidar:
+        optional: true
+    dependencies:
+      '@swc/core': 1.2.210
+      commander: 7.2.0
+      fast-glob: 3.2.11
+      slash: 3.0.0
+      source-map: 0.7.4
+    dev: true
+
+  /@swc/core-android-arm-eabi/1.2.210:
+    resolution: {integrity: sha512-JGPcCM9XixJIbCHP/fbI79pXTuU9C3V6AxolTy0zEhgNe7r59CiSVcGWN5t5dgkEuwApAxN2iNjJRmz4z+ALAg==}
+    engines: {node: '>=10'}
+    cpu: [arm]
+    os: [android]
+    requiresBuild: true
+    dev: true
+    optional: true
+
+  /@swc/core-android-arm64/1.2.210:
+    resolution: {integrity: sha512-oP2b8LjZiMNrzOnoC/mVomksSiqQDrIsm4LxPAGTK1fWnbtITLF/Wj/St1wnUu98jZf5kvQP9AH3p2d3J6UaDA==}
+    engines: {node: '>=10'}
+    cpu: [arm64]
+    os: [android]
+    requiresBuild: true
+    dev: true
+    optional: true
+
+  /@swc/core-darwin-arm64/1.2.210:
+    resolution: {integrity: sha512-7PEHF1AHRpVcMtttfOVtyjZq73VUVaLsBnTWUqdFv1toRu42n+CmnXm3brmnSwyi7TTtCU/nahunWNmBbJeG8A==}
+    engines: {node: '>=10'}
+    cpu: [arm64]
+    os: [darwin]
+    requiresBuild: true
+    dev: true
+    optional: true
+
+  /@swc/core-darwin-x64/1.2.210:
+    resolution: {integrity: sha512-FEPSgnzRy7X9SaDWtAQKfoodttG90GOyTKqBC/915SPhvuprSf3/PpX2NP63E44/GVgEoNzmNGGiUzbL5k70Dg==}
+    engines: {node: '>=10'}
+    cpu: [x64]
+    os: [darwin]
+    requiresBuild: true
+    dev: true
+    optional: true
+
+  /@swc/core-freebsd-x64/1.2.210:
+    resolution: {integrity: sha512-nehrNTikTfY4H08VUjp20/U5/bt4PC/hi8Zthjz1A0evcIdA0WHajByFj0um/0lYmdF1K6T7A9UuaoOwPEAZ0A==}
+    engines: {node: '>=10'}
+    cpu: [x64]
+    os: [freebsd]
+    requiresBuild: true
+    dev: true
+    optional: true
+
+  /@swc/core-linux-arm-gnueabihf/1.2.210:
+    resolution: {integrity: sha512-vbSQxZcPBJC2WqVWHZhZIPpv+8xoNug/Qv6FLFPcl735MeNRzgciKC1LlXuy6DNA0RqoCPPyzaK2jnwJyq4bSw==}
+    engines: {node: '>=10'}
+    cpu: [arm]
+    os: [linux]
+    requiresBuild: true
+    dev: true
+    optional: true
+
+  /@swc/core-linux-arm64-gnu/1.2.210:
+    resolution: {integrity: sha512-gfItagFmC06q5Uu7WHf/O3n1yKhA7uAo9VPUcNDKKrOh/WSkMI2dxtoeo4u5xOuJWKWedGCcdyJw46uhpYST0w==}
+    engines: {node: '>=10'}
+    cpu: [arm64]
+    os: [linux]
+    requiresBuild: true
+    dev: true
+    optional: true
+
+  /@swc/core-linux-arm64-musl/1.2.210:
+    resolution: {integrity: sha512-3nlNHIYiuppJBB+bbaxLfGN/mnofaVvKVEwUQ9HPtghY87zFIsKl1RfNQtxcOlcarcWya1XAMSk9NXv2dFHWDg==}
+    engines: {node: '>=10'}
+    cpu: [arm64]
+    os: [linux]
+    requiresBuild: true
+    dev: true
+    optional: true
+
+  /@swc/core-linux-x64-gnu/1.2.210:
+    resolution: {integrity: sha512-BmhfneSvUzIufUhPaql3YvoWlSrNZiAhpL3c5fPrfQxADywkZLljgh0kckxpeCi5R8iWIUlNSPFmo589QS2Jsg==}
+    engines: {node: '>=10'}
+    cpu: [x64]
+    os: [linux]
+    requiresBuild: true
+    dev: true
+    optional: true
+
+  /@swc/core-linux-x64-musl/1.2.210:
+    resolution: {integrity: sha512-0VT7FeF4Vc/u0oxVLplF/0hcApE+fwC4Njf49SFyvszgAMc9a+fyUNBX2NSqIrTQFwmifRcpQOeXDT8Edy0g6w==}
+    engines: {node: '>=10'}
+    cpu: [x64]
+    os: [linux]
+    requiresBuild: true
+    dev: true
+    optional: true
+
+  /@swc/core-win32-arm64-msvc/1.2.210:
+    resolution: {integrity: sha512-MwM35TtzMX7GS424y/Bk0CrwWsYRfZ/WX15QAi/Yz+fnPCDLtFNknRC7gAaTpDeqywu6dsXUFyErzK1FC8l8YA==}
+    engines: {node: '>=10'}
+    cpu: [arm64]
+    os: [win32]
+    requiresBuild: true
+    dev: true
+    optional: true
+
+  /@swc/core-win32-ia32-msvc/1.2.210:
+    resolution: {integrity: sha512-KpofYa0wqd8urFLrdsz0yQU2YkF7NEDU3+IzqUNnxwamlaEFg/C3l6rTgmiihHXIZuYQS9di4YwykyMVVXutOA==}
+    engines: {node: '>=10'}
+    cpu: [ia32]
+    os: [win32]
+    requiresBuild: true
+    dev: true
+    optional: true
+
+  /@swc/core-win32-x64-msvc/1.2.210:
+    resolution: {integrity: sha512-bUhY0bK8s+B6LSdbNu9L0RKrO/rWrXICtIZyHZolUZKo326hfQ0Iwx+N/xuh6jYpON0RaY9pR0HAyaCDHugoRA==}
+    engines: {node: '>=10'}
+    cpu: [x64]
+    os: [win32]
+    requiresBuild: true
+    dev: true
+    optional: true
+
+  /@swc/core/1.2.210:
+    resolution: {integrity: sha512-euiCxnx+dCnE6iDGM04hIvcLS2LADVgIDo0OGnxqRce4SwUNHZi/KcRxIT04YtJd3BdO5v+l4K8RHIx4jvn+TA==}
+    engines: {node: '>=10'}
+    hasBin: true
+    optionalDependencies:
+      '@swc/core-android-arm-eabi': 1.2.210
+      '@swc/core-android-arm64': 1.2.210
+      '@swc/core-darwin-arm64': 1.2.210
+      '@swc/core-darwin-x64': 1.2.210
+      '@swc/core-freebsd-x64': 1.2.210
+      '@swc/core-linux-arm-gnueabihf': 1.2.210
+      '@swc/core-linux-arm64-gnu': 1.2.210
+      '@swc/core-linux-arm64-musl': 1.2.210
+      '@swc/core-linux-x64-gnu': 1.2.210
+      '@swc/core-linux-x64-musl': 1.2.210
+      '@swc/core-win32-arm64-msvc': 1.2.210
+      '@swc/core-win32-ia32-msvc': 1.2.210
+      '@swc/core-win32-x64-msvc': 1.2.210
+    dev: true
+
   /@szmarczak/http-timer/1.1.2:
     resolution: {integrity: sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==}
     engines: {node: '>=6'}
@@ -4984,6 +5141,11 @@ packages:
     resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==}
     dev: false
 
+  /commander/7.2.0:
+    resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==}
+    engines: {node: '>= 10'}
+    dev: true
+
   /common-tags/1.8.2:
     resolution: {integrity: sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==}
     engines: {node: '>=4.0.0'}
@@ -7856,7 +8018,7 @@ packages:
       pretty-format: 28.1.0
       slash: 3.0.0
       strip-json-comments: 3.1.1
-      ts-node: 10.8.2_l47be6km5p57gglrggidw5gsgm
+      ts-node: 10.8.2_uva6s4l7h33czpzezvop6ux5pe
     transitivePeerDependencies:
       - supports-color
     dev: true
@@ -10785,6 +10947,11 @@ packages:
     engines: {node: '>=0.10.0'}
     dev: true
 
+  /source-map/0.7.4:
+    resolution: {integrity: sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==}
+    engines: {node: '>= 8'}
+    dev: true
+
   /space-separated-tokens/2.0.1:
     resolution: {integrity: sha512-ekwEbFp5aqSPKaqeY1PGrlGQxPNaq+Cnx4+bE2D8sciBQrHpbwoBbawqTN2+6jPs9IdWxxiUcN0K2pkczD3zmw==}
     dev: false
@@ -11308,7 +11475,7 @@ packages:
     resolution: {integrity: sha512-DEQrfv6l7IvN2jlzc/VTdZJYsWUnQNCsueYjMkC/iXoEoi5fNan6MjeDqkvhfzbmHgdz9UxDUluX3V5HdjTydQ==}
     dev: true
 
-  /ts-node/10.8.2_l47be6km5p57gglrggidw5gsgm:
+  /ts-node/10.8.2_uva6s4l7h33czpzezvop6ux5pe:
     resolution: {integrity: sha512-LYdGnoGddf1D6v8REPtIH+5iq/gTDuZqv2/UJUU7tKjuEU8xVZorBM+buCGNjj+pGEud+sOoM4CX3/YzINpENA==}
     hasBin: true
     peerDependencies:
@@ -11323,6 +11490,7 @@ packages:
         optional: true
     dependencies:
       '@cspotcode/source-map-support': 0.8.1
+      '@swc/core': 1.2.210
       '@tsconfig/node10': 1.0.9
       '@tsconfig/node12': 1.0.11
       '@tsconfig/node14': 1.0.3
@@ -11364,14 +11532,6 @@ packages:
       strip-bom: 3.0.0
     dev: true
 
-  /tsconfig-paths/4.0.0:
-    resolution: {integrity: sha512-SLBg2GBKlR6bVtMgJJlud/o3waplKtL7skmLkExomIiaAtLGtVsoXIqP3SYdjbcH9lq/KVv7pMZeCBpLYOit6Q==}
-    dependencies:
-      json5: 2.2.1
-      minimist: 1.2.6
-      strip-bom: 3.0.0
-    dev: true
-
   /tslib/1.14.1:
     resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==}
 
@@ -11519,7 +11679,7 @@ packages:
       pg: 8.7.3
       reflect-metadata: 0.1.13
       sha.js: 2.4.11
-      ts-node: 10.8.2_l47be6km5p57gglrggidw5gsgm
+      ts-node: 10.8.2_uva6s4l7h33czpzezvop6ux5pe
       tslib: 2.4.0
       uuid: 8.3.2
       xml2js: 0.4.23