From a7375c947dc6bea9e2d3a5295945b0bdd7ec8981 Mon Sep 17 00:00:00 2001 From: Eli <31790206+eli-lim@users.noreply.github.com> Date: Mon, 28 Feb 2022 11:50:28 +0800 Subject: [PATCH] refactor(apps): Adopt Nest monorepo structure to allow module sharing (#1078) * refactor(apps): adopt Nest monorepo structure for code sharing between apps * refactor(apps): point clean script to apps/dist * refactor(apps): remove redundant paths from tsconfig * refactor(apps): generalise tsconfig and jest moduleNameMapper * refactor(apps): remove redundant compilerOptions * refactor(apps): reinstate paths mapping in compilerOptions so IDE doesn't complain * chore(apps): bump typeorm * chore(apps): add testcontainers devDependency - accidentally dropped from merging main into branch * refactor(apps): update package-lock.json * refactor(apps): remove website from lerna packages * refactor(apps): change apps library prefix * refactor(apps): move IDEA ide .run config into .idea * refactor(apps): remove unnecessary start commands --- apps/legacy-api/package.json | 24 - apps/legacy-api/tsconfig.build.json | 10 - .../__tests__/ActuatorController.test.ts | 205 ++ .../actuator/src}/ActuatorController.ts | 2 +- .../actuator/src}/ActuatorModule.ts | 0 .../actuator/src}/BlockchainCppModule.ts | 0 apps/libs/actuator/src/index.ts | 3 + apps/libs/actuator/tsconfig.lib.json | 9 + apps/nest-cli.json | 36 + apps/ocean-api/package.json | 37 - .../src/controllers/ActuatorController.ts | 37 - .../ocean-api/src/modules/ControllerModule.ts | 2 +- apps/ocean-api/src/modules/RootModule.ts | 3 +- apps/ocean-api/tsconfig.build.json | 10 - apps/package.json | 57 + apps/rich-list-api/package.json | 32 - .../src/modules/ActuatorModule.ts | 72 - .../src/modules/BlockchainCppModule.ts | 100 - .../src/modules/ControllerModule.ts | 2 +- apps/rich-list-api/src/modules/RootModule.ts | 5 +- apps/rich-list-api/tsconfig.build.json | 10 - apps/tsconfig.build.json | 3 + apps/tsconfig.json | 21 + jest.config.js | 5 +- lerna.json | 2 +- package-lock.json | 3072 +++++++++++------ package.json | 8 +- tsconfig.json | 3 + 28 files changed, 2334 insertions(+), 1436 deletions(-) delete mode 100644 apps/legacy-api/package.json delete mode 100644 apps/legacy-api/tsconfig.build.json create mode 100644 apps/libs/actuator/__tests__/ActuatorController.test.ts rename apps/{rich-list-api/src/controllers => libs/actuator/src}/ActuatorController.ts (95%) rename apps/{ocean-api/src/modules => libs/actuator/src}/ActuatorModule.ts (100%) rename apps/{ocean-api/src/modules => libs/actuator/src}/BlockchainCppModule.ts (100%) create mode 100644 apps/libs/actuator/src/index.ts create mode 100644 apps/libs/actuator/tsconfig.lib.json create mode 100644 apps/nest-cli.json delete mode 100644 apps/ocean-api/package.json delete mode 100644 apps/ocean-api/src/controllers/ActuatorController.ts delete mode 100644 apps/ocean-api/tsconfig.build.json create mode 100644 apps/package.json delete mode 100644 apps/rich-list-api/package.json delete mode 100644 apps/rich-list-api/src/modules/ActuatorModule.ts delete mode 100644 apps/rich-list-api/src/modules/BlockchainCppModule.ts delete mode 100644 apps/rich-list-api/tsconfig.build.json create mode 100644 apps/tsconfig.build.json create mode 100644 apps/tsconfig.json diff --git a/apps/legacy-api/package.json b/apps/legacy-api/package.json deleted file mode 100644 index d84782098b..0000000000 --- a/apps/legacy-api/package.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "private": true, - "name": "@defichain-apps/legacy-api", - "version": "0.0.0", - "repository": "DeFiCh/jellyfish", - "bugs": "https://github.com/DeFiCh/jellyfish/issues", - "license": "MIT", - "main": "dist/index.js", - "scripts": { - "build": "tsc -b tsconfig.build.json" - }, - "dependencies": { - "@defichain/whale-api-client": "^0.23.2", - "@nestjs/common": "^8.3.1", - "@nestjs/config": "^1.2.0", - "@nestjs/core": "^8.3.1", - "@nestjs/platform-fastify": "^8.3.1" - }, - "devDependencies": { - "@nestjs/cli": "^8.2.1", - "@nestjs/schematics": "^8.0.6", - "@nestjs/testing": "^8.3.1" - } -} diff --git a/apps/legacy-api/tsconfig.build.json b/apps/legacy-api/tsconfig.build.json deleted file mode 100644 index 2e22dec889..0000000000 --- a/apps/legacy-api/tsconfig.build.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "extends": "../../tsconfig.json", - "include": [ - "./src/**/*" - ], - "compilerOptions": { - "outDir": "./dist", - "removeComments": true - } -} diff --git a/apps/libs/actuator/__tests__/ActuatorController.test.ts b/apps/libs/actuator/__tests__/ActuatorController.test.ts new file mode 100644 index 0000000000..da79abff3e --- /dev/null +++ b/apps/libs/actuator/__tests__/ActuatorController.test.ts @@ -0,0 +1,205 @@ +import { Test } from '@nestjs/testing' +import { HealthIndicatorResult } from '@nestjs/terminus' +import { ActuatorController, ActuatorModule, ActuatorProbes, ProbeIndicator } from '../src' +import { FastifyAdapter, NestFastifyApplication } from '@nestjs/platform-fastify' +import { Module } from '@nestjs/common' + +describe('ActuatorController - Healthy service', () => { + /** + * Simulate a service that has dead simple health indicators + */ + class HealthyServiceProbe extends ProbeIndicator { + async liveness (): Promise { + return this.withAlive('healthyService', { livenessDetail: 100 }) + } + + async readiness (): Promise { + return this.withAlive('healthyService', { readinessDetail: 200 }) + } + } + + /** + * Some module whose health needs to be probed. + * onApplicationBootstrap hook gives us the appropriate app lifecycle stage + * to register the probe. + */ + @Module({ providers: [HealthyServiceProbe] }) + class HealthyServiceActuatorModule { + constructor ( + private readonly probes: ActuatorProbes, + private readonly probe: HealthyServiceProbe) { + } + + async onApplicationBootstrap (): Promise { + this.probes.add(this.probe) + } + } + + let app: NestFastifyApplication + + beforeAll(async () => { + const moduleRef = await Test.createTestingModule({ + imports: [ + HealthyServiceActuatorModule, + ActuatorModule + ], + providers: [HealthyServiceProbe], + controllers: [ActuatorController] + }).compile() + + app = moduleRef.createNestApplication(new FastifyAdapter({ logger: false })) + await app.init() + }) + + afterAll(async () => { + await app.close() + }) + + it('/_actuator/probes/liveness healthy', async () => { + const response = await app.inject({ + method: 'GET', + url: '/_actuator/probes/liveness' + }) + + expect(response.json()).toStrictEqual({ + details: { + healthyService: { + livenessDetail: 100, + status: 'up' + } + }, + error: {}, + info: { + healthyService: { + livenessDetail: 100, + status: 'up' + } + }, + status: 'ok' + }) + }) + + it('/_actuator/probes/readiness healthy', async () => { + const response = await app.inject({ + method: 'GET', + url: '/_actuator/probes/readiness' + }) + + expect(response.json()).toStrictEqual({ + details: { + healthyService: { + readinessDetail: 200, + status: 'up' + } + }, + error: {}, + info: { + healthyService: { + readinessDetail: 200, + status: 'up' + } + }, + status: 'ok' + }) + }) +}) + +describe('ActuatorController - Unhealthy service', () => { + /** + * Simulate a service that has dead simple health indicators + */ + class UnhealthyServiceProbe extends ProbeIndicator { + async liveness (): Promise { + return this.withDead('unhealthyService', 'some causative message', { livenessDetail: 0 }) + } + + async readiness (): Promise { + return this.withDead('unhealthyService', 'some causative message', { readinessDetail: 1 }) + } + } + + /** + * Some module whose health needs to be probed. + * onApplicationBootstrap hook gives us the appropriate app lifecycle stage + * to register the probe. + */ + @Module({ providers: [UnhealthyServiceProbe] }) + class UnhealthyServiceActuatorModule { + constructor ( + private readonly probes: ActuatorProbes, + private readonly probe: UnhealthyServiceProbe) { + } + + async onApplicationBootstrap (): Promise { + this.probes.add(this.probe) + } + } + + let app: NestFastifyApplication + + beforeAll(async () => { + const moduleRef = await Test.createTestingModule({ + imports: [ + UnhealthyServiceActuatorModule, + ActuatorModule + ], + providers: [UnhealthyServiceProbe], + controllers: [ActuatorController] + }).compile() + + app = moduleRef.createNestApplication(new FastifyAdapter({ logger: false })) + await app.init() + }) + + afterAll(async () => { + await app.close() + }) + + it('/_actuator/probes/liveness unhealthy', async () => { + const response = await app.inject({ + method: 'GET', + url: '/_actuator/probes/liveness' + }) + + expect(response.json()).toStrictEqual({ + details: { + unhealthyService: { + livenessDetail: 0, + status: 'down' + } + }, + error: { + unhealthyService: { + livenessDetail: 0, + status: 'down' + } + }, + info: {}, + status: 'error' + }) + }) + + it('/_actuator/probes/readiness unhealthy', async () => { + const response = await app.inject({ + method: 'GET', + url: '/_actuator/probes/readiness' + }) + + expect(response.json()).toStrictEqual({ + details: { + unhealthyService: { + readinessDetail: 1, + status: 'down' + } + }, + error: { + unhealthyService: { + readinessDetail: 1, + status: 'down' + } + }, + info: {}, + status: 'error' + }) + }) +}) diff --git a/apps/rich-list-api/src/controllers/ActuatorController.ts b/apps/libs/actuator/src/ActuatorController.ts similarity index 95% rename from apps/rich-list-api/src/controllers/ActuatorController.ts rename to apps/libs/actuator/src/ActuatorController.ts index 9166bedbae..948774fa28 100644 --- a/apps/rich-list-api/src/controllers/ActuatorController.ts +++ b/apps/libs/actuator/src/ActuatorController.ts @@ -1,6 +1,6 @@ import { Controller, Get } from '@nestjs/common' import { HealthCheck, HealthCheckResult, HealthCheckService } from '@nestjs/terminus' -import { ActuatorProbes } from '../modules/ActuatorModule' +import { ActuatorProbes } from './ActuatorModule' @Controller('/_actuator') export class ActuatorController { diff --git a/apps/ocean-api/src/modules/ActuatorModule.ts b/apps/libs/actuator/src/ActuatorModule.ts similarity index 100% rename from apps/ocean-api/src/modules/ActuatorModule.ts rename to apps/libs/actuator/src/ActuatorModule.ts diff --git a/apps/ocean-api/src/modules/BlockchainCppModule.ts b/apps/libs/actuator/src/BlockchainCppModule.ts similarity index 100% rename from apps/ocean-api/src/modules/BlockchainCppModule.ts rename to apps/libs/actuator/src/BlockchainCppModule.ts diff --git a/apps/libs/actuator/src/index.ts b/apps/libs/actuator/src/index.ts new file mode 100644 index 0000000000..9495a14ca2 --- /dev/null +++ b/apps/libs/actuator/src/index.ts @@ -0,0 +1,3 @@ +export * from './ActuatorModule' +export * from './ActuatorController' +export * from './BlockchainCppModule' diff --git a/apps/libs/actuator/tsconfig.lib.json b/apps/libs/actuator/tsconfig.lib.json new file mode 100644 index 0000000000..1d07c666e4 --- /dev/null +++ b/apps/libs/actuator/tsconfig.lib.json @@ -0,0 +1,9 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "declaration": true, + "outDir": "../../dist/libs/actuator" + }, + "include": ["src/**/*"], + "exclude": ["node_modules", "dist", "test", "**/*test.ts"] +} diff --git a/apps/nest-cli.json b/apps/nest-cli.json new file mode 100644 index 0000000000..62b5c777b0 --- /dev/null +++ b/apps/nest-cli.json @@ -0,0 +1,36 @@ +{ + "collection": "@nestjs/schematics", + "monorepo": true, + "compilerOptions": { + "tsConfigPath": "tsconfig.json" + }, + "projects": { + "legacy-api": { + "type": "application", + "root": "legacy-api", + "entryFile": "apps/legacy-api/src/index", + "sourceRoot": "legacy-api/src" + }, + "ocean-api": { + "type": "application", + "root": "ocean-api", + "entryFile": "apps/ocean-api/src/index", + "sourceRoot": "ocean-api/src" + }, + "rich-list-api": { + "type": "application", + "root": "rich-list-api", + "entryFile": "apps/rich-list-api/src/index", + "sourceRoot": "rich-list-api/src" + }, + "actuator": { + "type": "library", + "root": "libs/actuator", + "entryFile": "index", + "sourceRoot": "libs/actuator/src", + "compilerOptions": { + "tsConfigPath": "libs/actuator/tsconfig.lib.json" + } + } + } +} diff --git a/apps/ocean-api/package.json b/apps/ocean-api/package.json deleted file mode 100644 index 084c8cae14..0000000000 --- a/apps/ocean-api/package.json +++ /dev/null @@ -1,37 +0,0 @@ -{ - "private": true, - "name": "@defichain-apps/ocean-api", - "version": "0.0.0", - "description": "DeFiChain Jellyfish Ecosystem", - "repository": "DeFiCh/jellyfish", - "bugs": "https://github.com/DeFiCh/jellyfish/issues", - "license": "MIT", - "main": "dist/index.js", - "scripts": { - "build": "tsc -b tsconfig.build.json" - }, - "dependencies": { - "@defichain/ocean-api-client": "0.0.0", - "@defichain/jellyfish-api-core": "0.0.0", - "@defichain/jellyfish-api-jsonrpc": "0.0.0", - "@defichain/playground": "0.0.0", - "@nestjs/common": "^8.3.1", - "@nestjs/config": "^1.2.0", - "@nestjs/core": "^8.3.1", - "@nestjs/platform-fastify": "^8.3.1", - "@nestjs/schedule": "^1.0.2", - "@nestjs/terminus": "^8.0.4", - "cache-manager": "^3.6.0", - "class-transformer": "^0.5.1", - "class-validator": "^0.13.2", - "joi": "^17.6.0" - }, - "devDependencies": { - "@defichain/ocean-api-client": "0.0.0", - "@nestjs/cli": "^8.2.1", - "@nestjs/schematics": "^8.0.6", - "@nestjs/testing": "^8.3.1", - "@types/cache-manager": "^3.4.2", - "@types/cron": "^1.7.3" - } -} diff --git a/apps/ocean-api/src/controllers/ActuatorController.ts b/apps/ocean-api/src/controllers/ActuatorController.ts deleted file mode 100644 index 9166bedbae..0000000000 --- a/apps/ocean-api/src/controllers/ActuatorController.ts +++ /dev/null @@ -1,37 +0,0 @@ -import { Controller, Get } from '@nestjs/common' -import { HealthCheck, HealthCheckResult, HealthCheckService } from '@nestjs/terminus' -import { ActuatorProbes } from '../modules/ActuatorModule' - -@Controller('/_actuator') -export class ActuatorController { - constructor ( - private readonly probes: ActuatorProbes, - private readonly health: HealthCheckService) { - } - - /** - * Indicates whether the service is running. - * If the liveness probe fails, the service should be killed and subjected to a restart policy. - * @see https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#when-should-you-use-a-liveness-probe - */ - @Get('/probes/liveness') - @HealthCheck() - async liveness (): Promise { - return await this.health.check(this.probes.map(probe => { - return async () => await probe.liveness() - })) - } - - /** - * Indicates whether the service is ready to respond to requests. - * If the readiness probe fails, the endpoints are not ready to receive and respond to any request. - * @see https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#when-should-you-use-a-readiness-probe - */ - @Get('/probes/readiness') - @HealthCheck() - async readiness (): Promise { - return await this.health.check(this.probes.map(probe => { - return async () => await probe.readiness() - })) - } -} diff --git a/apps/ocean-api/src/modules/ControllerModule.ts b/apps/ocean-api/src/modules/ControllerModule.ts index 9ca68b1f0d..5e064891c4 100644 --- a/apps/ocean-api/src/modules/ControllerModule.ts +++ b/apps/ocean-api/src/modules/ControllerModule.ts @@ -1,5 +1,5 @@ import { CacheModule, Module } from '@nestjs/common' -import { ActuatorController } from '../controllers/ActuatorController' +import { ActuatorController } from '@defichain-apps/libs/actuator' import { APP_FILTER, APP_INTERCEPTOR, APP_PIPE } from '@nestjs/core' import { GlobalValidationPipe } from '../controllers/filters/GlobalValidationPipe' import { ResponseInterceptor } from '../controllers/filters/ResponseInterceptor' diff --git a/apps/ocean-api/src/modules/RootModule.ts b/apps/ocean-api/src/modules/RootModule.ts index fcff8a57d5..e0b4a06c4a 100644 --- a/apps/ocean-api/src/modules/RootModule.ts +++ b/apps/ocean-api/src/modules/RootModule.ts @@ -2,8 +2,7 @@ import * as Joi from 'joi' import { Module } from '@nestjs/common' import { ConfigModule } from '@nestjs/config' import { ControllerModule } from './ControllerModule' -import { BlockchainCppModule } from './BlockchainCppModule' -import { ActuatorModule } from './ActuatorModule' +import { ActuatorModule, BlockchainCppModule } from '@defichain-apps/libs/actuator' import { PlaygroundModule } from './PlaygroundModule' @Module({ diff --git a/apps/ocean-api/tsconfig.build.json b/apps/ocean-api/tsconfig.build.json deleted file mode 100644 index 2e22dec889..0000000000 --- a/apps/ocean-api/tsconfig.build.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "extends": "../../tsconfig.json", - "include": [ - "./src/**/*" - ], - "compilerOptions": { - "outDir": "./dist", - "removeComments": true - } -} diff --git a/apps/package.json b/apps/package.json new file mode 100644 index 0000000000..61bebe7715 --- /dev/null +++ b/apps/package.json @@ -0,0 +1,57 @@ +{ + "private": false, + "name": "@defichain-apps/nest-apps", + "version": "0.0.0", + "description": "A collection of TypeScript + JavaScript tools and libraries for DeFi Blockchain developers to build decentralized finance for Bitcoin", + "repository": "DeFiCh/jellyfish", + "bugs": "https://github.com/DeFiCh/jellyfish/issues", + "license": "MIT", + "scripts": { + "build": "nest build", + "start:legacy-api": "nest start legacy-api", + "start:ocean-api": "nest start ocean-api", + "start:rich-list-api": "nest start rich-list-api", + "clean": "rm -rf dist" + }, + "dependencies": { + "@defichain/jellyfish-api-core": "^0.0.0", + "@defichain/jellyfish-api-jsonrpc": "^0.0.0", + "@defichain/jellyfish-testing": "^0.0.0", + "@defichain/ocean-api-client": "^0.0.0", + "@defichain/playground": "^0.0.0", + "@defichain/whale-api-client": "0.23.2", + "@nestjs/common": "^8.2.6", + "@nestjs/config": "^1.2.0", + "@nestjs/core": "^8.2.6", + "@nestjs/platform-express": "^8.0.0", + "@nestjs/platform-fastify": "^8.3.1", + "@nestjs/schedule": "^1.0.2", + "@nestjs/terminus": "^8.0.4", + "@nestjs/typeorm": "^8.0.3", + "cache-manager": "^3.6.0", + "class-transformer": "^0.5.1", + "class-validator": "^0.13.2", + "joi": "^17.6.0", + "pg": "^8.7.3", + "reflect-metadata": "^0.1.13", + "rxjs": "^7.2.0", + "typeorm": "^0.2.43" + }, + "devDependencies": { + "@nestjs/cli": "^8.0.0", + "@nestjs/schematics": "^8.0.0", + "@nestjs/testing": "^8.0.0", + "@types/cron": "^1.7.3", + "@types/express": "^4.17.13", + "@types/node": "^16.0.0", + "@types/supertest": "^2.0.11", + "@typescript-eslint/eslint-plugin": "^5.0.0", + "@typescript-eslint/parser": "^5.0.0", + "source-map-support": "^0.5.20", + "supertest": "^6.1.3", + "testcontainers": "^8.2.0", + "ts-loader": "^9.2.3", + "ts-node": "^10.0.0", + "tsconfig-paths": "^3.10.1" + } +} diff --git a/apps/rich-list-api/package.json b/apps/rich-list-api/package.json deleted file mode 100644 index 725032295d..0000000000 --- a/apps/rich-list-api/package.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "private": true, - "name": "@defichain-apps/rich-list-api", - "version": "0.0.0", - "description": "DeFiChain Jellyfish Ecosystem", - "repository": "DeFiCh/jellyfish", - "bugs": "https://github.com/DeFiCh/jellyfish/issues", - "license": "MIT", - "main": "dist/index.js", - "scripts": { - "build": "tsc -b tsconfig.build.json" - }, - "dependencies": { - "@defichain/jellyfish-api-core": "0.0.0", - "@nestjs/common": "^8.2.6", - "@nestjs/config": "^1.1.6", - "@nestjs/core": "^8.2.6", - "@nestjs/platform-fastify": "^8.2.6", - "@nestjs/schedule": "^1.0.2", - "@nestjs/terminus": "^8.0.4", - "@nestjs/typeorm": "^8.0.3", - "joi": "^17.6.0", - "pg": "^8.7.3", - "typeorm": "^0.2.43" - }, - "devDependencies": { - "@nestjs/cli": "^8.2.0", - "@nestjs/schematics": "^8.0.6", - "@nestjs/testing": "^8.2.6", - "testcontainers": "^8.2.0" - } -} diff --git a/apps/rich-list-api/src/modules/ActuatorModule.ts b/apps/rich-list-api/src/modules/ActuatorModule.ts deleted file mode 100644 index 087bed5616..0000000000 --- a/apps/rich-list-api/src/modules/ActuatorModule.ts +++ /dev/null @@ -1,72 +0,0 @@ -// TODO: factor out and shared across multiple apps - -import { HealthCheckError, HealthIndicator, HealthIndicatorResult, TerminusModule } from '@nestjs/terminus' -import { Global, Module } from '@nestjs/common' - -/** - * ActuatorProbes is a collection of Probes used by the ActuatorController, - * you can add probes to this collection during application boostrap via onApplicationBootstrap lifecycle hook. - */ -export class ActuatorProbes extends Array { - add (probe: ProbeIndicator): void { - this.push(probe) - } -} - -@Global() -@Module({ - imports: [ - TerminusModule - ], - providers: [ - { - provide: ActuatorProbes, - useValue: new ActuatorProbes() - } - ], - exports: [ - TerminusModule, - ActuatorProbes - ] -}) -export class ActuatorModule { - constructor ( - private readonly probes: ActuatorProbes - ) { - } - - /** - * Cleanup all probes when shutdown as it won't be released automatically. - */ - onApplicationShutdown (): void { - this.probes.splice(0) - } -} - -/** - * ProbeIndicator extends HealthIndicator to provide kubernetes specified probes. - * This probes can be used for other heartbeat or health check systems. - */ -export abstract class ProbeIndicator extends HealthIndicator { - /** - * Check the liveness of this indicator. - * This does not check whether the service is ready to receive connection. - * @see https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#when-should-you-use-a-liveness-probe - */ - abstract liveness (): Promise - - /** - * Check the readiness of this indicator, indicating it is ready to receive connection. - * @see https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#when-should-you-use-a-readiness-probe - */ - abstract readiness (): Promise - - protected withAlive (key: string, details?: any): HealthIndicatorResult { - return this.getStatus(key, true, details) - } - - protected withDead (key: string, message: string, details?: any): HealthIndicatorResult { - const result = this.getStatus(key, false, details) - throw new HealthCheckError(message, result) - } -} diff --git a/apps/rich-list-api/src/modules/BlockchainCppModule.ts b/apps/rich-list-api/src/modules/BlockchainCppModule.ts deleted file mode 100644 index 888016c8b3..0000000000 --- a/apps/rich-list-api/src/modules/BlockchainCppModule.ts +++ /dev/null @@ -1,100 +0,0 @@ -// TODO: factor out and shared across multiple apps - -import { Global, Injectable, Module } from '@nestjs/common' -import { JsonRpcClient } from '@defichain/jellyfish-api-jsonrpc' -import { ConfigService } from '@nestjs/config' -import { ApiClient, blockchain as bc } from '@defichain/jellyfish-api-core' -import { ActuatorProbes, ProbeIndicator } from './ActuatorModule' -import { HealthIndicatorResult } from '@nestjs/terminus' - -/** - * Blockchain CPP DeFiD health check. - */ -@Injectable() -export class BlockchainCppProbeIndicator extends ProbeIndicator { - constructor (private readonly client: ApiClient) { - super() - } - - /** - * Liveness of DeFid. - * - defid is not connected - */ - async liveness (): Promise { - try { - await this.client.net.getConnectionCount() - return this.withAlive('blockchain') - } catch (err) { - return this.withDead('blockchain', 'unable to connect to defid') - } - } - - /** - * Readiness of FullNode. - * - defid is not in initial block download - * - defid is connected to only count<5 peers - */ - async readiness (): Promise { - let info: bc.BlockchainInfo - let peers: number - try { - info = await this.client.blockchain.getBlockchainInfo() - peers = await this.client.net.getConnectionCount() - } catch (err) { - return this.withDead('blockchain', 'unable to connect to defid') - } - - const details = { - initialBlockDownload: info.initialblockdownload, - blocks: info.blocks, - headers: info.headers, - peers: peers - } - - if (peers === 0) { - return this.withDead('blockchain', 'is not connected to any peer', details) - } - - if (info.blocks + 4 <= info.headers) { - return this.withDead('blockchain', 'blocks are more than 4 headers behind', details) - } - - return this.withAlive('blockchain', details) - } -} - -/** - * Ain Module configures and export JsonRpcClient connected to a DeFiD. - * This does not have any side effect it merely configures and export a JsonRpcClient. - */ -@Global() -@Module({ - providers: [ - BlockchainCppProbeIndicator, - { - provide: ApiClient, - useFactory: (configService: ConfigService): ApiClient => { - const url = configService.get('BLOCKCHAIN_CPP_URL') - if (url === undefined) { - throw new Error('BlockchainCppModule config:BLOCKCHAIN_CPP_URL not provided') - } - return new JsonRpcClient(configService.get('BLOCKCHAIN_CPP_URL') as string) - }, - inject: [ConfigService] - } - ], - exports: [ - ApiClient - ] -}) -export class BlockchainCppModule { - constructor ( - private readonly probes: ActuatorProbes, - private readonly ainProbeIndicator: BlockchainCppProbeIndicator - ) { - } - - async onApplicationBootstrap (): Promise { - this.probes.add(this.ainProbeIndicator) - } -} diff --git a/apps/rich-list-api/src/modules/ControllerModule.ts b/apps/rich-list-api/src/modules/ControllerModule.ts index 0d0d37bab6..a839a83413 100644 --- a/apps/rich-list-api/src/modules/ControllerModule.ts +++ b/apps/rich-list-api/src/modules/ControllerModule.ts @@ -1,5 +1,5 @@ import { CacheModule, Module } from '@nestjs/common' -import { ActuatorController } from '../controllers/ActuatorController' +import { ActuatorController } from '@defichain-apps/libs/actuator' import { APP_FILTER, APP_INTERCEPTOR, APP_PIPE } from '@nestjs/core' import { GlobalValidationPipe } from '../controllers/filters/GlobalValidationPipe' import { ResponseInterceptor } from '../controllers/filters/ResponseInterceptor' diff --git a/apps/rich-list-api/src/modules/RootModule.ts b/apps/rich-list-api/src/modules/RootModule.ts index bb1bed6cab..739d8e769a 100644 --- a/apps/rich-list-api/src/modules/RootModule.ts +++ b/apps/rich-list-api/src/modules/RootModule.ts @@ -2,10 +2,9 @@ import * as Joi from 'joi' import { Module } from '@nestjs/common' import { ConfigModule, ConfigService } from '@nestjs/config' import { ControllerModule } from './ControllerModule' -import { BlockchainCppModule } from './BlockchainCppModule' -import { ActuatorModule } from './ActuatorModule' +import { ActuatorModule, BlockchainCppModule } from '@defichain-apps/libs/actuator' import { TypeOrmModule } from '@nestjs/typeorm' -import { QueueItem, QueueModule } from '../../src/modules/QueueModule' +import { QueueItem, QueueModule } from './QueueModule' @Module({ imports: [ diff --git a/apps/rich-list-api/tsconfig.build.json b/apps/rich-list-api/tsconfig.build.json deleted file mode 100644 index 2e22dec889..0000000000 --- a/apps/rich-list-api/tsconfig.build.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "extends": "../../tsconfig.json", - "include": [ - "./src/**/*" - ], - "compilerOptions": { - "outDir": "./dist", - "removeComments": true - } -} diff --git a/apps/tsconfig.build.json b/apps/tsconfig.build.json new file mode 100644 index 0000000000..71cce3ca8a --- /dev/null +++ b/apps/tsconfig.build.json @@ -0,0 +1,3 @@ +{ + "extends": "./tsconfig.json", +} diff --git a/apps/tsconfig.json b/apps/tsconfig.json new file mode 100644 index 0000000000..ed4f860427 --- /dev/null +++ b/apps/tsconfig.json @@ -0,0 +1,21 @@ +{ + "extends": "../tsconfig.json", + "include": [ + "./legacy-api/src", + "./ocean-api/src", + "./rich-list-api/src", + "./libs/*/src" + ], + "compilerOptions": { + "outDir": "./dist", + "baseUrl": "./", + "paths": { + "@defichain-apps/libs/*": [ + "libs/*/src" + ], + "@defichain/*": [ + "../packages/*/src" + ] + } + } +} diff --git a/jest.config.js b/jest.config.js index a363617f9f..e29026439e 100644 --- a/jest.config.js +++ b/jest.config.js @@ -3,7 +3,10 @@ module.exports = { testRegex: '((\\.|/)(e2e|test|spec))\\.[jt]sx?$', testSequencer: require.resolve('./jest.sequencer'), moduleNameMapper: { - '@defichain/(?!whale-api-client)(.*)': '/packages/$1/src' + '@defichain/(?!whale-api-client)(.*)': '/packages/$1/src', + + // apps + '@defichain-apps/libs/(.*)': '/apps/libs/$1/src' }, verbose: true, clearMocks: true, diff --git a/lerna.json b/lerna.json index 1360902894..812581eef4 100644 --- a/lerna.json +++ b/lerna.json @@ -2,7 +2,7 @@ "version": "0.0.0", "packages": [ "./", - "apps/*", + "apps", "packages/*" ] } diff --git a/package-lock.json b/package-lock.json index 7799a4d7fb..a107a76982 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,9 +10,9 @@ "license": "MIT", "workspaces": [ "./", - "./apps/*", - "./packages/*", - "./website" + "./apps", + "./website", + "./packages/*" ], "devDependencies": { "@types/jest": "^27.4.1", @@ -33,9 +33,56 @@ "node": ">=14.x" } }, + "apps": { + "name": "@defichain-apps/nest-apps", + "version": "0.0.0", + "license": "MIT", + "dependencies": { + "@defichain/jellyfish-api-core": "^0.0.0", + "@defichain/jellyfish-api-jsonrpc": "^0.0.0", + "@defichain/jellyfish-testing": "^0.0.0", + "@defichain/ocean-api-client": "^0.0.0", + "@defichain/playground": "^0.0.0", + "@defichain/whale-api-client": "0.23.2", + "@nestjs/common": "^8.2.6", + "@nestjs/config": "^1.2.0", + "@nestjs/core": "^8.2.6", + "@nestjs/platform-express": "^8.0.0", + "@nestjs/platform-fastify": "^8.3.1", + "@nestjs/schedule": "^1.0.2", + "@nestjs/terminus": "^8.0.4", + "@nestjs/typeorm": "^8.0.3", + "cache-manager": "^3.6.0", + "class-transformer": "^0.5.1", + "class-validator": "^0.13.2", + "joi": "^17.6.0", + "pg": "^8.7.3", + "reflect-metadata": "^0.1.13", + "rxjs": "^7.2.0", + "typeorm": "^0.2.43" + }, + "devDependencies": { + "@nestjs/cli": "^8.0.0", + "@nestjs/schematics": "^8.0.0", + "@nestjs/testing": "^8.0.0", + "@types/cron": "^1.7.3", + "@types/express": "^4.17.13", + "@types/node": "^16.0.0", + "@types/supertest": "^2.0.11", + "@typescript-eslint/eslint-plugin": "^5.0.0", + "@typescript-eslint/parser": "^5.0.0", + "source-map-support": "^0.5.20", + "supertest": "^6.1.3", + "testcontainers": "^8.2.0", + "ts-loader": "^9.2.3", + "ts-node": "^10.0.0", + "tsconfig-paths": "^3.10.1" + } + }, "apps/legacy-api": { "name": "@defichain-apps/legacy-api", "version": "0.0.0", + "extraneous": true, "license": "MIT", "dependencies": { "@defichain/whale-api-client": "^0.23.2", @@ -50,7 +97,7 @@ "@nestjs/testing": "^8.3.1" } }, - "apps/legacy-api/node_modules/@nestjs/common": { + "apps/node_modules/@nestjs/common": { "version": "8.3.1", "resolved": "https://registry.npmjs.org/@nestjs/common/-/common-8.3.1.tgz", "integrity": "sha512-3kKeaRXn1c2jf0ihVu6bvQ9Ok+7CkqkU0Ggi5NjWXA2oVRs3vPzr2d5DEvqUqY9JZpT5qGvzRDyKzaPlekxD2A==", @@ -83,7 +130,7 @@ } } }, - "apps/legacy-api/node_modules/@nestjs/config": { + "apps/node_modules/@nestjs/config": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/@nestjs/config/-/config-1.2.0.tgz", "integrity": "sha512-GGZOj2g6EMZ23orsQqeD2Vs5E2ZrmAiB0qCGvERv+5nQmZjY4nKkisG4awQsym1uotmmzgtsd9lOiKqTIFONhA==", @@ -99,7 +146,7 @@ "rxjs": "^6.0.0 || ^7.2.0" } }, - "apps/legacy-api/node_modules/@nestjs/core": { + "apps/node_modules/@nestjs/core": { "version": "8.3.1", "resolved": "https://registry.npmjs.org/@nestjs/core/-/core-8.3.1.tgz", "integrity": "sha512-tdZkhqopd5xSVjogezpP4tPZWntyUNzwOGrVJCQ3RMVH12oxyDMpaMtDnCNvV7cSyoSyHzepMh5nCgLsZ/c88w==", @@ -137,17 +184,15 @@ } } }, - "apps/legacy-api/node_modules/@nestjs/platform-fastify": { + "apps/node_modules/@nestjs/platform-express": { "version": "8.3.1", - "resolved": "https://registry.npmjs.org/@nestjs/platform-fastify/-/platform-fastify-8.3.1.tgz", - "integrity": "sha512-JGqi7H62l1yglrvDG0g+QaJiVkMsozXxLZyPjCEY+kgyMNXCtvhi9ZkPGwkttl1RLnG0XQ7b5vgJyH5DqeIMDA==", + "resolved": "https://registry.npmjs.org/@nestjs/platform-express/-/platform-express-8.3.1.tgz", + "integrity": "sha512-mdmcokcs2Krd4lXYfSHOhx88Zs+MZRpddGtww/jvZuB0rhtnRpTb9SBhLlgVZmFbboEAgxyrKP+rF9Y9Y7F/Qg==", "dependencies": { - "fastify": "3.27.1", - "fastify-cors": "6.0.2", - "fastify-formbody": "5.2.0", - "light-my-request": "4.7.1", - "middie": "6.0.0", - "path-to-regexp": "3.2.0", + "body-parser": "1.19.1", + "cors": "2.8.5", + "express": "4.17.2", + "multer": "1.4.4", "tslib": "2.3.1" }, "funding": { @@ -159,217 +204,7 @@ "@nestjs/core": "^8.0.0" } }, - "apps/legacy-api/node_modules/@nestjs/schematics": { - "version": "8.0.6", - "resolved": "https://registry.npmjs.org/@nestjs/schematics/-/schematics-8.0.6.tgz", - "integrity": "sha512-IgWuplXg3I+2lzQqy5jR45C+EpBiOuPQwh8zWCjlQDYU9/X/2a8B8byJXw3nuguZS/huuuXx3ZhfHJKQYk6uIA==", - "dev": true, - "dependencies": { - "@angular-devkit/core": "13.2.2", - "@angular-devkit/schematics": "13.2.2", - "fs-extra": "10.0.0", - "jsonc-parser": "3.0.0", - "pluralize": "8.0.0" - }, - "peerDependencies": { - "typescript": "^3.4.5 || ^4.3.5" - } - }, - "apps/legacy-api/node_modules/@nestjs/testing": { - "version": "8.3.1", - "resolved": "https://registry.npmjs.org/@nestjs/testing/-/testing-8.3.1.tgz", - "integrity": "sha512-QZ7WwXYpUpfuyLddFwPSkJOWbpTUCtxvY2P9DjxcEsafmxaCeEURBM0DjaKcSwsTvyg9WIew803zViJO5NklPA==", - "dev": true, - "dependencies": { - "optional": "0.1.4", - "tslib": "2.3.1" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/nest" - }, - "peerDependencies": { - "@nestjs/common": "^8.0.0", - "@nestjs/core": "^8.0.0", - "@nestjs/microservices": "^8.0.0", - "@nestjs/platform-express": "^8.0.0" - }, - "peerDependenciesMeta": { - "@nestjs/microservices": { - "optional": true - }, - "@nestjs/platform-express": { - "optional": true - } - } - }, - "apps/legacy-api/node_modules/fs-extra": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.0.tgz", - "integrity": "sha512-C5owb14u9eJwizKGdchcDUQeFtlSHHthBk8pbX9Vc1PFZrLombudjDnNns88aYslCyF6IY5SUw3Roz6xShcEIQ==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "apps/legacy-api/node_modules/rxjs": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.5.4.tgz", - "integrity": "sha512-h5M3Hk78r6wAheJF0a5YahB1yRQKCsZ4MsGdZ5O9ETbVtjPcScGfrMmoOq7EBsCRzd4BDkvDJ7ogP8Sz5tTFiQ==", - "peer": true, - "dependencies": { - "tslib": "^2.1.0" - } - }, - "apps/legacy-api/node_modules/tslib": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", - "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==" - }, - "apps/legacy-api/node_modules/typescript": { - "version": "4.5.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.5.5.tgz", - "integrity": "sha512-TCTIul70LyWe6IJWT8QSYeA54WQe8EjQFU4wY52Fasj5UKx88LNYKCgBEHcOMOrFF1rKGbD8v/xcNWVUq9SymA==", - "dev": true, - "peer": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=4.2.0" - } - }, - "apps/legacy-api/node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "apps/ocean-api": { - "name": "@defichain-apps/ocean-api", - "version": "0.0.0", - "license": "MIT", - "dependencies": { - "@defichain/jellyfish-api-core": "0.0.0", - "@defichain/jellyfish-api-jsonrpc": "0.0.0", - "@defichain/ocean-api-client": "0.0.0", - "@defichain/playground": "0.0.0", - "@nestjs/common": "^8.3.1", - "@nestjs/config": "^1.2.0", - "@nestjs/core": "^8.3.1", - "@nestjs/platform-fastify": "^8.3.1", - "@nestjs/schedule": "^1.0.2", - "@nestjs/terminus": "^8.0.4", - "cache-manager": "^3.6.0", - "class-transformer": "^0.5.1", - "class-validator": "^0.13.2", - "joi": "^17.6.0" - }, - "devDependencies": { - "@defichain/ocean-api-client": "0.0.0", - "@nestjs/cli": "^8.2.1", - "@nestjs/schematics": "^8.0.6", - "@nestjs/testing": "^8.3.1", - "@types/cache-manager": "^3.4.2", - "@types/cron": "^1.7.3" - } - }, - "apps/ocean-api/node_modules/@nestjs/common": { - "version": "8.3.1", - "resolved": "https://registry.npmjs.org/@nestjs/common/-/common-8.3.1.tgz", - "integrity": "sha512-3kKeaRXn1c2jf0ihVu6bvQ9Ok+7CkqkU0Ggi5NjWXA2oVRs3vPzr2d5DEvqUqY9JZpT5qGvzRDyKzaPlekxD2A==", - "dependencies": { - "axios": "0.26.0", - "iterare": "1.2.1", - "tslib": "2.3.1", - "uuid": "8.3.2" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/nest" - }, - "peerDependencies": { - "cache-manager": "*", - "class-transformer": "*", - "class-validator": "*", - "reflect-metadata": "^0.1.12", - "rxjs": "^7.1.0" - }, - "peerDependenciesMeta": { - "cache-manager": { - "optional": true - }, - "class-transformer": { - "optional": true - }, - "class-validator": { - "optional": true - } - } - }, - "apps/ocean-api/node_modules/@nestjs/config": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@nestjs/config/-/config-1.2.0.tgz", - "integrity": "sha512-GGZOj2g6EMZ23orsQqeD2Vs5E2ZrmAiB0qCGvERv+5nQmZjY4nKkisG4awQsym1uotmmzgtsd9lOiKqTIFONhA==", - "dependencies": { - "dotenv": "16.0.0", - "dotenv-expand": "8.0.1", - "lodash": "4.17.21", - "uuid": "8.3.2" - }, - "peerDependencies": { - "@nestjs/common": "^7.0.0 || ^8.0.0", - "reflect-metadata": "^0.1.13", - "rxjs": "^6.0.0 || ^7.2.0" - } - }, - "apps/ocean-api/node_modules/@nestjs/core": { - "version": "8.3.1", - "resolved": "https://registry.npmjs.org/@nestjs/core/-/core-8.3.1.tgz", - "integrity": "sha512-tdZkhqopd5xSVjogezpP4tPZWntyUNzwOGrVJCQ3RMVH12oxyDMpaMtDnCNvV7cSyoSyHzepMh5nCgLsZ/c88w==", - "hasInstallScript": true, - "dependencies": { - "@nuxtjs/opencollective": "0.3.2", - "fast-safe-stringify": "2.1.1", - "iterare": "1.2.1", - "object-hash": "2.2.0", - "path-to-regexp": "3.2.0", - "tslib": "2.3.1", - "uuid": "8.3.2" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/nest" - }, - "peerDependencies": { - "@nestjs/common": "^8.0.0", - "@nestjs/microservices": "^8.0.0", - "@nestjs/platform-express": "^8.0.0", - "@nestjs/websockets": "^8.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 - } - } - }, - "apps/ocean-api/node_modules/@nestjs/platform-fastify": { + "apps/node_modules/@nestjs/platform-fastify": { "version": "8.3.1", "resolved": "https://registry.npmjs.org/@nestjs/platform-fastify/-/platform-fastify-8.3.1.tgz", "integrity": "sha512-JGqi7H62l1yglrvDG0g+QaJiVkMsozXxLZyPjCEY+kgyMNXCtvhi9ZkPGwkttl1RLnG0XQ7b5vgJyH5DqeIMDA==", @@ -391,7 +226,7 @@ "@nestjs/core": "^8.0.0" } }, - "apps/ocean-api/node_modules/@nestjs/schedule": { + "apps/node_modules/@nestjs/schedule": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/@nestjs/schedule/-/schedule-1.0.2.tgz", "integrity": "sha512-GGRehpSm0nCthYNxAGdTzondPrRvurtKnkQCzIb3Tccqq6PhfS2QiHMwDaCel5/4jhYbR/lZR9UsVr6KSJc2Xg==", @@ -405,7 +240,7 @@ "reflect-metadata": "^0.1.12" } }, - "apps/ocean-api/node_modules/@nestjs/schematics": { + "apps/node_modules/@nestjs/schematics": { "version": "8.0.6", "resolved": "https://registry.npmjs.org/@nestjs/schematics/-/schematics-8.0.6.tgz", "integrity": "sha512-IgWuplXg3I+2lzQqy5jR45C+EpBiOuPQwh8zWCjlQDYU9/X/2a8B8byJXw3nuguZS/huuuXx3ZhfHJKQYk6uIA==", @@ -421,7 +256,7 @@ "typescript": "^3.4.5 || ^4.3.5" } }, - "apps/ocean-api/node_modules/@nestjs/terminus": { + "apps/node_modules/@nestjs/terminus": { "version": "8.0.4", "resolved": "https://registry.npmjs.org/@nestjs/terminus/-/terminus-8.0.4.tgz", "integrity": "sha512-KjeY7VLt0Az6pA2wO67nkL1QbE68yBb+FLZ7+aa+C/g/IKoDR668nqSuFzJarBrnFBTGEwDD09BwsgqkmymrbQ==", @@ -435,7 +270,7 @@ "rxjs": "7.x" } }, - "apps/ocean-api/node_modules/@nestjs/testing": { + "apps/node_modules/@nestjs/testing": { "version": "8.3.1", "resolved": "https://registry.npmjs.org/@nestjs/testing/-/testing-8.3.1.tgz", "integrity": "sha512-QZ7WwXYpUpfuyLddFwPSkJOWbpTUCtxvY2P9DjxcEsafmxaCeEURBM0DjaKcSwsTvyg9WIew803zViJO5NklPA==", @@ -463,277 +298,171 @@ } } }, - "apps/ocean-api/node_modules/fs-extra": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.0.tgz", - "integrity": "sha512-C5owb14u9eJwizKGdchcDUQeFtlSHHthBk8pbX9Vc1PFZrLombudjDnNns88aYslCyF6IY5SUw3Roz6xShcEIQ==", - "dev": true, + "apps/node_modules/@nestjs/typeorm": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/@nestjs/typeorm/-/typeorm-8.0.3.tgz", + "integrity": "sha512-tf9rTXP6LeFInkwd+tktQhtLRsKp4RRYImprqT8gcHcJDx+xMP1IygnXELOKwF5vo2/mnhrGtBlRQ/iiS6170g==", "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" + "uuid": "8.3.2" }, - "engines": { - "node": ">=12" - } - }, - "apps/ocean-api/node_modules/rxjs": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.5.4.tgz", - "integrity": "sha512-h5M3Hk78r6wAheJF0a5YahB1yRQKCsZ4MsGdZ5O9ETbVtjPcScGfrMmoOq7EBsCRzd4BDkvDJ7ogP8Sz5tTFiQ==", - "peer": true, - "dependencies": { - "tslib": "^2.1.0" + "peerDependencies": { + "@nestjs/common": "^8.0.0", + "@nestjs/core": "^8.0.0", + "reflect-metadata": "^0.1.13", + "rxjs": "^7.2.0", + "typeorm": "^0.2.34" } }, - "apps/ocean-api/node_modules/tslib": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", - "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==" + "apps/node_modules/@types/node": { + "version": "16.11.25", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.25.tgz", + "integrity": "sha512-NrTwfD7L1RTc2qrHQD4RTTy4p0CO2LatKBEKEds3CaVuhoM/+DJzmWZl5f+ikR8cm8F5mfJxK+9rQq07gRiSjQ==", + "dev": true }, - "apps/ocean-api/node_modules/typescript": { - "version": "4.5.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.5.5.tgz", - "integrity": "sha512-TCTIul70LyWe6IJWT8QSYeA54WQe8EjQFU4wY52Fasj5UKx88LNYKCgBEHcOMOrFF1rKGbD8v/xcNWVUq9SymA==", + "apps/node_modules/@typescript-eslint/eslint-plugin": { + "version": "5.12.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.12.1.tgz", + "integrity": "sha512-M499lqa8rnNK7mUv74lSFFttuUsubIRdAbHcVaP93oFcKkEmHmLqy2n7jM9C8DVmFMYK61ExrZU6dLYhQZmUpw==", "dev": true, - "peer": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=4.2.0" - } - }, - "apps/ocean-api/node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "apps/rich-list-api": { - "name": "@defichain-apps/rich-list-api", - "version": "0.0.0", - "license": "MIT", "dependencies": { - "@defichain/jellyfish-api-core": "0.0.0", - "@nestjs/common": "^8.2.6", - "@nestjs/config": "^1.1.6", - "@nestjs/core": "^8.2.6", - "@nestjs/platform-fastify": "^8.2.6", - "@nestjs/schedule": "^1.0.2", - "@nestjs/terminus": "^8.0.4", - "@nestjs/typeorm": "^8.0.3", - "joi": "^17.6.0", - "pg": "^8.7.3", - "typeorm": "^0.2.43" + "@typescript-eslint/scope-manager": "5.12.1", + "@typescript-eslint/type-utils": "5.12.1", + "@typescript-eslint/utils": "5.12.1", + "debug": "^4.3.2", + "functional-red-black-tree": "^1.0.1", + "ignore": "^5.1.8", + "regexpp": "^3.2.0", + "semver": "^7.3.5", + "tsutils": "^3.21.0" }, - "devDependencies": { - "@nestjs/cli": "^8.2.0", - "@nestjs/schematics": "^8.0.6", - "@nestjs/testing": "^8.2.6", - "testcontainers": "^8.2.0" - } - }, - "apps/rich-list-api/node_modules/@nestjs/common": { - "version": "8.3.1", - "resolved": "https://registry.npmjs.org/@nestjs/common/-/common-8.3.1.tgz", - "integrity": "sha512-3kKeaRXn1c2jf0ihVu6bvQ9Ok+7CkqkU0Ggi5NjWXA2oVRs3vPzr2d5DEvqUqY9JZpT5qGvzRDyKzaPlekxD2A==", - "dependencies": { - "axios": "0.26.0", - "iterare": "1.2.1", - "tslib": "2.3.1", - "uuid": "8.3.2" + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { "type": "opencollective", - "url": "https://opencollective.com/nest" + "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "cache-manager": "*", - "class-transformer": "*", - "class-validator": "*", - "reflect-metadata": "^0.1.12", - "rxjs": "^7.1.0" + "@typescript-eslint/parser": "^5.0.0", + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" }, "peerDependenciesMeta": { - "cache-manager": { - "optional": true - }, - "class-transformer": { - "optional": true - }, - "class-validator": { + "typescript": { "optional": true } } }, - "apps/rich-list-api/node_modules/@nestjs/config": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@nestjs/config/-/config-1.2.0.tgz", - "integrity": "sha512-GGZOj2g6EMZ23orsQqeD2Vs5E2ZrmAiB0qCGvERv+5nQmZjY4nKkisG4awQsym1uotmmzgtsd9lOiKqTIFONhA==", + "apps/node_modules/@typescript-eslint/parser": { + "version": "5.12.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.12.1.tgz", + "integrity": "sha512-6LuVUbe7oSdHxUWoX/m40Ni8gsZMKCi31rlawBHt7VtW15iHzjbpj2WLiToG2758KjtCCiLRKZqfrOdl3cNKuw==", + "dev": true, "dependencies": { - "dotenv": "16.0.0", - "dotenv-expand": "8.0.1", - "lodash": "4.17.21", - "uuid": "8.3.2" + "@typescript-eslint/scope-manager": "5.12.1", + "@typescript-eslint/types": "5.12.1", + "@typescript-eslint/typescript-estree": "5.12.1", + "debug": "^4.3.2" }, - "peerDependencies": { - "@nestjs/common": "^7.0.0 || ^8.0.0", - "reflect-metadata": "^0.1.13", - "rxjs": "^6.0.0 || ^7.2.0" - } - }, - "apps/rich-list-api/node_modules/@nestjs/core": { - "version": "8.3.1", - "resolved": "https://registry.npmjs.org/@nestjs/core/-/core-8.3.1.tgz", - "integrity": "sha512-tdZkhqopd5xSVjogezpP4tPZWntyUNzwOGrVJCQ3RMVH12oxyDMpaMtDnCNvV7cSyoSyHzepMh5nCgLsZ/c88w==", - "hasInstallScript": true, - "dependencies": { - "@nuxtjs/opencollective": "0.3.2", - "fast-safe-stringify": "2.1.1", - "iterare": "1.2.1", - "object-hash": "2.2.0", - "path-to-regexp": "3.2.0", - "tslib": "2.3.1", - "uuid": "8.3.2" + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { "type": "opencollective", - "url": "https://opencollective.com/nest" + "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "@nestjs/common": "^8.0.0", - "@nestjs/microservices": "^8.0.0", - "@nestjs/platform-express": "^8.0.0", - "@nestjs/websockets": "^8.0.0", - "reflect-metadata": "^0.1.12", - "rxjs": "^7.1.0" + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" }, "peerDependenciesMeta": { - "@nestjs/microservices": { - "optional": true - }, - "@nestjs/platform-express": { - "optional": true - }, - "@nestjs/websockets": { + "typescript": { "optional": true } } }, - "apps/rich-list-api/node_modules/@nestjs/platform-fastify": { - "version": "8.3.1", - "resolved": "https://registry.npmjs.org/@nestjs/platform-fastify/-/platform-fastify-8.3.1.tgz", - "integrity": "sha512-JGqi7H62l1yglrvDG0g+QaJiVkMsozXxLZyPjCEY+kgyMNXCtvhi9ZkPGwkttl1RLnG0XQ7b5vgJyH5DqeIMDA==", + "apps/node_modules/@typescript-eslint/scope-manager": { + "version": "5.12.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.12.1.tgz", + "integrity": "sha512-J0Wrh5xS6XNkd4TkOosxdpObzlYfXjAFIm9QxYLCPOcHVv1FyyFCPom66uIh8uBr0sZCrtS+n19tzufhwab8ZQ==", + "dev": true, "dependencies": { - "fastify": "3.27.1", - "fastify-cors": "6.0.2", - "fastify-formbody": "5.2.0", - "light-my-request": "4.7.1", - "middie": "6.0.0", - "path-to-regexp": "3.2.0", - "tslib": "2.3.1" + "@typescript-eslint/types": "5.12.1", + "@typescript-eslint/visitor-keys": "5.12.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { "type": "opencollective", - "url": "https://opencollective.com/nest" - }, - "peerDependencies": { - "@nestjs/common": "^8.0.0", - "@nestjs/core": "^8.0.0" - } - }, - "apps/rich-list-api/node_modules/@nestjs/schedule": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@nestjs/schedule/-/schedule-1.0.2.tgz", - "integrity": "sha512-GGRehpSm0nCthYNxAGdTzondPrRvurtKnkQCzIb3Tccqq6PhfS2QiHMwDaCel5/4jhYbR/lZR9UsVr6KSJc2Xg==", - "dependencies": { - "cron": "1.7.2", - "uuid": "8.3.2" - }, - "peerDependencies": { - "@nestjs/common": "^6.10.11 || ^7.0.0 || ^8.0.0", - "@nestjs/core": "^7.0.0 || ^8.0.0", - "reflect-metadata": "^0.1.12" + "url": "https://opencollective.com/typescript-eslint" } }, - "apps/rich-list-api/node_modules/@nestjs/schematics": { - "version": "8.0.6", - "resolved": "https://registry.npmjs.org/@nestjs/schematics/-/schematics-8.0.6.tgz", - "integrity": "sha512-IgWuplXg3I+2lzQqy5jR45C+EpBiOuPQwh8zWCjlQDYU9/X/2a8B8byJXw3nuguZS/huuuXx3ZhfHJKQYk6uIA==", + "apps/node_modules/@typescript-eslint/types": { + "version": "5.12.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.12.1.tgz", + "integrity": "sha512-hfcbq4qVOHV1YRdhkDldhV9NpmmAu2vp6wuFODL71Y0Ixak+FLeEU4rnPxgmZMnGreGEghlEucs9UZn5KOfHJA==", "dev": true, - "dependencies": { - "@angular-devkit/core": "13.2.2", - "@angular-devkit/schematics": "13.2.2", - "fs-extra": "10.0.0", - "jsonc-parser": "3.0.0", - "pluralize": "8.0.0" - }, - "peerDependencies": { - "typescript": "^3.4.5 || ^4.3.5" - } - }, - "apps/rich-list-api/node_modules/@nestjs/terminus": { - "version": "8.0.4", - "resolved": "https://registry.npmjs.org/@nestjs/terminus/-/terminus-8.0.4.tgz", - "integrity": "sha512-KjeY7VLt0Az6pA2wO67nkL1QbE68yBb+FLZ7+aa+C/g/IKoDR668nqSuFzJarBrnFBTGEwDD09BwsgqkmymrbQ==", - "dependencies": { - "check-disk-space": "3.1.0" + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, - "peerDependencies": { - "@nestjs/common": "8.x", - "@nestjs/core": "8.x", - "reflect-metadata": "0.1.x", - "rxjs": "7.x" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "apps/rich-list-api/node_modules/@nestjs/testing": { - "version": "8.3.1", - "resolved": "https://registry.npmjs.org/@nestjs/testing/-/testing-8.3.1.tgz", - "integrity": "sha512-QZ7WwXYpUpfuyLddFwPSkJOWbpTUCtxvY2P9DjxcEsafmxaCeEURBM0DjaKcSwsTvyg9WIew803zViJO5NklPA==", + "apps/node_modules/@typescript-eslint/typescript-estree": { + "version": "5.12.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.12.1.tgz", + "integrity": "sha512-ahOdkIY9Mgbza7L9sIi205Pe1inCkZWAHE1TV1bpxlU4RZNPtXaDZfiiFWcL9jdxvW1hDYZJXrFm+vlMkXRbBw==", "dev": true, "dependencies": { - "optional": "0.1.4", - "tslib": "2.3.1" + "@typescript-eslint/types": "5.12.1", + "@typescript-eslint/visitor-keys": "5.12.1", + "debug": "^4.3.2", + "globby": "^11.0.4", + "is-glob": "^4.0.3", + "semver": "^7.3.5", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { "type": "opencollective", - "url": "https://opencollective.com/nest" - }, - "peerDependencies": { - "@nestjs/common": "^8.0.0", - "@nestjs/core": "^8.0.0", - "@nestjs/microservices": "^8.0.0", - "@nestjs/platform-express": "^8.0.0" + "url": "https://opencollective.com/typescript-eslint" }, "peerDependenciesMeta": { - "@nestjs/microservices": { - "optional": true - }, - "@nestjs/platform-express": { + "typescript": { "optional": true } } }, - "apps/rich-list-api/node_modules/@nestjs/typeorm": { - "version": "8.0.3", - "resolved": "https://registry.npmjs.org/@nestjs/typeorm/-/typeorm-8.0.3.tgz", - "integrity": "sha512-tf9rTXP6LeFInkwd+tktQhtLRsKp4RRYImprqT8gcHcJDx+xMP1IygnXELOKwF5vo2/mnhrGtBlRQ/iiS6170g==", + "apps/node_modules/@typescript-eslint/visitor-keys": { + "version": "5.12.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.12.1.tgz", + "integrity": "sha512-l1KSLfupuwrXx6wc0AuOmC7Ko5g14ZOQ86wJJqRbdLbXLK02pK/DPiDDqCc7BqqiiA04/eAA6ayL0bgOrAkH7A==", + "dev": true, "dependencies": { - "uuid": "8.3.2" + "@typescript-eslint/types": "5.12.1", + "eslint-visitor-keys": "^3.0.0" }, - "peerDependencies": { - "@nestjs/common": "^8.0.0", - "@nestjs/core": "^8.0.0", - "reflect-metadata": "^0.1.13", - "rxjs": "^7.2.0", - "typeorm": "^0.2.34" + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "apps/rich-list-api/node_modules/fs-extra": { + "apps/node_modules/eslint-visitor-keys": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", + "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "apps/node_modules/fs-extra": { "version": "10.0.0", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.0.tgz", "integrity": "sha512-C5owb14u9eJwizKGdchcDUQeFtlSHHthBk8pbX9Vc1PFZrLombudjDnNns88aYslCyF6IY5SUw3Roz6xShcEIQ==", @@ -747,21 +476,20 @@ "node": ">=12" } }, - "apps/rich-list-api/node_modules/rxjs": { + "apps/node_modules/rxjs": { "version": "7.5.4", "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.5.4.tgz", "integrity": "sha512-h5M3Hk78r6wAheJF0a5YahB1yRQKCsZ4MsGdZ5O9ETbVtjPcScGfrMmoOq7EBsCRzd4BDkvDJ7ogP8Sz5tTFiQ==", - "peer": true, "dependencies": { "tslib": "^2.1.0" } }, - "apps/rich-list-api/node_modules/tslib": { + "apps/node_modules/tslib": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==" }, - "apps/rich-list-api/node_modules/typescript": { + "apps/node_modules/typescript": { "version": "4.5.5", "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.5.5.tgz", "integrity": "sha512-TCTIul70LyWe6IJWT8QSYeA54WQe8EjQFU4wY52Fasj5UKx88LNYKCgBEHcOMOrFF1rKGbD8v/xcNWVUq9SymA==", @@ -775,7 +503,7 @@ "node": ">=4.2.0" } }, - "apps/rich-list-api/node_modules/uuid": { + "apps/node_modules/uuid": { "version": "8.3.2", "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", @@ -783,6 +511,61 @@ "uuid": "dist/bin/uuid" } }, + "apps/ocean-api": { + "name": "@defichain-apps/ocean-api", + "version": "0.0.0", + "extraneous": true, + "license": "MIT", + "dependencies": { + "@defichain/jellyfish-api-core": "0.0.0", + "@defichain/jellyfish-api-jsonrpc": "0.0.0", + "@defichain/ocean-api-client": "0.0.0", + "@defichain/playground": "0.0.0", + "@nestjs/common": "^8.3.1", + "@nestjs/config": "^1.2.0", + "@nestjs/core": "^8.3.1", + "@nestjs/platform-fastify": "^8.3.1", + "@nestjs/schedule": "^1.0.2", + "@nestjs/terminus": "^8.0.4", + "cache-manager": "^3.6.0", + "class-transformer": "^0.5.1", + "class-validator": "^0.13.2", + "joi": "^17.6.0" + }, + "devDependencies": { + "@defichain/ocean-api-client": "0.0.0", + "@nestjs/cli": "^8.2.1", + "@nestjs/schematics": "^8.0.6", + "@nestjs/testing": "^8.3.1", + "@types/cache-manager": "^3.4.2", + "@types/cron": "^1.7.3" + } + }, + "apps/rich-list-api": { + "name": "@defichain-apps/rich-list-api", + "version": "0.0.0", + "extraneous": true, + "license": "MIT", + "dependencies": { + "@defichain/jellyfish-api-core": "0.0.0", + "@nestjs/common": "^8.2.6", + "@nestjs/config": "^1.1.6", + "@nestjs/core": "^8.2.6", + "@nestjs/platform-fastify": "^8.2.6", + "@nestjs/schedule": "^1.0.2", + "@nestjs/terminus": "^8.0.4", + "@nestjs/typeorm": "^8.0.3", + "joi": "^17.6.0", + "pg": "^8.7.3", + "typeorm": "^0.2.43" + }, + "devDependencies": { + "@nestjs/cli": "^8.2.0", + "@nestjs/schematics": "^8.0.6", + "@nestjs/testing": "^8.2.6", + "testcontainers": "^8.2.0" + } + }, "apps/website": { "name": "@defichain-apps/website", "version": "0.0.0", @@ -3027,16 +2810,29 @@ "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", "dev": true }, - "node_modules/@defichain-apps/legacy-api": { - "resolved": "apps/legacy-api", - "link": true + "node_modules/@cspotcode/source-map-consumer": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-consumer/-/source-map-consumer-0.8.0.tgz", + "integrity": "sha512-41qniHzTU8yAGbCp04ohlmSrZf8bkf/iJsl3V0dRGsQN/5GFfx+LbCSsCpp2gqrqjTVg/K6O8ycoV35JIwAzAg==", + "dev": true, + "engines": { + "node": ">= 12" + } }, - "node_modules/@defichain-apps/ocean-api": { - "resolved": "apps/ocean-api", - "link": true + "node_modules/@cspotcode/source-map-support": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.7.0.tgz", + "integrity": "sha512-X4xqRHqN8ACt2aHVe51OxeA2HjbcL4MqFqXkrmQszJ1NOUuUu5u6Vqx/0lZSVNku7velL5FC/s5uEAj1lsBMhA==", + "dev": true, + "dependencies": { + "@cspotcode/source-map-consumer": "0.8.0" + }, + "engines": { + "node": ">=12" + } }, - "node_modules/@defichain-apps/rich-list-api": { - "resolved": "apps/rich-list-api", + "node_modules/@defichain-apps/nest-apps": { + "resolved": "apps", "link": true }, "node_modules/@defichain/jellyfish-address": { @@ -6682,6 +6478,30 @@ "integrity": "sha512-I6sziQAzLrrqj9r6S26c7aOAjfGVXIE7gWdNONPwnpDcHiMRMQut1s1YCi/APem3dOy23tAb2rvHfNtGCaWuUQ==", "dev": true }, + "node_modules/@tsconfig/node10": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.8.tgz", + "integrity": "sha512-6XFfSQmMgq0CFLY1MslA/CPUfhIL919M1rMsa5lP2P097N2Wd1sSX0tx1u4olM16fLNhtHZpRhedZJphNJqmZg==", + "dev": true + }, + "node_modules/@tsconfig/node12": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.9.tgz", + "integrity": "sha512-/yBMcem+fbvhSREH+s14YJi18sp7J9jpuhYByADT2rypfajMZZN4WQ6zBGgBKp53NKmqI36wFYDb3yaMPurITw==", + "dev": true + }, + "node_modules/@tsconfig/node14": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.1.tgz", + "integrity": "sha512-509r2+yARFfHHE7T6Puu2jjkoycftovhXRqW328PDXTVGKihlb1P8Z9mMZH04ebyajfRY7dedfGynlrFHJUQCg==", + "dev": true + }, + "node_modules/@tsconfig/node16": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.2.tgz", + "integrity": "sha512-eZxlbI8GZscaGS7kkc/trHTT5xgrjH3/1n2JDwusC9iahPKWMRvRjJSAN5mCXviuTGQ/lHnhvv8Q1YTpnfz9gA==", + "dev": true + }, "node_modules/@types/archiver": { "version": "5.3.1", "resolved": "https://registry.npmjs.org/@types/archiver/-/archiver-5.3.1.tgz", @@ -6768,12 +6588,6 @@ "base-x": "^3.0.6" } }, - "node_modules/@types/cache-manager": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/@types/cache-manager/-/cache-manager-3.4.2.tgz", - "integrity": "sha512-1IwA74t5ID4KWo0Kndal16MhiPSZgMe1fGc+MLT6j5r+Ab7jku36PFTl4PP6MiWw0BJscM9QpZEo00qixNQoRg==", - "dev": true - }, "node_modules/@types/connect": { "version": "3.4.35", "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", @@ -6791,6 +6605,12 @@ "@types/node": "*" } }, + "node_modules/@types/cookiejar": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@types/cookiejar/-/cookiejar-2.1.2.tgz", + "integrity": "sha512-t73xJJrvdTjXrn4jLS9VSGRbz0nUY3cl2DMGDU48lKl+HR9dbbjW2A9r3g40VA++mQpy6uuHg33gy7du2BKpog==", + "dev": true + }, "node_modules/@types/create-hash": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/@types/create-hash/-/create-hash-1.2.2.tgz", @@ -7174,6 +6994,25 @@ "integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==", "dev": true }, + "node_modules/@types/superagent": { + "version": "4.1.15", + "resolved": "https://registry.npmjs.org/@types/superagent/-/superagent-4.1.15.tgz", + "integrity": "sha512-mu/N4uvfDN2zVQQ5AYJI/g4qxn2bHB6521t1UuH09ShNWjebTqN0ZFuYK9uYjcgmI0dTQEs+Owi1EO6U0OkOZQ==", + "dev": true, + "dependencies": { + "@types/cookiejar": "*", + "@types/node": "*" + } + }, + "node_modules/@types/supertest": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@types/supertest/-/supertest-2.0.11.tgz", + "integrity": "sha512-uci4Esokrw9qGb9bvhhSVEjd6rkny/dk5PK/Qz4yxKiyppEI+dOPlNrZBahE3i+PoKFYyDxChVXZ/ysS/nrm1Q==", + "dev": true, + "dependencies": { + "@types/superagent": "*" + } + }, "node_modules/@types/tiny-secp256k1": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/@types/tiny-secp256k1/-/tiny-secp256k1-1.0.0.tgz", @@ -7258,22 +7097,6 @@ } } }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/tsutils": { - "version": "3.21.0", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", - "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", - "dev": true, - "peer": true, - "dependencies": { - "tslib": "^1.8.1" - }, - "engines": { - "node": ">= 6" - }, - "peerDependencies": { - "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" - } - }, "node_modules/@typescript-eslint/experimental-utils": { "version": "4.33.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.33.0.tgz", @@ -7362,6 +7185,32 @@ "url": "https://opencollective.com/typescript-eslint" } }, + "node_modules/@typescript-eslint/type-utils": { + "version": "5.12.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.12.1.tgz", + "integrity": "sha512-Gh8feEhsNLeCz6aYqynh61Vsdy+tiNNkQtc+bN3IvQvRqHkXGUhYkUi+ePKzP0Mb42se7FDb+y2SypTbpbR/Sg==", + "dev": true, + "dependencies": { + "@typescript-eslint/utils": "5.12.1", + "debug": "^4.3.2", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, "node_modules/@typescript-eslint/types": { "version": "4.33.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.33.0.tgz", @@ -7402,19 +7251,129 @@ } } }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/tsutils": { - "version": "3.21.0", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", - "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", + "node_modules/@typescript-eslint/utils": { + "version": "5.12.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.12.1.tgz", + "integrity": "sha512-Qq9FIuU0EVEsi8fS6pG+uurbhNTtoYr4fq8tKjBupsK5Bgbk2I32UGm0Sh+WOyjOPgo/5URbxxSNV6HYsxV4MQ==", "dev": true, "dependencies": { - "tslib": "^1.8.1" + "@types/json-schema": "^7.0.9", + "@typescript-eslint/scope-manager": "5.12.1", + "@typescript-eslint/types": "5.12.1", + "@typescript-eslint/typescript-estree": "5.12.1", + "eslint-scope": "^5.1.1", + "eslint-utils": "^3.0.0" }, "engines": { - "node": ">= 6" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/scope-manager": { + "version": "5.12.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.12.1.tgz", + "integrity": "sha512-J0Wrh5xS6XNkd4TkOosxdpObzlYfXjAFIm9QxYLCPOcHVv1FyyFCPom66uIh8uBr0sZCrtS+n19tzufhwab8ZQ==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.12.1", + "@typescript-eslint/visitor-keys": "5.12.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/types": { + "version": "5.12.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.12.1.tgz", + "integrity": "sha512-hfcbq4qVOHV1YRdhkDldhV9NpmmAu2vp6wuFODL71Y0Ixak+FLeEU4rnPxgmZMnGreGEghlEucs9UZn5KOfHJA==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/typescript-estree": { + "version": "5.12.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.12.1.tgz", + "integrity": "sha512-ahOdkIY9Mgbza7L9sIi205Pe1inCkZWAHE1TV1bpxlU4RZNPtXaDZfiiFWcL9jdxvW1hDYZJXrFm+vlMkXRbBw==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.12.1", + "@typescript-eslint/visitor-keys": "5.12.1", + "debug": "^4.3.2", + "globby": "^11.0.4", + "is-glob": "^4.0.3", + "semver": "^7.3.5", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/visitor-keys": { + "version": "5.12.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.12.1.tgz", + "integrity": "sha512-l1KSLfupuwrXx6wc0AuOmC7Ko5g14ZOQ86wJJqRbdLbXLK02pK/DPiDDqCc7BqqiiA04/eAA6ayL0bgOrAkH7A==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.12.1", + "eslint-visitor-keys": "^3.0.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/visitor-keys/node_modules/eslint-visitor-keys": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", + "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/@typescript-eslint/utils/node_modules/eslint-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", + "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^2.0.0" + }, + "engines": { + "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=5" } }, "node_modules/@typescript-eslint/visitor-keys": { @@ -7898,6 +7857,11 @@ "node": ">= 6.0.0" } }, + "node_modules/append-field": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/append-field/-/append-field-1.0.0.tgz", + "integrity": "sha1-HjRA6RXwsSA9I3SOeO3XubW0PlY=" + }, "node_modules/aproba": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", @@ -9041,6 +9005,39 @@ "integrity": "sha1-y5T662HIaWRR2zZTThQi+U8K7og=", "dev": true }, + "node_modules/busboy": { + "version": "0.2.14", + "resolved": "https://registry.npmjs.org/busboy/-/busboy-0.2.14.tgz", + "integrity": "sha1-bCpiLvz0fFe7vh4qnDetNseSVFM=", + "dependencies": { + "dicer": "0.2.5", + "readable-stream": "1.1.x" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/busboy/node_modules/isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" + }, + "node_modules/busboy/node_modules/readable-stream": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "node_modules/busboy/node_modules/string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" + }, "node_modules/byline": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/byline/-/byline-5.0.0.tgz", @@ -9817,6 +9814,12 @@ "node": ">=8" } }, + "node_modules/component-emitter": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", + "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", + "dev": true + }, "node_modules/compress-commons": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-4.1.1.tgz", @@ -10120,6 +10123,12 @@ "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" }, + "node_modules/cookiejar": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.3.tgz", + "integrity": "sha512-JxbCBUdrfr6AQjOXrxoTvAMJO4HBTUIlBzslcJPAz+/KT8yk53fXun51u+RenNYvad/+Vc2DIz5o9UxlCDymFQ==", + "dev": true + }, "node_modules/copy-text-to-clipboard": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/copy-text-to-clipboard/-/copy-text-to-clipboard-3.0.1.tgz", @@ -10228,6 +10237,18 @@ "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" }, + "node_modules/cors": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", + "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", + "dependencies": { + "object-assign": "^4", + "vary": "^1" + }, + "engines": { + "node": ">= 0.10" + } + }, "node_modules/cosmiconfig": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.1.tgz", @@ -10310,6 +10331,12 @@ "sha.js": "^2.4.8" } }, + "node_modules/create-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", + "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", + "dev": true + }, "node_modules/cron": { "version": "1.7.2", "resolved": "https://registry.npmjs.org/cron/-/cron-1.7.2.tgz", @@ -11041,6 +11068,48 @@ "wrappy": "1" } }, + "node_modules/dicer": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/dicer/-/dicer-0.2.5.tgz", + "integrity": "sha1-WZbAhrszIYyBLAkL3cCc0S+stw8=", + "dependencies": { + "readable-stream": "1.1.x", + "streamsearch": "0.1.2" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/dicer/node_modules/isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" + }, + "node_modules/dicer/node_modules/readable-stream": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "node_modules/dicer/node_modules/string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" + }, + "node_modules/diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "dev": true, + "engines": { + "node": ">=0.3.1" + } + }, "node_modules/diff-sequences": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.5.1.tgz", @@ -12814,6 +12883,33 @@ "node": ">= 6" } }, + "node_modules/formidable": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/formidable/-/formidable-2.0.1.tgz", + "integrity": "sha512-rjTMNbp2BpfQShhFbR3Ruk3qk2y9jKpvMW78nJgx8QKtxjDVrwbZG+wvDOmVbifHyOUOQJXxqEy6r0faRrPzTQ==", + "dev": true, + "dependencies": { + "dezalgo": "1.0.3", + "hexoid": "1.0.0", + "once": "1.4.0", + "qs": "6.9.3" + }, + "funding": { + "url": "https://ko-fi.com/tunnckoCore/commissions" + } + }, + "node_modules/formidable/node_modules/qs": { + "version": "6.9.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.3.tgz", + "integrity": "sha512-EbZYNarm6138UKKq46tdx08Yo/q9ZhFoAXAI1meAFd2GtbRDhbZY2WQSICskT0c5q99aFzLG1D4nvTk9tqfXIw==", + "dev": true, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/forwarded": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", @@ -13686,6 +13782,15 @@ "he": "bin/he" } }, + "node_modules/hexoid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/hexoid/-/hexoid-1.0.0.tgz", + "integrity": "sha512-QFLV0taWQOZtvIRIAdBChesmogZrtuXvVWsFHZTk2SU+anspqZ2vMnoLg7IE1+Uk16N19APic1BuF8bC8c2m5g==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/highlight.js": { "version": "10.7.3", "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-10.7.3.tgz", @@ -17346,6 +17451,71 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, + "node_modules/multer": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/multer/-/multer-1.4.4.tgz", + "integrity": "sha512-2wY2+xD4udX612aMqMcB8Ws2Voq6NIUPEtD1be6m411T4uDH/VtL9i//xvcyFlTVfRdaBsk7hV5tgrGQqhuBiw==", + "dependencies": { + "append-field": "^1.0.0", + "busboy": "^0.2.11", + "concat-stream": "^1.5.2", + "mkdirp": "^0.5.4", + "object-assign": "^4.1.1", + "on-finished": "^2.3.0", + "type-is": "^1.6.4", + "xtend": "^4.0.0" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/multer/node_modules/concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "engines": [ + "node >= 0.8" + ], + "dependencies": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "node_modules/multer/node_modules/mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "dependencies": { + "minimist": "^1.2.5" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/multer/node_modules/readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/multer/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, "node_modules/multicast-dns": { "version": "6.2.3", "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-6.2.3.tgz", @@ -22579,6 +22749,14 @@ "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.0.1.tgz", "integrity": "sha512-mC1Ps9l77/97qeOZc+HrOL7TIaOboHqMZ24dGVQrlxFcpPpfCHpH+qfUT7Dz+6mlG8+JPA1KfBQo19iC/+Ngcw==" }, + "node_modules/streamsearch": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-0.1.2.tgz", + "integrity": "sha1-gIudDlb8Jz2Am6VzOOkpkZoanxo=", + "engines": { + "node": ">=0.8.0" + } + }, "node_modules/strict-uri-encode": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz", @@ -22829,6 +23007,67 @@ "postcss": "^8.2.15" } }, + "node_modules/superagent": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/superagent/-/superagent-7.1.1.tgz", + "integrity": "sha512-CQ2weSS6M+doIwwYFoMatklhRbx6sVNdB99OEJ5czcP3cng76Ljqus694knFWgOj3RkrtxZqIgpe6vhe0J7QWQ==", + "dev": true, + "dependencies": { + "component-emitter": "^1.3.0", + "cookiejar": "^2.1.3", + "debug": "^4.3.3", + "fast-safe-stringify": "^2.1.1", + "form-data": "^4.0.0", + "formidable": "^2.0.1", + "methods": "^1.1.2", + "mime": "^2.5.0", + "qs": "^6.10.1", + "readable-stream": "^3.6.0", + "semver": "^7.3.5" + }, + "engines": { + "node": ">=6.4.0 <13 || >=14" + } + }, + "node_modules/superagent/node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dev": true, + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/superagent/node_modules/mime": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", + "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", + "dev": true, + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/supertest": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/supertest/-/supertest-6.2.2.tgz", + "integrity": "sha512-wCw9WhAtKJsBvh07RaS+/By91NNE0Wh0DN19/hWPlBOU8tAfOtbZoVSV4xXeoKoxgPx0rx2y+y+8660XtE7jzg==", + "dev": true, + "dependencies": { + "methods": "^1.1.2", + "superagent": "^7.1.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, "node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -23601,6 +23840,94 @@ } } }, + "node_modules/ts-loader": { + "version": "9.2.6", + "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.2.6.tgz", + "integrity": "sha512-QMTC4UFzHmu9wU2VHZEmWWE9cUajjfcdcws+Gh7FhiO+Dy0RnR1bNz0YCHqhI0yRowCE9arVnNxYHqELOy9Hjw==", + "dev": true, + "dependencies": { + "chalk": "^4.1.0", + "enhanced-resolve": "^5.0.0", + "micromatch": "^4.0.0", + "semver": "^7.3.4" + }, + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "typescript": "*", + "webpack": "^5.0.0" + } + }, + "node_modules/ts-node": { + "version": "10.5.0", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.5.0.tgz", + "integrity": "sha512-6kEJKwVxAJ35W4akuiysfKwKmjkbYxwQMTBaAxo9KKAx/Yd26mPUyhGz3ji+EsJoAgrLqVsYHNuuYwQe22lbtw==", + "dev": true, + "dependencies": { + "@cspotcode/source-map-support": "0.7.0", + "@tsconfig/node10": "^1.0.7", + "@tsconfig/node12": "^1.0.7", + "@tsconfig/node14": "^1.0.0", + "@tsconfig/node16": "^1.0.2", + "acorn": "^8.4.1", + "acorn-walk": "^8.1.1", + "arg": "^4.1.0", + "create-require": "^1.1.0", + "diff": "^4.0.1", + "make-error": "^1.1.1", + "v8-compile-cache-lib": "^3.0.0", + "yn": "3.1.1" + }, + "bin": { + "ts-node": "dist/bin.js", + "ts-node-cwd": "dist/bin-cwd.js", + "ts-node-script": "dist/bin-script.js", + "ts-node-transpile-only": "dist/bin-transpile.js", + "ts-script": "dist/bin-script-deprecated.js" + }, + "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 + } + } + }, + "node_modules/ts-node/node_modules/acorn": { + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.0.tgz", + "integrity": "sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/ts-node/node_modules/acorn-walk": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", + "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/ts-node/node_modules/arg": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", + "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", + "dev": true + }, "node_modules/tsconfig-paths": { "version": "3.12.0", "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.12.0.tgz", @@ -23651,6 +23978,21 @@ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", "dev": true }, + "node_modules/tsutils": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", + "dev": true, + "dependencies": { + "tslib": "^1.8.1" + }, + "engines": { + "node": ">= 6" + }, + "peerDependencies": { + "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" + } + }, "node_modules/tunnel-agent": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", @@ -23715,8 +24057,7 @@ "node_modules/typedarray": { "version": "0.0.6", "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", - "dev": true + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=" }, "node_modules/typedarray-to-buffer": { "version": "3.1.5", @@ -24413,6 +24754,12 @@ "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", "devOptional": true }, + "node_modules/v8-compile-cache-lib": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.0.tgz", + "integrity": "sha512-mpSYqfsFvASnSn5qMiwrr4VKfumbPyONLCOPmsR3A6pTY/r0+tSaVbgPWSAIuzbk3lCTa+FForeTiO+wBQGkjA==", + "dev": true + }, "node_modules/v8-to-istanbul": { "version": "8.1.1", "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-8.1.1.tgz", @@ -25576,6 +25923,15 @@ "node": ">=10" } }, + "node_modules/yn": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", + "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", + "dev": true, + "engines": { + "node": ">=6" + } + }, "node_modules/yocto-queue": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", @@ -27519,153 +27875,61 @@ "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", "dev": true }, - "@defichain-apps/legacy-api": { - "version": "file:apps/legacy-api", + "@cspotcode/source-map-consumer": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-consumer/-/source-map-consumer-0.8.0.tgz", + "integrity": "sha512-41qniHzTU8yAGbCp04ohlmSrZf8bkf/iJsl3V0dRGsQN/5GFfx+LbCSsCpp2gqrqjTVg/K6O8ycoV35JIwAzAg==", + "dev": true + }, + "@cspotcode/source-map-support": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.7.0.tgz", + "integrity": "sha512-X4xqRHqN8ACt2aHVe51OxeA2HjbcL4MqFqXkrmQszJ1NOUuUu5u6Vqx/0lZSVNku7velL5FC/s5uEAj1lsBMhA==", + "dev": true, "requires": { - "@defichain/whale-api-client": "^0.23.2", - "@nestjs/cli": "^8.2.1", - "@nestjs/common": "^8.3.1", - "@nestjs/config": "^1.2.0", - "@nestjs/core": "^8.3.1", - "@nestjs/platform-fastify": "^8.3.1", - "@nestjs/schematics": "^8.0.6", - "@nestjs/testing": "^8.3.1" - }, - "dependencies": { - "@nestjs/common": { - "version": "8.3.1", - "resolved": "https://registry.npmjs.org/@nestjs/common/-/common-8.3.1.tgz", - "integrity": "sha512-3kKeaRXn1c2jf0ihVu6bvQ9Ok+7CkqkU0Ggi5NjWXA2oVRs3vPzr2d5DEvqUqY9JZpT5qGvzRDyKzaPlekxD2A==", - "requires": { - "axios": "0.26.0", - "iterare": "1.2.1", - "tslib": "2.3.1", - "uuid": "8.3.2" - } - }, - "@nestjs/config": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@nestjs/config/-/config-1.2.0.tgz", - "integrity": "sha512-GGZOj2g6EMZ23orsQqeD2Vs5E2ZrmAiB0qCGvERv+5nQmZjY4nKkisG4awQsym1uotmmzgtsd9lOiKqTIFONhA==", - "requires": { - "dotenv": "16.0.0", - "dotenv-expand": "8.0.1", - "lodash": "4.17.21", - "uuid": "8.3.2" - } - }, - "@nestjs/core": { - "version": "8.3.1", - "resolved": "https://registry.npmjs.org/@nestjs/core/-/core-8.3.1.tgz", - "integrity": "sha512-tdZkhqopd5xSVjogezpP4tPZWntyUNzwOGrVJCQ3RMVH12oxyDMpaMtDnCNvV7cSyoSyHzepMh5nCgLsZ/c88w==", - "requires": { - "@nuxtjs/opencollective": "0.3.2", - "fast-safe-stringify": "2.1.1", - "iterare": "1.2.1", - "object-hash": "2.2.0", - "path-to-regexp": "3.2.0", - "tslib": "2.3.1", - "uuid": "8.3.2" - } - }, - "@nestjs/platform-fastify": { - "version": "8.3.1", - "resolved": "https://registry.npmjs.org/@nestjs/platform-fastify/-/platform-fastify-8.3.1.tgz", - "integrity": "sha512-JGqi7H62l1yglrvDG0g+QaJiVkMsozXxLZyPjCEY+kgyMNXCtvhi9ZkPGwkttl1RLnG0XQ7b5vgJyH5DqeIMDA==", - "requires": { - "fastify": "3.27.1", - "fastify-cors": "6.0.2", - "fastify-formbody": "5.2.0", - "light-my-request": "4.7.1", - "middie": "6.0.0", - "path-to-regexp": "3.2.0", - "tslib": "2.3.1" - } - }, - "@nestjs/schematics": { - "version": "8.0.6", - "resolved": "https://registry.npmjs.org/@nestjs/schematics/-/schematics-8.0.6.tgz", - "integrity": "sha512-IgWuplXg3I+2lzQqy5jR45C+EpBiOuPQwh8zWCjlQDYU9/X/2a8B8byJXw3nuguZS/huuuXx3ZhfHJKQYk6uIA==", - "dev": true, - "requires": { - "@angular-devkit/core": "13.2.2", - "@angular-devkit/schematics": "13.2.2", - "fs-extra": "10.0.0", - "jsonc-parser": "3.0.0", - "pluralize": "8.0.0" - } - }, - "@nestjs/testing": { - "version": "8.3.1", - "resolved": "https://registry.npmjs.org/@nestjs/testing/-/testing-8.3.1.tgz", - "integrity": "sha512-QZ7WwXYpUpfuyLddFwPSkJOWbpTUCtxvY2P9DjxcEsafmxaCeEURBM0DjaKcSwsTvyg9WIew803zViJO5NklPA==", - "dev": true, - "requires": { - "optional": "0.1.4", - "tslib": "2.3.1" - } - }, - "fs-extra": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.0.tgz", - "integrity": "sha512-C5owb14u9eJwizKGdchcDUQeFtlSHHthBk8pbX9Vc1PFZrLombudjDnNns88aYslCyF6IY5SUw3Roz6xShcEIQ==", - "dev": true, - "requires": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - } - }, - "rxjs": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.5.4.tgz", - "integrity": "sha512-h5M3Hk78r6wAheJF0a5YahB1yRQKCsZ4MsGdZ5O9ETbVtjPcScGfrMmoOq7EBsCRzd4BDkvDJ7ogP8Sz5tTFiQ==", - "peer": true, - "requires": { - "tslib": "^2.1.0" - } - }, - "tslib": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", - "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==" - }, - "typescript": { - "version": "4.5.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.5.5.tgz", - "integrity": "sha512-TCTIul70LyWe6IJWT8QSYeA54WQe8EjQFU4wY52Fasj5UKx88LNYKCgBEHcOMOrFF1rKGbD8v/xcNWVUq9SymA==", - "dev": true, - "peer": true - }, - "uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==" - } + "@cspotcode/source-map-consumer": "0.8.0" } }, - "@defichain-apps/ocean-api": { - "version": "file:apps/ocean-api", + "@defichain-apps/nest-apps": { + "version": "file:apps", "requires": { - "@defichain/jellyfish-api-core": "0.0.0", - "@defichain/jellyfish-api-jsonrpc": "0.0.0", - "@defichain/ocean-api-client": "0.0.0", - "@defichain/playground": "0.0.0", - "@nestjs/cli": "^8.2.1", - "@nestjs/common": "^8.3.1", + "@defichain/jellyfish-api-core": "^0.0.0", + "@defichain/jellyfish-api-jsonrpc": "^0.0.0", + "@defichain/jellyfish-testing": "^0.0.0", + "@defichain/ocean-api-client": "^0.0.0", + "@defichain/playground": "^0.0.0", + "@defichain/whale-api-client": "0.23.2", + "@nestjs/cli": "^8.0.0", + "@nestjs/common": "^8.2.6", "@nestjs/config": "^1.2.0", - "@nestjs/core": "^8.3.1", + "@nestjs/core": "^8.2.6", + "@nestjs/platform-express": "^8.0.0", "@nestjs/platform-fastify": "^8.3.1", "@nestjs/schedule": "^1.0.2", - "@nestjs/schematics": "^8.0.6", + "@nestjs/schematics": "^8.0.0", "@nestjs/terminus": "^8.0.4", - "@nestjs/testing": "^8.3.1", - "@types/cache-manager": "^3.4.2", + "@nestjs/testing": "^8.0.0", + "@nestjs/typeorm": "^8.0.3", "@types/cron": "^1.7.3", + "@types/express": "^4.17.13", + "@types/node": "^16.0.0", + "@types/supertest": "^2.0.11", + "@typescript-eslint/eslint-plugin": "^5.0.0", + "@typescript-eslint/parser": "^5.0.0", "cache-manager": "^3.6.0", "class-transformer": "^0.5.1", "class-validator": "^0.13.2", - "joi": "^17.6.0" + "joi": "^17.6.0", + "pg": "^8.7.3", + "reflect-metadata": "^0.1.13", + "rxjs": "^7.2.0", + "source-map-support": "^0.5.20", + "supertest": "^6.1.3", + "testcontainers": "^8.2.0", + "ts-loader": "^9.2.3", + "ts-node": "^10.0.0", + "tsconfig-paths": "^3.10.1", + "typeorm": "^0.2.43" }, "dependencies": { "@nestjs/common": { @@ -27704,155 +27968,18 @@ "uuid": "8.3.2" } }, - "@nestjs/platform-fastify": { - "version": "8.3.1", - "resolved": "https://registry.npmjs.org/@nestjs/platform-fastify/-/platform-fastify-8.3.1.tgz", - "integrity": "sha512-JGqi7H62l1yglrvDG0g+QaJiVkMsozXxLZyPjCEY+kgyMNXCtvhi9ZkPGwkttl1RLnG0XQ7b5vgJyH5DqeIMDA==", - "requires": { - "fastify": "3.27.1", - "fastify-cors": "6.0.2", - "fastify-formbody": "5.2.0", - "light-my-request": "4.7.1", - "middie": "6.0.0", - "path-to-regexp": "3.2.0", - "tslib": "2.3.1" - } - }, - "@nestjs/schedule": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@nestjs/schedule/-/schedule-1.0.2.tgz", - "integrity": "sha512-GGRehpSm0nCthYNxAGdTzondPrRvurtKnkQCzIb3Tccqq6PhfS2QiHMwDaCel5/4jhYbR/lZR9UsVr6KSJc2Xg==", - "requires": { - "cron": "1.7.2", - "uuid": "8.3.2" - } - }, - "@nestjs/schematics": { - "version": "8.0.6", - "resolved": "https://registry.npmjs.org/@nestjs/schematics/-/schematics-8.0.6.tgz", - "integrity": "sha512-IgWuplXg3I+2lzQqy5jR45C+EpBiOuPQwh8zWCjlQDYU9/X/2a8B8byJXw3nuguZS/huuuXx3ZhfHJKQYk6uIA==", - "dev": true, - "requires": { - "@angular-devkit/core": "13.2.2", - "@angular-devkit/schematics": "13.2.2", - "fs-extra": "10.0.0", - "jsonc-parser": "3.0.0", - "pluralize": "8.0.0" - } - }, - "@nestjs/terminus": { - "version": "8.0.4", - "resolved": "https://registry.npmjs.org/@nestjs/terminus/-/terminus-8.0.4.tgz", - "integrity": "sha512-KjeY7VLt0Az6pA2wO67nkL1QbE68yBb+FLZ7+aa+C/g/IKoDR668nqSuFzJarBrnFBTGEwDD09BwsgqkmymrbQ==", - "requires": { - "check-disk-space": "3.1.0" - } - }, - "@nestjs/testing": { + "@nestjs/platform-express": { "version": "8.3.1", - "resolved": "https://registry.npmjs.org/@nestjs/testing/-/testing-8.3.1.tgz", - "integrity": "sha512-QZ7WwXYpUpfuyLddFwPSkJOWbpTUCtxvY2P9DjxcEsafmxaCeEURBM0DjaKcSwsTvyg9WIew803zViJO5NklPA==", - "dev": true, + "resolved": "https://registry.npmjs.org/@nestjs/platform-express/-/platform-express-8.3.1.tgz", + "integrity": "sha512-mdmcokcs2Krd4lXYfSHOhx88Zs+MZRpddGtww/jvZuB0rhtnRpTb9SBhLlgVZmFbboEAgxyrKP+rF9Y9Y7F/Qg==", "requires": { - "optional": "0.1.4", + "body-parser": "1.19.1", + "cors": "2.8.5", + "express": "4.17.2", + "multer": "1.4.4", "tslib": "2.3.1" } }, - "fs-extra": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.0.tgz", - "integrity": "sha512-C5owb14u9eJwizKGdchcDUQeFtlSHHthBk8pbX9Vc1PFZrLombudjDnNns88aYslCyF6IY5SUw3Roz6xShcEIQ==", - "dev": true, - "requires": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - } - }, - "rxjs": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.5.4.tgz", - "integrity": "sha512-h5M3Hk78r6wAheJF0a5YahB1yRQKCsZ4MsGdZ5O9ETbVtjPcScGfrMmoOq7EBsCRzd4BDkvDJ7ogP8Sz5tTFiQ==", - "peer": true, - "requires": { - "tslib": "^2.1.0" - } - }, - "tslib": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", - "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==" - }, - "typescript": { - "version": "4.5.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.5.5.tgz", - "integrity": "sha512-TCTIul70LyWe6IJWT8QSYeA54WQe8EjQFU4wY52Fasj5UKx88LNYKCgBEHcOMOrFF1rKGbD8v/xcNWVUq9SymA==", - "dev": true, - "peer": true - }, - "uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==" - } - } - }, - "@defichain-apps/rich-list-api": { - "version": "file:apps/rich-list-api", - "requires": { - "@defichain/jellyfish-api-core": "0.0.0", - "@nestjs/cli": "^8.2.0", - "@nestjs/common": "^8.2.6", - "@nestjs/config": "^1.1.6", - "@nestjs/core": "^8.2.6", - "@nestjs/platform-fastify": "^8.2.6", - "@nestjs/schedule": "^1.0.2", - "@nestjs/schematics": "^8.0.6", - "@nestjs/terminus": "^8.0.4", - "@nestjs/testing": "^8.2.6", - "@nestjs/typeorm": "^8.0.3", - "joi": "^17.6.0", - "pg": "^8.7.3", - "testcontainers": "^8.2.0", - "typeorm": "^0.2.43" - }, - "dependencies": { - "@nestjs/common": { - "version": "8.3.1", - "resolved": "https://registry.npmjs.org/@nestjs/common/-/common-8.3.1.tgz", - "integrity": "sha512-3kKeaRXn1c2jf0ihVu6bvQ9Ok+7CkqkU0Ggi5NjWXA2oVRs3vPzr2d5DEvqUqY9JZpT5qGvzRDyKzaPlekxD2A==", - "requires": { - "axios": "0.26.0", - "iterare": "1.2.1", - "tslib": "2.3.1", - "uuid": "8.3.2" - } - }, - "@nestjs/config": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@nestjs/config/-/config-1.2.0.tgz", - "integrity": "sha512-GGZOj2g6EMZ23orsQqeD2Vs5E2ZrmAiB0qCGvERv+5nQmZjY4nKkisG4awQsym1uotmmzgtsd9lOiKqTIFONhA==", - "requires": { - "dotenv": "16.0.0", - "dotenv-expand": "8.0.1", - "lodash": "4.17.21", - "uuid": "8.3.2" - } - }, - "@nestjs/core": { - "version": "8.3.1", - "resolved": "https://registry.npmjs.org/@nestjs/core/-/core-8.3.1.tgz", - "integrity": "sha512-tdZkhqopd5xSVjogezpP4tPZWntyUNzwOGrVJCQ3RMVH12oxyDMpaMtDnCNvV7cSyoSyHzepMh5nCgLsZ/c88w==", - "requires": { - "@nuxtjs/opencollective": "0.3.2", - "fast-safe-stringify": "2.1.1", - "iterare": "1.2.1", - "object-hash": "2.2.0", - "path-to-regexp": "3.2.0", - "tslib": "2.3.1", - "uuid": "8.3.2" - } - }, "@nestjs/platform-fastify": { "version": "8.3.1", "resolved": "https://registry.npmjs.org/@nestjs/platform-fastify/-/platform-fastify-8.3.1.tgz", @@ -27915,6 +28042,88 @@ "uuid": "8.3.2" } }, + "@types/node": { + "version": "16.11.25", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.25.tgz", + "integrity": "sha512-NrTwfD7L1RTc2qrHQD4RTTy4p0CO2LatKBEKEds3CaVuhoM/+DJzmWZl5f+ikR8cm8F5mfJxK+9rQq07gRiSjQ==", + "dev": true + }, + "@typescript-eslint/eslint-plugin": { + "version": "5.12.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.12.1.tgz", + "integrity": "sha512-M499lqa8rnNK7mUv74lSFFttuUsubIRdAbHcVaP93oFcKkEmHmLqy2n7jM9C8DVmFMYK61ExrZU6dLYhQZmUpw==", + "dev": true, + "requires": { + "@typescript-eslint/scope-manager": "5.12.1", + "@typescript-eslint/type-utils": "5.12.1", + "@typescript-eslint/utils": "5.12.1", + "debug": "^4.3.2", + "functional-red-black-tree": "^1.0.1", + "ignore": "^5.1.8", + "regexpp": "^3.2.0", + "semver": "^7.3.5", + "tsutils": "^3.21.0" + } + }, + "@typescript-eslint/parser": { + "version": "5.12.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.12.1.tgz", + "integrity": "sha512-6LuVUbe7oSdHxUWoX/m40Ni8gsZMKCi31rlawBHt7VtW15iHzjbpj2WLiToG2758KjtCCiLRKZqfrOdl3cNKuw==", + "dev": true, + "requires": { + "@typescript-eslint/scope-manager": "5.12.1", + "@typescript-eslint/types": "5.12.1", + "@typescript-eslint/typescript-estree": "5.12.1", + "debug": "^4.3.2" + } + }, + "@typescript-eslint/scope-manager": { + "version": "5.12.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.12.1.tgz", + "integrity": "sha512-J0Wrh5xS6XNkd4TkOosxdpObzlYfXjAFIm9QxYLCPOcHVv1FyyFCPom66uIh8uBr0sZCrtS+n19tzufhwab8ZQ==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.12.1", + "@typescript-eslint/visitor-keys": "5.12.1" + } + }, + "@typescript-eslint/types": { + "version": "5.12.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.12.1.tgz", + "integrity": "sha512-hfcbq4qVOHV1YRdhkDldhV9NpmmAu2vp6wuFODL71Y0Ixak+FLeEU4rnPxgmZMnGreGEghlEucs9UZn5KOfHJA==", + "dev": true + }, + "@typescript-eslint/typescript-estree": { + "version": "5.12.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.12.1.tgz", + "integrity": "sha512-ahOdkIY9Mgbza7L9sIi205Pe1inCkZWAHE1TV1bpxlU4RZNPtXaDZfiiFWcL9jdxvW1hDYZJXrFm+vlMkXRbBw==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.12.1", + "@typescript-eslint/visitor-keys": "5.12.1", + "debug": "^4.3.2", + "globby": "^11.0.4", + "is-glob": "^4.0.3", + "semver": "^7.3.5", + "tsutils": "^3.21.0" + } + }, + "@typescript-eslint/visitor-keys": { + "version": "5.12.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.12.1.tgz", + "integrity": "sha512-l1KSLfupuwrXx6wc0AuOmC7Ko5g14ZOQ86wJJqRbdLbXLK02pK/DPiDDqCc7BqqiiA04/eAA6ayL0bgOrAkH7A==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.12.1", + "eslint-visitor-keys": "^3.0.0" + } + }, + "eslint-visitor-keys": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", + "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", + "dev": true + }, "fs-extra": { "version": "10.0.0", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.0.tgz", @@ -27930,7 +28139,6 @@ "version": "7.5.4", "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.5.4.tgz", "integrity": "sha512-h5M3Hk78r6wAheJF0a5YahB1yRQKCsZ4MsGdZ5O9ETbVtjPcScGfrMmoOq7EBsCRzd4BDkvDJ7ogP8Sz5tTFiQ==", - "peer": true, "requires": { "tslib": "^2.1.0" } @@ -30931,6 +31139,30 @@ "integrity": "sha512-I6sziQAzLrrqj9r6S26c7aOAjfGVXIE7gWdNONPwnpDcHiMRMQut1s1YCi/APem3dOy23tAb2rvHfNtGCaWuUQ==", "dev": true }, + "@tsconfig/node10": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.8.tgz", + "integrity": "sha512-6XFfSQmMgq0CFLY1MslA/CPUfhIL919M1rMsa5lP2P097N2Wd1sSX0tx1u4olM16fLNhtHZpRhedZJphNJqmZg==", + "dev": true + }, + "@tsconfig/node12": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.9.tgz", + "integrity": "sha512-/yBMcem+fbvhSREH+s14YJi18sp7J9jpuhYByADT2rypfajMZZN4WQ6zBGgBKp53NKmqI36wFYDb3yaMPurITw==", + "dev": true + }, + "@tsconfig/node14": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.1.tgz", + "integrity": "sha512-509r2+yARFfHHE7T6Puu2jjkoycftovhXRqW328PDXTVGKihlb1P8Z9mMZH04ebyajfRY7dedfGynlrFHJUQCg==", + "dev": true + }, + "@tsconfig/node16": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.2.tgz", + "integrity": "sha512-eZxlbI8GZscaGS7kkc/trHTT5xgrjH3/1n2JDwusC9iahPKWMRvRjJSAN5mCXviuTGQ/lHnhvv8Q1YTpnfz9gA==", + "dev": true + }, "@types/archiver": { "version": "5.3.1", "resolved": "https://registry.npmjs.org/@types/archiver/-/archiver-5.3.1.tgz", @@ -31016,12 +31248,6 @@ "base-x": "^3.0.6" } }, - "@types/cache-manager": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/@types/cache-manager/-/cache-manager-3.4.2.tgz", - "integrity": "sha512-1IwA74t5ID4KWo0Kndal16MhiPSZgMe1fGc+MLT6j5r+Ab7jku36PFTl4PP6MiWw0BJscM9QpZEo00qixNQoRg==", - "dev": true - }, "@types/connect": { "version": "3.4.35", "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", @@ -31039,6 +31265,12 @@ "@types/node": "*" } }, + "@types/cookiejar": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@types/cookiejar/-/cookiejar-2.1.2.tgz", + "integrity": "sha512-t73xJJrvdTjXrn4jLS9VSGRbz0nUY3cl2DMGDU48lKl+HR9dbbjW2A9r3g40VA++mQpy6uuHg33gy7du2BKpog==", + "dev": true + }, "@types/create-hash": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/@types/create-hash/-/create-hash-1.2.2.tgz", @@ -31422,6 +31654,25 @@ "integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==", "dev": true }, + "@types/superagent": { + "version": "4.1.15", + "resolved": "https://registry.npmjs.org/@types/superagent/-/superagent-4.1.15.tgz", + "integrity": "sha512-mu/N4uvfDN2zVQQ5AYJI/g4qxn2bHB6521t1UuH09ShNWjebTqN0ZFuYK9uYjcgmI0dTQEs+Owi1EO6U0OkOZQ==", + "dev": true, + "requires": { + "@types/cookiejar": "*", + "@types/node": "*" + } + }, + "@types/supertest": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@types/supertest/-/supertest-2.0.11.tgz", + "integrity": "sha512-uci4Esokrw9qGb9bvhhSVEjd6rkny/dk5PK/Qz4yxKiyppEI+dOPlNrZBahE3i+PoKFYyDxChVXZ/ysS/nrm1Q==", + "dev": true, + "requires": { + "@types/superagent": "*" + } + }, "@types/tiny-secp256k1": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/@types/tiny-secp256k1/-/tiny-secp256k1-1.0.0.tgz", @@ -31488,18 +31739,6 @@ "regexpp": "^3.1.0", "semver": "^7.3.5", "tsutils": "^3.21.0" - }, - "dependencies": { - "tsutils": { - "version": "3.21.0", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", - "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", - "dev": true, - "peer": true, - "requires": { - "tslib": "^1.8.1" - } - } } }, "@typescript-eslint/experimental-utils": { @@ -31551,6 +31790,17 @@ "@typescript-eslint/visitor-keys": "4.33.0" } }, + "@typescript-eslint/type-utils": { + "version": "5.12.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.12.1.tgz", + "integrity": "sha512-Gh8feEhsNLeCz6aYqynh61Vsdy+tiNNkQtc+bN3IvQvRqHkXGUhYkUi+ePKzP0Mb42se7FDb+y2SypTbpbR/Sg==", + "dev": true, + "requires": { + "@typescript-eslint/utils": "5.12.1", + "debug": "^4.3.2", + "tsutils": "^3.21.0" + } + }, "@typescript-eslint/types": { "version": "4.33.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.33.0.tgz", @@ -31570,15 +31820,78 @@ "is-glob": "^4.0.1", "semver": "^7.3.5", "tsutils": "^3.21.0" + } + }, + "@typescript-eslint/utils": { + "version": "5.12.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.12.1.tgz", + "integrity": "sha512-Qq9FIuU0EVEsi8fS6pG+uurbhNTtoYr4fq8tKjBupsK5Bgbk2I32UGm0Sh+WOyjOPgo/5URbxxSNV6HYsxV4MQ==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.9", + "@typescript-eslint/scope-manager": "5.12.1", + "@typescript-eslint/types": "5.12.1", + "@typescript-eslint/typescript-estree": "5.12.1", + "eslint-scope": "^5.1.1", + "eslint-utils": "^3.0.0" }, "dependencies": { - "tsutils": { - "version": "3.21.0", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", - "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", + "@typescript-eslint/scope-manager": { + "version": "5.12.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.12.1.tgz", + "integrity": "sha512-J0Wrh5xS6XNkd4TkOosxdpObzlYfXjAFIm9QxYLCPOcHVv1FyyFCPom66uIh8uBr0sZCrtS+n19tzufhwab8ZQ==", "dev": true, "requires": { - "tslib": "^1.8.1" + "@typescript-eslint/types": "5.12.1", + "@typescript-eslint/visitor-keys": "5.12.1" + } + }, + "@typescript-eslint/types": { + "version": "5.12.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.12.1.tgz", + "integrity": "sha512-hfcbq4qVOHV1YRdhkDldhV9NpmmAu2vp6wuFODL71Y0Ixak+FLeEU4rnPxgmZMnGreGEghlEucs9UZn5KOfHJA==", + "dev": true + }, + "@typescript-eslint/typescript-estree": { + "version": "5.12.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.12.1.tgz", + "integrity": "sha512-ahOdkIY9Mgbza7L9sIi205Pe1inCkZWAHE1TV1bpxlU4RZNPtXaDZfiiFWcL9jdxvW1hDYZJXrFm+vlMkXRbBw==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.12.1", + "@typescript-eslint/visitor-keys": "5.12.1", + "debug": "^4.3.2", + "globby": "^11.0.4", + "is-glob": "^4.0.3", + "semver": "^7.3.5", + "tsutils": "^3.21.0" + } + }, + "@typescript-eslint/visitor-keys": { + "version": "5.12.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.12.1.tgz", + "integrity": "sha512-l1KSLfupuwrXx6wc0AuOmC7Ko5g14ZOQ86wJJqRbdLbXLK02pK/DPiDDqCc7BqqiiA04/eAA6ayL0bgOrAkH7A==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.12.1", + "eslint-visitor-keys": "^3.0.0" + }, + "dependencies": { + "eslint-visitor-keys": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", + "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", + "dev": true + } + } + }, + "eslint-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", + "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^2.0.0" } } } @@ -31975,6 +32288,11 @@ "resolved": "https://registry.npmjs.org/app-root-path/-/app-root-path-3.0.0.tgz", "integrity": "sha512-qMcx+Gy2UZynHjOHOIXPNvpf+9cjvk3cWrBBK7zg4gH9+clobJRb9NGzcT7mQTcV/6Gm/1WelUtqxVXnNlrwcw==" }, + "append-field": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/append-field/-/append-field-1.0.0.tgz", + "integrity": "sha1-HjRA6RXwsSA9I3SOeO3XubW0PlY=" + }, "aproba": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", @@ -32894,6 +33212,38 @@ "integrity": "sha1-y5T662HIaWRR2zZTThQi+U8K7og=", "dev": true }, + "busboy": { + "version": "0.2.14", + "resolved": "https://registry.npmjs.org/busboy/-/busboy-0.2.14.tgz", + "integrity": "sha1-bCpiLvz0fFe7vh4qnDetNseSVFM=", + "requires": { + "dicer": "0.2.5", + "readable-stream": "1.1.x" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" + }, + "readable-stream": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" + } + } + }, "byline": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/byline/-/byline-5.0.0.tgz", @@ -33476,6 +33826,12 @@ } } }, + "component-emitter": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", + "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", + "dev": true + }, "compress-commons": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-4.1.1.tgz", @@ -33722,6 +34078,12 @@ "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" }, + "cookiejar": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.3.tgz", + "integrity": "sha512-JxbCBUdrfr6AQjOXrxoTvAMJO4HBTUIlBzslcJPAz+/KT8yk53fXun51u+RenNYvad/+Vc2DIz5o9UxlCDymFQ==", + "dev": true + }, "copy-text-to-clipboard": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/copy-text-to-clipboard/-/copy-text-to-clipboard-3.0.1.tgz", @@ -33791,6 +34153,15 @@ "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" }, + "cors": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", + "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", + "requires": { + "object-assign": "^4", + "vary": "^1" + } + }, "cosmiconfig": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.1.tgz", @@ -33857,6 +34228,12 @@ "sha.js": "^2.4.8" } }, + "create-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", + "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", + "dev": true + }, "cron": { "version": "1.7.2", "resolved": "https://registry.npmjs.org/cron/-/cron-1.7.2.tgz", @@ -34256,9 +34633,7 @@ "defichain": { "version": "file:", "requires": { - "@defichain-apps/legacy-api": "file:apps/legacy-api", - "@defichain-apps/ocean-api": "file:apps/ocean-api", - "@defichain-apps/rich-list-api": "file:apps/rich-list-api", + "@defichain-apps/nest-apps": "file:apps", "@defichain/jellyfish-address": "file:packages/jellyfish-address", "@defichain/jellyfish-api-core": "file:packages/jellyfish-api-core", "@defichain/jellyfish-api-jsonrpc": "file:packages/jellyfish-api-jsonrpc", @@ -35888,153 +36263,61 @@ "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", "dev": true }, - "@defichain-apps/legacy-api": { - "version": "file:apps/legacy-api", + "@cspotcode/source-map-consumer": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-consumer/-/source-map-consumer-0.8.0.tgz", + "integrity": "sha512-41qniHzTU8yAGbCp04ohlmSrZf8bkf/iJsl3V0dRGsQN/5GFfx+LbCSsCpp2gqrqjTVg/K6O8ycoV35JIwAzAg==", + "dev": true + }, + "@cspotcode/source-map-support": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.7.0.tgz", + "integrity": "sha512-X4xqRHqN8ACt2aHVe51OxeA2HjbcL4MqFqXkrmQszJ1NOUuUu5u6Vqx/0lZSVNku7velL5FC/s5uEAj1lsBMhA==", + "dev": true, "requires": { - "@defichain/whale-api-client": "^0.23.2", - "@nestjs/cli": "^8.2.1", - "@nestjs/common": "^8.3.1", - "@nestjs/config": "^1.2.0", - "@nestjs/core": "^8.3.1", - "@nestjs/platform-fastify": "^8.3.1", - "@nestjs/schematics": "^8.0.6", - "@nestjs/testing": "^8.3.1" - }, - "dependencies": { - "@nestjs/common": { - "version": "8.3.1", - "resolved": "https://registry.npmjs.org/@nestjs/common/-/common-8.3.1.tgz", - "integrity": "sha512-3kKeaRXn1c2jf0ihVu6bvQ9Ok+7CkqkU0Ggi5NjWXA2oVRs3vPzr2d5DEvqUqY9JZpT5qGvzRDyKzaPlekxD2A==", - "requires": { - "axios": "0.26.0", - "iterare": "1.2.1", - "tslib": "2.3.1", - "uuid": "8.3.2" - } - }, - "@nestjs/config": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@nestjs/config/-/config-1.2.0.tgz", - "integrity": "sha512-GGZOj2g6EMZ23orsQqeD2Vs5E2ZrmAiB0qCGvERv+5nQmZjY4nKkisG4awQsym1uotmmzgtsd9lOiKqTIFONhA==", - "requires": { - "dotenv": "16.0.0", - "dotenv-expand": "8.0.1", - "lodash": "4.17.21", - "uuid": "8.3.2" - } - }, - "@nestjs/core": { - "version": "8.3.1", - "resolved": "https://registry.npmjs.org/@nestjs/core/-/core-8.3.1.tgz", - "integrity": "sha512-tdZkhqopd5xSVjogezpP4tPZWntyUNzwOGrVJCQ3RMVH12oxyDMpaMtDnCNvV7cSyoSyHzepMh5nCgLsZ/c88w==", - "requires": { - "@nuxtjs/opencollective": "0.3.2", - "fast-safe-stringify": "2.1.1", - "iterare": "1.2.1", - "object-hash": "2.2.0", - "path-to-regexp": "3.2.0", - "tslib": "2.3.1", - "uuid": "8.3.2" - } - }, - "@nestjs/platform-fastify": { - "version": "8.3.1", - "resolved": "https://registry.npmjs.org/@nestjs/platform-fastify/-/platform-fastify-8.3.1.tgz", - "integrity": "sha512-JGqi7H62l1yglrvDG0g+QaJiVkMsozXxLZyPjCEY+kgyMNXCtvhi9ZkPGwkttl1RLnG0XQ7b5vgJyH5DqeIMDA==", - "requires": { - "fastify": "3.27.1", - "fastify-cors": "6.0.2", - "fastify-formbody": "5.2.0", - "light-my-request": "4.7.1", - "middie": "6.0.0", - "path-to-regexp": "3.2.0", - "tslib": "2.3.1" - } - }, - "@nestjs/schematics": { - "version": "8.0.6", - "resolved": "https://registry.npmjs.org/@nestjs/schematics/-/schematics-8.0.6.tgz", - "integrity": "sha512-IgWuplXg3I+2lzQqy5jR45C+EpBiOuPQwh8zWCjlQDYU9/X/2a8B8byJXw3nuguZS/huuuXx3ZhfHJKQYk6uIA==", - "dev": true, - "requires": { - "@angular-devkit/core": "13.2.2", - "@angular-devkit/schematics": "13.2.2", - "fs-extra": "10.0.0", - "jsonc-parser": "3.0.0", - "pluralize": "8.0.0" - } - }, - "@nestjs/testing": { - "version": "8.3.1", - "resolved": "https://registry.npmjs.org/@nestjs/testing/-/testing-8.3.1.tgz", - "integrity": "sha512-QZ7WwXYpUpfuyLddFwPSkJOWbpTUCtxvY2P9DjxcEsafmxaCeEURBM0DjaKcSwsTvyg9WIew803zViJO5NklPA==", - "dev": true, - "requires": { - "optional": "0.1.4", - "tslib": "2.3.1" - } - }, - "fs-extra": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.0.tgz", - "integrity": "sha512-C5owb14u9eJwizKGdchcDUQeFtlSHHthBk8pbX9Vc1PFZrLombudjDnNns88aYslCyF6IY5SUw3Roz6xShcEIQ==", - "dev": true, - "requires": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - } - }, - "rxjs": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.5.4.tgz", - "integrity": "sha512-h5M3Hk78r6wAheJF0a5YahB1yRQKCsZ4MsGdZ5O9ETbVtjPcScGfrMmoOq7EBsCRzd4BDkvDJ7ogP8Sz5tTFiQ==", - "peer": true, - "requires": { - "tslib": "^2.1.0" - } - }, - "tslib": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", - "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==" - }, - "typescript": { - "version": "4.5.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.5.5.tgz", - "integrity": "sha512-TCTIul70LyWe6IJWT8QSYeA54WQe8EjQFU4wY52Fasj5UKx88LNYKCgBEHcOMOrFF1rKGbD8v/xcNWVUq9SymA==", - "dev": true, - "peer": true - }, - "uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==" - } + "@cspotcode/source-map-consumer": "0.8.0" } }, - "@defichain-apps/ocean-api": { - "version": "file:apps/ocean-api", + "@defichain-apps/nest-apps": { + "version": "file:apps", "requires": { - "@defichain/jellyfish-api-core": "0.0.0", - "@defichain/jellyfish-api-jsonrpc": "0.0.0", - "@defichain/ocean-api-client": "0.0.0", - "@defichain/playground": "0.0.0", - "@nestjs/cli": "^8.2.1", - "@nestjs/common": "^8.3.1", + "@defichain/jellyfish-api-core": "^0.0.0", + "@defichain/jellyfish-api-jsonrpc": "^0.0.0", + "@defichain/jellyfish-testing": "^0.0.0", + "@defichain/ocean-api-client": "^0.0.0", + "@defichain/playground": "^0.0.0", + "@defichain/whale-api-client": "0.23.2", + "@nestjs/cli": "^8.0.0", + "@nestjs/common": "^8.2.6", "@nestjs/config": "^1.2.0", - "@nestjs/core": "^8.3.1", + "@nestjs/core": "^8.2.6", + "@nestjs/platform-express": "^8.0.0", "@nestjs/platform-fastify": "^8.3.1", "@nestjs/schedule": "^1.0.2", - "@nestjs/schematics": "^8.0.6", + "@nestjs/schematics": "^8.0.0", "@nestjs/terminus": "^8.0.4", - "@nestjs/testing": "^8.3.1", - "@types/cache-manager": "^3.4.2", + "@nestjs/testing": "^8.0.0", + "@nestjs/typeorm": "^8.0.3", "@types/cron": "^1.7.3", + "@types/express": "^4.17.13", + "@types/node": "^16.0.0", + "@types/supertest": "^2.0.11", + "@typescript-eslint/eslint-plugin": "^5.0.0", + "@typescript-eslint/parser": "^5.0.0", "cache-manager": "^3.6.0", "class-transformer": "^0.5.1", "class-validator": "^0.13.2", - "joi": "^17.6.0" + "joi": "^17.6.0", + "pg": "^8.7.3", + "reflect-metadata": "^0.1.13", + "rxjs": "^7.2.0", + "source-map-support": "^0.5.20", + "supertest": "^6.1.3", + "testcontainers": "^8.2.0", + "ts-loader": "^9.2.3", + "ts-node": "^10.0.0", + "tsconfig-paths": "^3.10.1", + "typeorm": "^0.2.43" }, "dependencies": { "@nestjs/common": { @@ -36073,6 +36356,18 @@ "uuid": "8.3.2" } }, + "@nestjs/platform-express": { + "version": "8.3.1", + "resolved": "https://registry.npmjs.org/@nestjs/platform-express/-/platform-express-8.3.1.tgz", + "integrity": "sha512-mdmcokcs2Krd4lXYfSHOhx88Zs+MZRpddGtww/jvZuB0rhtnRpTb9SBhLlgVZmFbboEAgxyrKP+rF9Y9Y7F/Qg==", + "requires": { + "body-parser": "1.19.1", + "cors": "2.8.5", + "express": "4.17.2", + "multer": "1.4.4", + "tslib": "2.3.1" + } + }, "@nestjs/platform-fastify": { "version": "8.3.1", "resolved": "https://registry.npmjs.org/@nestjs/platform-fastify/-/platform-fastify-8.3.1.tgz", @@ -36127,162 +36422,95 @@ "tslib": "2.3.1" } }, - "fs-extra": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.0.tgz", - "integrity": "sha512-C5owb14u9eJwizKGdchcDUQeFtlSHHthBk8pbX9Vc1PFZrLombudjDnNns88aYslCyF6IY5SUw3Roz6xShcEIQ==", - "dev": true, - "requires": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - } - }, - "rxjs": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.5.4.tgz", - "integrity": "sha512-h5M3Hk78r6wAheJF0a5YahB1yRQKCsZ4MsGdZ5O9ETbVtjPcScGfrMmoOq7EBsCRzd4BDkvDJ7ogP8Sz5tTFiQ==", - "peer": true, + "@nestjs/typeorm": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/@nestjs/typeorm/-/typeorm-8.0.3.tgz", + "integrity": "sha512-tf9rTXP6LeFInkwd+tktQhtLRsKp4RRYImprqT8gcHcJDx+xMP1IygnXELOKwF5vo2/mnhrGtBlRQ/iiS6170g==", "requires": { - "tslib": "^2.1.0" + "uuid": "8.3.2" } }, - "tslib": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", - "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==" + "@types/node": { + "version": "16.11.25", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.25.tgz", + "integrity": "sha512-NrTwfD7L1RTc2qrHQD4RTTy4p0CO2LatKBEKEds3CaVuhoM/+DJzmWZl5f+ikR8cm8F5mfJxK+9rQq07gRiSjQ==", + "dev": true }, - "typescript": { - "version": "4.5.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.5.5.tgz", - "integrity": "sha512-TCTIul70LyWe6IJWT8QSYeA54WQe8EjQFU4wY52Fasj5UKx88LNYKCgBEHcOMOrFF1rKGbD8v/xcNWVUq9SymA==", + "@typescript-eslint/eslint-plugin": { + "version": "5.12.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.12.1.tgz", + "integrity": "sha512-M499lqa8rnNK7mUv74lSFFttuUsubIRdAbHcVaP93oFcKkEmHmLqy2n7jM9C8DVmFMYK61ExrZU6dLYhQZmUpw==", "dev": true, - "peer": true - }, - "uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==" - } - } - }, - "@defichain-apps/rich-list-api": { - "version": "file:apps/rich-list-api", - "requires": { - "@defichain/jellyfish-api-core": "0.0.0", - "@nestjs/cli": "^8.2.0", - "@nestjs/common": "^8.2.6", - "@nestjs/config": "^1.1.6", - "@nestjs/core": "^8.2.6", - "@nestjs/platform-fastify": "^8.2.6", - "@nestjs/schedule": "^1.0.2", - "@nestjs/schematics": "^8.0.6", - "@nestjs/terminus": "^8.0.4", - "@nestjs/testing": "^8.2.6", - "@nestjs/typeorm": "^8.0.3", - "joi": "^17.6.0", - "pg": "^8.7.3", - "testcontainers": "^8.2.0", - "typeorm": "^0.2.43" - }, - "dependencies": { - "@nestjs/common": { - "version": "8.3.1", - "resolved": "https://registry.npmjs.org/@nestjs/common/-/common-8.3.1.tgz", - "integrity": "sha512-3kKeaRXn1c2jf0ihVu6bvQ9Ok+7CkqkU0Ggi5NjWXA2oVRs3vPzr2d5DEvqUqY9JZpT5qGvzRDyKzaPlekxD2A==", - "requires": { - "axios": "0.26.0", - "iterare": "1.2.1", - "tslib": "2.3.1", - "uuid": "8.3.2" - } - }, - "@nestjs/config": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@nestjs/config/-/config-1.2.0.tgz", - "integrity": "sha512-GGZOj2g6EMZ23orsQqeD2Vs5E2ZrmAiB0qCGvERv+5nQmZjY4nKkisG4awQsym1uotmmzgtsd9lOiKqTIFONhA==", "requires": { - "dotenv": "16.0.0", - "dotenv-expand": "8.0.1", - "lodash": "4.17.21", - "uuid": "8.3.2" + "@typescript-eslint/scope-manager": "5.12.1", + "@typescript-eslint/type-utils": "5.12.1", + "@typescript-eslint/utils": "5.12.1", + "debug": "^4.3.2", + "functional-red-black-tree": "^1.0.1", + "ignore": "^5.1.8", + "regexpp": "^3.2.0", + "semver": "^7.3.5", + "tsutils": "^3.21.0" } }, - "@nestjs/core": { - "version": "8.3.1", - "resolved": "https://registry.npmjs.org/@nestjs/core/-/core-8.3.1.tgz", - "integrity": "sha512-tdZkhqopd5xSVjogezpP4tPZWntyUNzwOGrVJCQ3RMVH12oxyDMpaMtDnCNvV7cSyoSyHzepMh5nCgLsZ/c88w==", + "@typescript-eslint/parser": { + "version": "5.12.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.12.1.tgz", + "integrity": "sha512-6LuVUbe7oSdHxUWoX/m40Ni8gsZMKCi31rlawBHt7VtW15iHzjbpj2WLiToG2758KjtCCiLRKZqfrOdl3cNKuw==", + "dev": true, "requires": { - "@nuxtjs/opencollective": "0.3.2", - "fast-safe-stringify": "2.1.1", - "iterare": "1.2.1", - "object-hash": "2.2.0", - "path-to-regexp": "3.2.0", - "tslib": "2.3.1", - "uuid": "8.3.2" + "@typescript-eslint/scope-manager": "5.12.1", + "@typescript-eslint/types": "5.12.1", + "@typescript-eslint/typescript-estree": "5.12.1", + "debug": "^4.3.2" } }, - "@nestjs/platform-fastify": { - "version": "8.3.1", - "resolved": "https://registry.npmjs.org/@nestjs/platform-fastify/-/platform-fastify-8.3.1.tgz", - "integrity": "sha512-JGqi7H62l1yglrvDG0g+QaJiVkMsozXxLZyPjCEY+kgyMNXCtvhi9ZkPGwkttl1RLnG0XQ7b5vgJyH5DqeIMDA==", + "@typescript-eslint/scope-manager": { + "version": "5.12.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.12.1.tgz", + "integrity": "sha512-J0Wrh5xS6XNkd4TkOosxdpObzlYfXjAFIm9QxYLCPOcHVv1FyyFCPom66uIh8uBr0sZCrtS+n19tzufhwab8ZQ==", + "dev": true, "requires": { - "fastify": "3.27.1", - "fastify-cors": "6.0.2", - "fastify-formbody": "5.2.0", - "light-my-request": "4.7.1", - "middie": "6.0.0", - "path-to-regexp": "3.2.0", - "tslib": "2.3.1" + "@typescript-eslint/types": "5.12.1", + "@typescript-eslint/visitor-keys": "5.12.1" } }, - "@nestjs/schedule": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@nestjs/schedule/-/schedule-1.0.2.tgz", - "integrity": "sha512-GGRehpSm0nCthYNxAGdTzondPrRvurtKnkQCzIb3Tccqq6PhfS2QiHMwDaCel5/4jhYbR/lZR9UsVr6KSJc2Xg==", - "requires": { - "cron": "1.7.2", - "uuid": "8.3.2" - } + "@typescript-eslint/types": { + "version": "5.12.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.12.1.tgz", + "integrity": "sha512-hfcbq4qVOHV1YRdhkDldhV9NpmmAu2vp6wuFODL71Y0Ixak+FLeEU4rnPxgmZMnGreGEghlEucs9UZn5KOfHJA==", + "dev": true }, - "@nestjs/schematics": { - "version": "8.0.6", - "resolved": "https://registry.npmjs.org/@nestjs/schematics/-/schematics-8.0.6.tgz", - "integrity": "sha512-IgWuplXg3I+2lzQqy5jR45C+EpBiOuPQwh8zWCjlQDYU9/X/2a8B8byJXw3nuguZS/huuuXx3ZhfHJKQYk6uIA==", + "@typescript-eslint/typescript-estree": { + "version": "5.12.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.12.1.tgz", + "integrity": "sha512-ahOdkIY9Mgbza7L9sIi205Pe1inCkZWAHE1TV1bpxlU4RZNPtXaDZfiiFWcL9jdxvW1hDYZJXrFm+vlMkXRbBw==", "dev": true, "requires": { - "@angular-devkit/core": "13.2.2", - "@angular-devkit/schematics": "13.2.2", - "fs-extra": "10.0.0", - "jsonc-parser": "3.0.0", - "pluralize": "8.0.0" - } - }, - "@nestjs/terminus": { - "version": "8.0.4", - "resolved": "https://registry.npmjs.org/@nestjs/terminus/-/terminus-8.0.4.tgz", - "integrity": "sha512-KjeY7VLt0Az6pA2wO67nkL1QbE68yBb+FLZ7+aa+C/g/IKoDR668nqSuFzJarBrnFBTGEwDD09BwsgqkmymrbQ==", - "requires": { - "check-disk-space": "3.1.0" + "@typescript-eslint/types": "5.12.1", + "@typescript-eslint/visitor-keys": "5.12.1", + "debug": "^4.3.2", + "globby": "^11.0.4", + "is-glob": "^4.0.3", + "semver": "^7.3.5", + "tsutils": "^3.21.0" } }, - "@nestjs/testing": { - "version": "8.3.1", - "resolved": "https://registry.npmjs.org/@nestjs/testing/-/testing-8.3.1.tgz", - "integrity": "sha512-QZ7WwXYpUpfuyLddFwPSkJOWbpTUCtxvY2P9DjxcEsafmxaCeEURBM0DjaKcSwsTvyg9WIew803zViJO5NklPA==", + "@typescript-eslint/visitor-keys": { + "version": "5.12.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.12.1.tgz", + "integrity": "sha512-l1KSLfupuwrXx6wc0AuOmC7Ko5g14ZOQ86wJJqRbdLbXLK02pK/DPiDDqCc7BqqiiA04/eAA6ayL0bgOrAkH7A==", "dev": true, "requires": { - "optional": "0.1.4", - "tslib": "2.3.1" + "@typescript-eslint/types": "5.12.1", + "eslint-visitor-keys": "^3.0.0" } }, - "@nestjs/typeorm": { - "version": "8.0.3", - "resolved": "https://registry.npmjs.org/@nestjs/typeorm/-/typeorm-8.0.3.tgz", - "integrity": "sha512-tf9rTXP6LeFInkwd+tktQhtLRsKp4RRYImprqT8gcHcJDx+xMP1IygnXELOKwF5vo2/mnhrGtBlRQ/iiS6170g==", - "requires": { - "uuid": "8.3.2" - } + "eslint-visitor-keys": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", + "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", + "dev": true }, "fs-extra": { "version": "10.0.0", @@ -36299,7 +36527,6 @@ "version": "7.5.4", "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.5.4.tgz", "integrity": "sha512-h5M3Hk78r6wAheJF0a5YahB1yRQKCsZ4MsGdZ5O9ETbVtjPcScGfrMmoOq7EBsCRzd4BDkvDJ7ogP8Sz5tTFiQ==", - "peer": true, "requires": { "tslib": "^2.1.0" } @@ -39300,6 +39527,30 @@ "integrity": "sha512-I6sziQAzLrrqj9r6S26c7aOAjfGVXIE7gWdNONPwnpDcHiMRMQut1s1YCi/APem3dOy23tAb2rvHfNtGCaWuUQ==", "dev": true }, + "@tsconfig/node10": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.8.tgz", + "integrity": "sha512-6XFfSQmMgq0CFLY1MslA/CPUfhIL919M1rMsa5lP2P097N2Wd1sSX0tx1u4olM16fLNhtHZpRhedZJphNJqmZg==", + "dev": true + }, + "@tsconfig/node12": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.9.tgz", + "integrity": "sha512-/yBMcem+fbvhSREH+s14YJi18sp7J9jpuhYByADT2rypfajMZZN4WQ6zBGgBKp53NKmqI36wFYDb3yaMPurITw==", + "dev": true + }, + "@tsconfig/node14": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.1.tgz", + "integrity": "sha512-509r2+yARFfHHE7T6Puu2jjkoycftovhXRqW328PDXTVGKihlb1P8Z9mMZH04ebyajfRY7dedfGynlrFHJUQCg==", + "dev": true + }, + "@tsconfig/node16": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.2.tgz", + "integrity": "sha512-eZxlbI8GZscaGS7kkc/trHTT5xgrjH3/1n2JDwusC9iahPKWMRvRjJSAN5mCXviuTGQ/lHnhvv8Q1YTpnfz9gA==", + "dev": true + }, "@types/archiver": { "version": "5.3.1", "resolved": "https://registry.npmjs.org/@types/archiver/-/archiver-5.3.1.tgz", @@ -39385,12 +39636,6 @@ "base-x": "^3.0.6" } }, - "@types/cache-manager": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/@types/cache-manager/-/cache-manager-3.4.2.tgz", - "integrity": "sha512-1IwA74t5ID4KWo0Kndal16MhiPSZgMe1fGc+MLT6j5r+Ab7jku36PFTl4PP6MiWw0BJscM9QpZEo00qixNQoRg==", - "dev": true - }, "@types/connect": { "version": "3.4.35", "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", @@ -39408,6 +39653,12 @@ "@types/node": "*" } }, + "@types/cookiejar": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@types/cookiejar/-/cookiejar-2.1.2.tgz", + "integrity": "sha512-t73xJJrvdTjXrn4jLS9VSGRbz0nUY3cl2DMGDU48lKl+HR9dbbjW2A9r3g40VA++mQpy6uuHg33gy7du2BKpog==", + "dev": true + }, "@types/create-hash": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/@types/create-hash/-/create-hash-1.2.2.tgz", @@ -39791,6 +40042,25 @@ "integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==", "dev": true }, + "@types/superagent": { + "version": "4.1.15", + "resolved": "https://registry.npmjs.org/@types/superagent/-/superagent-4.1.15.tgz", + "integrity": "sha512-mu/N4uvfDN2zVQQ5AYJI/g4qxn2bHB6521t1UuH09ShNWjebTqN0ZFuYK9uYjcgmI0dTQEs+Owi1EO6U0OkOZQ==", + "dev": true, + "requires": { + "@types/cookiejar": "*", + "@types/node": "*" + } + }, + "@types/supertest": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@types/supertest/-/supertest-2.0.11.tgz", + "integrity": "sha512-uci4Esokrw9qGb9bvhhSVEjd6rkny/dk5PK/Qz4yxKiyppEI+dOPlNrZBahE3i+PoKFYyDxChVXZ/ysS/nrm1Q==", + "dev": true, + "requires": { + "@types/superagent": "*" + } + }, "@types/tiny-secp256k1": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/@types/tiny-secp256k1/-/tiny-secp256k1-1.0.0.tgz", @@ -39857,18 +40127,6 @@ "regexpp": "^3.1.0", "semver": "^7.3.5", "tsutils": "^3.21.0" - }, - "dependencies": { - "tsutils": { - "version": "3.21.0", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", - "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", - "dev": true, - "peer": true, - "requires": { - "tslib": "^1.8.1" - } - } } }, "@typescript-eslint/experimental-utils": { @@ -39920,6 +40178,17 @@ "@typescript-eslint/visitor-keys": "4.33.0" } }, + "@typescript-eslint/type-utils": { + "version": "5.12.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.12.1.tgz", + "integrity": "sha512-Gh8feEhsNLeCz6aYqynh61Vsdy+tiNNkQtc+bN3IvQvRqHkXGUhYkUi+ePKzP0Mb42se7FDb+y2SypTbpbR/Sg==", + "dev": true, + "requires": { + "@typescript-eslint/utils": "5.12.1", + "debug": "^4.3.2", + "tsutils": "^3.21.0" + } + }, "@typescript-eslint/types": { "version": "4.33.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.33.0.tgz", @@ -39939,15 +40208,78 @@ "is-glob": "^4.0.1", "semver": "^7.3.5", "tsutils": "^3.21.0" + } + }, + "@typescript-eslint/utils": { + "version": "5.12.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.12.1.tgz", + "integrity": "sha512-Qq9FIuU0EVEsi8fS6pG+uurbhNTtoYr4fq8tKjBupsK5Bgbk2I32UGm0Sh+WOyjOPgo/5URbxxSNV6HYsxV4MQ==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.9", + "@typescript-eslint/scope-manager": "5.12.1", + "@typescript-eslint/types": "5.12.1", + "@typescript-eslint/typescript-estree": "5.12.1", + "eslint-scope": "^5.1.1", + "eslint-utils": "^3.0.0" }, "dependencies": { - "tsutils": { - "version": "3.21.0", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", - "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", + "@typescript-eslint/scope-manager": { + "version": "5.12.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.12.1.tgz", + "integrity": "sha512-J0Wrh5xS6XNkd4TkOosxdpObzlYfXjAFIm9QxYLCPOcHVv1FyyFCPom66uIh8uBr0sZCrtS+n19tzufhwab8ZQ==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.12.1", + "@typescript-eslint/visitor-keys": "5.12.1" + } + }, + "@typescript-eslint/types": { + "version": "5.12.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.12.1.tgz", + "integrity": "sha512-hfcbq4qVOHV1YRdhkDldhV9NpmmAu2vp6wuFODL71Y0Ixak+FLeEU4rnPxgmZMnGreGEghlEucs9UZn5KOfHJA==", + "dev": true + }, + "@typescript-eslint/typescript-estree": { + "version": "5.12.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.12.1.tgz", + "integrity": "sha512-ahOdkIY9Mgbza7L9sIi205Pe1inCkZWAHE1TV1bpxlU4RZNPtXaDZfiiFWcL9jdxvW1hDYZJXrFm+vlMkXRbBw==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.12.1", + "@typescript-eslint/visitor-keys": "5.12.1", + "debug": "^4.3.2", + "globby": "^11.0.4", + "is-glob": "^4.0.3", + "semver": "^7.3.5", + "tsutils": "^3.21.0" + } + }, + "@typescript-eslint/visitor-keys": { + "version": "5.12.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.12.1.tgz", + "integrity": "sha512-l1KSLfupuwrXx6wc0AuOmC7Ko5g14ZOQ86wJJqRbdLbXLK02pK/DPiDDqCc7BqqiiA04/eAA6ayL0bgOrAkH7A==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.12.1", + "eslint-visitor-keys": "^3.0.0" + }, + "dependencies": { + "eslint-visitor-keys": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", + "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", + "dev": true + } + } + }, + "eslint-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", + "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", "dev": true, "requires": { - "tslib": "^1.8.1" + "eslint-visitor-keys": "^2.0.0" } } } @@ -40344,6 +40676,11 @@ "resolved": "https://registry.npmjs.org/app-root-path/-/app-root-path-3.0.0.tgz", "integrity": "sha512-qMcx+Gy2UZynHjOHOIXPNvpf+9cjvk3cWrBBK7zg4gH9+clobJRb9NGzcT7mQTcV/6Gm/1WelUtqxVXnNlrwcw==" }, + "append-field": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/append-field/-/append-field-1.0.0.tgz", + "integrity": "sha1-HjRA6RXwsSA9I3SOeO3XubW0PlY=" + }, "aproba": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", @@ -41263,6 +41600,38 @@ "integrity": "sha1-y5T662HIaWRR2zZTThQi+U8K7og=", "dev": true }, + "busboy": { + "version": "0.2.14", + "resolved": "https://registry.npmjs.org/busboy/-/busboy-0.2.14.tgz", + "integrity": "sha1-bCpiLvz0fFe7vh4qnDetNseSVFM=", + "requires": { + "dicer": "0.2.5", + "readable-stream": "1.1.x" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" + }, + "readable-stream": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" + } + } + }, "byline": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/byline/-/byline-5.0.0.tgz", @@ -41845,6 +42214,12 @@ } } }, + "component-emitter": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", + "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", + "dev": true + }, "compress-commons": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-4.1.1.tgz", @@ -42091,6 +42466,12 @@ "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" }, + "cookiejar": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.3.tgz", + "integrity": "sha512-JxbCBUdrfr6AQjOXrxoTvAMJO4HBTUIlBzslcJPAz+/KT8yk53fXun51u+RenNYvad/+Vc2DIz5o9UxlCDymFQ==", + "dev": true + }, "copy-text-to-clipboard": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/copy-text-to-clipboard/-/copy-text-to-clipboard-3.0.1.tgz", @@ -42160,6 +42541,15 @@ "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" }, + "cors": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", + "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", + "requires": { + "object-assign": "^4", + "vary": "^1" + } + }, "cosmiconfig": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.1.tgz", @@ -42226,6 +42616,12 @@ "sha.js": "^2.4.8" } }, + "create-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", + "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", + "dev": true + }, "cron": { "version": "1.7.2", "resolved": "https://registry.npmjs.org/cron/-/cron-1.7.2.tgz", @@ -42761,6 +43157,44 @@ "wrappy": "1" } }, + "dicer": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/dicer/-/dicer-0.2.5.tgz", + "integrity": "sha1-WZbAhrszIYyBLAkL3cCc0S+stw8=", + "requires": { + "readable-stream": "1.1.x", + "streamsearch": "0.1.2" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" + }, + "readable-stream": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" + } + } + }, + "diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "dev": true + }, "diff-sequences": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.5.1.tgz", @@ -44134,6 +44568,26 @@ "mime-types": "^2.1.12" } }, + "formidable": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/formidable/-/formidable-2.0.1.tgz", + "integrity": "sha512-rjTMNbp2BpfQShhFbR3Ruk3qk2y9jKpvMW78nJgx8QKtxjDVrwbZG+wvDOmVbifHyOUOQJXxqEy6r0faRrPzTQ==", + "dev": true, + "requires": { + "dezalgo": "1.0.3", + "hexoid": "1.0.0", + "once": "1.4.0", + "qs": "6.9.3" + }, + "dependencies": { + "qs": { + "version": "6.9.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.3.tgz", + "integrity": "sha512-EbZYNarm6138UKKq46tdx08Yo/q9ZhFoAXAI1meAFd2GtbRDhbZY2WQSICskT0c5q99aFzLG1D4nvTk9tqfXIw==", + "dev": true + } + } + }, "forwarded": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", @@ -44789,6 +45243,12 @@ "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==" }, + "hexoid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/hexoid/-/hexoid-1.0.0.tgz", + "integrity": "sha512-QFLV0taWQOZtvIRIAdBChesmogZrtuXvVWsFHZTk2SU+anspqZ2vMnoLg7IE1+Uk16N19APic1BuF8bC8c2m5g==", + "dev": true + }, "highlight.js": { "version": "10.7.3", "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-10.7.3.tgz", @@ -47575,6 +48035,64 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, + "multer": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/multer/-/multer-1.4.4.tgz", + "integrity": "sha512-2wY2+xD4udX612aMqMcB8Ws2Voq6NIUPEtD1be6m411T4uDH/VtL9i//xvcyFlTVfRdaBsk7hV5tgrGQqhuBiw==", + "requires": { + "append-field": "^1.0.0", + "busboy": "^0.2.11", + "concat-stream": "^1.5.2", + "mkdirp": "^0.5.4", + "object-assign": "^4.1.1", + "on-finished": "^2.3.0", + "type-is": "^1.6.4", + "xtend": "^4.0.0" + }, + "dependencies": { + "concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "requires": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "requires": { + "minimist": "^1.2.5" + } + }, + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, "multicast-dns": { "version": "6.2.3", "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-6.2.3.tgz", @@ -51528,6 +52046,11 @@ "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.0.1.tgz", "integrity": "sha512-mC1Ps9l77/97qeOZc+HrOL7TIaOboHqMZ24dGVQrlxFcpPpfCHpH+qfUT7Dz+6mlG8+JPA1KfBQo19iC/+Ngcw==" }, + "streamsearch": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-0.1.2.tgz", + "integrity": "sha1-gIudDlb8Jz2Am6VzOOkpkZoanxo=" + }, "strict-uri-encode": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz", @@ -51707,6 +52230,54 @@ "postcss-selector-parser": "^6.0.4" } }, + "superagent": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/superagent/-/superagent-7.1.1.tgz", + "integrity": "sha512-CQ2weSS6M+doIwwYFoMatklhRbx6sVNdB99OEJ5czcP3cng76Ljqus694knFWgOj3RkrtxZqIgpe6vhe0J7QWQ==", + "dev": true, + "requires": { + "component-emitter": "^1.3.0", + "cookiejar": "^2.1.3", + "debug": "^4.3.3", + "fast-safe-stringify": "^2.1.1", + "form-data": "^4.0.0", + "formidable": "^2.0.1", + "methods": "^1.1.2", + "mime": "^2.5.0", + "qs": "^6.10.1", + "readable-stream": "^3.6.0", + "semver": "^7.3.5" + }, + "dependencies": { + "form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dev": true, + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + } + }, + "mime": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", + "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", + "dev": true + } + } + }, + "supertest": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/supertest/-/supertest-6.2.2.tgz", + "integrity": "sha512-wCw9WhAtKJsBvh07RaS+/By91NNE0Wh0DN19/hWPlBOU8tAfOtbZoVSV4xXeoKoxgPx0rx2y+y+8660XtE7jzg==", + "dev": true, + "requires": { + "methods": "^1.1.2", + "superagent": "^7.1.0" + } + }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -52263,6 +52834,59 @@ "yargs-parser": "20.x" } }, + "ts-loader": { + "version": "9.2.6", + "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.2.6.tgz", + "integrity": "sha512-QMTC4UFzHmu9wU2VHZEmWWE9cUajjfcdcws+Gh7FhiO+Dy0RnR1bNz0YCHqhI0yRowCE9arVnNxYHqELOy9Hjw==", + "dev": true, + "requires": { + "chalk": "^4.1.0", + "enhanced-resolve": "^5.0.0", + "micromatch": "^4.0.0", + "semver": "^7.3.4" + } + }, + "ts-node": { + "version": "10.5.0", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.5.0.tgz", + "integrity": "sha512-6kEJKwVxAJ35W4akuiysfKwKmjkbYxwQMTBaAxo9KKAx/Yd26mPUyhGz3ji+EsJoAgrLqVsYHNuuYwQe22lbtw==", + "dev": true, + "requires": { + "@cspotcode/source-map-support": "0.7.0", + "@tsconfig/node10": "^1.0.7", + "@tsconfig/node12": "^1.0.7", + "@tsconfig/node14": "^1.0.0", + "@tsconfig/node16": "^1.0.2", + "acorn": "^8.4.1", + "acorn-walk": "^8.1.1", + "arg": "^4.1.0", + "create-require": "^1.1.0", + "diff": "^4.0.1", + "make-error": "^1.1.1", + "v8-compile-cache-lib": "^3.0.0", + "yn": "3.1.1" + }, + "dependencies": { + "acorn": { + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.0.tgz", + "integrity": "sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==", + "dev": true + }, + "acorn-walk": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", + "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", + "dev": true + }, + "arg": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", + "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", + "dev": true + } + } + }, "tsconfig-paths": { "version": "3.12.0", "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.12.0.tgz", @@ -52309,6 +52933,15 @@ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", "dev": true }, + "tsutils": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", + "dev": true, + "requires": { + "tslib": "^1.8.1" + } + }, "tunnel-agent": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", @@ -52355,8 +52988,7 @@ "typedarray": { "version": "0.0.6", "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", - "dev": true + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=" }, "typedarray-to-buffer": { "version": "3.1.5", @@ -52799,6 +53431,12 @@ "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", "devOptional": true }, + "v8-compile-cache-lib": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.0.tgz", + "integrity": "sha512-mpSYqfsFvASnSn5qMiwrr4VKfumbPyONLCOPmsR3A6pTY/r0+tSaVbgPWSAIuzbk3lCTa+FForeTiO+wBQGkjA==", + "dev": true + }, "v8-to-istanbul": { "version": "8.1.1", "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-8.1.1.tgz", @@ -53650,6 +54288,12 @@ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==" }, + "yn": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", + "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", + "dev": true + }, "yocto-queue": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", @@ -53826,6 +54470,44 @@ "wrappy": "1" } }, + "dicer": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/dicer/-/dicer-0.2.5.tgz", + "integrity": "sha1-WZbAhrszIYyBLAkL3cCc0S+stw8=", + "requires": { + "readable-stream": "1.1.x", + "streamsearch": "0.1.2" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" + }, + "readable-stream": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" + } + } + }, + "diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "dev": true + }, "diff-sequences": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.5.1.tgz", @@ -55199,6 +55881,26 @@ "mime-types": "^2.1.12" } }, + "formidable": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/formidable/-/formidable-2.0.1.tgz", + "integrity": "sha512-rjTMNbp2BpfQShhFbR3Ruk3qk2y9jKpvMW78nJgx8QKtxjDVrwbZG+wvDOmVbifHyOUOQJXxqEy6r0faRrPzTQ==", + "dev": true, + "requires": { + "dezalgo": "1.0.3", + "hexoid": "1.0.0", + "once": "1.4.0", + "qs": "6.9.3" + }, + "dependencies": { + "qs": { + "version": "6.9.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.3.tgz", + "integrity": "sha512-EbZYNarm6138UKKq46tdx08Yo/q9ZhFoAXAI1meAFd2GtbRDhbZY2WQSICskT0c5q99aFzLG1D4nvTk9tqfXIw==", + "dev": true + } + } + }, "forwarded": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", @@ -55854,6 +56556,12 @@ "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==" }, + "hexoid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/hexoid/-/hexoid-1.0.0.tgz", + "integrity": "sha512-QFLV0taWQOZtvIRIAdBChesmogZrtuXvVWsFHZTk2SU+anspqZ2vMnoLg7IE1+Uk16N19APic1BuF8bC8c2m5g==", + "dev": true + }, "highlight.js": { "version": "10.7.3", "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-10.7.3.tgz", @@ -58640,6 +59348,64 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, + "multer": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/multer/-/multer-1.4.4.tgz", + "integrity": "sha512-2wY2+xD4udX612aMqMcB8Ws2Voq6NIUPEtD1be6m411T4uDH/VtL9i//xvcyFlTVfRdaBsk7hV5tgrGQqhuBiw==", + "requires": { + "append-field": "^1.0.0", + "busboy": "^0.2.11", + "concat-stream": "^1.5.2", + "mkdirp": "^0.5.4", + "object-assign": "^4.1.1", + "on-finished": "^2.3.0", + "type-is": "^1.6.4", + "xtend": "^4.0.0" + }, + "dependencies": { + "concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "requires": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "requires": { + "minimist": "^1.2.5" + } + }, + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, "multicast-dns": { "version": "6.2.3", "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-6.2.3.tgz", @@ -62593,6 +63359,11 @@ "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.0.1.tgz", "integrity": "sha512-mC1Ps9l77/97qeOZc+HrOL7TIaOboHqMZ24dGVQrlxFcpPpfCHpH+qfUT7Dz+6mlG8+JPA1KfBQo19iC/+Ngcw==" }, + "streamsearch": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-0.1.2.tgz", + "integrity": "sha1-gIudDlb8Jz2Am6VzOOkpkZoanxo=" + }, "strict-uri-encode": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz", @@ -62772,6 +63543,54 @@ "postcss-selector-parser": "^6.0.4" } }, + "superagent": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/superagent/-/superagent-7.1.1.tgz", + "integrity": "sha512-CQ2weSS6M+doIwwYFoMatklhRbx6sVNdB99OEJ5czcP3cng76Ljqus694knFWgOj3RkrtxZqIgpe6vhe0J7QWQ==", + "dev": true, + "requires": { + "component-emitter": "^1.3.0", + "cookiejar": "^2.1.3", + "debug": "^4.3.3", + "fast-safe-stringify": "^2.1.1", + "form-data": "^4.0.0", + "formidable": "^2.0.1", + "methods": "^1.1.2", + "mime": "^2.5.0", + "qs": "^6.10.1", + "readable-stream": "^3.6.0", + "semver": "^7.3.5" + }, + "dependencies": { + "form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dev": true, + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + } + }, + "mime": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", + "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", + "dev": true + } + } + }, + "supertest": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/supertest/-/supertest-6.2.2.tgz", + "integrity": "sha512-wCw9WhAtKJsBvh07RaS+/By91NNE0Wh0DN19/hWPlBOU8tAfOtbZoVSV4xXeoKoxgPx0rx2y+y+8660XtE7jzg==", + "dev": true, + "requires": { + "methods": "^1.1.2", + "superagent": "^7.1.0" + } + }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -63328,6 +64147,59 @@ "yargs-parser": "20.x" } }, + "ts-loader": { + "version": "9.2.6", + "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.2.6.tgz", + "integrity": "sha512-QMTC4UFzHmu9wU2VHZEmWWE9cUajjfcdcws+Gh7FhiO+Dy0RnR1bNz0YCHqhI0yRowCE9arVnNxYHqELOy9Hjw==", + "dev": true, + "requires": { + "chalk": "^4.1.0", + "enhanced-resolve": "^5.0.0", + "micromatch": "^4.0.0", + "semver": "^7.3.4" + } + }, + "ts-node": { + "version": "10.5.0", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.5.0.tgz", + "integrity": "sha512-6kEJKwVxAJ35W4akuiysfKwKmjkbYxwQMTBaAxo9KKAx/Yd26mPUyhGz3ji+EsJoAgrLqVsYHNuuYwQe22lbtw==", + "dev": true, + "requires": { + "@cspotcode/source-map-support": "0.7.0", + "@tsconfig/node10": "^1.0.7", + "@tsconfig/node12": "^1.0.7", + "@tsconfig/node14": "^1.0.0", + "@tsconfig/node16": "^1.0.2", + "acorn": "^8.4.1", + "acorn-walk": "^8.1.1", + "arg": "^4.1.0", + "create-require": "^1.1.0", + "diff": "^4.0.1", + "make-error": "^1.1.1", + "v8-compile-cache-lib": "^3.0.0", + "yn": "3.1.1" + }, + "dependencies": { + "acorn": { + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.0.tgz", + "integrity": "sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==", + "dev": true + }, + "acorn-walk": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", + "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", + "dev": true + }, + "arg": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", + "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", + "dev": true + } + } + }, "tsconfig-paths": { "version": "3.12.0", "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.12.0.tgz", @@ -63374,6 +64246,15 @@ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", "dev": true }, + "tsutils": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", + "dev": true, + "requires": { + "tslib": "^1.8.1" + } + }, "tunnel-agent": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", @@ -63420,8 +64301,7 @@ "typedarray": { "version": "0.0.6", "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", - "dev": true + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=" }, "typedarray-to-buffer": { "version": "3.1.5", @@ -63864,6 +64744,12 @@ "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", "devOptional": true }, + "v8-compile-cache-lib": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.0.tgz", + "integrity": "sha512-mpSYqfsFvASnSn5qMiwrr4VKfumbPyONLCOPmsR3A6pTY/r0+tSaVbgPWSAIuzbk3lCTa+FForeTiO+wBQGkjA==", + "dev": true + }, "v8-to-istanbul": { "version": "8.1.1", "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-8.1.1.tgz", @@ -64715,6 +65601,12 @@ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==" }, + "yn": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", + "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", + "dev": true + }, "yocto-queue": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", diff --git a/package.json b/package.json index aab5c3e4dc..013f22ff48 100644 --- a/package.json +++ b/package.json @@ -9,9 +9,9 @@ "files": [], "workspaces": [ "./", - "./apps/*", - "./packages/*", - "./website" + "./apps", + "./website", + "./packages/*" ], "engines": { "node": ">=14.x" @@ -21,7 +21,7 @@ "lint": "eslint . --fix", "test": "jest --maxWorkers=100%", "ci:test": "jest --ci --coverage --forceExit --maxWorkers=4", - "all:clean": "rm -rf ./packages/**/dist && rm -rf ./apps/**/dist && rm -rf ./packages/**/tsconfig.build.tsbuildinfo", + "all:clean": "rm -rf ./packages/**/dist && rm -rf ./apps/dist && rm -rf ./packages/**/tsconfig.build.tsbuildinfo", "all:build": "lerna run build", "all:version": "lerna version $1 --yes --no-push --no-git-tag-version --exact", "all:publish": "lerna exec --no-private -- npm publish --tag latest --access public" diff --git a/tsconfig.json b/tsconfig.json index 5d41f0cc70..2fdec9e3c7 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -3,6 +3,9 @@ "compilerOptions": { "baseUrl": "./", "paths": { + "@defichain-apps/libs/*": [ + "apps/libs/*/src" + ], "@defichain/*": [ "packages/*/src" ]