From 2190ea306607a035043e92bb6eea3aaaeac79e47 Mon Sep 17 00:00:00 2001 From: liuyi Date: Tue, 17 Jun 2025 15:58:22 +0800 Subject: [PATCH] add yargs bun and pm2 --- nest-cli.json | 17 +- package.json | 4 + pnpm-lock.yaml | 1267 +++++++++++++++---- src/console/bin.ts | 5 + src/modules/core/commands/demo.command.ts | 21 + src/modules/core/commands/helpers/asset.ts | 11 + src/modules/core/commands/helpers/config.ts | 112 ++ src/modules/core/commands/helpers/start.ts | 114 ++ src/modules/core/commands/index.ts | 1 + src/modules/core/commands/start.command.ts | 71 ++ src/modules/core/commands/types.ts | 59 + src/modules/core/helpers/app.ts | 8 +- src/modules/core/helpers/command.ts | 54 + src/modules/core/helpers/utils.ts | 22 +- src/modules/core/types.ts | 6 + tsconfig.json | 1 + 16 files changed, 1524 insertions(+), 249 deletions(-) create mode 100644 src/console/bin.ts create mode 100644 src/modules/core/commands/demo.command.ts create mode 100644 src/modules/core/commands/helpers/asset.ts create mode 100644 src/modules/core/commands/helpers/config.ts create mode 100644 src/modules/core/commands/helpers/start.ts create mode 100644 src/modules/core/commands/index.ts create mode 100644 src/modules/core/commands/start.command.ts create mode 100644 src/modules/core/commands/types.ts create mode 100644 src/modules/core/helpers/command.ts diff --git a/nest-cli.json b/nest-cli.json index 94c90a1..a7b8d10 100644 --- a/nest-cli.json +++ b/nest-cli.json @@ -3,15 +3,20 @@ "collection": "@nestjs/schematics", "sourceRoot": "src", "compilerOptions": { + "assets": [ + "assets/**/*" + ], "deleteOutDir": true, "builder": "swc", "typeCheck": true, - "plugins": [{ - "name": "@nestjs/swagger", - "options":{ - "introspectComments": true, - "controllerKeyOfComment": "summary" + "plugins": [ + { + "name": "@nestjs/swagger", + "options": { + "introspectComments": true, + "controllerKeyOfComment": "summary" + } } - }] + ] } } diff --git a/package.json b/package.json index 7ed959c..f254ab9 100644 --- a/package.json +++ b/package.json @@ -6,6 +6,7 @@ "private": true, "license": "UNLICENSED", "scripts": { + "cli": "./node_modules/bun/bin/bun --bun ./console/bin.ts", "prebuild": "rimraf dist", "build": "cross-env NODE_ENV=production nest build", "format": "prettier --write \"src/**/*.ts\" \"test/**/*.ts\"", @@ -29,6 +30,7 @@ "@nestjs/typeorm": "^11.0.0", "bun": "^1.2.16", "chalk": "^5.4.1", + "chokidar": "^4.0.3", "class-transformer": "^0.5.1", "class-validator": "^0.14.2", "deepmerge": "^4.3.1", @@ -38,6 +40,8 @@ "lodash": "^4.17.21", "meilisearch": "^0.51.0", "mysql2": "^3.14.1", + "ora": "^8.2.0", + "pm2": "^6.0.8", "reflect-metadata": "^0.2.2", "rimraf": "^6.0.1", "rxjs": "^7.8.2", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index a169482..7234025 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -25,13 +25,16 @@ importers: version: 11.2.0(@fastify/static@8.2.0)(@nestjs/common@11.1.3(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.3(@nestjs/common@11.1.3(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2))(reflect-metadata@0.2.2)(rxjs@7.8.2))(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2) '@nestjs/typeorm': specifier: ^11.0.0 - version: 11.0.0(@nestjs/common@11.1.3(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.3(@nestjs/common@11.1.3(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2))(reflect-metadata@0.2.2)(rxjs@7.8.2))(reflect-metadata@0.2.2)(rxjs@7.8.2)(typeorm@0.3.24(mysql2@3.14.1)(reflect-metadata@0.2.2)(ts-node@10.9.2(@swc/core@1.12.1)(@types/node@24.0.1)(typescript@5.8.3))) + version: 11.0.0(@nestjs/common@11.1.3(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.3(@nestjs/common@11.1.3(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2))(reflect-metadata@0.2.2)(rxjs@7.8.2))(reflect-metadata@0.2.2)(rxjs@7.8.2)(typeorm@0.3.24(mysql2@3.14.1)(reflect-metadata@0.2.2)(ts-node@10.9.2(@swc/core@1.12.1)(@types/node@24.0.3)(typescript@5.8.3))) bun: specifier: ^1.2.16 version: 1.2.16 chalk: specifier: ^5.4.1 version: 5.4.1 + chokidar: + specifier: ^4.0.3 + version: 4.0.3 class-transformer: specifier: ^0.5.1 version: 0.5.1 @@ -59,6 +62,12 @@ importers: mysql2: specifier: ^3.14.1 version: 3.14.1 + ora: + specifier: ^8.2.0 + version: 8.2.0 + pm2: + specifier: ^6.0.8 + version: 6.0.8 reflect-metadata: specifier: ^0.2.2 version: 0.2.2 @@ -73,7 +82,7 @@ importers: version: 2.17.0 typeorm: specifier: ^0.3.24 - version: 0.3.24(mysql2@3.14.1)(reflect-metadata@0.2.2)(ts-node@10.9.2(@swc/core@1.12.1)(@types/node@24.0.1)(typescript@5.8.3)) + version: 0.3.24(mysql2@3.14.1)(reflect-metadata@0.2.2)(ts-node@10.9.2(@swc/core@1.12.1)(@types/node@24.0.3)(typescript@5.8.3)) validator: specifier: ^13.15.15 version: 13.15.15 @@ -116,7 +125,7 @@ importers: version: 9.8.0 '@nestjs/cli': specifier: ^11.0.7 - version: 11.0.7(@swc/cli@0.7.7(@swc/core@1.12.1)(chokidar@4.0.3))(@swc/core@1.12.1)(@types/node@24.0.1) + version: 11.0.7(@swc/cli@0.7.7(@swc/core@1.12.1)(chokidar@4.0.3))(@swc/core@1.12.1)(@types/node@24.0.3) '@nestjs/schematics': specifier: ^11.0.5 version: 11.0.5(chokidar@4.0.3)(typescript@5.8.3) @@ -143,7 +152,7 @@ importers: version: 4.17.17 '@types/node': specifier: ^24.0.1 - version: 24.0.1 + version: 24.0.3 '@types/sanitize-html': specifier: ^2.16.0 version: 2.16.0 @@ -152,16 +161,16 @@ importers: version: 6.0.3 '@types/validator': specifier: ^13.15.1 - version: 13.15.1 + version: 13.15.2 '@types/yargs': specifier: ^17.0.33 version: 17.0.33 '@typescript-eslint/eslint-plugin': specifier: ^8.34.0 - version: 8.34.0(@typescript-eslint/parser@8.34.0(eslint@9.29.0)(typescript@5.8.3))(eslint@9.29.0)(typescript@5.8.3) + version: 8.34.1(@typescript-eslint/parser@8.34.1(eslint@9.29.0)(typescript@5.8.3))(eslint@9.29.0)(typescript@5.8.3) '@typescript-eslint/parser': specifier: ^8.34.0 - version: 8.34.0(eslint@9.29.0)(typescript@5.8.3) + version: 8.34.1(eslint@9.29.0)(typescript@5.8.3) babel-jest: specifier: ^30.0.0 version: 30.0.0(@babel/core@7.27.4) @@ -176,31 +185,31 @@ importers: version: 9.29.0 eslint-config-airbnb-base: specifier: ^15.0.0 - version: 15.0.0(eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.34.0(eslint@9.29.0)(typescript@5.8.3))(eslint@9.29.0))(eslint@9.29.0) + version: 15.0.0(eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.34.1(eslint@9.29.0)(typescript@5.8.3))(eslint@9.29.0))(eslint@9.29.0) eslint-config-airbnb-typescript: specifier: ^18.0.0 - version: 18.0.0(@typescript-eslint/eslint-plugin@8.34.0(@typescript-eslint/parser@8.34.0(eslint@9.29.0)(typescript@5.8.3))(eslint@9.29.0)(typescript@5.8.3))(@typescript-eslint/parser@8.34.0(eslint@9.29.0)(typescript@5.8.3))(eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.34.0(eslint@9.29.0)(typescript@5.8.3))(eslint@9.29.0))(eslint@9.29.0) + version: 18.0.0(@typescript-eslint/eslint-plugin@8.34.1(@typescript-eslint/parser@8.34.1(eslint@9.29.0)(typescript@5.8.3))(eslint@9.29.0)(typescript@5.8.3))(@typescript-eslint/parser@8.34.1(eslint@9.29.0)(typescript@5.8.3))(eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.34.1(eslint@9.29.0)(typescript@5.8.3))(eslint@9.29.0))(eslint@9.29.0) eslint-config-prettier: specifier: ^10.1.5 version: 10.1.5(eslint@9.29.0) eslint-plugin-import: specifier: ^2.31.0 - version: 2.31.0(@typescript-eslint/parser@8.34.0(eslint@9.29.0)(typescript@5.8.3))(eslint@9.29.0) + version: 2.31.0(@typescript-eslint/parser@8.34.1(eslint@9.29.0)(typescript@5.8.3))(eslint@9.29.0) eslint-plugin-jest: specifier: ^28.13.5 - version: 28.13.5(@typescript-eslint/eslint-plugin@8.34.0(@typescript-eslint/parser@8.34.0(eslint@9.29.0)(typescript@5.8.3))(eslint@9.29.0)(typescript@5.8.3))(eslint@9.29.0)(jest@30.0.0(@types/node@24.0.1)(ts-node@10.9.2(@swc/core@1.12.1)(@types/node@24.0.1)(typescript@5.8.3)))(typescript@5.8.3) + version: 28.14.0(@typescript-eslint/eslint-plugin@8.34.1(@typescript-eslint/parser@8.34.1(eslint@9.29.0)(typescript@5.8.3))(eslint@9.29.0)(typescript@5.8.3))(eslint@9.29.0)(jest@30.0.0(@types/node@24.0.3)(ts-node@10.9.2(@swc/core@1.12.1)(@types/node@24.0.3)(typescript@5.8.3)))(typescript@5.8.3) eslint-plugin-prettier: specifier: ^5.4.1 version: 5.4.1(@types/eslint@9.6.1)(eslint-config-prettier@10.1.5(eslint@9.29.0))(eslint@9.29.0)(prettier@3.5.3) eslint-plugin-unused-imports: specifier: ^4.1.4 - version: 4.1.4(@typescript-eslint/eslint-plugin@8.34.0(@typescript-eslint/parser@8.34.0(eslint@9.29.0)(typescript@5.8.3))(eslint@9.29.0)(typescript@5.8.3))(eslint@9.29.0) + version: 4.1.4(@typescript-eslint/eslint-plugin@8.34.1(@typescript-eslint/parser@8.34.1(eslint@9.29.0)(typescript@5.8.3))(eslint@9.29.0)(typescript@5.8.3))(eslint@9.29.0) globals: specifier: ^16.2.0 version: 16.2.0 jest: specifier: 30.0.0 - version: 30.0.0(@types/node@24.0.1)(ts-node@10.9.2(@swc/core@1.12.1)(@types/node@24.0.1)(typescript@5.8.3)) + version: 30.0.0(@types/node@24.0.3)(ts-node@10.9.2(@swc/core@1.12.1)(@types/node@24.0.3)(typescript@5.8.3)) prettier: specifier: ^3.5.3 version: 3.5.3 @@ -215,13 +224,13 @@ importers: version: 6.1.7(typescript@5.8.3) ts-jest: specifier: 29.4.0 - version: 29.4.0(@babel/core@7.27.4)(@jest/transform@30.0.0)(@jest/types@30.0.0)(babel-jest@30.0.0(@babel/core@7.27.4))(jest-util@30.0.0)(jest@30.0.0(@types/node@24.0.1)(ts-node@10.9.2(@swc/core@1.12.1)(@types/node@24.0.1)(typescript@5.8.3)))(typescript@5.8.3) + version: 29.4.0(@babel/core@7.27.4)(@jest/transform@30.0.0)(@jest/types@30.0.0)(babel-jest@30.0.0(@babel/core@7.27.4))(jest-util@30.0.0)(jest@30.0.0(@types/node@24.0.3)(ts-node@10.9.2(@swc/core@1.12.1)(@types/node@24.0.3)(typescript@5.8.3)))(typescript@5.8.3) ts-loader: specifier: ^9.5.2 version: 9.5.2(typescript@5.8.3)(webpack@5.99.6(@swc/core@1.12.1)) ts-node: specifier: ^10.9.2 - version: 10.9.2(@swc/core@1.12.1)(@types/node@24.0.1)(typescript@5.8.3) + version: 10.9.2(@swc/core@1.12.1)(@types/node@24.0.3)(typescript@5.8.3) tsconfig-paths: specifier: 4.2.0 version: 4.2.0 @@ -1580,6 +1589,20 @@ packages: resolution: {integrity: sha512-YLT9Zo3oNPJoBjBc4q8G2mjU4tqIbf5CEOORbUUr48dCD9q3umJ3IPlVqOqDakPfd2HuwccBaqlGhN4Gmr5OWg==} engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} + '@pm2/agent@2.1.1': + resolution: {integrity: sha512-0V9ckHWd/HSC8BgAbZSoq8KXUG81X97nSkAxmhKDhmF8vanyaoc1YXwc2KVkbWz82Rg4gjd2n9qiT3i7bdvGrQ==} + + '@pm2/io@6.1.0': + resolution: {integrity: sha512-IxHuYURa3+FQ6BKePlgChZkqABUKFYH6Bwbw7V/pWU1pP6iR1sCI26l7P9ThUEB385ruZn/tZS3CXDUF5IA1NQ==} + engines: {node: '>=6.0'} + + '@pm2/js-api@0.8.0': + resolution: {integrity: sha512-nmWzrA/BQZik3VBz+npRcNIu01kdBhWL0mxKmP1ciF/gTcujPTQqt027N9fc1pK9ERM8RipFhymw7RcmCyOEYA==} + engines: {node: '>=4.0'} + + '@pm2/pm2-version-check@1.0.4': + resolution: {integrity: sha512-SXsM27SGH3yTWKc2fKR4SYNxsmnvuBQ9dd6QHtEWmiZ/VqaOYPAIlS8+vMcn27YLtAEBGvNRSh3TPNvtjZgfqA==} + '@rtsao/scc@1.1.0': resolution: {integrity: sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==} @@ -1705,6 +1728,9 @@ packages: '@tokenizer/token@0.3.0': resolution: {integrity: sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==} + '@tootallnate/quickjs-emscripten@0.23.0': + resolution: {integrity: sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==} + '@tsconfig/node10@1.0.11': resolution: {integrity: sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==} @@ -1777,8 +1803,8 @@ packages: '@types/methods@1.1.4': resolution: {integrity: sha512-ymXWVrDiCxTBE3+RIrrP533E70eA+9qu7zdWoHuOmGujkYtzf4HQF96b8nwHLqhuf4ykX61IGRIB38CC6/sImQ==} - '@types/node@24.0.1': - resolution: {integrity: sha512-MX4Zioh39chHlDJbKmEgydJDS3tspMP/lnQC67G3SWsTnb9NeYVWOjkxpOSy4oMfPs4StcWHwBrvUb4ybfnuaw==} + '@types/node@24.0.3': + resolution: {integrity: sha512-R4I/kzCYAdRLzfiCabn9hxWfbuHS573x+r0dJMkkzThEa7pbrcDWK+9zu3e7aBOouf+rQAciqPFMnxwr0aWgKg==} '@types/sanitize-html@2.16.0': resolution: {integrity: sha512-l6rX1MUXje5ztPT0cAFtUayXF06DqPhRyfVXareEN5gGCFaP/iwsxIyKODr9XDhfxPpN6vXUFNfo5kZMXCxBtw==} @@ -1792,8 +1818,8 @@ packages: '@types/supertest@6.0.3': resolution: {integrity: sha512-8WzXq62EXFhJ7QsH3Ocb/iKQ/Ty9ZVWnVzoTKc9tyyFRRF3a74Tk2+TLFgaFFw364Ere+npzHKEJ6ga2LzIL7w==} - '@types/validator@13.15.1': - resolution: {integrity: sha512-9gG6ogYcoI2mCMLdcO0NYI0AYrbxIjv0MDmy/5Ywo6CpWWrqYayc+mmgxRsCgtcGJm9BSbXkMsmxGah1iGHAAQ==} + '@types/validator@13.15.2': + resolution: {integrity: sha512-y7pa/oEJJ4iGYBxOpfAKn5b9+xuihvzDVnC/OSvlVnGxVg0pOqmjiMafiJ1KVNQEaPZf9HsEp5icEwGg8uIe5Q==} '@types/yargs-parser@21.0.3': resolution: {integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==} @@ -1801,63 +1827,63 @@ packages: '@types/yargs@17.0.33': resolution: {integrity: sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==} - '@typescript-eslint/eslint-plugin@8.34.0': - resolution: {integrity: sha512-QXwAlHlbcAwNlEEMKQS2RCgJsgXrTJdjXT08xEgbPFa2yYQgVjBymxP5DrfrE7X7iodSzd9qBUHUycdyVJTW1w==} + '@typescript-eslint/eslint-plugin@8.34.1': + resolution: {integrity: sha512-STXcN6ebF6li4PxwNeFnqF8/2BNDvBupf2OPx2yWNzr6mKNGF7q49VM00Pz5FaomJyqvbXpY6PhO+T9w139YEQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - '@typescript-eslint/parser': ^8.34.0 + '@typescript-eslint/parser': ^8.34.1 eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.9.0' - '@typescript-eslint/parser@8.34.0': - resolution: {integrity: sha512-vxXJV1hVFx3IXz/oy2sICsJukaBrtDEQSBiV48/YIV5KWjX1dO+bcIr/kCPrW6weKXvsaGKFNlwH0v2eYdRRbA==} + '@typescript-eslint/parser@8.34.1': + resolution: {integrity: sha512-4O3idHxhyzjClSMJ0a29AcoK0+YwnEqzI6oz3vlRf3xw0zbzt15MzXwItOlnr5nIth6zlY2RENLsOPvhyrKAQA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.9.0' - '@typescript-eslint/project-service@8.34.0': - resolution: {integrity: sha512-iEgDALRf970/B2YExmtPMPF54NenZUf4xpL3wsCRx/lgjz6ul/l13R81ozP/ZNuXfnLCS+oPmG7JIxfdNYKELw==} + '@typescript-eslint/project-service@8.34.1': + resolution: {integrity: sha512-nuHlOmFZfuRwLJKDGQOVc0xnQrAmuq1Mj/ISou5044y1ajGNp2BNliIqp7F2LPQ5sForz8lempMFCovfeS1XoA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <5.9.0' - '@typescript-eslint/scope-manager@8.34.0': - resolution: {integrity: sha512-9Ac0X8WiLykl0aj1oYQNcLZjHgBojT6cW68yAgZ19letYu+Hxd0rE0veI1XznSSst1X5lwnxhPbVdwjDRIomRw==} + '@typescript-eslint/scope-manager@8.34.1': + resolution: {integrity: sha512-beu6o6QY4hJAgL1E8RaXNC071G4Kso2MGmJskCFQhRhg8VOH/FDbC8soP8NHN7e/Hdphwp8G8cE6OBzC8o41ZA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/tsconfig-utils@8.34.0': - resolution: {integrity: sha512-+W9VYHKFIzA5cBeooqQxqNriAP0QeQ7xTiDuIOr71hzgffm3EL2hxwWBIIj4GuofIbKxGNarpKqIq6Q6YrShOA==} + '@typescript-eslint/tsconfig-utils@8.34.1': + resolution: {integrity: sha512-K4Sjdo4/xF9NEeA2khOb7Y5nY6NSXBnod87uniVYW9kHP+hNlDV8trUSFeynA2uxWam4gIWgWoygPrv9VMWrYg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <5.9.0' - '@typescript-eslint/type-utils@8.34.0': - resolution: {integrity: sha512-n7zSmOcUVhcRYC75W2pnPpbO1iwhJY3NLoHEtbJwJSNlVAZuwqu05zY3f3s2SDWWDSo9FdN5szqc73DCtDObAg==} + '@typescript-eslint/type-utils@8.34.1': + resolution: {integrity: sha512-Tv7tCCr6e5m8hP4+xFugcrwTOucB8lshffJ6zf1mF1TbU67R+ntCc6DzLNKM+s/uzDyv8gLq7tufaAhIBYeV8g==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.9.0' - '@typescript-eslint/types@8.34.0': - resolution: {integrity: sha512-9V24k/paICYPniajHfJ4cuAWETnt7Ssy+R0Rbcqo5sSFr3QEZ/8TSoUi9XeXVBGXCaLtwTOKSLGcInCAvyZeMA==} + '@typescript-eslint/types@8.34.1': + resolution: {integrity: sha512-rjLVbmE7HR18kDsjNIZQHxmv9RZwlgzavryL5Lnj2ujIRTeXlKtILHgRNmQ3j4daw7zd+mQgy+uyt6Zo6I0IGA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/typescript-estree@8.34.0': - resolution: {integrity: sha512-rOi4KZxI7E0+BMqG7emPSK1bB4RICCpF7QD3KCLXn9ZvWoESsOMlHyZPAHyG04ujVplPaHbmEvs34m+wjgtVtg==} + '@typescript-eslint/typescript-estree@8.34.1': + resolution: {integrity: sha512-rjCNqqYPuMUF5ODD+hWBNmOitjBWghkGKJg6hiCHzUvXRy6rK22Jd3rwbP2Xi+R7oYVvIKhokHVhH41BxPV5mA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <5.9.0' - '@typescript-eslint/utils@8.34.0': - resolution: {integrity: sha512-8L4tWatGchV9A1cKbjaavS6mwYwp39jql8xUmIIKJdm+qiaeHy5KMKlBrf30akXAWBzn2SqKsNOtSENWUwg7XQ==} + '@typescript-eslint/utils@8.34.1': + resolution: {integrity: sha512-mqOwUdZ3KjtGk7xJJnLbHxTuWVn3GO2WZZuM+Slhkun4+qthLdXx32C8xIXbO1kfCECb3jIs3eoxK3eryk7aoQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.9.0' - '@typescript-eslint/visitor-keys@8.34.0': - resolution: {integrity: sha512-qHV7pW7E85A0x6qyrFn+O+q1k1p3tQCsqIZ1KZ5ESLXY57aTvUd3/a4rdPTeXisvhXn2VQG0VSKUqs8KHF2zcA==} + '@typescript-eslint/visitor-keys@8.34.1': + resolution: {integrity: sha512-xoh5rJ+tgsRKoXnkBPFRLZ7rjKM0AfVbC68UZ/ECXoDbfggb9RbEySN359acY1vS3qZ0jVTVWzbtfapwm5ztxw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@ungap/structured-clone@1.3.0': @@ -2066,6 +2092,10 @@ packages: engines: {node: '>=0.4.0'} hasBin: true + agent-base@7.1.3: + resolution: {integrity: sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw==} + engines: {node: '>= 14'} + ajv-formats@2.1.1: resolution: {integrity: sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==} peerDependencies: @@ -2098,6 +2128,12 @@ packages: ajv@8.17.1: resolution: {integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==} + amp-message@0.1.2: + resolution: {integrity: sha512-JqutcFwoU1+jhv7ArgW38bqrE+LQdcRv4NxNw0mp0JHQyB6tXesWRjtYKlDgHRY2o3JE5UTaBGUK8kSWUdxWUg==} + + amp@0.3.1: + resolution: {integrity: sha512-OwIuC4yZaRogHKiuU5WlMR5Xk/jAcpPtawWL05Gj8Lvm2F6mwoJt4O/bHI+DHwG79vWd+8OFYM4/BzYqyRd3qw==} + ansi-colors@4.1.3: resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} engines: {node: '>=6'} @@ -2130,6 +2166,10 @@ packages: resolution: {integrity: sha512-0qWUglt9JEqLFr3w1I1pbrChn1grhaiAR2ocX1PP/flRmxgtwTzPFFFnfIlD6aMOLQZgSuCRlidD70lvx8yhzg==} engines: {node: '>=14'} + ansis@4.0.0-node10: + resolution: {integrity: sha512-BRrU0Bo1X9dFGw6KgGz6hWrqQuOlVEDOzkb0QSLZY9sXHqA7pNj7yHPVJRz7y/rj4EOJ3d/D5uxH+ee9leYgsg==} + engines: {node: '>=10'} + anymatch@3.1.3: resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} engines: {node: '>= 8'} @@ -2180,10 +2220,17 @@ packages: asap@2.0.6: resolution: {integrity: sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==} + ast-types@0.13.4: + resolution: {integrity: sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==} + engines: {node: '>=4'} + async-function@1.0.0: resolution: {integrity: sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==} engines: {node: '>= 0.4'} + async@2.6.4: + resolution: {integrity: sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==} + async@3.2.6: resolution: {integrity: sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==} @@ -2257,6 +2304,10 @@ packages: base64-js@1.5.1: resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} + basic-ftp@5.0.5: + resolution: {integrity: sha512-4Bcg1P8xhUuqcii/S0Z9wiHIrQVPMermM1any+MX5GeGD7faD3/msQUDGLol9wOcz4/jbg/WJnGqoJF6LiBdtg==} + engines: {node: '>=10.0.0'} + bin-version-check@5.1.0: resolution: {integrity: sha512-bYsvMqJ8yNGILLz1KP9zKLzQ6YpljV3ln1gqhuLkUtyfGi3qXKGuK2p+U4NAvjVFzDFiBBtOpCOSFNuYYEGZ5g==} engines: {node: '>=12'} @@ -2265,12 +2316,24 @@ packages: resolution: {integrity: sha512-nk5wEsP4RiKjG+vF+uG8lFsEn4d7Y6FVDamzzftSunXOoOcOOkzcWdKVlGgFFwlUQCj63SgnUkLLGF8v7lufhw==} engines: {node: '>=12'} + binary-extensions@2.3.0: + resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} + engines: {node: '>=8'} + bl@4.1.0: resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} + blessed@0.1.81: + resolution: {integrity: sha512-LoF5gae+hlmfORcG1M5+5XZi4LBmvlXTzwJWzUlPryN/SJdSflZvROM2TwkT0GMpq7oqT48NRd4GS7BiVBc5OQ==} + engines: {node: '>= 0.8.0'} + hasBin: true + bluebird@3.7.2: resolution: {integrity: sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==} + bodec@0.1.0: + resolution: {integrity: sha512-Ylo+MAo5BDUq1KA3f3R/MFhh+g8cnHmo8bz3YPGhI1znrMaf77ol1sfvYJzsw3nTE+Y2GryfDxBaR+AqpAkEHQ==} + brace-expansion@1.1.12: resolution: {integrity: sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==} @@ -2348,6 +2411,10 @@ packages: caniuse-lite@1.0.30001723: resolution: {integrity: sha512-1R/elMjtehrFejxwmexeXAtae5UO9iSyFn6G/I806CYC/BLyyBk1EPhrKBkWhy6wM6Xnm47dSJQec+tLJ39WHw==} + chalk@3.0.0: + resolution: {integrity: sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==} + engines: {node: '>=8'} + chalk@4.1.2: resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} engines: {node: '>=10'} @@ -2363,6 +2430,13 @@ packages: chardet@0.7.0: resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} + charm@0.1.2: + resolution: {integrity: sha512-syedaZ9cPe7r3hoQA9twWYKu5AIyCswN5+szkmPBe9ccdLrj4bYaCnLVPTLd2kgVRc7+zoX4tyPgRnFKCj5YjQ==} + + chokidar@3.6.0: + resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} + engines: {node: '>= 8.10.0'} + chokidar@4.0.3: resolution: {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==} engines: {node: '>= 14.16.0'} @@ -2392,6 +2466,10 @@ packages: resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==} engines: {node: '>=8'} + cli-cursor@5.0.0: + resolution: {integrity: sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==} + engines: {node: '>=18'} + cli-spinners@2.9.2: resolution: {integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==} engines: {node: '>=6'} @@ -2400,6 +2478,10 @@ packages: resolution: {integrity: sha512-+W/5efTR7y5HRD7gACw9yQjqMVvEMLBHmboM/kPWam+H+Hmyrgjh6YncVKK122YZkXrLudzTuAukUw9FnMf7IQ==} engines: {node: 10.* || >= 12.*} + cli-tableau@2.0.1: + resolution: {integrity: sha512-he+WTicka9cl0Fg/y+YyxcN6/bfQ/1O3QmgxRXDhABKqLzvoOSM4fMzp39uMyLBulAFuywD2N7UaoQE7WaADxQ==} + engines: {node: '>=8.10.0'} + cli-width@4.1.0: resolution: {integrity: sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==} engines: {node: '>= 12'} @@ -2434,6 +2516,9 @@ packages: resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} engines: {node: '>= 0.8'} + commander@2.15.1: + resolution: {integrity: sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag==} + commander@2.20.3: resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} @@ -2498,6 +2583,9 @@ packages: create-require@1.1.1: resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} + croner@4.1.97: + resolution: {integrity: sha512-/f6gpQuxDaqXu+1kwQYSckUglPaOrHdbIlBAu0YuW8/Cdb45XwXYNUBXg3r/9Mo6n540Kn/smKcZWko5x99KrQ==} + cross-env@7.0.3: resolution: {integrity: sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==} engines: {node: '>=10.14', npm: '>=6', yarn: '>=1'} @@ -2507,6 +2595,13 @@ packages: resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} engines: {node: '>= 8'} + culvert@0.1.2: + resolution: {integrity: sha512-yi1x3EAWKjQTreYWeSd98431AV+IEE0qoDyOoaHJ7KJ21gv6HtBXHVLX74opVSGqcR8/AbjJBHAHpcOy2bj5Gg==} + + data-uri-to-buffer@6.0.2: + resolution: {integrity: sha512-7hvf7/GW8e86rW0ptuwS3OcBGDjIi6SZva7hCyWC0yYry2cOPmLIjXAUHI6DK2HsnwJd9ifmt57i8eV2n4YNpw==} + engines: {node: '>= 14'} + data-view-buffer@1.0.2: resolution: {integrity: sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==} engines: {node: '>= 0.4'} @@ -2522,6 +2617,9 @@ packages: dayjs@1.11.13: resolution: {integrity: sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==} + dayjs@1.8.36: + resolution: {integrity: sha512-3VmRXEtw7RZKAf+4Tv1Ym9AGeo8r8+CjDi26x+7SYQil1UqtqdaokhzoEJohqlzt0m5kacJSDhJQkG/LWhpRBw==} + debug@3.2.7: resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} peerDependencies: @@ -2530,6 +2628,15 @@ packages: supports-color: optional: true + debug@4.3.7: + resolution: {integrity: sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + debug@4.4.1: resolution: {integrity: sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==} engines: {node: '>=6.0'} @@ -2577,6 +2684,10 @@ packages: resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} engines: {node: '>= 0.4'} + degenerator@5.0.1: + resolution: {integrity: sha512-TllpMR/t0M5sqCXfj85i4XaAzxmS5tVA16dqvdkMwGmzI+dXLXnw3J+3Vdv7VKw+ThlTMboK6i9rnZ6Nntj5CQ==} + engines: {node: '>= 14'} + delayed-stream@1.0.0: resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} engines: {node: '>=0.4.0'} @@ -2641,8 +2752,8 @@ packages: engines: {node: '>=0.10.0'} hasBin: true - electron-to-chromium@1.5.167: - resolution: {integrity: sha512-LxcRvnYO5ez2bMOFpbuuVuAI5QNeY1ncVytE/KXaL6ZNfzX1yPlAO0nSOyIHx2fVAuUprMqPs/TdVhUFZy7SIQ==} + electron-to-chromium@1.5.168: + resolution: {integrity: sha512-RUNQmFLNIWVW6+z32EJQ5+qx8ci6RGvdtDC0Ls+F89wz6I2AthpXF0w0DIrn2jpLX0/PU9ZCo+Qp7bg/EckJmA==} emittery@0.13.1: resolution: {integrity: sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==} @@ -2661,6 +2772,10 @@ packages: resolution: {integrity: sha512-ZSW3ma5GkcQBIpwZTSRAI8N71Uuwgs93IezB7mf7R60tC8ZbJideoDNKjHn2O9KIlx6rkGTTEk1xUCK2E1Y2Yg==} engines: {node: '>=10.13.0'} + enquirer@2.3.6: + resolution: {integrity: sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==} + engines: {node: '>=8.6'} + entities@4.5.0: resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} engines: {node: '>=0.12'} @@ -2714,6 +2829,11 @@ packages: resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} engines: {node: '>=10'} + escodegen@2.1.0: + resolution: {integrity: sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==} + engines: {node: '>=6.0'} + hasBin: true + eslint-config-airbnb-base@15.0.0: resolution: {integrity: sha512-xaX3z4ZZIcFLvh2oUNvcX5oEofXda7giYmuplVxoOg5A7EXJMrUyqRgR+mhDhPK8LZ4PttFOBvCYDbX3sUoUig==} engines: {node: ^10.12.0 || >=12.0.0} @@ -2768,8 +2888,8 @@ packages: '@typescript-eslint/parser': optional: true - eslint-plugin-jest@28.13.5: - resolution: {integrity: sha512-ThdhaLPqK78iVjWY1zIfe4WdcVB0NgxZzsOE38SRCc/i3lPIcdfkOuWMC6m96LAg9zAbPPY7LSTXXT0Pf8J7pQ==} + eslint-plugin-jest@28.14.0: + resolution: {integrity: sha512-P9s/qXSMTpRTerE2FQ0qJet2gKbcGyFTPAJipoKxmWqR6uuFqIqk8FuEfg5yBieOezVrEfAMZrEwJ6yEp+1MFQ==} engines: {node: ^16.10.0 || ^18.12.0 || >=20.0.0} peerDependencies: '@typescript-eslint/eslint-plugin': ^6.0.0 || ^7.0.0 || ^8.0.0 @@ -2859,6 +2979,12 @@ packages: resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} engines: {node: '>=0.10.0'} + eventemitter2@5.0.1: + resolution: {integrity: sha512-5EM1GHXycJBS6mauYAbVKT1cVs7POKWb2NXD4Vyt8dDqeZa7LaDK1/sjtL+Zb0lzTpSNil4596Dyu97hz37QLg==} + + eventemitter2@6.4.9: + resolution: {integrity: sha512-JEPTiaOt9f04oa6NOkc4aH+nVp5I3wEjpHbIPqfgCdD5v5bUzy7xQqwcVO2aDQgOWhI28da57HksMrzK9HlRxg==} + events@3.3.0: resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} engines: {node: '>=0.8.x'} @@ -2891,6 +3017,9 @@ packages: resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==} engines: {node: '>=4'} + extrareqp2@1.0.0: + resolution: {integrity: sha512-Gum0g1QYb6wpPJCVypWP3bbIuaibcFiJcpuPM10YSXp/tzqi84x9PJageob+eN4xVRIOto4wjSGNLyMD54D2xA==} + fast-decode-uri-component@1.0.1: resolution: {integrity: sha512-WKgKWg5eUxvRZGwW8FvfbaH7AXSh2cL+3j5fMGzUMCxWBJ3dV3a7Wz8y2f/uQ0e3B6WmodD3oS54jTQ9HVTIIg==} @@ -2907,6 +3036,9 @@ packages: resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==} engines: {node: '>=8.6.0'} + fast-json-patch@3.1.1: + resolution: {integrity: sha512-vf6IHUX2SBcA+5/+4883dsIjpBTqmfBjmYiWK1savxQmFk4JfBMLa7ynTYOs1Rolp/T1betJxHiGD3g1Mn8lUQ==} + fast-json-stable-stringify@2.1.0: resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} @@ -2941,6 +3073,9 @@ packages: fb-watchman@2.0.2: resolution: {integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==} + fclone@1.0.11: + resolution: {integrity: sha512-GDqVQezKzRABdeqflsgMr7ktzgF9CyS+p2oe0jJqUY6izSSbhPIQJDpoU4PtGcD7VPM9xh/dVrTu6z1nwgmEGw==} + fflate@0.8.2: resolution: {integrity: sha512-cPJU47OaAoCbg0pBvzsgpTPhmhqI5eJjh/JIu8tPj5q+T7iLvW/JAYUqmE7KOB4R1ZyEhzBaIQpQpardBF5z8A==} @@ -2998,6 +3133,15 @@ packages: flatted@3.3.3: resolution: {integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==} + follow-redirects@1.15.9: + resolution: {integrity: sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==} + engines: {node: '>=4.0'} + peerDependencies: + debug: '*' + peerDependenciesMeta: + debug: + optional: true + for-each@0.3.5: resolution: {integrity: sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==} engines: {node: '>= 0.4'} @@ -3097,6 +3241,21 @@ packages: resolution: {integrity: sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==} engines: {node: '>= 0.4'} + get-uri@6.0.4: + resolution: {integrity: sha512-E1b1lFFLvLgak2whF2xDBcOy6NLVGZBqqjJjsIhvopKfWWEi64pLVTWWehV8KlLerZkfNTA95sTe2OdJKm1OzQ==} + engines: {node: '>= 14'} + + git-node-fs@1.0.0: + resolution: {integrity: sha512-bLQypt14llVXBg0S0u8q8HmU7g9p3ysH+NvVlae5vILuUvs759665HvmR5+wb04KjHyjFcDRxdYb4kyNnluMUQ==} + peerDependencies: + js-git: ^0.7.8 + peerDependenciesMeta: + js-git: + optional: true + + git-sha1@0.1.2: + resolution: {integrity: sha512-2e/nZezdVlyCopOCYHeW0onkbZg7xP1Ad6pndPy1rCygeRykefUS6r7oA5cJRGEFvseiaz5a/qUHFVX1dd6Isg==} + glob-parent@5.1.2: resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} engines: {node: '>= 6'} @@ -3200,10 +3359,18 @@ packages: resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} engines: {node: '>= 0.8'} + http-proxy-agent@7.0.2: + resolution: {integrity: sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==} + engines: {node: '>= 14'} + http2-wrapper@2.2.1: resolution: {integrity: sha512-V5nVw1PAOgfI3Lmeaj2Exmeg7fenjhRUgz1lPSezy1CuhPYbgQtbQj4jZfEAEMlaL+vupsvhjqCyjzob0yxsmQ==} engines: {node: '>=10.19.0'} + https-proxy-agent@7.0.6: + resolution: {integrity: sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==} + engines: {node: '>= 14'} + human-signals@2.1.0: resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} engines: {node: '>=10.17.0'} @@ -3247,6 +3414,9 @@ packages: inherits@2.0.4: resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + ini@1.3.8: + resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} + inspect-with-kind@1.0.5: resolution: {integrity: sha512-MAQUJuIo7Xqk8EVNP+6d3CKq9c80hi4tjIbIAT6lmGW9W6WzlHiu9PS8uSuUYU+Do+j1baiFp3H25XEVxDIG2g==} @@ -3254,6 +3424,10 @@ packages: resolution: {integrity: sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==} engines: {node: '>= 0.4'} + ip-address@9.0.5: + resolution: {integrity: sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==} + engines: {node: '>= 12'} + ipaddr.js@2.2.0: resolution: {integrity: sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA==} engines: {node: '>= 10'} @@ -3273,6 +3447,10 @@ packages: resolution: {integrity: sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==} engines: {node: '>= 0.4'} + is-binary-path@2.1.0: + resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} + engines: {node: '>=8'} + is-boolean-object@1.2.2: resolution: {integrity: sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==} engines: {node: '>= 0.4'} @@ -3321,6 +3499,10 @@ packages: resolution: {integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==} engines: {node: '>=8'} + is-interactive@2.0.0: + resolution: {integrity: sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==} + engines: {node: '>=12'} + is-map@2.0.3: resolution: {integrity: sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==} engines: {node: '>= 0.4'} @@ -3384,6 +3566,14 @@ packages: resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} engines: {node: '>=10'} + is-unicode-supported@1.3.0: + resolution: {integrity: sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==} + engines: {node: '>=12'} + + is-unicode-supported@2.1.0: + resolution: {integrity: sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==} + engines: {node: '>=18'} + is-weakmap@2.0.2: resolution: {integrity: sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==} engines: {node: '>= 0.4'} @@ -3590,6 +3780,9 @@ packages: node-notifier: optional: true + js-git@0.7.8: + resolution: {integrity: sha512-+E5ZH/HeRnoc/LW0AmAyhU+mNcWBzAKE+30+IDMLSLbbK+Tdt02AdkOKq9u15rlJsDEGFqtgckc8ZM59LhhiUA==} + js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} @@ -3601,6 +3794,9 @@ packages: resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} hasBin: true + jsbn@1.1.0: + resolution: {integrity: sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==} + jsesc@3.0.2: resolution: {integrity: sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==} engines: {node: '>=6'} @@ -3629,6 +3825,9 @@ packages: json-stable-stringify-without-jsonify@1.0.1: resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} + json-stringify-safe@5.0.1: + resolution: {integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==} + json5@1.0.2: resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==} hasBin: true @@ -3707,6 +3906,10 @@ packages: resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} engines: {node: '>=10'} + log-symbols@6.0.0: + resolution: {integrity: sha512-i24m8rpwhmPIS4zscNzK6MSEhk0DUWa/8iYQWxhffV8jkI4Phvs3F+quL5xvS0gdQR0FyTCMMH33Y78dDTzzIw==} + engines: {node: '>=18'} + long@5.3.2: resolution: {integrity: sha512-mNAgZ1GmyNhD7AuqnTG3/VQ26o760+ZYBPKjPvugO8+nLbYfX6TVpJPseBvopbdY+qpZ/lKUnmEc1LeZYS3QAA==} @@ -3724,6 +3927,10 @@ packages: lru-cache@5.1.1: resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} + lru-cache@6.0.0: + resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} + engines: {node: '>=10'} + lru-cache@7.18.3: resolution: {integrity: sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==} engines: {node: '>=12'} @@ -3797,6 +4004,10 @@ packages: resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} engines: {node: '>=6'} + mimic-function@5.0.1: + resolution: {integrity: sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==} + engines: {node: '>=18'} + mimic-response@3.1.0: resolution: {integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==} engines: {node: '>=10'} @@ -3827,9 +4038,20 @@ packages: resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} engines: {node: '>=16 || 14 >=14.17'} + mkdirp@1.0.4: + resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} + engines: {node: '>=10'} + hasBin: true + + module-details-from-path@1.0.4: + resolution: {integrity: sha512-EGWKgxALGMgzvxYF1UyGTy0HXX/2vHLkw6+NvDKW2jypWbHpjQuj4UMcqQWXHERJhVGKikolT06G3bcKe4fi7w==} + ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + mute-stream@0.0.8: + resolution: {integrity: sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==} + mute-stream@2.0.0: resolution: {integrity: sha512-WWdIxpyjEn+FhQJQQv9aQAYlHoNVdzIzUySNV1gHUPDSdZJ3yZn7pAAbQcV7B56Mvu881q9FZV+0Vx2xC44VWA==} engines: {node: ^18.17.0 || >=20.5.0} @@ -3855,9 +4077,18 @@ packages: natural-compare@1.4.0: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + needle@2.4.0: + resolution: {integrity: sha512-4Hnwzr3mi5L97hMYeNl8wRW/Onhy4nUKR/lVemJ8gJedxxUyBLm9kkrDColJvoSfwi0jCNhD+xCdOtiGDQiRZg==} + engines: {node: '>= 4.4.x'} + hasBin: true + neo-async@2.6.2: resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} + netmask@2.0.2: + resolution: {integrity: sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==} + engines: {node: '>= 0.4.0'} + node-abort-controller@3.1.1: resolution: {integrity: sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ==} @@ -3921,6 +4152,10 @@ packages: resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} engines: {node: '>=6'} + onetime@7.0.0: + resolution: {integrity: sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==} + engines: {node: '>=18'} + optionator@0.9.4: resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} engines: {node: '>= 0.8.0'} @@ -3929,6 +4164,10 @@ packages: resolution: {integrity: sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==} engines: {node: '>=10'} + ora@8.2.0: + resolution: {integrity: sha512-weP+BZ8MVNnlCm8c0Qdc1WSWq4Qn7I+9CJGm7Qali6g44e/PUzbjNqJX5NJ9ljlNMosfJvg1fKEGILklK9cwnw==} + engines: {node: '>=18'} + os-tmpdir@1.0.2: resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} engines: {node: '>=0.10.0'} @@ -3969,9 +4208,20 @@ packages: resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} engines: {node: '>=6'} + pac-proxy-agent@7.2.0: + resolution: {integrity: sha512-TEB8ESquiLMc0lV8vcd5Ql/JAKAoyzHFXaStwjkzpOpC5Yv+pIzLfHvjTSdf3vpa2bMiUQrg9i6276yn8666aA==} + engines: {node: '>= 14'} + + pac-resolver@7.0.1: + resolution: {integrity: sha512-5NPgf87AT2STgwa2ntRMr45jTKrYBGkVU36yT0ig/n/GMAa3oPqhZfIQ2kMEimReg0+t9kZViDVZ83qfVUlckg==} + engines: {node: '>= 14'} + package-json-from-dist@1.0.1: resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} + pako@0.2.9: + resolution: {integrity: sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA==} + parent-module@1.0.1: resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} engines: {node: '>=6'} @@ -4036,6 +4286,14 @@ packages: resolution: {integrity: sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==} engines: {node: '>=12'} + pidusage@2.0.21: + resolution: {integrity: sha512-cv3xAQos+pugVX+BfXpHsbyz/dLzX+lr44zNMsYiGxUw+kV5sgQCIcLd1z+0vq+KyC7dJ+/ts2PsfgWfSC3WXA==} + engines: {node: '>=8'} + + pidusage@3.0.2: + resolution: {integrity: sha512-g0VU+y08pKw5M8EZ2rIGiEBaB8wrQMjYGFfW2QVIfyT8V+fq8YFLkvlz4bz5ljvFDJYNFCWT3PWqcRr2FKO81w==} + engines: {node: '>=10'} + pino-abstract-transport@2.0.0: resolution: {integrity: sha512-F63x5tizV6WCh4R6RHyi2Ml+M70DNRXt/+HANowMflpgGFMAym/VKm6G7ZOQRjqN7XbGxK1Lg9t6ZrtzOaivMw==} @@ -4061,12 +4319,35 @@ packages: resolution: {integrity: sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==} engines: {node: '>=4'} + pm2-axon-rpc@0.7.1: + resolution: {integrity: sha512-FbLvW60w+vEyvMjP/xom2UPhUN/2bVpdtLfKJeYM3gwzYhoTEEChCOICfFzxkxuoEleOlnpjie+n1nue91bDQw==} + engines: {node: '>=5'} + + pm2-axon@4.0.1: + resolution: {integrity: sha512-kES/PeSLS8orT8dR5jMlNl+Yu4Ty3nbvZRmaAtROuVm9nYYGiaoXqqKQqQYzWQzMYWUKHMQTvBlirjE5GIIxqg==} + engines: {node: '>=5'} + + pm2-deploy@1.0.2: + resolution: {integrity: sha512-YJx6RXKrVrWaphEYf++EdOOx9EH18vM8RSZN/P1Y+NokTKqYAca/ejXwVLyiEpNju4HPZEk3Y2uZouwMqUlcgg==} + engines: {node: '>=4.0.0'} + + pm2-multimeter@0.1.2: + resolution: {integrity: sha512-S+wT6XfyKfd7SJIBqRgOctGxaBzUOmVQzTAS+cg04TsEUObJVreha7lvCfX8zzGVr871XwCSnHUU7DQQ5xEsfA==} + + pm2-sysmonit@1.2.8: + resolution: {integrity: sha512-ACOhlONEXdCTVwKieBIQLSi2tQZ8eKinhcr9JpZSUAL8Qy0ajIgRtsLxG/lwPOW3JEKqPyw/UaHmTWhUzpP4kA==} + + pm2@6.0.8: + resolution: {integrity: sha512-y7sO+UuGjfESK/ChRN+efJKAsHrBd95GY2p1GQfjVTtOfFtUfiW0NOuUhP5dN5QTF2F0EWcepgkLqbF32j90Iw==} + engines: {node: '>=16.0.0'} + hasBin: true + possible-typed-array-names@1.1.0: resolution: {integrity: sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==} engines: {node: '>= 0.4'} - postcss@8.5.5: - resolution: {integrity: sha512-d/jtm+rdNT8tpXuHY5MMtcbJFBkhXE6593XVR9UoGCH8jSFGci7jGvMGH5RYd5PBJW+00NZQt6gf7CbagJCrhg==} + postcss@8.5.6: + resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==} engines: {node: ^10 || ^12 || >=14} prelude-ls@1.2.1: @@ -4096,6 +4377,16 @@ packages: process-warning@5.0.0: resolution: {integrity: sha512-a39t9ApHNx2L4+HBnQKqxxHNs1r7KF+Intd8Q/g1bUh6q0WIp9voPXJ/x0j+ZL45KF1pJd9+q2jLIRMfvEshkA==} + promptly@2.2.0: + resolution: {integrity: sha512-aC9j+BZsRSSzEsXBNBwDnAxujdx19HycZoKgRgzWnS8eOHg1asuf9heuLprfbe739zY3IdUQx+Egv6Jn135WHA==} + + proxy-agent@6.4.0: + resolution: {integrity: sha512-u0piLU+nCOHMgGjRbimiXmA9kM/L9EHh3zL81xCdp7m+Y2pHIsnmbdDoEDoAz5geaonNR6q6+yOPQs6n4T6sBQ==} + engines: {node: '>= 14'} + + proxy-from-env@1.1.0: + resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} + punycode@2.3.1: resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} engines: {node: '>=6'} @@ -4123,10 +4414,18 @@ packages: react-is@18.3.1: resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==} + read@1.0.7: + resolution: {integrity: sha512-rSOKNYUmaxy0om1BNjMN4ezNT6VKK+2xF4GBhc81mkH7L60i6dp8qPYrkndNLT3QPphoII3maL9PVC9XmhHwVQ==} + engines: {node: '>=0.8'} + readable-stream@3.6.2: resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} engines: {node: '>= 6'} + readdirp@3.6.0: + resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} + engines: {node: '>=8.10.0'} + readdirp@4.1.2: resolution: {integrity: sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==} engines: {node: '>= 14.18.0'} @@ -4176,6 +4475,10 @@ packages: resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} engines: {node: '>=0.10.0'} + require-in-the-middle@5.2.0: + resolution: {integrity: sha512-efCx3b+0Z69/LGJmm9Yvi4cqEdxnoGnxYxGxBghkkTTFeXRtTCmmhO0AnAfHz59k957uTSuy8WaHqOs8wbYUWg==} + engines: {node: '>=6'} + resolve-alpn@1.2.1: resolution: {integrity: sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==} @@ -4204,6 +4507,10 @@ packages: resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==} engines: {node: '>=8'} + restore-cursor@5.1.0: + resolution: {integrity: sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==} + engines: {node: '>=18'} + ret@0.5.0: resolution: {integrity: sha512-I1XxrZSQ+oErkRR4jYbAyEEu2I0avBvvMM5JN+6EBprOGRCs63ENqZ3vjavq8fBw2+62G5LF5XelKwuJpcvcxw==} engines: {node: '>=10'} @@ -4223,6 +4530,9 @@ packages: run-parallel@1.2.0: resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + run-series@1.1.9: + resolution: {integrity: sha512-Arc4hUN896vjkqCYrUXquBFtRZdv1PfLbTYP71efP6butxyQ0kWpiNJyAgsxscmQg1cqvHY32/UCBzXedTpU2g==} + rxjs@7.8.1: resolution: {integrity: sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==} @@ -4257,6 +4567,9 @@ packages: sanitize-html@2.17.0: resolution: {integrity: sha512-dLAADUSS8rBwhaevT12yCezvioCA+bmUTPH/u57xKPT8d++voeYE6HeluA/bPbQ15TwDBG2ii+QZIEmYx8VdxA==} + sax@1.4.1: + resolution: {integrity: sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==} + schema-utils@3.3.0: resolution: {integrity: sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==} engines: {node: '>= 10.13.0'} @@ -4284,6 +4597,11 @@ packages: resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} hasBin: true + semver@7.5.4: + resolution: {integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==} + engines: {node: '>=10'} + hasBin: true + semver@7.7.2: resolution: {integrity: sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==} engines: {node: '>=10'} @@ -4325,6 +4643,9 @@ packages: resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} engines: {node: '>=8'} + shimmer@1.2.1: + resolution: {integrity: sha512-sQTKC1Re/rM6XyFM6fIAGHRPVGvyXfgzIDvzoq608vM+jeyVD0Tu1E6Np0Kc2zAIFWIj963V2800iF/9LPieQw==} + side-channel-list@1.0.0: resolution: {integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==} engines: {node: '>= 0.4'} @@ -4352,6 +4673,18 @@ packages: resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} engines: {node: '>=8'} + smart-buffer@4.2.0: + resolution: {integrity: sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==} + engines: {node: '>= 6.0.0', npm: '>= 3.0.0'} + + socks-proxy-agent@8.0.5: + resolution: {integrity: sha512-HehCEsotFqbPW9sJ8WVYB6UbmIMv7kUUORIF2Nncq4VQvBfNBLibW9YZR5dlYCSUhwcD628pRllm7n+E+YTzJw==} + engines: {node: '>= 14'} + + socks@2.8.5: + resolution: {integrity: sha512-iF+tNDQla22geJdTyJB1wM/qrX9DMRwWrciEPwWLPRWAUEM8sQiyxgckLxWT1f7+9VabJS0jTGGr4QgBuvi6Ww==} + engines: {node: '>= 10.0.0', npm: '>= 3.0.0'} + sonic-boom@4.2.0: resolution: {integrity: sha512-INb7TM37/mAcsGmc9hyyI6+QR3rR1zVRu36B0NeGXKnOOLiZOfER5SA+N7X7k3yUYRzLWafduTDvJAfDswwEww==} @@ -4388,6 +4721,12 @@ packages: sprintf-js@1.0.3: resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} + sprintf-js@1.1.2: + resolution: {integrity: sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==} + + sprintf-js@1.1.3: + resolution: {integrity: sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==} + sql-highlight@6.1.0: resolution: {integrity: sha512-ed7OK4e9ywpE7pgRMkMQmZDPKSVdm0oX5IEtZiKnFucSF0zu6c80GZBe38UqHuVhTWJ9xsKgSMjCG2bml86KvA==} engines: {node: '>=14'} @@ -4404,6 +4743,10 @@ packages: resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} engines: {node: '>= 0.8'} + stdin-discarder@0.2.2: + resolution: {integrity: sha512-UhDfHmA92YAlNnCfhmq0VeNL5bDbiZGg7sZ2IvPsXubGkiNa9EC+tUTsjBRsYUAz87btI6/1wf4XoVvQ3uRnmQ==} + engines: {node: '>=18'} + stop-iteration-iterator@1.1.0: resolution: {integrity: sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==} engines: {node: '>= 0.4'} @@ -4508,6 +4851,12 @@ packages: resolution: {integrity: sha512-+XZ+r1XGIJGeQk3VvXhT6xx/VpbHsRzsTkGgF6E5RX9TTXD0118l87puaEBZ566FhqblC6U0d4XnubznJDm30A==} engines: {node: ^14.18.0 || >=16.0.0} + systeminformation@5.27.3: + resolution: {integrity: sha512-SFgXCnmO/z0Nvln3aQ3fQRjbVVP5ybUPifyInJU6pIs6PpCjm/HuMGl3UenEd03tpeZLk44nxEikT/LON4UDrA==} + engines: {node: '>=8.0.0'} + os: [darwin, linux, win32, freebsd, openbsd, netbsd, sunos, android] + hasBin: true + tapable@2.2.2: resolution: {integrity: sha512-Re10+NauLTMCudc7T5WLFLAwDhQ0JWdrMK+9B2M8zR5hRExKmsRDCBA7/aV/pNJFltmBFO5BAMlQFi/vq3nKOg==} engines: {node: '>=6'} @@ -4648,9 +4997,19 @@ packages: resolution: {integrity: sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==} engines: {node: '>=6'} + tslib@1.9.3: + resolution: {integrity: sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==} + tslib@2.8.1: resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} + tv4@1.3.0: + resolution: {integrity: sha512-afizzfpJgvPr+eDkREK4MxJ/+r8nEEHcmitwgnPUqpaP+FpwQyadnxNoSACbgc/b1LsZYtODGoPiFxQrgJgjvw==} + engines: {node: '>= 0.8.0'} + + tx2@1.0.5: + resolution: {integrity: sha512-sJ24w0y03Md/bxzK4FU8J8JveYYUbSs2FViLJ2D/8bytSiyPRbuE3DyL/9UKYXTZlV3yXq0L8GLlhobTnekCVg==} + type-check@0.4.0: resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} engines: {node: '>= 0.8.0'} @@ -4826,6 +5185,10 @@ packages: resolution: {integrity: sha512-BgWVbCI72aIQy937xbawcs+hrVaN/CZ2UwutgaJ36hGqRrLNM+f5LUT/YPRbo8IV/ASeFzXszezV+y2+rq3l8A==} engines: {node: '>= 0.10'} + vizion@2.2.1: + resolution: {integrity: sha512-sfAcO2yeSU0CSPFI/DmZp3FsFE9T+8913nv1xWBOyzODv13fwkn6Vl7HqxGpkr9F608M+8SuFId3s+BlZqfXww==} + engines: {node: '>=4.0'} + walker@1.0.8: resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==} @@ -4902,6 +5265,18 @@ packages: resolution: {integrity: sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + ws@7.5.10: + resolution: {integrity: sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==} + engines: {node: '>=8.3.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ^5.0.2 + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + y18n@5.0.8: resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} engines: {node: '>=10'} @@ -4909,6 +5284,9 @@ packages: yallist@3.1.1: resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} + yallist@4.0.0: + resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} + yaml@2.8.0: resolution: {integrity: sha512-4lLa/EcQCB0cJkyts+FpIRx5G/llPxfP6VQU5KByHEhLxY3IJCH0f0Hy1MHI8sClTvsIb8qwRJ6R/ZdlDJ/leQ==} engines: {node: '>= 14.6'} @@ -4979,11 +5357,11 @@ snapshots: optionalDependencies: chokidar: 4.0.3 - '@angular-devkit/schematics-cli@19.2.8(@types/node@24.0.1)(chokidar@4.0.3)': + '@angular-devkit/schematics-cli@19.2.8(@types/node@24.0.3)(chokidar@4.0.3)': dependencies: '@angular-devkit/core': 19.2.8(chokidar@4.0.3) '@angular-devkit/schematics': 19.2.8(chokidar@4.0.3) - '@inquirer/prompts': 7.3.2(@types/node@24.0.1) + '@inquirer/prompts': 7.3.2(@types/node@24.0.3) ansi-colors: 4.1.3 symbol-observable: 4.0.0 yargs-parser: 21.1.1 @@ -5927,27 +6305,27 @@ snapshots: '@humanwhocodes/retry@0.4.3': {} - '@inquirer/checkbox@4.1.8(@types/node@24.0.1)': + '@inquirer/checkbox@4.1.8(@types/node@24.0.3)': dependencies: - '@inquirer/core': 10.1.13(@types/node@24.0.1) + '@inquirer/core': 10.1.13(@types/node@24.0.3) '@inquirer/figures': 1.0.12 - '@inquirer/type': 3.0.7(@types/node@24.0.1) + '@inquirer/type': 3.0.7(@types/node@24.0.3) ansi-escapes: 4.3.2 yoctocolors-cjs: 2.1.2 optionalDependencies: - '@types/node': 24.0.1 + '@types/node': 24.0.3 - '@inquirer/confirm@5.1.12(@types/node@24.0.1)': + '@inquirer/confirm@5.1.12(@types/node@24.0.3)': dependencies: - '@inquirer/core': 10.1.13(@types/node@24.0.1) - '@inquirer/type': 3.0.7(@types/node@24.0.1) + '@inquirer/core': 10.1.13(@types/node@24.0.3) + '@inquirer/type': 3.0.7(@types/node@24.0.3) optionalDependencies: - '@types/node': 24.0.1 + '@types/node': 24.0.3 - '@inquirer/core@10.1.13(@types/node@24.0.1)': + '@inquirer/core@10.1.13(@types/node@24.0.3)': dependencies: '@inquirer/figures': 1.0.12 - '@inquirer/type': 3.0.7(@types/node@24.0.1) + '@inquirer/type': 3.0.7(@types/node@24.0.3) ansi-escapes: 4.3.2 cli-width: 4.1.0 mute-stream: 2.0.0 @@ -5955,108 +6333,108 @@ snapshots: wrap-ansi: 6.2.0 yoctocolors-cjs: 2.1.2 optionalDependencies: - '@types/node': 24.0.1 + '@types/node': 24.0.3 - '@inquirer/editor@4.2.13(@types/node@24.0.1)': + '@inquirer/editor@4.2.13(@types/node@24.0.3)': dependencies: - '@inquirer/core': 10.1.13(@types/node@24.0.1) - '@inquirer/type': 3.0.7(@types/node@24.0.1) + '@inquirer/core': 10.1.13(@types/node@24.0.3) + '@inquirer/type': 3.0.7(@types/node@24.0.3) external-editor: 3.1.0 optionalDependencies: - '@types/node': 24.0.1 + '@types/node': 24.0.3 - '@inquirer/expand@4.0.15(@types/node@24.0.1)': + '@inquirer/expand@4.0.15(@types/node@24.0.3)': dependencies: - '@inquirer/core': 10.1.13(@types/node@24.0.1) - '@inquirer/type': 3.0.7(@types/node@24.0.1) + '@inquirer/core': 10.1.13(@types/node@24.0.3) + '@inquirer/type': 3.0.7(@types/node@24.0.3) yoctocolors-cjs: 2.1.2 optionalDependencies: - '@types/node': 24.0.1 + '@types/node': 24.0.3 '@inquirer/figures@1.0.12': {} - '@inquirer/input@4.1.12(@types/node@24.0.1)': + '@inquirer/input@4.1.12(@types/node@24.0.3)': dependencies: - '@inquirer/core': 10.1.13(@types/node@24.0.1) - '@inquirer/type': 3.0.7(@types/node@24.0.1) + '@inquirer/core': 10.1.13(@types/node@24.0.3) + '@inquirer/type': 3.0.7(@types/node@24.0.3) optionalDependencies: - '@types/node': 24.0.1 + '@types/node': 24.0.3 - '@inquirer/number@3.0.15(@types/node@24.0.1)': + '@inquirer/number@3.0.15(@types/node@24.0.3)': dependencies: - '@inquirer/core': 10.1.13(@types/node@24.0.1) - '@inquirer/type': 3.0.7(@types/node@24.0.1) + '@inquirer/core': 10.1.13(@types/node@24.0.3) + '@inquirer/type': 3.0.7(@types/node@24.0.3) optionalDependencies: - '@types/node': 24.0.1 + '@types/node': 24.0.3 - '@inquirer/password@4.0.15(@types/node@24.0.1)': + '@inquirer/password@4.0.15(@types/node@24.0.3)': dependencies: - '@inquirer/core': 10.1.13(@types/node@24.0.1) - '@inquirer/type': 3.0.7(@types/node@24.0.1) + '@inquirer/core': 10.1.13(@types/node@24.0.3) + '@inquirer/type': 3.0.7(@types/node@24.0.3) ansi-escapes: 4.3.2 optionalDependencies: - '@types/node': 24.0.1 + '@types/node': 24.0.3 - '@inquirer/prompts@7.3.2(@types/node@24.0.1)': + '@inquirer/prompts@7.3.2(@types/node@24.0.3)': dependencies: - '@inquirer/checkbox': 4.1.8(@types/node@24.0.1) - '@inquirer/confirm': 5.1.12(@types/node@24.0.1) - '@inquirer/editor': 4.2.13(@types/node@24.0.1) - '@inquirer/expand': 4.0.15(@types/node@24.0.1) - '@inquirer/input': 4.1.12(@types/node@24.0.1) - '@inquirer/number': 3.0.15(@types/node@24.0.1) - '@inquirer/password': 4.0.15(@types/node@24.0.1) - '@inquirer/rawlist': 4.1.3(@types/node@24.0.1) - '@inquirer/search': 3.0.15(@types/node@24.0.1) - '@inquirer/select': 4.2.3(@types/node@24.0.1) + '@inquirer/checkbox': 4.1.8(@types/node@24.0.3) + '@inquirer/confirm': 5.1.12(@types/node@24.0.3) + '@inquirer/editor': 4.2.13(@types/node@24.0.3) + '@inquirer/expand': 4.0.15(@types/node@24.0.3) + '@inquirer/input': 4.1.12(@types/node@24.0.3) + '@inquirer/number': 3.0.15(@types/node@24.0.3) + '@inquirer/password': 4.0.15(@types/node@24.0.3) + '@inquirer/rawlist': 4.1.3(@types/node@24.0.3) + '@inquirer/search': 3.0.15(@types/node@24.0.3) + '@inquirer/select': 4.2.3(@types/node@24.0.3) optionalDependencies: - '@types/node': 24.0.1 + '@types/node': 24.0.3 - '@inquirer/prompts@7.4.1(@types/node@24.0.1)': + '@inquirer/prompts@7.4.1(@types/node@24.0.3)': dependencies: - '@inquirer/checkbox': 4.1.8(@types/node@24.0.1) - '@inquirer/confirm': 5.1.12(@types/node@24.0.1) - '@inquirer/editor': 4.2.13(@types/node@24.0.1) - '@inquirer/expand': 4.0.15(@types/node@24.0.1) - '@inquirer/input': 4.1.12(@types/node@24.0.1) - '@inquirer/number': 3.0.15(@types/node@24.0.1) - '@inquirer/password': 4.0.15(@types/node@24.0.1) - '@inquirer/rawlist': 4.1.3(@types/node@24.0.1) - '@inquirer/search': 3.0.15(@types/node@24.0.1) - '@inquirer/select': 4.2.3(@types/node@24.0.1) + '@inquirer/checkbox': 4.1.8(@types/node@24.0.3) + '@inquirer/confirm': 5.1.12(@types/node@24.0.3) + '@inquirer/editor': 4.2.13(@types/node@24.0.3) + '@inquirer/expand': 4.0.15(@types/node@24.0.3) + '@inquirer/input': 4.1.12(@types/node@24.0.3) + '@inquirer/number': 3.0.15(@types/node@24.0.3) + '@inquirer/password': 4.0.15(@types/node@24.0.3) + '@inquirer/rawlist': 4.1.3(@types/node@24.0.3) + '@inquirer/search': 3.0.15(@types/node@24.0.3) + '@inquirer/select': 4.2.3(@types/node@24.0.3) optionalDependencies: - '@types/node': 24.0.1 + '@types/node': 24.0.3 - '@inquirer/rawlist@4.1.3(@types/node@24.0.1)': + '@inquirer/rawlist@4.1.3(@types/node@24.0.3)': dependencies: - '@inquirer/core': 10.1.13(@types/node@24.0.1) - '@inquirer/type': 3.0.7(@types/node@24.0.1) + '@inquirer/core': 10.1.13(@types/node@24.0.3) + '@inquirer/type': 3.0.7(@types/node@24.0.3) yoctocolors-cjs: 2.1.2 optionalDependencies: - '@types/node': 24.0.1 + '@types/node': 24.0.3 - '@inquirer/search@3.0.15(@types/node@24.0.1)': + '@inquirer/search@3.0.15(@types/node@24.0.3)': dependencies: - '@inquirer/core': 10.1.13(@types/node@24.0.1) + '@inquirer/core': 10.1.13(@types/node@24.0.3) '@inquirer/figures': 1.0.12 - '@inquirer/type': 3.0.7(@types/node@24.0.1) + '@inquirer/type': 3.0.7(@types/node@24.0.3) yoctocolors-cjs: 2.1.2 optionalDependencies: - '@types/node': 24.0.1 + '@types/node': 24.0.3 - '@inquirer/select@4.2.3(@types/node@24.0.1)': + '@inquirer/select@4.2.3(@types/node@24.0.3)': dependencies: - '@inquirer/core': 10.1.13(@types/node@24.0.1) + '@inquirer/core': 10.1.13(@types/node@24.0.3) '@inquirer/figures': 1.0.12 - '@inquirer/type': 3.0.7(@types/node@24.0.1) + '@inquirer/type': 3.0.7(@types/node@24.0.3) ansi-escapes: 4.3.2 yoctocolors-cjs: 2.1.2 optionalDependencies: - '@types/node': 24.0.1 + '@types/node': 24.0.3 - '@inquirer/type@3.0.7(@types/node@24.0.1)': + '@inquirer/type@3.0.7(@types/node@24.0.3)': optionalDependencies: - '@types/node': 24.0.1 + '@types/node': 24.0.3 '@isaacs/balanced-match@4.0.1': {} @@ -6086,13 +6464,13 @@ snapshots: '@jest/console@30.0.0': dependencies: '@jest/types': 30.0.0 - '@types/node': 24.0.1 + '@types/node': 24.0.3 chalk: 4.1.2 jest-message-util: 30.0.0 jest-util: 30.0.0 slash: 3.0.0 - '@jest/core@30.0.0(ts-node@10.9.2(@swc/core@1.12.1)(@types/node@24.0.1)(typescript@5.8.3))': + '@jest/core@30.0.0(ts-node@10.9.2(@swc/core@1.12.1)(@types/node@24.0.3)(typescript@5.8.3))': dependencies: '@jest/console': 30.0.0 '@jest/pattern': 30.0.0 @@ -6100,14 +6478,14 @@ snapshots: '@jest/test-result': 30.0.0 '@jest/transform': 30.0.0 '@jest/types': 30.0.0 - '@types/node': 24.0.1 + '@types/node': 24.0.3 ansi-escapes: 4.3.2 chalk: 4.1.2 ci-info: 4.2.0 exit-x: 0.2.2 graceful-fs: 4.2.11 jest-changed-files: 30.0.0 - jest-config: 30.0.0(@types/node@24.0.1)(ts-node@10.9.2(@swc/core@1.12.1)(@types/node@24.0.1)(typescript@5.8.3)) + jest-config: 30.0.0(@types/node@24.0.3)(ts-node@10.9.2(@swc/core@1.12.1)(@types/node@24.0.3)(typescript@5.8.3)) jest-haste-map: 30.0.0 jest-message-util: 30.0.0 jest-regex-util: 30.0.0 @@ -6134,7 +6512,7 @@ snapshots: dependencies: '@jest/fake-timers': 30.0.0 '@jest/types': 30.0.0 - '@types/node': 24.0.1 + '@types/node': 24.0.3 jest-mock: 30.0.0 '@jest/expect-utils@29.7.0': @@ -6156,7 +6534,7 @@ snapshots: dependencies: '@jest/types': 30.0.0 '@sinonjs/fake-timers': 13.0.5 - '@types/node': 24.0.1 + '@types/node': 24.0.3 jest-message-util: 30.0.0 jest-mock: 30.0.0 jest-util: 30.0.0 @@ -6174,7 +6552,7 @@ snapshots: '@jest/pattern@30.0.0': dependencies: - '@types/node': 24.0.1 + '@types/node': 24.0.3 jest-regex-util: 30.0.0 '@jest/reporters@30.0.0': @@ -6185,7 +6563,7 @@ snapshots: '@jest/transform': 30.0.0 '@jest/types': 30.0.0 '@jridgewell/trace-mapping': 0.3.25 - '@types/node': 24.0.1 + '@types/node': 24.0.3 chalk: 4.1.2 collect-v8-coverage: 1.0.2 exit-x: 0.2.2 @@ -6265,7 +6643,7 @@ snapshots: '@jest/schemas': 29.6.3 '@types/istanbul-lib-coverage': 2.0.6 '@types/istanbul-reports': 3.0.4 - '@types/node': 24.0.1 + '@types/node': 24.0.3 '@types/yargs': 17.0.33 chalk: 4.1.2 @@ -6275,7 +6653,7 @@ snapshots: '@jest/schemas': 30.0.0 '@types/istanbul-lib-coverage': 2.0.6 '@types/istanbul-reports': 3.0.4 - '@types/node': 24.0.1 + '@types/node': 24.0.3 '@types/yargs': 17.0.33 chalk: 4.1.2 @@ -6387,12 +6765,12 @@ snapshots: '@tybys/wasm-util': 0.9.0 optional: true - '@nestjs/cli@11.0.7(@swc/cli@0.7.7(@swc/core@1.12.1)(chokidar@4.0.3))(@swc/core@1.12.1)(@types/node@24.0.1)': + '@nestjs/cli@11.0.7(@swc/cli@0.7.7(@swc/core@1.12.1)(chokidar@4.0.3))(@swc/core@1.12.1)(@types/node@24.0.3)': dependencies: '@angular-devkit/core': 19.2.8(chokidar@4.0.3) '@angular-devkit/schematics': 19.2.8(chokidar@4.0.3) - '@angular-devkit/schematics-cli': 19.2.8(@types/node@24.0.1)(chokidar@4.0.3) - '@inquirer/prompts': 7.4.1(@types/node@24.0.1) + '@angular-devkit/schematics-cli': 19.2.8(@types/node@24.0.3)(chokidar@4.0.3) + '@inquirer/prompts': 7.4.1(@types/node@24.0.3) '@nestjs/schematics': 11.0.5(chokidar@4.0.3)(typescript@5.8.3) ansis: 3.17.0 chokidar: 4.0.3 @@ -6500,13 +6878,13 @@ snapshots: '@nestjs/core': 11.1.3(@nestjs/common@11.1.3(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2))(reflect-metadata@0.2.2)(rxjs@7.8.2) tslib: 2.8.1 - '@nestjs/typeorm@11.0.0(@nestjs/common@11.1.3(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.3(@nestjs/common@11.1.3(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2))(reflect-metadata@0.2.2)(rxjs@7.8.2))(reflect-metadata@0.2.2)(rxjs@7.8.2)(typeorm@0.3.24(mysql2@3.14.1)(reflect-metadata@0.2.2)(ts-node@10.9.2(@swc/core@1.12.1)(@types/node@24.0.1)(typescript@5.8.3)))': + '@nestjs/typeorm@11.0.0(@nestjs/common@11.1.3(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.3(@nestjs/common@11.1.3(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2))(reflect-metadata@0.2.2)(rxjs@7.8.2))(reflect-metadata@0.2.2)(rxjs@7.8.2)(typeorm@0.3.24(mysql2@3.14.1)(reflect-metadata@0.2.2)(ts-node@10.9.2(@swc/core@1.12.1)(@types/node@24.0.3)(typescript@5.8.3)))': dependencies: '@nestjs/common': 11.1.3(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2) '@nestjs/core': 11.1.3(@nestjs/common@11.1.3(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2))(reflect-metadata@0.2.2)(rxjs@7.8.2) reflect-metadata: 0.2.2 rxjs: 7.8.2 - typeorm: 0.3.24(mysql2@3.14.1)(reflect-metadata@0.2.2)(ts-node@10.9.2(@swc/core@1.12.1)(@types/node@24.0.1)(typescript@5.8.3)) + typeorm: 0.3.24(mysql2@3.14.1)(reflect-metadata@0.2.2)(ts-node@10.9.2(@swc/core@1.12.1)(@types/node@24.0.3)(typescript@5.8.3)) '@noble/hashes@1.8.0': {} @@ -6568,6 +6946,56 @@ snapshots: '@pkgr/core@0.2.7': {} + '@pm2/agent@2.1.1': + dependencies: + async: 3.2.6 + chalk: 3.0.0 + dayjs: 1.8.36 + debug: 4.3.7 + eventemitter2: 5.0.1 + fast-json-patch: 3.1.1 + fclone: 1.0.11 + pm2-axon: 4.0.1 + pm2-axon-rpc: 0.7.1 + proxy-agent: 6.4.0 + semver: 7.5.4 + ws: 7.5.10 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + + '@pm2/io@6.1.0': + dependencies: + async: 2.6.4 + debug: 4.3.7 + eventemitter2: 6.4.9 + require-in-the-middle: 5.2.0 + semver: 7.5.4 + shimmer: 1.2.1 + signal-exit: 3.0.7 + tslib: 1.9.3 + transitivePeerDependencies: + - supports-color + + '@pm2/js-api@0.8.0': + dependencies: + async: 2.6.4 + debug: 4.3.7 + eventemitter2: 6.4.9 + extrareqp2: 1.0.0(debug@4.3.7) + ws: 7.5.10 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + + '@pm2/pm2-version-check@1.0.4': + dependencies: + debug: 4.4.1 + transitivePeerDependencies: + - supports-color + '@rtsao/scc@1.1.0': {} '@scarf/scarf@1.4.0': {} @@ -6671,6 +7099,8 @@ snapshots: '@tokenizer/token@0.3.0': {} + '@tootallnate/quickjs-emscripten@0.23.0': {} + '@tsconfig/node10@1.0.11': {} '@tsconfig/node12@1.0.11': {} @@ -6722,7 +7152,7 @@ snapshots: '@types/fs-extra@11.0.4': dependencies: '@types/jsonfile': 6.1.4 - '@types/node': 24.0.1 + '@types/node': 24.0.3 '@types/http-cache-semantics@4.0.4': {} @@ -6747,13 +7177,13 @@ snapshots: '@types/jsonfile@6.1.4': dependencies: - '@types/node': 24.0.1 + '@types/node': 24.0.3 '@types/lodash@4.17.17': {} '@types/methods@1.1.4': {} - '@types/node@24.0.1': + '@types/node@24.0.3': dependencies: undici-types: 7.8.0 @@ -6767,7 +7197,7 @@ snapshots: dependencies: '@types/cookiejar': 2.1.5 '@types/methods': 1.1.4 - '@types/node': 24.0.1 + '@types/node': 24.0.3 form-data: 4.0.3 '@types/supertest@6.0.3': @@ -6775,7 +7205,7 @@ snapshots: '@types/methods': 1.1.4 '@types/superagent': 8.1.9 - '@types/validator@13.15.1': {} + '@types/validator@13.15.2': {} '@types/yargs-parser@21.0.3': {} @@ -6783,14 +7213,14 @@ snapshots: dependencies: '@types/yargs-parser': 21.0.3 - '@typescript-eslint/eslint-plugin@8.34.0(@typescript-eslint/parser@8.34.0(eslint@9.29.0)(typescript@5.8.3))(eslint@9.29.0)(typescript@5.8.3)': + '@typescript-eslint/eslint-plugin@8.34.1(@typescript-eslint/parser@8.34.1(eslint@9.29.0)(typescript@5.8.3))(eslint@9.29.0)(typescript@5.8.3)': dependencies: '@eslint-community/regexpp': 4.12.1 - '@typescript-eslint/parser': 8.34.0(eslint@9.29.0)(typescript@5.8.3) - '@typescript-eslint/scope-manager': 8.34.0 - '@typescript-eslint/type-utils': 8.34.0(eslint@9.29.0)(typescript@5.8.3) - '@typescript-eslint/utils': 8.34.0(eslint@9.29.0)(typescript@5.8.3) - '@typescript-eslint/visitor-keys': 8.34.0 + '@typescript-eslint/parser': 8.34.1(eslint@9.29.0)(typescript@5.8.3) + '@typescript-eslint/scope-manager': 8.34.1 + '@typescript-eslint/type-utils': 8.34.1(eslint@9.29.0)(typescript@5.8.3) + '@typescript-eslint/utils': 8.34.1(eslint@9.29.0)(typescript@5.8.3) + '@typescript-eslint/visitor-keys': 8.34.1 eslint: 9.29.0 graphemer: 1.4.0 ignore: 7.0.5 @@ -6800,40 +7230,40 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.34.0(eslint@9.29.0)(typescript@5.8.3)': + '@typescript-eslint/parser@8.34.1(eslint@9.29.0)(typescript@5.8.3)': dependencies: - '@typescript-eslint/scope-manager': 8.34.0 - '@typescript-eslint/types': 8.34.0 - '@typescript-eslint/typescript-estree': 8.34.0(typescript@5.8.3) - '@typescript-eslint/visitor-keys': 8.34.0 + '@typescript-eslint/scope-manager': 8.34.1 + '@typescript-eslint/types': 8.34.1 + '@typescript-eslint/typescript-estree': 8.34.1(typescript@5.8.3) + '@typescript-eslint/visitor-keys': 8.34.1 debug: 4.4.1 eslint: 9.29.0 typescript: 5.8.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/project-service@8.34.0(typescript@5.8.3)': + '@typescript-eslint/project-service@8.34.1(typescript@5.8.3)': dependencies: - '@typescript-eslint/tsconfig-utils': 8.34.0(typescript@5.8.3) - '@typescript-eslint/types': 8.34.0 + '@typescript-eslint/tsconfig-utils': 8.34.1(typescript@5.8.3) + '@typescript-eslint/types': 8.34.1 debug: 4.4.1 typescript: 5.8.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/scope-manager@8.34.0': + '@typescript-eslint/scope-manager@8.34.1': dependencies: - '@typescript-eslint/types': 8.34.0 - '@typescript-eslint/visitor-keys': 8.34.0 + '@typescript-eslint/types': 8.34.1 + '@typescript-eslint/visitor-keys': 8.34.1 - '@typescript-eslint/tsconfig-utils@8.34.0(typescript@5.8.3)': + '@typescript-eslint/tsconfig-utils@8.34.1(typescript@5.8.3)': dependencies: typescript: 5.8.3 - '@typescript-eslint/type-utils@8.34.0(eslint@9.29.0)(typescript@5.8.3)': + '@typescript-eslint/type-utils@8.34.1(eslint@9.29.0)(typescript@5.8.3)': dependencies: - '@typescript-eslint/typescript-estree': 8.34.0(typescript@5.8.3) - '@typescript-eslint/utils': 8.34.0(eslint@9.29.0)(typescript@5.8.3) + '@typescript-eslint/typescript-estree': 8.34.1(typescript@5.8.3) + '@typescript-eslint/utils': 8.34.1(eslint@9.29.0)(typescript@5.8.3) debug: 4.4.1 eslint: 9.29.0 ts-api-utils: 2.1.0(typescript@5.8.3) @@ -6841,14 +7271,14 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/types@8.34.0': {} + '@typescript-eslint/types@8.34.1': {} - '@typescript-eslint/typescript-estree@8.34.0(typescript@5.8.3)': + '@typescript-eslint/typescript-estree@8.34.1(typescript@5.8.3)': dependencies: - '@typescript-eslint/project-service': 8.34.0(typescript@5.8.3) - '@typescript-eslint/tsconfig-utils': 8.34.0(typescript@5.8.3) - '@typescript-eslint/types': 8.34.0 - '@typescript-eslint/visitor-keys': 8.34.0 + '@typescript-eslint/project-service': 8.34.1(typescript@5.8.3) + '@typescript-eslint/tsconfig-utils': 8.34.1(typescript@5.8.3) + '@typescript-eslint/types': 8.34.1 + '@typescript-eslint/visitor-keys': 8.34.1 debug: 4.4.1 fast-glob: 3.3.3 is-glob: 4.0.3 @@ -6859,20 +7289,20 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.34.0(eslint@9.29.0)(typescript@5.8.3)': + '@typescript-eslint/utils@8.34.1(eslint@9.29.0)(typescript@5.8.3)': dependencies: '@eslint-community/eslint-utils': 4.7.0(eslint@9.29.0) - '@typescript-eslint/scope-manager': 8.34.0 - '@typescript-eslint/types': 8.34.0 - '@typescript-eslint/typescript-estree': 8.34.0(typescript@5.8.3) + '@typescript-eslint/scope-manager': 8.34.1 + '@typescript-eslint/types': 8.34.1 + '@typescript-eslint/typescript-estree': 8.34.1(typescript@5.8.3) eslint: 9.29.0 typescript: 5.8.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/visitor-keys@8.34.0': + '@typescript-eslint/visitor-keys@8.34.1': dependencies: - '@typescript-eslint/types': 8.34.0 + '@typescript-eslint/types': 8.34.1 eslint-visitor-keys: 4.2.1 '@ungap/structured-clone@1.3.0': {} @@ -7096,6 +7526,8 @@ snapshots: acorn@8.15.0: {} + agent-base@7.1.3: {} + ajv-formats@2.1.1(ajv@8.17.1): optionalDependencies: ajv: 8.17.1 @@ -7127,6 +7559,12 @@ snapshots: json-schema-traverse: 1.0.0 require-from-string: 2.0.2 + amp-message@0.1.2: + dependencies: + amp: 0.3.1 + + amp@0.3.1: {} + ansi-colors@4.1.3: {} ansi-escapes@4.3.2: @@ -7147,6 +7585,8 @@ snapshots: ansis@3.17.0: {} + ansis@4.0.0-node10: {} + anymatch@3.1.3: dependencies: normalize-path: 3.0.0 @@ -7218,8 +7658,16 @@ snapshots: asap@2.0.6: {} + ast-types@0.13.4: + dependencies: + tslib: 2.8.1 + async-function@1.0.0: {} + async@2.6.4: + dependencies: + lodash: 4.17.21 + async@3.2.6: {} asynckit@0.4.0: {} @@ -7324,6 +7772,8 @@ snapshots: base64-js@1.5.1: {} + basic-ftp@5.0.5: {} + bin-version-check@5.1.0: dependencies: bin-version: 6.0.0 @@ -7335,14 +7785,20 @@ snapshots: execa: 5.1.1 find-versions: 5.1.0 + binary-extensions@2.3.0: {} + bl@4.1.0: dependencies: buffer: 5.7.1 inherits: 2.0.4 readable-stream: 3.6.2 + blessed@0.1.81: {} + bluebird@3.7.2: {} + bodec@0.1.0: {} + brace-expansion@1.1.12: dependencies: balanced-match: 1.0.2 @@ -7359,7 +7815,7 @@ snapshots: browserslist@4.25.0: dependencies: caniuse-lite: 1.0.30001723 - electron-to-chromium: 1.5.167 + electron-to-chromium: 1.5.168 node-releases: 2.0.19 update-browserslist-db: 1.1.3(browserslist@4.25.0) @@ -7387,7 +7843,7 @@ snapshots: bun-types@1.2.16: dependencies: - '@types/node': 24.0.1 + '@types/node': 24.0.3 bun@1.2.16: optionalDependencies: @@ -7440,6 +7896,11 @@ snapshots: caniuse-lite@1.0.30001723: {} + chalk@3.0.0: + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + chalk@4.1.2: dependencies: ansi-styles: 4.3.0 @@ -7451,6 +7912,20 @@ snapshots: chardet@0.7.0: {} + charm@0.1.2: {} + + chokidar@3.6.0: + dependencies: + anymatch: 3.1.3 + braces: 3.0.3 + glob-parent: 5.1.2 + is-binary-path: 2.1.0 + is-glob: 4.0.3 + normalize-path: 3.0.0 + readdirp: 3.6.0 + optionalDependencies: + fsevents: 2.3.3 + chokidar@4.0.3: dependencies: readdirp: 4.1.2 @@ -7467,7 +7942,7 @@ snapshots: class-validator@0.14.2: dependencies: - '@types/validator': 13.15.1 + '@types/validator': 13.15.2 libphonenumber-js: 1.12.9 validator: 13.15.15 @@ -7475,6 +7950,10 @@ snapshots: dependencies: restore-cursor: 3.1.0 + cli-cursor@5.0.0: + dependencies: + restore-cursor: 5.1.0 + cli-spinners@2.9.2: {} cli-table3@0.6.5: @@ -7483,6 +7962,10 @@ snapshots: optionalDependencies: '@colors/colors': 1.5.0 + cli-tableau@2.0.1: + dependencies: + chalk: 3.0.0 + cli-width@4.1.0: {} cliui@8.0.1: @@ -7513,6 +7996,8 @@ snapshots: dependencies: delayed-stream: 1.0.0 + commander@2.15.1: {} + commander@2.20.3: {} commander@4.1.1: {} @@ -7564,6 +8049,8 @@ snapshots: create-require@1.1.1: {} + croner@4.1.97: {} + cross-env@7.0.3: dependencies: cross-spawn: 7.0.6 @@ -7574,6 +8061,10 @@ snapshots: shebang-command: 2.0.0 which: 2.0.2 + culvert@0.1.2: {} + + data-uri-to-buffer@6.0.2: {} + data-view-buffer@1.0.2: dependencies: call-bound: 1.0.4 @@ -7594,10 +8085,16 @@ snapshots: dayjs@1.11.13: {} + dayjs@1.8.36: {} + debug@3.2.7: dependencies: ms: 2.1.3 + debug@4.3.7: + dependencies: + ms: 2.1.3 + debug@4.4.1: dependencies: ms: 2.1.3 @@ -7632,6 +8129,12 @@ snapshots: has-property-descriptors: 1.0.2 object-keys: 1.1.1 + degenerator@5.0.1: + dependencies: + ast-types: 0.13.4 + escodegen: 2.1.0 + esprima: 4.0.1 + delayed-stream@1.0.0: {} denque@2.1.0: {} @@ -7687,7 +8190,7 @@ snapshots: dependencies: jake: 10.9.2 - electron-to-chromium@1.5.167: {} + electron-to-chromium@1.5.168: {} emittery@0.13.1: {} @@ -7702,6 +8205,10 @@ snapshots: graceful-fs: 4.2.11 tapable: 2.2.2 + enquirer@2.3.6: + dependencies: + ansi-colors: 4.1.3 + entities@4.5.0: {} error-ex@1.3.2: @@ -7800,21 +8307,29 @@ snapshots: escape-string-regexp@4.0.0: {} - eslint-config-airbnb-base@15.0.0(eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.34.0(eslint@9.29.0)(typescript@5.8.3))(eslint@9.29.0))(eslint@9.29.0): + escodegen@2.1.0: + dependencies: + esprima: 4.0.1 + estraverse: 5.3.0 + esutils: 2.0.3 + optionalDependencies: + source-map: 0.6.1 + + eslint-config-airbnb-base@15.0.0(eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.34.1(eslint@9.29.0)(typescript@5.8.3))(eslint@9.29.0))(eslint@9.29.0): dependencies: confusing-browser-globals: 1.0.11 eslint: 9.29.0 - eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.34.0(eslint@9.29.0)(typescript@5.8.3))(eslint@9.29.0) + eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.34.1(eslint@9.29.0)(typescript@5.8.3))(eslint@9.29.0) object.assign: 4.1.7 object.entries: 1.1.9 semver: 6.3.1 - eslint-config-airbnb-typescript@18.0.0(@typescript-eslint/eslint-plugin@8.34.0(@typescript-eslint/parser@8.34.0(eslint@9.29.0)(typescript@5.8.3))(eslint@9.29.0)(typescript@5.8.3))(@typescript-eslint/parser@8.34.0(eslint@9.29.0)(typescript@5.8.3))(eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.34.0(eslint@9.29.0)(typescript@5.8.3))(eslint@9.29.0))(eslint@9.29.0): + eslint-config-airbnb-typescript@18.0.0(@typescript-eslint/eslint-plugin@8.34.1(@typescript-eslint/parser@8.34.1(eslint@9.29.0)(typescript@5.8.3))(eslint@9.29.0)(typescript@5.8.3))(@typescript-eslint/parser@8.34.1(eslint@9.29.0)(typescript@5.8.3))(eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.34.1(eslint@9.29.0)(typescript@5.8.3))(eslint@9.29.0))(eslint@9.29.0): dependencies: - '@typescript-eslint/eslint-plugin': 8.34.0(@typescript-eslint/parser@8.34.0(eslint@9.29.0)(typescript@5.8.3))(eslint@9.29.0)(typescript@5.8.3) - '@typescript-eslint/parser': 8.34.0(eslint@9.29.0)(typescript@5.8.3) + '@typescript-eslint/eslint-plugin': 8.34.1(@typescript-eslint/parser@8.34.1(eslint@9.29.0)(typescript@5.8.3))(eslint@9.29.0)(typescript@5.8.3) + '@typescript-eslint/parser': 8.34.1(eslint@9.29.0)(typescript@5.8.3) eslint: 9.29.0 - eslint-config-airbnb-base: 15.0.0(eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.34.0(eslint@9.29.0)(typescript@5.8.3))(eslint@9.29.0))(eslint@9.29.0) + eslint-config-airbnb-base: 15.0.0(eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.34.1(eslint@9.29.0)(typescript@5.8.3))(eslint@9.29.0))(eslint@9.29.0) transitivePeerDependencies: - eslint-plugin-import @@ -7830,17 +8345,17 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-module-utils@2.12.0(@typescript-eslint/parser@8.34.0(eslint@9.29.0)(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint@9.29.0): + eslint-module-utils@2.12.0(@typescript-eslint/parser@8.34.1(eslint@9.29.0)(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint@9.29.0): dependencies: debug: 3.2.7 optionalDependencies: - '@typescript-eslint/parser': 8.34.0(eslint@9.29.0)(typescript@5.8.3) + '@typescript-eslint/parser': 8.34.1(eslint@9.29.0)(typescript@5.8.3) eslint: 9.29.0 eslint-import-resolver-node: 0.3.9 transitivePeerDependencies: - supports-color - eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.34.0(eslint@9.29.0)(typescript@5.8.3))(eslint@9.29.0): + eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.34.1(eslint@9.29.0)(typescript@5.8.3))(eslint@9.29.0): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.9 @@ -7851,7 +8366,7 @@ snapshots: doctrine: 2.1.0 eslint: 9.29.0 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.34.0(eslint@9.29.0)(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint@9.29.0) + eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.34.1(eslint@9.29.0)(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint@9.29.0) hasown: 2.0.2 is-core-module: 2.16.1 is-glob: 4.0.3 @@ -7863,19 +8378,19 @@ snapshots: string.prototype.trimend: 1.0.9 tsconfig-paths: 3.15.0 optionalDependencies: - '@typescript-eslint/parser': 8.34.0(eslint@9.29.0)(typescript@5.8.3) + '@typescript-eslint/parser': 8.34.1(eslint@9.29.0)(typescript@5.8.3) transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack - supports-color - eslint-plugin-jest@28.13.5(@typescript-eslint/eslint-plugin@8.34.0(@typescript-eslint/parser@8.34.0(eslint@9.29.0)(typescript@5.8.3))(eslint@9.29.0)(typescript@5.8.3))(eslint@9.29.0)(jest@30.0.0(@types/node@24.0.1)(ts-node@10.9.2(@swc/core@1.12.1)(@types/node@24.0.1)(typescript@5.8.3)))(typescript@5.8.3): + eslint-plugin-jest@28.14.0(@typescript-eslint/eslint-plugin@8.34.1(@typescript-eslint/parser@8.34.1(eslint@9.29.0)(typescript@5.8.3))(eslint@9.29.0)(typescript@5.8.3))(eslint@9.29.0)(jest@30.0.0(@types/node@24.0.3)(ts-node@10.9.2(@swc/core@1.12.1)(@types/node@24.0.3)(typescript@5.8.3)))(typescript@5.8.3): dependencies: - '@typescript-eslint/utils': 8.34.0(eslint@9.29.0)(typescript@5.8.3) + '@typescript-eslint/utils': 8.34.1(eslint@9.29.0)(typescript@5.8.3) eslint: 9.29.0 optionalDependencies: - '@typescript-eslint/eslint-plugin': 8.34.0(@typescript-eslint/parser@8.34.0(eslint@9.29.0)(typescript@5.8.3))(eslint@9.29.0)(typescript@5.8.3) - jest: 30.0.0(@types/node@24.0.1)(ts-node@10.9.2(@swc/core@1.12.1)(@types/node@24.0.1)(typescript@5.8.3)) + '@typescript-eslint/eslint-plugin': 8.34.1(@typescript-eslint/parser@8.34.1(eslint@9.29.0)(typescript@5.8.3))(eslint@9.29.0)(typescript@5.8.3) + jest: 30.0.0(@types/node@24.0.3)(ts-node@10.9.2(@swc/core@1.12.1)(@types/node@24.0.3)(typescript@5.8.3)) transitivePeerDependencies: - supports-color - typescript @@ -7890,11 +8405,11 @@ snapshots: '@types/eslint': 9.6.1 eslint-config-prettier: 10.1.5(eslint@9.29.0) - eslint-plugin-unused-imports@4.1.4(@typescript-eslint/eslint-plugin@8.34.0(@typescript-eslint/parser@8.34.0(eslint@9.29.0)(typescript@5.8.3))(eslint@9.29.0)(typescript@5.8.3))(eslint@9.29.0): + eslint-plugin-unused-imports@4.1.4(@typescript-eslint/eslint-plugin@8.34.1(@typescript-eslint/parser@8.34.1(eslint@9.29.0)(typescript@5.8.3))(eslint@9.29.0)(typescript@5.8.3))(eslint@9.29.0): dependencies: eslint: 9.29.0 optionalDependencies: - '@typescript-eslint/eslint-plugin': 8.34.0(@typescript-eslint/parser@8.34.0(eslint@9.29.0)(typescript@5.8.3))(eslint@9.29.0)(typescript@5.8.3) + '@typescript-eslint/eslint-plugin': 8.34.1(@typescript-eslint/parser@8.34.1(eslint@9.29.0)(typescript@5.8.3))(eslint@9.29.0)(typescript@5.8.3) eslint-scope@5.1.1: dependencies: @@ -7972,6 +8487,10 @@ snapshots: esutils@2.0.3: {} + eventemitter2@5.0.1: {} + + eventemitter2@6.4.9: {} + events@3.3.0: {} execa@5.1.1: @@ -8020,6 +8539,12 @@ snapshots: iconv-lite: 0.4.24 tmp: 0.0.33 + extrareqp2@1.0.0(debug@4.3.7): + dependencies: + follow-redirects: 1.15.9(debug@4.3.7) + transitivePeerDependencies: + - debug + fast-decode-uri-component@1.0.1: {} fast-deep-equal@3.1.3: {} @@ -8036,6 +8561,8 @@ snapshots: merge2: 1.4.1 micromatch: 4.0.8 + fast-json-patch@3.1.1: {} + fast-json-stable-stringify@2.1.0: {} fast-json-stringify@6.0.1: @@ -8087,6 +8614,8 @@ snapshots: dependencies: bser: 2.1.1 + fclone@1.0.11: {} + fflate@0.8.2: {} file-entry-cache@8.0.0: @@ -8156,6 +8685,10 @@ snapshots: flatted@3.3.3: {} + follow-redirects@1.15.9(debug@4.3.7): + optionalDependencies: + debug: 4.3.7 + for-each@0.3.5: dependencies: is-callable: 1.2.7 @@ -8279,6 +8812,20 @@ snapshots: es-errors: 1.3.0 get-intrinsic: 1.3.0 + get-uri@6.0.4: + dependencies: + basic-ftp: 5.0.5 + data-uri-to-buffer: 6.0.2 + debug: 4.4.1 + transitivePeerDependencies: + - supports-color + + git-node-fs@1.0.0(js-git@0.7.8): + optionalDependencies: + js-git: 0.7.8 + + git-sha1@0.1.2: {} + glob-parent@5.1.2: dependencies: is-glob: 4.0.3 @@ -8399,11 +8946,25 @@ snapshots: statuses: 2.0.1 toidentifier: 1.0.1 + http-proxy-agent@7.0.2: + dependencies: + agent-base: 7.1.3 + debug: 4.4.1 + transitivePeerDependencies: + - supports-color + http2-wrapper@2.2.1: dependencies: quick-lru: 5.1.1 resolve-alpn: 1.2.1 + https-proxy-agent@7.0.6: + dependencies: + agent-base: 7.1.3 + debug: 4.4.1 + transitivePeerDependencies: + - supports-color + human-signals@2.1.0: {} iconv-lite@0.4.24: @@ -8439,6 +9000,8 @@ snapshots: inherits@2.0.4: {} + ini@1.3.8: {} + inspect-with-kind@1.0.5: dependencies: kind-of: 6.0.3 @@ -8449,6 +9012,11 @@ snapshots: hasown: 2.0.2 side-channel: 1.1.0 + ip-address@9.0.5: + dependencies: + jsbn: 1.1.0 + sprintf-js: 1.1.3 + ipaddr.js@2.2.0: {} is-array-buffer@3.0.5: @@ -8471,6 +9039,10 @@ snapshots: dependencies: has-bigints: 1.1.0 + is-binary-path@2.1.0: + dependencies: + binary-extensions: 2.3.0 + is-boolean-object@1.2.2: dependencies: call-bound: 1.0.4 @@ -8516,6 +9088,8 @@ snapshots: is-interactive@1.0.0: {} + is-interactive@2.0.0: {} + is-map@2.0.3: {} is-negative-zero@2.0.3: {} @@ -8567,6 +9141,10 @@ snapshots: is-unicode-supported@0.1.0: {} + is-unicode-supported@1.3.0: {} + + is-unicode-supported@2.1.0: {} + is-weakmap@2.0.2: {} is-weakref@1.1.1: @@ -8644,7 +9222,7 @@ snapshots: '@jest/expect': 30.0.0 '@jest/test-result': 30.0.0 '@jest/types': 30.0.0 - '@types/node': 24.0.1 + '@types/node': 24.0.3 chalk: 4.1.2 co: 4.6.0 dedent: 1.6.0 @@ -8664,15 +9242,15 @@ snapshots: - babel-plugin-macros - supports-color - jest-cli@30.0.0(@types/node@24.0.1)(ts-node@10.9.2(@swc/core@1.12.1)(@types/node@24.0.1)(typescript@5.8.3)): + jest-cli@30.0.0(@types/node@24.0.3)(ts-node@10.9.2(@swc/core@1.12.1)(@types/node@24.0.3)(typescript@5.8.3)): dependencies: - '@jest/core': 30.0.0(ts-node@10.9.2(@swc/core@1.12.1)(@types/node@24.0.1)(typescript@5.8.3)) + '@jest/core': 30.0.0(ts-node@10.9.2(@swc/core@1.12.1)(@types/node@24.0.3)(typescript@5.8.3)) '@jest/test-result': 30.0.0 '@jest/types': 30.0.0 chalk: 4.1.2 exit-x: 0.2.2 import-local: 3.2.0 - jest-config: 30.0.0(@types/node@24.0.1)(ts-node@10.9.2(@swc/core@1.12.1)(@types/node@24.0.1)(typescript@5.8.3)) + jest-config: 30.0.0(@types/node@24.0.3)(ts-node@10.9.2(@swc/core@1.12.1)(@types/node@24.0.3)(typescript@5.8.3)) jest-util: 30.0.0 jest-validate: 30.0.0 yargs: 17.7.2 @@ -8683,7 +9261,7 @@ snapshots: - supports-color - ts-node - jest-config@30.0.0(@types/node@24.0.1)(ts-node@10.9.2(@swc/core@1.12.1)(@types/node@24.0.1)(typescript@5.8.3)): + jest-config@30.0.0(@types/node@24.0.3)(ts-node@10.9.2(@swc/core@1.12.1)(@types/node@24.0.3)(typescript@5.8.3)): dependencies: '@babel/core': 7.27.4 '@jest/get-type': 30.0.0 @@ -8710,8 +9288,8 @@ snapshots: slash: 3.0.0 strip-json-comments: 3.1.1 optionalDependencies: - '@types/node': 24.0.1 - ts-node: 10.9.2(@swc/core@1.12.1)(@types/node@24.0.1)(typescript@5.8.3) + '@types/node': 24.0.3 + ts-node: 10.9.2(@swc/core@1.12.1)(@types/node@24.0.3)(typescript@5.8.3) transitivePeerDependencies: - babel-plugin-macros - supports-color @@ -8747,7 +9325,7 @@ snapshots: '@jest/environment': 30.0.0 '@jest/fake-timers': 30.0.0 '@jest/types': 30.0.0 - '@types/node': 24.0.1 + '@types/node': 24.0.3 jest-mock: 30.0.0 jest-util: 30.0.0 jest-validate: 30.0.0 @@ -8757,7 +9335,7 @@ snapshots: jest-haste-map@30.0.0: dependencies: '@jest/types': 30.0.0 - '@types/node': 24.0.1 + '@types/node': 24.0.3 anymatch: 3.1.3 fb-watchman: 2.0.2 graceful-fs: 4.2.11 @@ -8815,7 +9393,7 @@ snapshots: jest-mock@30.0.0: dependencies: '@jest/types': 30.0.0 - '@types/node': 24.0.1 + '@types/node': 24.0.3 jest-util: 30.0.0 jest-pnp-resolver@1.2.3(jest-resolve@30.0.0): @@ -8849,7 +9427,7 @@ snapshots: '@jest/test-result': 30.0.0 '@jest/transform': 30.0.0 '@jest/types': 30.0.0 - '@types/node': 24.0.1 + '@types/node': 24.0.3 chalk: 4.1.2 emittery: 0.13.1 exit-x: 0.2.2 @@ -8878,7 +9456,7 @@ snapshots: '@jest/test-result': 30.0.0 '@jest/transform': 30.0.0 '@jest/types': 30.0.0 - '@types/node': 24.0.1 + '@types/node': 24.0.3 chalk: 4.1.2 cjs-module-lexer: 2.1.0 collect-v8-coverage: 1.0.2 @@ -8925,7 +9503,7 @@ snapshots: jest-util@29.7.0: dependencies: '@jest/types': 29.6.3 - '@types/node': 24.0.1 + '@types/node': 24.0.3 chalk: 4.1.2 ci-info: 3.9.0 graceful-fs: 4.2.11 @@ -8934,7 +9512,7 @@ snapshots: jest-util@30.0.0: dependencies: '@jest/types': 30.0.0 - '@types/node': 24.0.1 + '@types/node': 24.0.3 chalk: 4.1.2 ci-info: 4.2.0 graceful-fs: 4.2.11 @@ -8953,7 +9531,7 @@ snapshots: dependencies: '@jest/test-result': 30.0.0 '@jest/types': 30.0.0 - '@types/node': 24.0.1 + '@types/node': 24.0.3 ansi-escapes: 4.3.2 chalk: 4.1.2 emittery: 0.13.1 @@ -8962,24 +9540,24 @@ snapshots: jest-worker@27.5.1: dependencies: - '@types/node': 24.0.1 + '@types/node': 24.0.3 merge-stream: 2.0.0 supports-color: 8.1.1 jest-worker@30.0.0: dependencies: - '@types/node': 24.0.1 + '@types/node': 24.0.3 '@ungap/structured-clone': 1.3.0 jest-util: 30.0.0 merge-stream: 2.0.0 supports-color: 8.1.1 - jest@30.0.0(@types/node@24.0.1)(ts-node@10.9.2(@swc/core@1.12.1)(@types/node@24.0.1)(typescript@5.8.3)): + jest@30.0.0(@types/node@24.0.3)(ts-node@10.9.2(@swc/core@1.12.1)(@types/node@24.0.3)(typescript@5.8.3)): dependencies: - '@jest/core': 30.0.0(ts-node@10.9.2(@swc/core@1.12.1)(@types/node@24.0.1)(typescript@5.8.3)) + '@jest/core': 30.0.0(ts-node@10.9.2(@swc/core@1.12.1)(@types/node@24.0.3)(typescript@5.8.3)) '@jest/types': 30.0.0 import-local: 3.2.0 - jest-cli: 30.0.0(@types/node@24.0.1)(ts-node@10.9.2(@swc/core@1.12.1)(@types/node@24.0.1)(typescript@5.8.3)) + jest-cli: 30.0.0(@types/node@24.0.3)(ts-node@10.9.2(@swc/core@1.12.1)(@types/node@24.0.3)(typescript@5.8.3)) transitivePeerDependencies: - '@types/node' - babel-plugin-macros @@ -8987,6 +9565,13 @@ snapshots: - supports-color - ts-node + js-git@0.7.8: + dependencies: + bodec: 0.1.0 + culvert: 0.1.2 + git-sha1: 0.1.2 + pako: 0.2.9 + js-tokens@4.0.0: {} js-yaml@3.14.1: @@ -8998,6 +9583,8 @@ snapshots: dependencies: argparse: 2.0.1 + jsbn@1.1.0: {} + jsesc@3.0.2: {} jsesc@3.1.0: {} @@ -9016,6 +9603,9 @@ snapshots: json-stable-stringify-without-jsonify@1.0.1: {} + json-stringify-safe@5.0.1: + optional: true + json5@1.0.2: dependencies: minimist: 1.2.8 @@ -9086,6 +9676,11 @@ snapshots: chalk: 4.1.2 is-unicode-supported: 0.1.0 + log-symbols@6.0.0: + dependencies: + chalk: 5.4.1 + is-unicode-supported: 1.3.0 + long@5.3.2: {} lowercase-keys@3.0.0: {} @@ -9098,6 +9693,10 @@ snapshots: dependencies: yallist: 3.1.1 + lru-cache@6.0.0: + dependencies: + yallist: 4.0.0 + lru-cache@7.18.3: {} lru.min@1.1.2: {} @@ -9149,6 +9748,8 @@ snapshots: mimic-fn@2.1.0: {} + mimic-function@5.0.1: {} + mimic-response@3.1.0: {} mimic-response@4.0.0: {} @@ -9173,8 +9774,14 @@ snapshots: minipass@7.1.2: {} + mkdirp@1.0.4: {} + + module-details-from-path@1.0.4: {} + ms@2.1.3: {} + mute-stream@0.0.8: {} + mute-stream@2.0.0: {} mysql2@3.14.1: @@ -9199,8 +9806,18 @@ snapshots: natural-compare@1.4.0: {} + needle@2.4.0: + dependencies: + debug: 3.2.7 + iconv-lite: 0.4.24 + sax: 1.4.1 + transitivePeerDependencies: + - supports-color + neo-async@2.6.2: {} + netmask@2.0.2: {} + node-abort-controller@3.1.1: {} node-emoji@1.11.0: @@ -9269,6 +9886,10 @@ snapshots: dependencies: mimic-fn: 2.1.0 + onetime@7.0.0: + dependencies: + mimic-function: 5.0.1 + optionator@0.9.4: dependencies: deep-is: 0.1.4 @@ -9290,6 +9911,18 @@ snapshots: strip-ansi: 6.0.1 wcwidth: 1.0.1 + ora@8.2.0: + dependencies: + chalk: 5.4.1 + cli-cursor: 5.0.0 + cli-spinners: 2.9.2 + is-interactive: 2.0.0 + is-unicode-supported: 2.1.0 + log-symbols: 6.0.0 + stdin-discarder: 0.2.2 + string-width: 7.2.0 + strip-ansi: 7.1.0 + os-tmpdir@1.0.2: {} own-keys@1.0.1: @@ -9326,8 +9959,28 @@ snapshots: p-try@2.2.0: {} + pac-proxy-agent@7.2.0: + dependencies: + '@tootallnate/quickjs-emscripten': 0.23.0 + agent-base: 7.1.3 + debug: 4.4.1 + get-uri: 6.0.4 + http-proxy-agent: 7.0.2 + https-proxy-agent: 7.0.6 + pac-resolver: 7.0.1 + socks-proxy-agent: 8.0.5 + transitivePeerDependencies: + - supports-color + + pac-resolver@7.0.1: + dependencies: + degenerator: 5.0.1 + netmask: 2.0.2 + package-json-from-dist@1.0.1: {} + pako@0.2.9: {} + parent-module@1.0.1: dependencies: callsites: 3.1.0 @@ -9375,6 +10028,15 @@ snapshots: picomatch@4.0.2: {} + pidusage@2.0.21: + dependencies: + safe-buffer: 5.2.1 + optional: true + + pidusage@3.0.2: + dependencies: + safe-buffer: 5.2.1 + pino-abstract-transport@2.0.0: dependencies: split2: 4.2.0 @@ -9407,9 +10069,82 @@ snapshots: pluralize@8.0.0: {} + pm2-axon-rpc@0.7.1: + dependencies: + debug: 4.4.1 + transitivePeerDependencies: + - supports-color + + pm2-axon@4.0.1: + dependencies: + amp: 0.3.1 + amp-message: 0.1.2 + debug: 4.4.1 + escape-string-regexp: 4.0.0 + transitivePeerDependencies: + - supports-color + + pm2-deploy@1.0.2: + dependencies: + run-series: 1.1.9 + tv4: 1.3.0 + + pm2-multimeter@0.1.2: + dependencies: + charm: 0.1.2 + + pm2-sysmonit@1.2.8: + dependencies: + async: 3.2.6 + debug: 4.4.1 + pidusage: 2.0.21 + systeminformation: 5.27.3 + tx2: 1.0.5 + transitivePeerDependencies: + - supports-color + optional: true + + pm2@6.0.8: + dependencies: + '@pm2/agent': 2.1.1 + '@pm2/io': 6.1.0 + '@pm2/js-api': 0.8.0 + '@pm2/pm2-version-check': 1.0.4 + ansis: 4.0.0-node10 + async: 3.2.6 + blessed: 0.1.81 + chokidar: 3.6.0 + cli-tableau: 2.0.1 + commander: 2.15.1 + croner: 4.1.97 + dayjs: 1.11.13 + debug: 4.4.1 + enquirer: 2.3.6 + eventemitter2: 5.0.1 + fclone: 1.0.11 + js-yaml: 4.1.0 + mkdirp: 1.0.4 + needle: 2.4.0 + pidusage: 3.0.2 + pm2-axon: 4.0.1 + pm2-axon-rpc: 0.7.1 + pm2-deploy: 1.0.2 + pm2-multimeter: 0.1.2 + promptly: 2.2.0 + semver: 7.7.2 + source-map-support: 0.5.21 + sprintf-js: 1.1.2 + vizion: 2.2.1 + optionalDependencies: + pm2-sysmonit: 1.2.8 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + possible-typed-array-names@1.1.0: {} - postcss@8.5.5: + postcss@8.5.6: dependencies: nanoid: 3.3.11 picocolors: 1.1.1 @@ -9439,6 +10174,25 @@ snapshots: process-warning@5.0.0: {} + promptly@2.2.0: + dependencies: + read: 1.0.7 + + proxy-agent@6.4.0: + dependencies: + agent-base: 7.1.3 + debug: 4.4.1 + http-proxy-agent: 7.0.2 + https-proxy-agent: 7.0.6 + lru-cache: 7.18.3 + pac-proxy-agent: 7.2.0 + proxy-from-env: 1.1.0 + socks-proxy-agent: 8.0.5 + transitivePeerDependencies: + - supports-color + + proxy-from-env@1.1.0: {} + punycode@2.3.1: {} pure-rand@7.0.1: {} @@ -9459,12 +10213,20 @@ snapshots: react-is@18.3.1: {} + read@1.0.7: + dependencies: + mute-stream: 0.0.8 + readable-stream@3.6.2: dependencies: inherits: 2.0.4 string_decoder: 1.3.0 util-deprecate: 1.0.2 + readdirp@3.6.0: + dependencies: + picomatch: 2.3.1 + readdirp@4.1.2: {} real-require@0.2.0: {} @@ -9518,6 +10280,14 @@ snapshots: require-from-string@2.0.2: {} + require-in-the-middle@5.2.0: + dependencies: + debug: 4.4.1 + module-details-from-path: 1.0.4 + resolve: 1.22.10 + transitivePeerDependencies: + - supports-color + resolve-alpn@1.2.1: {} resolve-cwd@3.0.0: @@ -9543,6 +10313,11 @@ snapshots: onetime: 5.1.2 signal-exit: 3.0.7 + restore-cursor@5.1.0: + dependencies: + onetime: 7.0.0 + signal-exit: 4.1.0 + ret@0.5.0: {} reusify@1.1.0: {} @@ -9558,6 +10333,8 @@ snapshots: dependencies: queue-microtask: 1.2.3 + run-series@1.1.9: {} + rxjs@7.8.1: dependencies: tslib: 2.8.1 @@ -9602,7 +10379,9 @@ snapshots: htmlparser2: 8.0.2 is-plain-object: 5.0.0 parse-srcset: 1.0.2 - postcss: 8.5.5 + postcss: 8.5.6 + + sax@1.4.1: {} schema-utils@3.3.0: dependencies: @@ -9631,6 +10410,10 @@ snapshots: semver@6.3.1: {} + semver@7.5.4: + dependencies: + lru-cache: 6.0.0 + semver@7.7.2: {} seq-queue@0.0.5: {} @@ -9676,6 +10459,8 @@ snapshots: shebang-regex@3.0.0: {} + shimmer@1.2.1: {} + side-channel-list@1.0.0: dependencies: es-errors: 1.3.0 @@ -9710,6 +10495,21 @@ snapshots: slash@3.0.0: {} + smart-buffer@4.2.0: {} + + socks-proxy-agent@8.0.5: + dependencies: + agent-base: 7.1.3 + debug: 4.4.1 + socks: 2.8.5 + transitivePeerDependencies: + - supports-color + + socks@2.8.5: + dependencies: + ip-address: 9.0.5 + smart-buffer: 4.2.0 + sonic-boom@4.2.0: dependencies: atomic-sleep: 1.0.0 @@ -9742,6 +10542,10 @@ snapshots: sprintf-js@1.0.3: {} + sprintf-js@1.1.2: {} + + sprintf-js@1.1.3: {} + sql-highlight@6.1.0: {} sqlstring@2.3.3: {} @@ -9752,6 +10556,8 @@ snapshots: statuses@2.0.1: {} + stdin-discarder@0.2.2: {} + stop-iteration-iterator@1.1.0: dependencies: es-errors: 1.3.0 @@ -9885,6 +10691,9 @@ snapshots: dependencies: '@pkgr/core': 0.2.7 + systeminformation@5.27.3: + optional: true + tapable@2.2.2: {} tar-stream@3.1.7: @@ -9962,12 +10771,12 @@ snapshots: transitivePeerDependencies: - supports-color - ts-jest@29.4.0(@babel/core@7.27.4)(@jest/transform@30.0.0)(@jest/types@30.0.0)(babel-jest@30.0.0(@babel/core@7.27.4))(jest-util@30.0.0)(jest@30.0.0(@types/node@24.0.1)(ts-node@10.9.2(@swc/core@1.12.1)(@types/node@24.0.1)(typescript@5.8.3)))(typescript@5.8.3): + ts-jest@29.4.0(@babel/core@7.27.4)(@jest/transform@30.0.0)(@jest/types@30.0.0)(babel-jest@30.0.0(@babel/core@7.27.4))(jest-util@30.0.0)(jest@30.0.0(@types/node@24.0.3)(ts-node@10.9.2(@swc/core@1.12.1)(@types/node@24.0.3)(typescript@5.8.3)))(typescript@5.8.3): dependencies: bs-logger: 0.2.6 ejs: 3.1.10 fast-json-stable-stringify: 2.1.0 - jest: 30.0.0(@types/node@24.0.1)(ts-node@10.9.2(@swc/core@1.12.1)(@types/node@24.0.1)(typescript@5.8.3)) + jest: 30.0.0(@types/node@24.0.3)(ts-node@10.9.2(@swc/core@1.12.1)(@types/node@24.0.3)(typescript@5.8.3)) json5: 2.2.3 lodash.memoize: 4.1.2 make-error: 1.3.6 @@ -9992,14 +10801,14 @@ snapshots: typescript: 5.8.3 webpack: 5.99.6(@swc/core@1.12.1) - ts-node@10.9.2(@swc/core@1.12.1)(@types/node@24.0.1)(typescript@5.8.3): + ts-node@10.9.2(@swc/core@1.12.1)(@types/node@24.0.3)(typescript@5.8.3): dependencies: '@cspotcode/source-map-support': 0.8.1 '@tsconfig/node10': 1.0.11 '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.4 - '@types/node': 24.0.1 + '@types/node': 24.0.3 acorn: 8.15.0 acorn-walk: 8.3.4 arg: 4.1.3 @@ -10032,8 +10841,17 @@ snapshots: minimist: 1.2.8 strip-bom: 3.0.0 + tslib@1.9.3: {} + tslib@2.8.1: {} + tv4@1.3.0: {} + + tx2@1.0.5: + dependencies: + json-stringify-safe: 5.0.1 + optional: true + type-check@0.4.0: dependencies: prelude-ls: 1.2.1 @@ -10077,7 +10895,7 @@ snapshots: possible-typed-array-names: 1.1.0 reflect.getprototypeof: 1.0.10 - typeorm@0.3.24(mysql2@3.14.1)(reflect-metadata@0.2.2)(ts-node@10.9.2(@swc/core@1.12.1)(@types/node@24.0.1)(typescript@5.8.3)): + typeorm@0.3.24(mysql2@3.14.1)(reflect-metadata@0.2.2)(ts-node@10.9.2(@swc/core@1.12.1)(@types/node@24.0.3)(typescript@5.8.3)): dependencies: '@sqltools/formatter': 1.2.5 ansis: 3.17.0 @@ -10096,7 +10914,7 @@ snapshots: yargs: 17.7.2 optionalDependencies: mysql2: 3.14.1 - ts-node: 10.9.2(@swc/core@1.12.1)(@types/node@24.0.1)(typescript@5.8.3) + ts-node: 10.9.2(@swc/core@1.12.1)(@types/node@24.0.3)(typescript@5.8.3) transitivePeerDependencies: - babel-plugin-macros - supports-color @@ -10190,6 +11008,13 @@ snapshots: validator@13.15.15: {} + vizion@2.2.1: + dependencies: + async: 2.6.4 + git-node-fs: 1.0.0(js-git@0.7.8) + ini: 1.3.8 + js-git: 0.7.8 + walker@1.0.8: dependencies: makeerror: 1.0.12 @@ -10315,10 +11140,14 @@ snapshots: imurmurhash: 0.1.4 signal-exit: 4.1.0 + ws@7.5.10: {} + y18n@5.0.8: {} yallist@3.1.1: {} + yallist@4.0.0: {} + yaml@2.8.0: {} yargs-parser@21.1.1: {} diff --git a/src/console/bin.ts b/src/console/bin.ts new file mode 100644 index 0000000..36c16d7 --- /dev/null +++ b/src/console/bin.ts @@ -0,0 +1,5 @@ +import { createApp } from '@/modules/core/helpers/app'; +import { buildCli } from '@/modules/core/helpers/command'; +import { createOptions } from '@/options'; + +buildCli(createApp(createOptions)); diff --git a/src/modules/core/commands/demo.command.ts b/src/modules/core/commands/demo.command.ts new file mode 100644 index 0000000..952cc46 --- /dev/null +++ b/src/modules/core/commands/demo.command.ts @@ -0,0 +1,21 @@ +import { DemoCommandArguments } from '@/modules/core/commands/types'; +import { CommandItem } from '@/modules/core/types'; + +export const DemoCommand: CommandItem = async (app) => ({ + command: ['demo', 'd'], + describe: 'a demo command', + handler: async (args: DemoCommandArguments) => { + const { configure } = app; + const appName = await configure.get('app.name'); + const sleep = args.sleep ? ' will to sleep' : ''; + console.log(`just a demo command,app ${appName} ${sleep}`); + }, + builder: { + sleep: { + type: 'boolean', + alias: 's', + describe: 'App will sleep ?', + default: false, + }, + }, +}); diff --git a/src/modules/core/commands/helpers/asset.ts b/src/modules/core/commands/helpers/asset.ts new file mode 100644 index 0000000..9f815e1 --- /dev/null +++ b/src/modules/core/commands/helpers/asset.ts @@ -0,0 +1,11 @@ +import { FSWatcher } from 'chokidar'; + +export class Asset { + private watchAssetsKeyValue: { [key: string]: boolean } = {}; + + private watchers: FSWatcher[] = []; + + private actionInProgress = false; + + closeWatchers() {} +} diff --git a/src/modules/core/commands/helpers/config.ts b/src/modules/core/commands/helpers/config.ts new file mode 100644 index 0000000..85be4b1 --- /dev/null +++ b/src/modules/core/commands/helpers/config.ts @@ -0,0 +1,112 @@ +/* eslint-disable import/no-extraneous-dependencies */ +import { join, resolve } from 'path'; + +import { exit } from 'process'; + +import { Configuration as NestCLIConfig } from '@nestjs/cli/lib/configuration'; +import { isNil } from '@nestjs/common/utils/shared.utils'; +import { existsSync, readFileSync } from 'fs-extra'; +import { get, omit } from 'lodash'; +import { StartOptions } from 'pm2'; +import ts from 'typescript'; + +import { Configure } from '@/modules/config/configure'; +import { CLIConfig, Pm2Option } from '@/modules/core/commands/types'; +import { deepMerge, panic } from '@/modules/core/helpers'; +import { AppConfig } from '@/modules/core/types'; + +const cwdPath = resolve(__dirname, '../../../../..'); + +export function getCLIConfig( + tsConfigFile: string, + nestConfigFile: string, + tsEntryFile: string, +): CLIConfig { + let tsConfig: ts.CompilerOptions = {}; + const tsConfigPath = join(cwdPath, tsConfigFile); + + if (!existsSync(tsConfigPath)) { + panic(`ts config file ${tsConfigPath} not exists!`); + } + + try { + const allTsConfig = JSON.parse(readFileSync(tsConfigPath, 'utf8')); + tsConfig = get(allTsConfig, 'compilerOptions', {}); + } catch (error) { + panic({ error, message: 'get ts config file failed.' }); + } + let nestConfig: NestCLIConfig = {}; + const nestConfigPath = join(cwdPath, nestConfigFile); + + if (!existsSync(nestConfigPath)) { + panic(`ts config file ${nestConfigPath} not exists!`); + } + + try { + nestConfig = JSON.parse(readFileSync(nestConfigPath, 'utf8')); + } catch (error) { + panic({ error, message: 'get nest config file failed.' }); + } + + const dist = get(tsConfig, 'outDir', 'dist'); + const src = get(nestConfig, 'sourceRoot', 'src'); + const paths = { + cwd: cwdPath, + dist, + src, + js: join(dist, nestConfig.entryFile ?? 'main.js'), + ts: join(src, tsEntryFile ?? 'main.ts'), + bun: './node_modules/bun/bin/bun', + nest: './node_modules/@nestjs//cli/bin/nest.js', + }; + + return { + options: { ts: tsConfig, nest: nestConfig }, + paths, + subprocess: { + bun: { + cwd: cwdPath, + stdout: 'inherit', + env: process.env, + onExit: (proc) => { + proc.kill(); + if (!isNil(proc.exitCode)) { + exit(0); + } + }, + }, + node: { + cwd: cwdPath, + env: process.env, + stdio: 'inherit', + }, + }, + }; +} + +export async function getPm2Config( + configure: Configure, + option: Pm2Option, + config: CLIConfig, + script: string, +): Promise { + const { name, pm2: customConfig = {} } = await configure.get('app'); + const defaultConfig: StartOptions = { + name, + cwd: cwdPath, + script, + args: option.command, + autorestart: true, + watch: option.watch, + ignore_watch: ['node_modules'], + env: process.env, + exec_mode: 'fork', + interpreter: config.paths.bun, + }; + + return deepMerge( + defaultConfig, + omit(customConfig, ['name', 'cwd', 'script', 'args', 'watch', 'interpreter']), + 'replace', + ); +} diff --git a/src/modules/core/commands/helpers/start.ts b/src/modules/core/commands/helpers/start.ts new file mode 100644 index 0000000..8a553c8 --- /dev/null +++ b/src/modules/core/commands/helpers/start.ts @@ -0,0 +1,114 @@ +import { isNil } from '@nestjs/common/utils/shared.utils'; +import { Subprocess } from 'bun'; +import chalk from 'chalk'; +import { pick } from 'lodash'; +import { + connect as pm2Connect, + disconnect as pm2Disconnect, + restart as pm2Restart, + start as pm2Start, +} from 'pm2'; +import { Arguments } from 'yargs'; + +import { Configure } from '@/modules/config/configure'; +import { getPm2Config } from '@/modules/core/commands/helpers/config'; +import { CLIConfig, StartCommandArguments } from '@/modules/core/commands/types'; +import { AppConfig } from '@/modules/core/types'; + +export async function start( + args: Arguments, + config: CLIConfig, +): Promise { + const script = args.typescript ? config.paths.ts : config.paths.js; + const params = [config.paths.bun, 'run']; + if (args.watch) { + params.push('--watch'); + } + if (args.debug) { + const inspectFlag = + typeof args.debug === 'string' ? `--inspect=${args.debug}` : '--inspect'; + params.push(inspectFlag); + } + params.push(script); + let child: Subprocess; + if (args.watch) { + const restart = () => { + if (!isNil(child)) { + child.kill(); + } + child = Bun.spawn(params, config.subprocess.bun); + }; + restart(); + } else { + Bun.spawn(params, { + ...config.subprocess.bun, + onExit(proc) { + proc.kill(); + process.exit(0); + }, + }); + } +} + +export async function startPM2( + configure: Configure, + args: Arguments, + config: CLIConfig, +): Promise { + const { name } = await configure.get('app'); + const script = args.typescript ? config.paths.ts : config.paths.js; + const pm2config = await getPm2Config( + configure, + { command: 'start', ...pick(args, ['watch', 'typescript']) }, + config, + script, + ); + + if (pm2config.exec_mode === 'cluster' && args.typescript) { + console.log( + chalk.yellowBright( + 'Cannot directly use bun to run ts code in cluster mode, so it will automatically change to fork mode.', + ), + ); + console.log(); + console.log( + chalk.bgCyanBright( + chalk.blackBright( + 'If you really need the app to be started in cluster mode, be sure to compile it into js first, and then add the --no-ts arg when running', + ), + ), + ); + console.log(); + pm2config.exec_mode = 'fork'; + } + + const connectCallback = (error?: any) => { + if (!isNil(error)) { + console.error(error); + process.exit(2); + } + }; + + const startCallback = (error?: any) => { + if (!isNil(error)) { + console.error(error); + process.exit(1); + } + pm2Disconnect(); + }; + + const restartCallback = (error?: any) => { + if (isNil(error)) { + pm2Disconnect(); + } else { + pm2Start(pm2config, (err) => startCallback(err)); + } + }; + + pm2Connect((err: any) => { + connectCallback(err); + args.restart + ? pm2Restart(name, restartCallback) + : pm2Start(pm2config, (e) => startCallback(e)); + }); +} diff --git a/src/modules/core/commands/index.ts b/src/modules/core/commands/index.ts new file mode 100644 index 0000000..fcd74b3 --- /dev/null +++ b/src/modules/core/commands/index.ts @@ -0,0 +1 @@ +export * from './demo.command'; diff --git a/src/modules/core/commands/start.command.ts b/src/modules/core/commands/start.command.ts new file mode 100644 index 0000000..1579d77 --- /dev/null +++ b/src/modules/core/commands/start.command.ts @@ -0,0 +1,71 @@ +import { Arguments } from 'yargs'; + +import { getCLIConfig } from '@/modules/core/commands/helpers/config'; +import { start, startPM2 } from '@/modules/core/commands/helpers/start'; +import { StartCommandArguments } from '@/modules/core/commands/types'; +import { CommandItem } from '@/modules/core/types'; + +export const createStartCommand: CommandItem = async (app) => ({ + command: ['start', 's'], + describe: 'Start app', + builder: { + nestConfig: { + type: 'string', + alias: 'n', + describe: 'nest cli config file path.', + default: 'nest-cli.json', + }, + tsConfig: { + type: 'string', + alias: 't', + describe: 'typescript config file path.', + default: 'tsconfig.build.json', + }, + entry: { + type: 'string', + alias: 'e', + describe: + 'Specify entry file for ts runner, you can specify js entry file in nest-cli.json by entryFile.', + default: 'main.ts', + }, + prod: { + type: 'boolean', + alias: 'p', + describe: 'Start app in production by pm2.', + default: false, + }, + restart: { + type: 'boolean', + alias: 'r', + describe: 'Restart app(only pm2),pm2 will auto run start if process not exists.', + default: false, + }, + typescript: { + type: 'boolean', + alias: 'ts', + describe: 'Run the .ts file directly.', + default: true, + }, + watch: { + type: 'boolean', + alias: 'w', + describe: ' Run in watch mode (live-reload).', + default: false, + }, + debug: { + type: 'boolean', + alias: 'd', + describe: 'Whether to enable debug mode, only valid for non-production environments', + default: false, + }, + }, + handler: async (args: Arguments) => { + const { configure } = app; + const config = getCLIConfig(args.tsConfig, args.nestConfig, args.entry); + if (args.prod || args.restart) { + await startPM2(configure, args, config); + } else { + await start(args, config); + } + }, +}); diff --git a/src/modules/core/commands/types.ts b/src/modules/core/commands/types.ts new file mode 100644 index 0000000..351324e --- /dev/null +++ b/src/modules/core/commands/types.ts @@ -0,0 +1,59 @@ +/* eslint-disable import/no-extraneous-dependencies */ +import { SpawnOptions as NodeSpawnOptions } from 'child_process'; + +import { Configuration as NestCLIConfig } from '@nestjs/cli/lib/configuration'; +import type { SpawnOptions as BunSpawnOptions } from 'bun'; +import ts from 'typescript'; + +export type DemoCommandArguments = { + sleep?: boolean; +}; + +export interface CLIConfig { + options: { + ts: ts.CompilerOptions; + nest: NestCLIConfig; + }; + paths: Record<'cwd' | 'dist' | 'src' | 'js' | 'ts' | 'bun' | 'nest', string>; + subprocess: { + bun: BunSpawnOptions.OptionsObject; + node: NodeSpawnOptions; + }; +} + +export type StartCommandArguments = { + /** + * nest-cli.json的文件路径(相对于当前运行目录) + */ + nestConfig?: string; + /** + * 用于编译和运行的tsconfig.build.json的文件路径(相对于当前运行目录) + */ + tsConfig?: string; + /** + * 使用直接运行TS文件的入口文件,默认为main.ts. 如果是运行js文件,则通过nest-cli.json的entryFile指定 + */ + entry?: string; + /** + * 是否使用PM2后台静默启动生产环境 + */ + prod?: boolean; + /** + * 使用直接运行TS文件,这个配置只针对生产环境下是否通过 + */ + typescript?: boolean; + /** + * 是否监控,所有环境都可以使用(但在非PM2启动的生产环境下此选项无效) + */ + watch?: boolean; + /** + * 是否开启debug模式,只对非生产环境有效 + */ + debug?: boolean | string; + /** + * 是否重启应用(PM2进程) + */ + restart?: boolean; +}; + +export type Pm2Option = Pick & { command: string }; diff --git a/src/modules/core/helpers/app.ts b/src/modules/core/helpers/app.ts index 87490f8..454a7cb 100644 --- a/src/modules/core/helpers/app.ts +++ b/src/modules/core/helpers/app.ts @@ -10,13 +10,15 @@ import { Configure } from '@/modules/config/configure'; import { DEFAULT_VALIDATION_CONFIG } from '@/modules/content/constants'; +import { createCommands } from '@/modules/core/helpers/command'; + import { CoreModule } from '../core.module'; import { AppFilter } from '../providers/app.filter'; import { AppInterceptor } from '../providers/app.interceptor'; import { AppPipe } from '../providers/app.pipe'; import { App, AppConfig, CreateOptions } from '../types'; -import { createCommands, CreateModule } from './utils'; +import { CreateModule } from './utils'; export const app: App = { configure: new Configure(), commands: [] }; @@ -90,11 +92,11 @@ export async function createBootModule( } export async function startApp( - creater: () => Promise, + creator: () => Promise, listened: (app: App, startTime: Date) => () => Promise, ) { const startTime = new Date(); - const { container, configure } = await creater(); + const { container, configure } = await creator(); app.container = container; app.configure = configure; const { port, host } = await configure.get('app'); diff --git a/src/modules/core/helpers/command.ts b/src/modules/core/helpers/command.ts new file mode 100644 index 0000000..6b82ee3 --- /dev/null +++ b/src/modules/core/helpers/command.ts @@ -0,0 +1,54 @@ +import chalk from 'chalk'; +import yargs, { Arguments, CommandModule } from 'yargs'; + +import { hideBin } from 'yargs/helpers'; + +import * as coreCommands from '../commands'; +import { App, CommandCollection } from '../types'; + +export async function buildCli(creator: () => Promise) { + const app = await creator(); + const bin = yargs(hideBin(process.argv)); + app.commands.forEach((cmd) => { + bin.command(cmd); + }); + bin.usage('Usage: $0 [args]') + .scriptName('cli') + .demandCommand(1, '') + .fail((msg, err, y) => { + if (!msg && !err) { + bin.showHelp(); + process.exit(); + } + if (msg) { + console.error(chalk.red(msg)); + } + if (err) { + console.error(chalk.red(err.message)); + } + process.exit(); + }) + .strict() + .alias('v', 'version') + .help('h') + .alias('h', 'help') + .parse(); +} + +export async function createCommands( + factory: () => CommandCollection, + app: Required, +): Promise[]> { + const collection: CommandCollection = [...factory(), ...Object.values(coreCommands)]; + const commands = await Promise.all(collection.map(async (command) => command(app))); + return commands.map((command) => ({ + ...command, + handler: async (args: Arguments) => { + await app.container.close(); + await command.handler(args); + if (command.instant) { + process.exit(); + } + }, + })); +} diff --git a/src/modules/core/helpers/utils.ts b/src/modules/core/helpers/utils.ts index 7e38395..aebdffb 100644 --- a/src/modules/core/helpers/utils.ts +++ b/src/modules/core/helpers/utils.ts @@ -3,9 +3,7 @@ import chalk from 'chalk'; import deepmerge from 'deepmerge'; import { isNil } from 'lodash'; -import { Arguments, CommandModule } from 'yargs'; - -import { App, CommandCollection, PanicOption } from '../types'; +import { PanicOption } from '../types'; export function toBoolean(value?: string | boolean): boolean { if (isNil(value)) { @@ -84,21 +82,3 @@ export async function panic(option: PanicOption | string) { process.exit(1); } } - -export async function createCommands( - factory: () => CommandCollection, - app: Required, -): Promise[]> { - const collection: CommandCollection = [...factory()]; - const commands = await Promise.all(collection.map(async (command) => command(app))); - return commands.map((command) => ({ - ...command, - handler: async (args: Arguments) => { - await app.container.close(); - await command.handler(args); - if (command.instant) { - process.exit(); - } - }, - })); -} diff --git a/src/modules/core/types.ts b/src/modules/core/types.ts index fe1ec52..70acd10 100644 --- a/src/modules/core/types.ts +++ b/src/modules/core/types.ts @@ -1,6 +1,8 @@ import { ModuleMetadata, PipeTransform, Type } from '@nestjs/common'; import { NestFastifyApplication } from '@nestjs/platform-fastify'; +import { Ora } from 'ora'; +import { StartOptions } from 'pm2'; import { CommandModule } from 'yargs'; import { Configure } from '../config/configure'; @@ -58,6 +60,8 @@ export interface AppConfig { url?: string; prefix?: string; + + pm2?: Omit; } export interface PanicOption { @@ -66,6 +70,8 @@ export interface PanicOption { error?: any; exit?: boolean; + + spinner?: Ora; } export interface CommandOption extends CommandModule { diff --git a/tsconfig.json b/tsconfig.json index 187f885..9d887e1 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -31,6 +31,7 @@ "lib": ["esnext", "DOM", "ScriptHost", "WebWorker"], "baseUrl": ".", "outDir": "./dist", + "types": ["bun-types", "@types/jest"], "paths": { "@/*": ["./src/*"] }