From 33e0343ba8c1b947586949ecd62d41cae2ada963 Mon Sep 17 00:00:00 2001 From: Nicolas Meienberger Date: Wed, 6 Jul 2022 23:03:45 +0200 Subject: [PATCH] Switch esbuild to SWC --- docker-compose.dev.yml | 10 +- docker-compose.yml | 4 +- packages/system-api/.swcrc | 15 ++ packages/system-api/ormconfig.ts | 10 +- packages/system-api/package.json | 17 +- packages/system-api/src/config/config.ts | 22 -- packages/system-api/src/config/datasource.ts | 27 +++ .../migrations/1657122167397-Initial.ts | 21 ++ .../src/core/middlewares/sessionMiddleware.ts | 4 +- packages/system-api/src/server.ts | 9 +- packages/system-api/tsconfig.json | 10 +- pnpm-lock.yaml | 188 ++++++++++++++++-- 12 files changed, 271 insertions(+), 66 deletions(-) create mode 100644 packages/system-api/.swcrc create mode 100644 packages/system-api/src/config/datasource.ts create mode 100644 packages/system-api/src/config/migrations/1657122167397-Initial.ts diff --git a/docker-compose.dev.yml b/docker-compose.dev.yml index c9ff66fa..d111138a 100644 --- a/docker-compose.dev.yml +++ b/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 diff --git a/docker-compose.yml b/docker-compose.yml index 1c9d0d98..0e80f01b 100644 --- a/docker-compose.yml +++ b/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 diff --git a/packages/system-api/.swcrc b/packages/system-api/.swcrc new file mode 100644 index 00000000..5260998a --- /dev/null +++ b/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 +} diff --git a/packages/system-api/ormconfig.ts b/packages/system-api/ormconfig.ts index 0571be8c..11f1290b 100644 --- a/packages/system-api/ormconfig.ts +++ b/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'], }); diff --git a/packages/system-api/package.json b/packages/system-api/package.json index 9b09c101..ba4d4b3c 100644 --- a/packages/system-api/package.json +++ b/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" } } diff --git a/packages/system-api/src/config/config.ts b/packages/system-api/src/config/config.ts index 9de07e62..0af6a43b 100644 --- a/packages/system-api/src/config/config.ts +++ b/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, diff --git a/packages/system-api/src/config/datasource.ts b/packages/system-api/src/config/datasource.ts new file mode 100644 index 00000000..de745f9d --- /dev/null +++ b/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'], +}); diff --git a/packages/system-api/src/config/migrations/1657122167397-Initial.ts b/packages/system-api/src/config/migrations/1657122167397-Initial.ts new file mode 100644 index 00000000..222c9e2f --- /dev/null +++ b/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 { + 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 { + await queryRunner.query(`DROP TABLE "app"`); + await queryRunner.query(`DROP TYPE "public"."app_status_enum"`); + await queryRunner.query(`DROP TABLE "user"`); + } +} diff --git a/packages/system-api/src/core/middlewares/sessionMiddleware.ts b/packages/system-api/src/core/middlewares/sessionMiddleware.ts index 78742cdf..5a9373ff 100644 --- a/packages/system-api/src/core/middlewares/sessionMiddleware.ts +++ b/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, diff --git a/packages/system-api/src/server.ts b/packages/system-api/src/server.ts index 4384706d..5f1a4e05 100644 --- a/packages/system-api/src/server.ts +++ b/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' } })); } diff --git a/packages/system-api/tsconfig.json b/packages/system-api/tsconfig.json index 819fe929..31616e30 100644 --- a/packages/system-api/tsconfig.json +++ b/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"] } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 038ff8a0..63f5d82d 100644 --- a/pnpm-lock.yaml +++ b/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