From ab31b4957016f46b01d61e2399c044a6b7bd63e5 Mon Sep 17 00:00:00 2001 From: Mario Castro Squella Date: Mon, 9 Dec 2024 10:16:29 -0300 Subject: [PATCH] Remove child-process-promise from dependencies (#1559) * Replace child-process-promise with execa * Add rush change file * Fix broken CLI tests * Fix broken project CLI tests --------- Co-authored-by: Castro, Mario --- ...hild_process_promise_2024-12-05-01-38.json | 10 + common/config/rush/pnpm-lock.yaml | 597 ++++++++---------- packages/cli/package.json | 2 - .../cli/src/services/process/live.impl.ts | 4 +- .../cli/src/services/project-initializer.ts | 4 +- .../cli/test/services/process/live.test.ts | 8 +- .../test/services/project-initializer.test.ts | 12 +- .../framework-common-helpers/package.json | 5 +- .../integration/helper/deps-helper.ts | 4 +- .../cli/cli.build.integration.ts | 8 +- .../cli/cli.clean.integration.ts | 19 +- .../cli/cli.command.integration.ts | 8 +- .../cli/cli.entity.integration.ts | 14 +- .../cli/cli.event-handler.integration.ts | 10 +- .../cli/cli.event.integration.ts | 10 +- .../cli/cli.project.integration.ts | 131 ++-- .../cli/cli.readmodel.integration.ts | 14 +- .../cli/cli.scheduled-command.integration.ts | 8 +- .../cli/cli.type.integration.ts | 8 +- .../framework-integration-tests/package.json | 5 +- 20 files changed, 448 insertions(+), 433 deletions(-) create mode 100644 common/changes/@boostercloud/framework-core/remove_child_process_promise_2024-12-05-01-38.json diff --git a/common/changes/@boostercloud/framework-core/remove_child_process_promise_2024-12-05-01-38.json b/common/changes/@boostercloud/framework-core/remove_child_process_promise_2024-12-05-01-38.json new file mode 100644 index 000000000..fd90679a2 --- /dev/null +++ b/common/changes/@boostercloud/framework-core/remove_child_process_promise_2024-12-05-01-38.json @@ -0,0 +1,10 @@ +{ + "changes": [ + { + "packageName": "@boostercloud/framework-core", + "comment": "Replace child-process-promise with execa", + "type": "patch" + } + ], + "packageName": "@boostercloud/framework-core" +} \ No newline at end of file diff --git a/common/config/rush/pnpm-lock.yaml b/common/config/rush/pnpm-lock.yaml index e855c03fe..7af40513c 100644 --- a/common/config/rush/pnpm-lock.yaml +++ b/common/config/rush/pnpm-lock.yaml @@ -8,8 +8,8 @@ importers: ../../packages/application-tester: specifiers: '@apollo/client': 3.7.13 - '@boostercloud/eslint-config': workspace:^2.18.5 - '@boostercloud/framework-types': workspace:^2.18.5 + '@boostercloud/eslint-config': workspace:^2.18.6 + '@boostercloud/framework-types': workspace:^2.18.6 '@effect-ts/core': ^0.60.4 '@types/jsonwebtoken': 9.0.1 '@types/node': ^18.18.2 @@ -51,7 +51,7 @@ importers: devDependencies: '@boostercloud/eslint-config': link:../../tools/eslint-config '@types/jsonwebtoken': 9.0.1 - '@types/node': 18.19.65 + '@types/node': 18.19.67 '@types/ws': 8.5.4 '@typescript-eslint/eslint-plugin': 5.62.0_uve4wv4elfpx2l3zvshgwzvkay '@typescript-eslint/parser': 5.62.0_cfup2jodhmurb5mm6vjw5usxmi @@ -70,17 +70,16 @@ importers: ../../packages/cli: specifiers: - '@boostercloud/application-tester': workspace:^2.18.5 - '@boostercloud/eslint-config': workspace:^2.18.5 - '@boostercloud/framework-core': workspace:^2.18.5 - '@boostercloud/framework-types': workspace:^2.18.5 + '@boostercloud/application-tester': workspace:^2.18.6 + '@boostercloud/eslint-config': workspace:^2.18.6 + '@boostercloud/framework-core': workspace:^2.18.6 + '@boostercloud/framework-types': workspace:^2.18.6 '@effect-ts/core': ^0.60.4 '@oclif/core': 3.15.0 '@oclif/plugin-help': ^5 '@oclif/test': ^3.0.3 '@types/chai': 4.2.18 '@types/chai-as-promised': 7.1.4 - '@types/child-process-promise': ^2.2.1 '@types/faker': 5.1.5 '@types/fs-extra': ^9.0.13 '@types/inflected': 1.1.29 @@ -96,7 +95,6 @@ importers: chai: 4.2.0 chai-as-promised: 7.1.1 chalk: ^2.4.2 - child-process-promise: ^2.2.1 copyfiles: ^2.3.0 eslint: ^8.23.1 eslint-config-prettier: 8.3.0 @@ -129,9 +127,8 @@ importers: '@boostercloud/framework-types': link:../framework-types '@effect-ts/core': 0.60.5 '@oclif/core': 3.15.0_typescript@5.1.6 - '@oclif/plugin-help': 5.2.20_jtknrvqdlvipgdxn6jbxe7dreq + '@oclif/plugin-help': 5.2.20_aqnvwcrfkjmhmdr6bfrmuf3scm chalk: 2.4.2 - child-process-promise: 2.2.1 execa: 2.1.0 fp-ts: 2.16.9 fs-extra: 8.1.0 @@ -147,14 +144,13 @@ importers: '@oclif/test': 3.2.15 '@types/chai': 4.2.18 '@types/chai-as-promised': 7.1.4 - '@types/child-process-promise': 2.2.6 '@types/faker': 5.1.5 '@types/fs-extra': 9.0.13 '@types/inflected': 1.1.29 '@types/inquirer': 6.5.0 '@types/mocha': 10.0.1 '@types/mustache': 4.1.0 - '@types/node': 18.19.65 + '@types/node': 18.19.67 '@types/rewire': 2.5.30 '@types/sinon': 10.0.0 '@types/sinon-chai': 3.2.5 @@ -177,18 +173,17 @@ importers: rimraf: 5.0.10 sinon: 9.2.3 sinon-chai: 3.5.0_chai@4.2.0+sinon@9.2.3 - ts-node: 10.9.2_jtknrvqdlvipgdxn6jbxe7dreq + ts-node: 10.9.2_aqnvwcrfkjmhmdr6bfrmuf3scm ts-patch: 3.1.2 typescript: 5.1.6 ../../packages/framework-common-helpers: specifiers: - '@boostercloud/eslint-config': workspace:^2.18.5 - '@boostercloud/framework-types': workspace:^2.18.5 + '@boostercloud/eslint-config': workspace:^2.18.6 + '@boostercloud/framework-types': workspace:^2.18.6 '@effect-ts/core': ^0.60.4 '@types/chai': 4.2.18 '@types/chai-as-promised': 7.1.4 - '@types/child-process-promise': ^2.2.1 '@types/faker': 5.1.5 '@types/mocha': 10.0.1 '@types/node': ^18.18.2 @@ -200,13 +195,13 @@ importers: '@typescript-eslint/parser': ^5.0.0 chai: 4.2.0 chai-as-promised: 7.1.1 - child-process-promise: ^2.2.1 class-transformer: ~0.5.1 eslint: ^8.23.1 eslint-config-prettier: 8.3.0 eslint-plugin-import: ^2.26.0 eslint-plugin-prettier: 3.4.0 eslint-plugin-unicorn: ~44.0.2 + execa: ^2.0.3 faker: 5.1.0 mocha: 10.2.0 nyc: ^15.1.0 @@ -221,17 +216,16 @@ importers: dependencies: '@boostercloud/framework-types': link:../framework-types '@effect-ts/core': 0.60.5 - child-process-promise: 2.2.1 class-transformer: 0.5.1 + execa: 2.1.0 tslib: 2.8.1 devDependencies: '@boostercloud/eslint-config': link:../../tools/eslint-config '@types/chai': 4.2.18 '@types/chai-as-promised': 7.1.4 - '@types/child-process-promise': 2.2.6 '@types/faker': 5.1.5 '@types/mocha': 10.0.1 - '@types/node': 18.19.65 + '@types/node': 18.19.67 '@types/rewire': 2.5.30 '@types/sinon': 10.0.0 '@types/sinon-chai': 3.2.5 @@ -253,15 +247,15 @@ importers: rimraf: 5.0.10 sinon: 9.2.3 sinon-chai: 3.5.0_chai@4.2.0+sinon@9.2.3 - ts-node: 10.9.2_jtknrvqdlvipgdxn6jbxe7dreq + ts-node: 10.9.2_aqnvwcrfkjmhmdr6bfrmuf3scm typescript: 5.1.6 ../../packages/framework-core: specifiers: - '@boostercloud/eslint-config': workspace:^2.18.5 - '@boostercloud/framework-common-helpers': workspace:^2.18.5 - '@boostercloud/framework-types': workspace:^2.18.5 - '@boostercloud/metadata-booster': workspace:^2.18.5 + '@boostercloud/eslint-config': workspace:^2.18.6 + '@boostercloud/framework-common-helpers': workspace:^2.18.6 + '@boostercloud/framework-types': workspace:^2.18.6 + '@boostercloud/metadata-booster': workspace:^2.18.6 '@effect/cli': 0.35.26 '@effect/platform': 0.48.24 '@effect/platform-node': 0.45.26 @@ -328,7 +322,7 @@ importers: effect: 2.4.17 fast-check: 3.23.1 fp-ts: 2.16.9 - graphql-scalars: 1.23.0_graphql@16.9.0 + graphql-scalars: 1.24.0_graphql@16.9.0 graphql-subscriptions: 2.0.0_graphql@16.9.0 inflected: 2.1.0 iterall: 1.3.0 @@ -347,7 +341,7 @@ importers: '@types/inflected': 1.1.29 '@types/jsonwebtoken': 9.0.1 '@types/mocha': 10.0.1 - '@types/node': 18.19.65 + '@types/node': 18.19.67 '@types/sinon': 10.0.0 '@types/sinon-chai': 3.2.5 '@types/validator': 13.1.3 @@ -371,26 +365,26 @@ importers: rimraf: 5.0.10 sinon: 9.2.3 sinon-chai: 3.5.0_chai@4.2.0+sinon@9.2.3 - ts-node: 10.9.2_jtknrvqdlvipgdxn6jbxe7dreq + ts-node: 10.9.2_aqnvwcrfkjmhmdr6bfrmuf3scm ts-patch: 3.1.2 typescript: 5.1.6 ../../packages/framework-integration-tests: specifiers: '@apollo/client': 3.7.13 - '@boostercloud/application-tester': workspace:^2.18.5 - '@boostercloud/cli': workspace:^2.18.5 - '@boostercloud/eslint-config': workspace:^2.18.5 - '@boostercloud/framework-common-helpers': workspace:^2.18.5 - '@boostercloud/framework-core': workspace:^2.18.5 - '@boostercloud/framework-provider-aws': workspace:^2.18.5 - '@boostercloud/framework-provider-aws-infrastructure': workspace:^2.18.5 - '@boostercloud/framework-provider-azure': workspace:^2.18.5 - '@boostercloud/framework-provider-azure-infrastructure': workspace:^2.18.5 - '@boostercloud/framework-provider-local': workspace:^2.18.5 - '@boostercloud/framework-provider-local-infrastructure': workspace:^2.18.5 - '@boostercloud/framework-types': workspace:^2.18.5 - '@boostercloud/metadata-booster': workspace:^2.18.5 + '@boostercloud/application-tester': workspace:^2.18.6 + '@boostercloud/cli': workspace:^2.18.6 + '@boostercloud/eslint-config': workspace:^2.18.6 + '@boostercloud/framework-common-helpers': workspace:^2.18.6 + '@boostercloud/framework-core': workspace:^2.18.6 + '@boostercloud/framework-provider-aws': workspace:^2.18.6 + '@boostercloud/framework-provider-aws-infrastructure': workspace:^2.18.6 + '@boostercloud/framework-provider-azure': workspace:^2.18.6 + '@boostercloud/framework-provider-azure-infrastructure': workspace:^2.18.6 + '@boostercloud/framework-provider-local': workspace:^2.18.6 + '@boostercloud/framework-provider-local-infrastructure': workspace:^2.18.6 + '@boostercloud/framework-types': workspace:^2.18.6 + '@boostercloud/metadata-booster': workspace:^2.18.6 '@effect-ts/core': ^0.60.4 '@effect/cli': 0.35.26 '@effect/platform': 0.48.24 @@ -404,7 +398,6 @@ importers: '@types/chai': 4.2.18 '@types/chai-arrays': 2.0.0 '@types/chai-as-promised': 7.1.4 - '@types/child-process-promise': ^2.2.1 '@types/faker': 5.1.5 '@types/jsonwebtoken': 9.0.1 '@types/mocha': 10.0.1 @@ -419,7 +412,6 @@ importers: cdktf-cli: 0.19.2 chai: 4.2.0 chai-as-promised: 7.1.1 - child-process-promise: ^2.2.1 concurrently: ~8.2.2 constructs: ^10.0.0 cross-fetch: 3.1.5 @@ -429,6 +421,7 @@ importers: eslint-plugin-import: ^2.26.0 eslint-plugin-prettier: 3.4.0 eslint-plugin-unicorn: ~44.0.2 + execa: ^2.0.3 express: ^4.19.2 express-unless: 2.1.3 faker: 5.1.0 @@ -471,6 +464,7 @@ importers: '@effect/typeclass': 0.23.17_effect@2.4.17 aws-sdk: 2.853.0 effect: 2.4.17 + execa: 2.1.0 express: 4.21.1 express-unless: 2.1.3 fast-check: 3.23.1 @@ -491,12 +485,11 @@ importers: '@types/chai': 4.2.18 '@types/chai-arrays': 2.0.0 '@types/chai-as-promised': 7.1.4 - '@types/child-process-promise': 2.2.6 '@types/faker': 5.1.5 '@types/jsonwebtoken': 9.0.1 '@types/mocha': 10.0.1 '@types/nedb': 1.8.16 - '@types/node': 18.19.65 + '@types/node': 18.19.67 '@types/sinon': 10.0.0 '@types/sinon-chai': 3.2.5 '@typescript-eslint/eslint-plugin': 5.62.0_uve4wv4elfpx2l3zvshgwzvkay @@ -505,7 +498,6 @@ importers: cdktf-cli: 0.19.2_ink@3.2.0+react@17.0.2 chai: 4.2.0 chai-as-promised: 7.1.1_chai@4.2.0 - child-process-promise: 2.2.1 concurrently: 8.2.2 constructs: 10.4.2 cross-fetch: 3.1.5 @@ -530,15 +522,15 @@ importers: serverless-artillery: 0.5.2 sinon: 9.2.3 subscriptions-transport-ws: 0.11.0_graphql@16.9.0 - ts-node: 10.9.2_jtknrvqdlvipgdxn6jbxe7dreq + ts-node: 10.9.2_aqnvwcrfkjmhmdr6bfrmuf3scm ts-patch: 3.1.2 typescript: 5.1.6 ../../packages/framework-provider-aws: specifiers: - '@boostercloud/eslint-config': workspace:^2.18.5 - '@boostercloud/framework-common-helpers': workspace:^2.18.5 - '@boostercloud/framework-types': workspace:^2.18.5 + '@boostercloud/eslint-config': workspace:^2.18.6 + '@boostercloud/framework-common-helpers': workspace:^2.18.6 + '@boostercloud/framework-types': workspace:^2.18.6 '@effect-ts/core': ^0.60.4 '@types/aws-lambda': 8.10.48 '@types/chai': 4.2.18 @@ -586,7 +578,7 @@ importers: '@types/chai-as-promised': 7.1.4 '@types/faker': 5.1.5 '@types/mocha': 10.0.1 - '@types/node': 18.19.65 + '@types/node': 18.19.67 '@types/rewire': 2.5.30 '@types/sinon': 10.0.0 '@types/sinon-chai': 3.2.5 @@ -609,7 +601,7 @@ importers: rimraf: 5.0.10 sinon: 9.2.3 sinon-chai: 3.5.0_chai@4.2.0+sinon@9.2.3 - ts-node: 10.9.2_jtknrvqdlvipgdxn6jbxe7dreq + ts-node: 10.9.2_aqnvwcrfkjmhmdr6bfrmuf3scm typescript: 5.1.6 velocityjs: 2.0.6 @@ -632,10 +624,10 @@ importers: '@aws-cdk/core': ^1.170.0 '@aws-cdk/custom-resources': ^1.170.0 '@aws-cdk/cx-api': ^1.170.0 - '@boostercloud/eslint-config': workspace:^2.18.5 - '@boostercloud/framework-common-helpers': workspace:^2.18.5 - '@boostercloud/framework-provider-aws': workspace:^2.18.5 - '@boostercloud/framework-types': workspace:^2.18.5 + '@boostercloud/eslint-config': workspace:^2.18.6 + '@boostercloud/framework-common-helpers': workspace:^2.18.6 + '@boostercloud/framework-provider-aws': workspace:^2.18.6 + '@boostercloud/framework-types': workspace:^2.18.6 '@effect-ts/core': ^0.60.4 '@types/archiver': 5.1.0 '@types/aws-lambda': 8.10.48 @@ -717,7 +709,7 @@ importers: '@types/chai-as-promised': 7.1.4 '@types/faker': 5.1.5 '@types/mocha': 10.0.1 - '@types/node': 18.19.65 + '@types/node': 18.19.67 '@types/rewire': 2.5.30 '@types/sinon': 10.0.0 '@types/sinon-chai': 3.2.5 @@ -738,7 +730,7 @@ importers: rimraf: 5.0.10 sinon: 9.2.3 sinon-chai: 3.5.0_chai@4.2.0+sinon@9.2.3 - ts-node: 10.9.2_jtknrvqdlvipgdxn6jbxe7dreq + ts-node: 10.9.2_aqnvwcrfkjmhmdr6bfrmuf3scm typescript: 5.1.6 velocityjs: 2.0.6 @@ -749,9 +741,9 @@ importers: '@azure/functions': ^1.2.2 '@azure/identity': ~2.1.0 '@azure/web-pubsub': ~1.1.0 - '@boostercloud/eslint-config': workspace:^2.18.5 - '@boostercloud/framework-common-helpers': workspace:^2.18.5 - '@boostercloud/framework-types': workspace:^2.18.5 + '@boostercloud/eslint-config': workspace:^2.18.6 + '@boostercloud/framework-common-helpers': workspace:^2.18.6 + '@boostercloud/framework-types': workspace:^2.18.6 '@effect-ts/core': ^0.60.4 '@types/chai': 4.2.18 '@types/chai-as-promised': 7.1.4 @@ -795,7 +787,7 @@ importers: '@types/chai-as-promised': 7.1.4 '@types/faker': 5.1.5 '@types/mocha': 10.0.1 - '@types/node': 18.19.65 + '@types/node': 18.19.67 '@types/sinon': 10.0.0 '@types/sinon-chai': 3.2.5 '@typescript-eslint/eslint-plugin': 5.62.0_uve4wv4elfpx2l3zvshgwzvkay @@ -814,7 +806,7 @@ importers: rimraf: 5.0.10 sinon: 9.2.3 sinon-chai: 3.5.0_chai@4.2.0+sinon@9.2.3 - ts-node: 10.9.2_jtknrvqdlvipgdxn6jbxe7dreq + ts-node: 10.9.2_aqnvwcrfkjmhmdr6bfrmuf3scm typescript: 5.1.6 ../../packages/framework-provider-azure-infrastructure: @@ -823,11 +815,11 @@ importers: '@azure/arm-resources': ^5.0.1 '@azure/cosmos': ^4.0.0 '@azure/identity': ~2.1.0 - '@boostercloud/eslint-config': workspace:^2.18.5 - '@boostercloud/framework-common-helpers': workspace:^2.18.5 - '@boostercloud/framework-core': workspace:^2.18.5 - '@boostercloud/framework-provider-azure': workspace:^2.18.5 - '@boostercloud/framework-types': workspace:^2.18.5 + '@boostercloud/eslint-config': workspace:^2.18.6 + '@boostercloud/framework-common-helpers': workspace:^2.18.6 + '@boostercloud/framework-core': workspace:^2.18.6 + '@boostercloud/framework-provider-azure': workspace:^2.18.6 + '@boostercloud/framework-types': workspace:^2.18.6 '@cdktf/provider-azurerm': 13.3.0 '@cdktf/provider-time': 9.0.2 '@effect-ts/core': ^0.60.4 @@ -912,7 +904,7 @@ importers: '@types/fs-extra': 9.0.13 '@types/mocha': 10.0.1 '@types/mustache': 4.1.0 - '@types/node': 18.19.65 + '@types/node': 18.19.67 '@types/sinon': 10.0.0 '@types/sinon-chai': 3.2.5 '@types/uuid': 8.3.0 @@ -929,14 +921,14 @@ importers: prettier: 2.3.0 rimraf: 5.0.10 sinon: 9.2.3 - ts-node: 10.9.2_jtknrvqdlvipgdxn6jbxe7dreq + ts-node: 10.9.2_aqnvwcrfkjmhmdr6bfrmuf3scm typescript: 5.1.6 ../../packages/framework-provider-local: specifiers: - '@boostercloud/eslint-config': workspace:^2.18.5 - '@boostercloud/framework-common-helpers': workspace:^2.18.5 - '@boostercloud/framework-types': workspace:^2.18.5 + '@boostercloud/eslint-config': workspace:^2.18.6 + '@boostercloud/framework-common-helpers': workspace:^2.18.6 + '@boostercloud/framework-types': workspace:^2.18.6 '@effect-ts/core': ^0.60.4 '@seald-io/nedb': 4.0.2 '@types/chai': 4.2.18 @@ -985,7 +977,7 @@ importers: '@types/express': 4.17.21 '@types/faker': 5.1.5 '@types/mocha': 10.0.1 - '@types/node': 18.19.65 + '@types/node': 18.19.67 '@types/sinon': 10.0.0 '@types/sinon-chai': 3.2.5 '@types/sinon-express-mock': 1.3.12 @@ -1008,15 +1000,15 @@ importers: sinon: 9.2.3 sinon-chai: 3.5.0_chai@4.2.0+sinon@9.2.3 sinon-express-mock: 2.2.1_sinon@9.2.3 - ts-node: 10.9.2_jtknrvqdlvipgdxn6jbxe7dreq + ts-node: 10.9.2_aqnvwcrfkjmhmdr6bfrmuf3scm typescript: 5.1.6 ../../packages/framework-provider-local-infrastructure: specifiers: - '@boostercloud/eslint-config': workspace:^2.18.5 - '@boostercloud/framework-common-helpers': workspace:^2.18.5 - '@boostercloud/framework-provider-local': workspace:^2.18.5 - '@boostercloud/framework-types': workspace:^2.18.5 + '@boostercloud/eslint-config': workspace:^2.18.6 + '@boostercloud/framework-common-helpers': workspace:^2.18.6 + '@boostercloud/framework-provider-local': workspace:^2.18.6 + '@boostercloud/framework-types': workspace:^2.18.6 '@effect-ts/core': ^0.60.4 '@types/chai': 4.2.18 '@types/chai-as-promised': 7.1.4 @@ -1069,7 +1061,7 @@ importers: '@types/express': 4.17.21 '@types/faker': 5.1.5 '@types/mocha': 10.0.1 - '@types/node': 18.19.65 + '@types/node': 18.19.67 '@types/node-schedule': 1.3.2 '@types/sinon': 10.0.0 '@types/sinon-chai': 3.2.5 @@ -1091,13 +1083,13 @@ importers: sinon: 9.2.3 sinon-chai: 3.5.0_chai@4.2.0+sinon@9.2.3 sinon-express-mock: 2.2.1_sinon@9.2.3 - ts-node: 10.9.2_jtknrvqdlvipgdxn6jbxe7dreq + ts-node: 10.9.2_aqnvwcrfkjmhmdr6bfrmuf3scm typescript: 5.1.6 ../../packages/framework-types: specifiers: - '@boostercloud/eslint-config': workspace:^2.18.5 - '@boostercloud/metadata-booster': workspace:^2.18.5 + '@boostercloud/eslint-config': workspace:^2.18.6 + '@boostercloud/metadata-booster': workspace:^2.18.6 '@effect-ts/core': ^0.60.4 '@effect-ts/node': ~0.39.0 '@effect/cli': 0.35.26 @@ -1156,7 +1148,7 @@ importers: '@types/chai': 4.2.18 '@types/chai-as-promised': 7.1.4 '@types/mocha': 10.0.1 - '@types/node': 18.19.65 + '@types/node': 18.19.67 '@types/sinon': 10.0.0 '@types/sinon-chai': 3.2.5 '@types/uuid': 8.3.0 @@ -1181,7 +1173,7 @@ importers: ../../packages/metadata-booster: specifiers: - '@boostercloud/eslint-config': workspace:^2.18.5 + '@boostercloud/eslint-config': workspace:^2.18.6 '@effect-ts/core': ^0.60.4 '@types/node': ^18.18.2 '@typescript-eslint/eslint-plugin': ^5.0.0 @@ -1207,7 +1199,7 @@ importers: tslib: 2.8.1 devDependencies: '@boostercloud/eslint-config': link:../../tools/eslint-config - '@types/node': 18.19.65 + '@types/node': 18.19.67 '@typescript-eslint/eslint-plugin': 5.62.0_uve4wv4elfpx2l3zvshgwzvkay '@typescript-eslint/parser': 5.62.0_cfup2jodhmurb5mm6vjw5usxmi eslint: 8.57.1 @@ -1218,7 +1210,7 @@ importers: prettier: 2.3.0 rimraf: 5.0.10 sinon: 9.2.3 - ts-node: 10.9.2_jtknrvqdlvipgdxn6jbxe7dreq + ts-node: 10.9.2_aqnvwcrfkjmhmdr6bfrmuf3scm ts-patch: 3.1.2 typescript: 5.1.6 @@ -2751,7 +2743,7 @@ packages: diff: 5.2.0 fast-deep-equal: 3.1.3 string-width: 4.2.3 - table: 6.8.2 + table: 6.9.0 dev: false /@aws-cdk/core/1.204.0_hol6usdabdbzhugfw355k4ebam: @@ -2890,7 +2882,7 @@ packages: '@azure/core-client': 1.9.2 '@azure/core-lro': 2.7.2 '@azure/core-paging': 1.6.2 - '@azure/core-rest-pipeline': 1.18.0 + '@azure/core-rest-pipeline': 1.18.1 tslib: 2.8.1 transitivePeerDependencies: - supports-color @@ -2905,7 +2897,7 @@ packages: '@azure/core-client': 1.9.2 '@azure/core-lro': 2.7.2 '@azure/core-paging': 1.6.2 - '@azure/core-rest-pipeline': 1.18.0 + '@azure/core-rest-pipeline': 1.18.1 tslib: 2.8.1 transitivePeerDependencies: - supports-color @@ -2946,7 +2938,7 @@ packages: dependencies: '@azure/abort-controller': 2.1.2 '@azure/core-auth': 1.9.0 - '@azure/core-rest-pipeline': 1.18.0 + '@azure/core-rest-pipeline': 1.18.1 '@azure/core-tracing': 1.2.0 '@azure/core-util': 1.11.0 '@azure/logger': 1.1.4 @@ -2972,8 +2964,8 @@ packages: tslib: 2.8.1 dev: false - /@azure/core-rest-pipeline/1.18.0: - resolution: {integrity: sha512-QSoGUp4Eq/gohEFNJaUOwTN7BCc2nHTjjbm75JT0aD7W65PWM1H/tItz0GsABn22uaKyGxiMhWQLt2r+FGU89Q==} + /@azure/core-rest-pipeline/1.18.1: + resolution: {integrity: sha512-/wS73UEDrxroUEVywEm7J0p2c+IIiVxyfigCGfsKvCxxCET4V/Hef2aURqltrXMRjNmdmt5IuOgIpl8f6xdO5A==} engines: {node: '>=18.0.0'} dependencies: '@azure/abort-controller': 2.1.2 @@ -3009,7 +3001,7 @@ packages: dependencies: '@azure/abort-controller': 2.1.2 '@azure/core-auth': 1.9.0 - '@azure/core-rest-pipeline': 1.18.0 + '@azure/core-rest-pipeline': 1.18.1 '@azure/core-tracing': 1.2.0 '@azure/core-util': 1.11.0 fast-json-stable-stringify: 2.1.0 @@ -3052,7 +3044,7 @@ packages: '@azure/abort-controller': 1.1.0 '@azure/core-auth': 1.9.0 '@azure/core-client': 1.9.2 - '@azure/core-rest-pipeline': 1.18.0 + '@azure/core-rest-pipeline': 1.18.1 '@azure/core-tracing': 1.2.0 '@azure/core-util': 1.11.0 '@azure/logger': 1.1.4 @@ -3114,7 +3106,7 @@ packages: dependencies: '@azure/core-auth': 1.9.0 '@azure/core-client': 1.9.2 - '@azure/core-rest-pipeline': 1.18.0 + '@azure/core-rest-pipeline': 1.18.1 '@azure/core-tracing': 1.2.0 '@azure/logger': 1.1.4 jsonwebtoken: 9.0.1 @@ -3131,8 +3123,8 @@ packages: js-tokens: 4.0.0 picocolors: 1.1.1 - /@babel/compat-data/7.26.2: - resolution: {integrity: sha512-Z0WgzSEa+aUcdiJuCIqgujCshpMWgUpgOxXotrYPSA53hA3qopNaqcJpyr0hVb1FeWdnqFA35/fUtXgBK8srQg==} + /@babel/compat-data/7.26.3: + resolution: {integrity: sha512-nHIxvKPniQXpmQLb0vhY3VaFb3S0YrTAwpOWJZh1wn3oJPjJk9Asva204PsBdmAE8vpzfHudT8DB0scYvy9q0g==} engines: {node: '>=6.9.0'} dev: true @@ -3142,14 +3134,14 @@ packages: dependencies: '@ampproject/remapping': 2.3.0 '@babel/code-frame': 7.26.2 - '@babel/generator': 7.26.2 + '@babel/generator': 7.26.3 '@babel/helper-compilation-targets': 7.25.9 '@babel/helper-module-transforms': 7.26.0_@babel+core@7.26.0 '@babel/helpers': 7.26.0 - '@babel/parser': 7.26.2 + '@babel/parser': 7.26.3 '@babel/template': 7.25.9 - '@babel/traverse': 7.25.9 - '@babel/types': 7.26.0 + '@babel/traverse': 7.26.3 + '@babel/types': 7.26.3 convert-source-map: 2.0.0 debug: 4.3.7 gensync: 1.0.0-beta.2 @@ -3159,12 +3151,12 @@ packages: - supports-color dev: true - /@babel/generator/7.26.2: - resolution: {integrity: sha512-zevQbhbau95nkoxSq3f/DC/SC+EEOUZd3DYqfSkMhY2/wfSeaHV1Ew4vk8e+x8lja31IbyuUa2uQ3JONqKbysw==} + /@babel/generator/7.26.3: + resolution: {integrity: sha512-6FF/urZvD0sTeO7k6/B15pMLC4CHUv1426lzr3N01aHJTl046uCAh9LXW/fzeXXjPNCJ6iABW5XaWOsIZB93aQ==} engines: {node: '>=6.9.0'} dependencies: - '@babel/parser': 7.26.2 - '@babel/types': 7.26.0 + '@babel/parser': 7.26.3 + '@babel/types': 7.26.3 '@jridgewell/gen-mapping': 0.3.5 '@jridgewell/trace-mapping': 0.3.25 jsesc: 3.0.2 @@ -3173,7 +3165,7 @@ packages: resolution: {integrity: sha512-j9Db8Suy6yV/VHa4qzrj9yZfZxhLWQdVnRlXxmKLYlhWUVB1sB2G5sxuWYXk/whHD9iW76PmNzxZ4UCnTQTVEQ==} engines: {node: '>=6.9.0'} dependencies: - '@babel/compat-data': 7.26.2 + '@babel/compat-data': 7.26.3 '@babel/helper-validator-option': 7.25.9 browserslist: 4.24.2 lru-cache: 5.1.1 @@ -3184,8 +3176,8 @@ packages: resolution: {integrity: sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/traverse': 7.25.9 - '@babel/types': 7.26.0 + '@babel/traverse': 7.26.3 + '@babel/types': 7.26.3 transitivePeerDependencies: - supports-color dev: true @@ -3199,7 +3191,7 @@ packages: '@babel/core': 7.26.0 '@babel/helper-module-imports': 7.25.9 '@babel/helper-validator-identifier': 7.25.9 - '@babel/traverse': 7.25.9 + '@babel/traverse': 7.26.3 transitivePeerDependencies: - supports-color dev: true @@ -3222,15 +3214,15 @@ packages: engines: {node: '>=6.9.0'} dependencies: '@babel/template': 7.25.9 - '@babel/types': 7.26.0 + '@babel/types': 7.26.3 dev: true - /@babel/parser/7.26.2: - resolution: {integrity: sha512-DWMCZH9WA4Maitz2q21SRKHo9QXZxkDsbNZoVD62gusNtNBBqDg9i7uOhASfTfIGNzW+O+r7+jAlM8dwphcJKQ==} + /@babel/parser/7.26.3: + resolution: {integrity: sha512-WJ/CvmY8Mea8iDXo6a7RK2wbmJITT5fN3BEkRuFlxVyNx8jOKIIhmC4fSkTcPcf8JyavbBwIe6OpiCOBXt/IcA==} engines: {node: '>=6.0.0'} hasBin: true dependencies: - '@babel/types': 7.26.0 + '@babel/types': 7.26.3 /@babel/runtime/7.26.0: resolution: {integrity: sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw==} @@ -3244,26 +3236,26 @@ packages: engines: {node: '>=6.9.0'} dependencies: '@babel/code-frame': 7.26.2 - '@babel/parser': 7.26.2 - '@babel/types': 7.26.0 + '@babel/parser': 7.26.3 + '@babel/types': 7.26.3 - /@babel/traverse/7.25.9: - resolution: {integrity: sha512-ZCuvfwOwlz/bawvAuvcj8rrithP2/N55Tzz342AkTvq4qaWbGfmCk/tKhNaV2cthijKrPAA8SRJV5WWe7IBMJw==} + /@babel/traverse/7.26.3: + resolution: {integrity: sha512-yTmc8J+Sj8yLzwr4PD5Xb/WF3bOYu2C2OoSZPzbuqRm4n98XirsbzaX+GloeO376UnSYIYJ4NCanwV5/ugZkwA==} engines: {node: '>=6.9.0'} dependencies: '@babel/code-frame': 7.26.2 - '@babel/generator': 7.26.2 - '@babel/parser': 7.26.2 + '@babel/generator': 7.26.3 + '@babel/parser': 7.26.3 '@babel/template': 7.25.9 - '@babel/types': 7.26.0 + '@babel/types': 7.26.3 debug: 4.3.7 globals: 11.12.0 transitivePeerDependencies: - supports-color dev: true - /@babel/types/7.26.0: - resolution: {integrity: sha512-Z/yiTPj+lDVnF7lWeKCIJzaIkI0vYO87dMpZ4bg4TDrFe4XXLFWL1TbXU27gBP3QccxV9mZICCrnjnYlJjXHOA==} + /@babel/types/7.26.3: + resolution: {integrity: sha512-vN5p+1kl59GVKMvTHt55NzzmYVxprfJD+ql7U9NFIfKCBkYE55LYtS+WtPlaYOyzydrKI8Nezd+aZextrd+FMA==} engines: {node: '>=6.9.0'} dependencies: '@babel/helper-string-parser': 7.25.9 @@ -3299,9 +3291,9 @@ packages: ink-spinner: 4.0.3_ink@3.2.0+react@17.0.2 ink-testing-library: 2.1.0 ink-use-stdout-dimensions: 1.0.5_ink@3.2.0+react@17.0.2 - jsii: 5.6.0 + jsii: 5.7.1 jsii-pacmak: 1.105.0 - jsii-srcmak: 0.1.1304 + jsii-srcmak: 0.1.1307 lodash.isequal: 4.5.0 log4js: 6.9.1 minimatch: 5.1.6 @@ -3351,9 +3343,9 @@ packages: /@cdktf/hcl2cdk/0.19.2: resolution: {integrity: sha512-v0UNRvvzuCi3SnmSAgBFAnWavT0ybR1AzkK8ndgfbB5JLDoNm0iJV0MOTURZF+I0O3V9u4RZsw4DVNPdil2EEA==} dependencies: - '@babel/generator': 7.26.2 + '@babel/generator': 7.26.3 '@babel/template': 7.25.9 - '@babel/types': 7.26.0 + '@babel/types': 7.26.3 '@cdktf/commons': 0.19.2 '@cdktf/hcl2json': 0.19.2 '@cdktf/provider-generator': 0.19.2 @@ -3363,7 +3355,7 @@ packages: glob: 10.4.5 graphology: 0.25.4_graphology-types@0.24.8 graphology-types: 0.24.8 - jsii-rosetta: 5.6.0 + jsii-rosetta: 5.7.1 prettier: 2.8.8 reserved-words: 0.1.2 zod: 3.23.8 @@ -3404,7 +3396,7 @@ packages: codemaker: 1.105.0 deepmerge: 4.3.1 fs-extra: 8.1.0 - jsii-srcmak: 0.1.1304 + jsii-srcmak: 0.1.1307 transitivePeerDependencies: - debug - supports-color @@ -3639,7 +3631,7 @@ packages: dependencies: '@inquirer/type': 1.5.5 '@types/mute-stream': 0.0.1 - '@types/node': 20.17.7 + '@types/node': 20.17.9 '@types/wrap-ansi': 3.0.0 ansi-escapes: 4.3.2 chalk: 4.1.2 @@ -3658,7 +3650,7 @@ packages: dependencies: '@inquirer/type': 1.5.5 '@types/mute-stream': 0.0.4 - '@types/node': 20.17.7 + '@types/node': 20.17.9 '@types/wrap-ansi': 3.0.0 ansi-escapes: 4.3.2 chalk: 4.1.2 @@ -3802,13 +3794,6 @@ packages: '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.5.0 - /@jsii/check-node/1.104.0: - resolution: {integrity: sha512-5rAn4y11APxq69DmTKtAACmDuOymcTiz29CE7s0AeWA5jzpxBRhkaj8xwixiSQtkoBFk+Vpoi2eNctCvwLdFaw==} - engines: {node: '>= 14.17.0'} - dependencies: - chalk: 4.1.2 - semver: 7.6.3 - /@jsii/check-node/1.105.0: resolution: {integrity: sha512-7QIzioc9//TwRjLhGMllcTBfIvJ0h6OeGVUEYdXB1DpCNtMbr8Xcj5KaeKHRAF9iRjB1d0IGzKm4A8fRUzIf+Q==} engines: {node: '>= 14.17.0'} @@ -3852,7 +3837,7 @@ packages: '@nodelib/fs.scandir': 2.1.5 fastq: 1.17.1 - /@oclif/core/2.16.0_jtknrvqdlvipgdxn6jbxe7dreq: + /@oclif/core/2.16.0_aqnvwcrfkjmhmdr6bfrmuf3scm: resolution: {integrity: sha512-dL6atBH0zCZl1A1IXCKJgLPrM/wR7K+Wi401E/IvqsK8m2iCHW+0TEOGrans/cuN3oTW+uxIyJFHJ8Im0k4qBw==} engines: {node: '>=14.0.0'} dependencies: @@ -3879,7 +3864,7 @@ packages: strip-ansi: 6.0.1 supports-color: 8.1.1 supports-hyperlinks: 2.3.0 - ts-node: 10.9.2_jtknrvqdlvipgdxn6jbxe7dreq + ts-node: 10.9.2_aqnvwcrfkjmhmdr6bfrmuf3scm tslib: 2.8.1 widest-line: 3.1.0 wordwrap: 1.0.0 @@ -3960,11 +3945,11 @@ packages: wrap-ansi: 7.0.0 dev: true - /@oclif/plugin-help/5.2.20_jtknrvqdlvipgdxn6jbxe7dreq: + /@oclif/plugin-help/5.2.20_aqnvwcrfkjmhmdr6bfrmuf3scm: resolution: {integrity: sha512-u+GXX/KAGL9S10LxAwNUaWdzbEBARJ92ogmM7g3gDVud2HioCmvWQCDohNRVZ9GYV9oKwZ/M8xwd6a1d95rEKQ==} engines: {node: '>=12.0.0'} dependencies: - '@oclif/core': 2.16.0_jtknrvqdlvipgdxn6jbxe7dreq + '@oclif/core': 2.16.0_aqnvwcrfkjmhmdr6bfrmuf3scm transitivePeerDependencies: - '@swc/core' - '@swc/wasm' @@ -4233,7 +4218,7 @@ packages: dependencies: adm-zip: 0.5.16 archiver: 5.3.0 - axios: 1.7.7 + axios: 1.7.9 fast-glob: 3.3.2 https-proxy-agent: 5.0.1_supports-color@8.1.1 ignore: 5.3.2 @@ -4402,14 +4387,14 @@ packages: resolution: {integrity: sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==} dependencies: '@types/connect': 3.4.38 - '@types/node': 18.19.65 + '@types/node': 18.19.67 /@types/cacheable-request/6.0.3: resolution: {integrity: sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw==} dependencies: '@types/http-cache-semantics': 4.0.4 '@types/keyv': 3.1.4 - '@types/node': 18.19.65 + '@types/node': 18.19.67 '@types/responselike': 1.0.3 dev: true @@ -4429,32 +4414,26 @@ packages: resolution: {integrity: sha512-rS27+EkB/RE1Iz3u0XtVL5q36MGDWbgYe7zWiodyKNUnthxY0rukK5V36eiUCtCisB7NN8zKYH6DO2M37qxFEQ==} dev: true - /@types/child-process-promise/2.2.6: - resolution: {integrity: sha512-g0pOHijr6Trug43D2bV0PLSIsSHa/xHEES2HeX5BAlduq1vW0nZcq27Zeud5lgmNB+kPYYVqiMap32EHGTco/w==} - dependencies: - '@types/node': 18.19.65 - dev: true - /@types/cli-progress/3.11.6: resolution: {integrity: sha512-cE3+jb9WRlu+uOSAugewNpITJDt1VF8dHOopPO4IABFc3SXYL5WE/+PTz/FCdZRRfIujiWW3n3aMbv1eIGVRWA==} dependencies: - '@types/node': 18.19.65 + '@types/node': 18.19.67 /@types/connect/3.4.38: resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==} dependencies: - '@types/node': 18.19.65 + '@types/node': 18.19.67 /@types/cors/2.8.17: resolution: {integrity: sha512-8CGDvrBj1zgo2qE+oS3pOCyYNqCPryMWY2bGfwA0dcfopWGgxs+78df0Rs3rc9THP4JkOhLsAa+15VdpAqkcUA==} dependencies: - '@types/node': 18.19.65 + '@types/node': 18.19.67 dev: true /@types/express-serve-static-core/4.19.6: resolution: {integrity: sha512-N4LZ2xG7DatVqhCZzOGb1Yi5lMbXSZcmdLDe9EzSndPV2HpWYWzRbaerl2n27irrm94EPpprqa8KpskPT085+A==} dependencies: - '@types/node': 18.19.65 + '@types/node': 18.19.67 '@types/qs': 6.9.17 '@types/range-parser': 1.2.7 '@types/send': 0.17.4 @@ -4474,14 +4453,14 @@ packages: /@types/fs-extra/9.0.13: resolution: {integrity: sha512-nEnwB++1u5lVDM2UI4c1+5R+FYaKfaAzS4OococimjVm3nQw3TuzH5UNsocrcTBbhnerblyHj4A49qXbIiZdpA==} dependencies: - '@types/node': 18.19.65 + '@types/node': 18.19.67 dev: true /@types/glob/8.1.0: resolution: {integrity: sha512-IO+MJPVhoqz+28h1qLAcBEH2+xHMK6MTyHJc7MTnnYb6wsoLR29POVGJ7LycmVXIqyy/4/2ShP5sUwTXuOwb/w==} dependencies: '@types/minimatch': 5.1.2 - '@types/node': 18.19.65 + '@types/node': 18.19.67 /@types/http-cache-semantics/4.0.4: resolution: {integrity: sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA==} @@ -4510,12 +4489,12 @@ packages: /@types/jsonwebtoken/9.0.1: resolution: {integrity: sha512-c5ltxazpWabia/4UzhIoaDcIza4KViOQhdbjRlfcIGVnsE3c3brkz9Z+F/EeJIECOQP7W7US2hNE930cWWkPiw==} dependencies: - '@types/node': 18.19.65 + '@types/node': 18.19.67 /@types/keyv/3.1.4: resolution: {integrity: sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==} dependencies: - '@types/node': 18.19.65 + '@types/node': 18.19.67 dev: true /@types/lodash/4.17.13: @@ -4539,29 +4518,29 @@ packages: /@types/mute-stream/0.0.1: resolution: {integrity: sha512-0yQLzYhCqGz7CQPE3iDmYjhb7KMBFOP+tBkyw+/Y2YyDI5wpS7itXXxneN1zSsUwWx3Ji6YiVYrhAnpQGS/vkw==} dependencies: - '@types/node': 18.19.65 + '@types/node': 18.19.67 /@types/mute-stream/0.0.4: resolution: {integrity: sha512-CPM9nzrCPPJHQNA9keH9CVkVI+WR5kMa+7XEs5jcGQ0VoAGnLv242w8lIVgwAEfmE4oufJRaTc9PNLQl0ioAow==} dependencies: - '@types/node': 18.19.65 + '@types/node': 18.19.67 /@types/nedb/1.8.16: resolution: {integrity: sha512-ND+uzwAZk7ZI9byOvHGOcZe2R9XUcLF698yDJKn00trFvh+GaemkX3gQKCSKtObjDpv8Uuou+k8v4x4scPr4TA==} dependencies: - '@types/node': 18.19.65 + '@types/node': 18.19.67 dev: true /@types/needle/2.5.3: resolution: {integrity: sha512-RwgTwMRaedfyCBe5SSWMpm1Yqzc5UPZEMw0eAd09OSyV93nLRj9/evMGZmgFeHKzUOd4xxtHvgtc+rjcBjI1Qg==} dependencies: - '@types/node': 18.19.65 + '@types/node': 18.19.67 dev: false /@types/node-schedule/1.3.2: resolution: {integrity: sha512-Y0CqdAr+lCpArT8CJJjJq4U2v8Bb5e7ru2nV/NhDdaptCMCRdOL3Y7tAhen39HluQMaIKWvPbDuiFBUQpg7Srw==} dependencies: - '@types/node': 18.19.65 + '@types/node': 18.19.67 dev: true /@types/node/10.17.60: @@ -4573,13 +4552,13 @@ packages: dependencies: undici-types: 5.26.5 - /@types/node/18.19.65: - resolution: {integrity: sha512-Ay5BZuO1UkTmVHzZJNvZKw/E+iB3GQABb6kijEz89w2JrfhNA+M/ebp18pfz9Gqe9ywhMC8AA8yC01lZq48J+Q==} + /@types/node/18.19.67: + resolution: {integrity: sha512-wI8uHusga+0ZugNp0Ol/3BqQfEcCCNfojtO6Oou9iVNGPTL6QNSdnUdqq85fRgIorLhLMuPIKpsN98QE9Nh+KQ==} dependencies: undici-types: 5.26.5 - /@types/node/20.17.7: - resolution: {integrity: sha512-sZXXnpBFMKbao30dUAvzKbdwA2JM1fwUtVEq/kxKuPI5mMwZiRElCpTXb0Biq/LMEVpXDZL5G5V0RPnxKeyaYg==} + /@types/node/20.17.9: + resolution: {integrity: sha512-0JOXkRyLanfGPE2QRCwgxhzlBAvaRdCNMcvbd7jFfpmD4eEXll7LRwy5ymJmyeZqk7Nh7eD2LeUyQ68BbndmXw==} dependencies: undici-types: 6.19.8 @@ -4596,7 +4575,7 @@ packages: /@types/responselike/1.0.3: resolution: {integrity: sha512-H/+L+UkTV33uf49PH5pCAUBVPNj2nDBXTN+qS1dOwyyg24l3CcicicCA7ca+HMvJBZcFgl5r8e+RR6elsb4Lyw==} dependencies: - '@types/node': 18.19.65 + '@types/node': 18.19.67 dev: true /@types/rewire/2.5.30: @@ -4610,13 +4589,13 @@ packages: resolution: {integrity: sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==} dependencies: '@types/mime': 1.3.5 - '@types/node': 18.19.65 + '@types/node': 18.19.67 /@types/serve-static/1.15.7: resolution: {integrity: sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==} dependencies: '@types/http-errors': 2.0.4 - '@types/node': 18.19.65 + '@types/node': 18.19.67 '@types/send': 0.17.4 /@types/sinon-chai/3.2.5: @@ -4641,7 +4620,7 @@ packages: /@types/through/0.0.33: resolution: {integrity: sha512-HsJ+z3QuETzP3cswwtzt2vEIiHBk/dCcHGhbmG5X3ecnwFD/lPrMpliGXxSCg03L9AhrdwA4Oz/qfspkDW+xGQ==} dependencies: - '@types/node': 18.19.65 + '@types/node': 18.19.67 dev: true /@types/uuid/8.3.0: @@ -4658,14 +4637,14 @@ packages: /@types/ws/8.5.4: resolution: {integrity: sha512-zdQDHKUgcX/zBc4GrwsE/7dVdAD8JR4EuiAXiiUhhfyIJXXb2+PrGshFyeXWQPMmmZ2XxgaqclgpIC7eTXc1mg==} dependencies: - '@types/node': 18.19.65 + '@types/node': 18.19.67 dev: true /@types/yauzl/2.10.3: resolution: {integrity: sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==} requiresBuild: true dependencies: - '@types/node': 18.19.65 + '@types/node': 18.19.67 optional: true /@types/yoga-layout/1.9.2: @@ -5080,7 +5059,7 @@ packages: es-abstract: 1.23.5 es-object-atoms: 1.0.0 get-intrinsic: 1.2.4 - is-string: 1.0.7 + is-string: 1.1.0 /array-union/2.1.0: resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} @@ -5207,8 +5186,8 @@ packages: uuid: 3.3.2 xml2js: 0.4.19 - /axios/1.7.7: - resolution: {integrity: sha512-S4kL7XrjgBmvdGut0sN3yJxqYzrDOnivkBiN0OFs6hLiUam3UPvswUo0kqGyhqUZGEOytHyumEdXsAkgCOUf3Q==} + /axios/1.7.9: + resolution: {integrity: sha512-LhLcE7Hbiryz8oMDdDptSrWowmB4Bl6RCt6sIJKpRB4XtVf0iEgewX3au/pJqm+Py1kCASkb/FFKjxQaLtxJvw==} dependencies: follow-redirects: 1.15.9 form-data: 4.0.1 @@ -5296,8 +5275,8 @@ packages: engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true dependencies: - caniuse-lite: 1.0.30001684 - electron-to-chromium: 1.5.64 + caniuse-lite: 1.0.30001686 + electron-to-chromium: 1.5.68 node-releases: 2.0.18 update-browserslist-db: 1.1.1_browserslist@4.24.2 dev: true @@ -5412,8 +5391,8 @@ packages: resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} engines: {node: '>=10'} - /caniuse-lite/1.0.30001684: - resolution: {integrity: sha512-G1LRwLIQjBQoyq0ZJGqGIJUXzJ8irpbjHLpVRXDvBEScFJ9b17sgK6vlx0GAJFE21okD7zXl08rRRUfq6HdoEQ==} + /caniuse-lite/1.0.30001686: + resolution: {integrity: sha512-Y7deg0Aergpa24M3qLC5xjNklnKnhsmSyR/V89dLZ1n0ucJIFNs7PgR2Yfa/Zf6W79SbBicgtGxZr2juHkEUIA==} dev: true /cardinal/2.1.1: @@ -5459,7 +5438,7 @@ packages: https-proxy-agent: 5.0.1 ink-select-input: 4.2.2_ink@3.2.0+react@17.0.2 ink-table: 3.1.0_ink@3.2.0+react@17.0.2 - jsii: 5.6.0 + jsii: 5.7.1 jsii-pacmak: 1.105.0 minimatch: 5.1.6 node-fetch: 2.7.0 @@ -5577,13 +5556,6 @@ packages: stream-promise: 3.2.0 dev: true - /child-process-promise/2.2.1: - resolution: {integrity: sha512-Fi4aNdqBsr0mv+jgWxcZ/7rAIC2mgihrptyVI4foh/rrjY/3BNjfP9+oaiFx/fzim+1ZyCNBae0DlyfQhSugog==} - dependencies: - cross-spawn: 4.0.2 - node-version: 1.2.0 - promise-polyfill: 6.1.0 - /chokidar/3.5.3: resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} engines: {node: '>= 8.10.0'} @@ -5881,7 +5853,7 @@ packages: date-fns: 2.30.0 lodash: 4.17.21 rxjs: 7.8.1 - shell-quote: 1.8.1 + shell-quote: 1.8.2 spawn-command: 0.0.2 supports-color: 8.1.1 tree-kill: 1.2.2 @@ -5989,12 +5961,6 @@ packages: transitivePeerDependencies: - encoding - /cross-spawn/4.0.2: - resolution: {integrity: sha512-yAXz/pA1tD8Gtg2S98Ekf/sewp3Lcp3YoFKJ4Hkp5h5yLWnKVTDU0kwjKJ8NDCYcfTLfyGkzTikst+jWypT1iA==} - dependencies: - lru-cache: 4.1.5 - which: 1.3.1 - /cross-spawn/6.0.6: resolution: {integrity: sha512-VqCUuhcd1iB+dsv8gxPttb5iZh/D0iubSP21g36KXdEuf6I5JiioesUVjpCdHV9MZRUfVFlvwtIUyPfxo5trtw==} engines: {node: '>=4.8'} @@ -6208,7 +6174,7 @@ packages: is-arguments: 1.1.1 is-array-buffer: 3.0.4 is-date-object: 1.0.5 - is-regex: 1.1.4 + is-regex: 1.2.0 is-shared-array-buffer: 1.0.3 isarray: 2.0.5 object-is: 1.1.6 @@ -6216,9 +6182,9 @@ packages: object.assign: 4.1.5 regexp.prototype.flags: 1.5.3 side-channel: 1.0.6 - which-boxed-primitive: 1.0.2 + which-boxed-primitive: 1.1.0 which-collection: 1.0.2 - which-typed-array: 1.1.15 + which-typed-array: 1.1.16 /deep-extend/0.6.0: resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} @@ -6264,7 +6230,7 @@ packages: dependencies: es-define-property: 1.0.0 es-errors: 1.3.0 - gopd: 1.0.1 + gopd: 1.2.0 /define-lazy-prop/2.0.0: resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==} @@ -6400,8 +6366,8 @@ packages: dependencies: jake: 10.9.2 - /electron-to-chromium/1.5.64: - resolution: {integrity: sha512-IXEuxU+5ClW2IGEYFC2T7szbyVgehupCWQe5GNh+H065CD6U6IFN0s4KeAMFGNmQolRU4IV7zGBWSYMmZ8uuqQ==} + /electron-to-chromium/1.5.68: + resolution: {integrity: sha512-FgMdJlma0OzUYlbrtZ4AeXjKxKPk6KT8WOP8BjcqxWtlg8qyJQjRzPJzUtUn5GBg1oQ26hFs7HOOHJMYiJRnvQ==} dev: true /emoji-regex/7.0.3: @@ -6452,24 +6418,24 @@ packages: es-errors: 1.3.0 es-object-atoms: 1.0.0 es-set-tostringtag: 2.0.3 - es-to-primitive: 1.2.1 + es-to-primitive: 1.3.0 function.prototype.name: 1.1.6 get-intrinsic: 1.2.4 get-symbol-description: 1.0.2 globalthis: 1.0.4 - gopd: 1.0.1 + gopd: 1.2.0 has-property-descriptors: 1.0.2 - has-proto: 1.0.3 - has-symbols: 1.0.3 + has-proto: 1.1.0 + has-symbols: 1.1.0 hasown: 2.0.2 internal-slot: 1.0.7 is-array-buffer: 3.0.4 is-callable: 1.2.7 is-data-view: 1.0.1 is-negative-zero: 2.0.3 - is-regex: 1.1.4 + is-regex: 1.2.0 is-shared-array-buffer: 1.0.3 - is-string: 1.0.7 + is-string: 1.1.0 is-typed-array: 1.1.13 is-weakref: 1.0.2 object-inspect: 1.13.3 @@ -6486,7 +6452,7 @@ packages: typed-array-byte-offset: 1.0.3 typed-array-length: 1.0.7 unbox-primitive: 1.0.2 - which-typed-array: 1.1.15 + which-typed-array: 1.1.16 /es-define-property/1.0.0: resolution: {integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==} @@ -6503,11 +6469,11 @@ packages: dependencies: call-bind: 1.0.7 get-intrinsic: 1.2.4 - has-symbols: 1.0.3 + has-symbols: 1.1.0 is-arguments: 1.1.1 is-map: 2.0.3 is-set: 2.0.3 - is-string: 1.0.7 + is-string: 1.1.0 isarray: 2.0.5 stop-iteration-iterator: 1.0.0 @@ -6530,13 +6496,13 @@ packages: dependencies: hasown: 2.0.2 - /es-to-primitive/1.2.1: - resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} + /es-to-primitive/1.3.0: + resolution: {integrity: sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==} engines: {node: '>= 0.4'} dependencies: is-callable: 1.2.7 is-date-object: 1.0.5 - is-symbol: 1.0.4 + is-symbol: 1.1.0 /es5-ext/0.10.64: resolution: {integrity: sha512-p2snDhiLaXe6dahss1LddxqEm+SkuDvV8dnIQG0MWjyHpcMNfXKPE+/Cc0y+PhxJX3A4xGNeFCj5oc0BUh6deg==} @@ -7059,7 +7025,7 @@ packages: dependencies: '@types/chai': 4.2.18 '@types/lodash': 4.17.13 - '@types/node': 18.19.65 + '@types/node': 18.19.67 '@types/sinon': 10.0.0 lodash: 4.17.21 mock-stdin: 1.0.0 @@ -7456,8 +7422,8 @@ packages: dependencies: es-errors: 1.3.0 function-bind: 1.1.2 - has-proto: 1.0.3 - has-symbols: 1.0.3 + has-proto: 1.1.0 + has-symbols: 1.1.0 hasown: 2.0.2 /get-package-type/0.1.0: @@ -7581,7 +7547,7 @@ packages: engines: {node: '>= 0.4'} dependencies: define-properties: 1.2.1 - gopd: 1.0.1 + gopd: 1.2.0 /globby/11.1.0: resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} @@ -7594,10 +7560,9 @@ packages: merge2: 1.4.1 slash: 3.0.0 - /gopd/1.0.1: - resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} - dependencies: - get-intrinsic: 1.2.4 + /gopd/1.2.0: + resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} + engines: {node: '>= 0.4'} /got/11.8.6: resolution: {integrity: sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g==} @@ -7640,8 +7605,8 @@ packages: graphology-types: 0.24.8 obliterator: 2.0.4 - /graphql-scalars/1.23.0_graphql@16.9.0: - resolution: {integrity: sha512-YTRNcwitkn8CqYcleKOx9IvedA8JIERn8BRq21nlKgOr4NEcTaWEG0sT+H92eF3ALTFbPgsqfft4cw+MGgv0Gg==} + /graphql-scalars/1.24.0_graphql@16.9.0: + resolution: {integrity: sha512-olbFN39m0XsHHESACUdd7jWU/lGxMMS1B7NZ8XqpqhKZrjBxzeGYAnQ4Ax//huYds771wb7gCznA+65QDuUa+g==} engines: {node: '>=10'} peerDependencies: graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 @@ -7688,19 +7653,21 @@ packages: dependencies: es-define-property: 1.0.0 - /has-proto/1.0.3: - resolution: {integrity: sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==} + /has-proto/1.1.0: + resolution: {integrity: sha512-QLdzI9IIO1Jg7f9GT1gXpPpXArAn6cS31R1eEZqz08Gc+uQ8/XiqHWt17Fiw+2p6oTTIq5GXEpQkAlA88YRl/Q==} engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 - /has-symbols/1.0.3: - resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} + /has-symbols/1.1.0: + resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==} engines: {node: '>= 0.4'} /has-tostringtag/1.0.2: resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} engines: {node: '>= 0.4'} dependencies: - has-symbols: 1.0.3 + has-symbols: 1.1.0 /hasha/5.2.2: resolution: {integrity: sha512-Hrp5vIK/xr5SkeN2onO32H0MgNZ0f17HRNH39WfL0SYUNOTZ5Lz1TJ8Pajo/87dYGEFlLMm7mIc/k/s6Bvz9HQ==} @@ -8037,8 +8004,9 @@ packages: dependencies: has-tostringtag: 1.0.2 - /is-bigint/1.0.4: - resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} + /is-bigint/1.1.0: + resolution: {integrity: sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==} + engines: {node: '>= 0.4'} dependencies: has-bigints: 1.0.2 @@ -8048,8 +8016,8 @@ packages: dependencies: binary-extensions: 2.3.0 - /is-boolean-object/1.1.2: - resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} + /is-boolean-object/1.2.0: + resolution: {integrity: sha512-kR5g0+dXf/+kXnqI+lu0URKYPKgICtHGGNCDSB10AaUFj3o/HkB3u7WfpRBJGFopxxY0oH3ux7ZsDjLtK7xqvw==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.7 @@ -8152,10 +8120,11 @@ packages: resolution: {integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==} engines: {node: '>= 0.4'} - /is-number-object/1.0.7: - resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} + /is-number-object/1.1.0: + resolution: {integrity: sha512-KVSZV0Dunv9DTPkhXwcZ3Q+tUc9TsaE1ZwX5J2WMvsSGS6Md8TFPun5uwh0yRdrNerI6vf/tbJxqSx4c1ZI1Lw==} engines: {node: '>= 0.4'} dependencies: + call-bind: 1.0.7 has-tostringtag: 1.0.2 /is-number/7.0.0: @@ -8180,12 +8149,14 @@ packages: resolution: {integrity: sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==} dev: true - /is-regex/1.1.4: - resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} + /is-regex/1.2.0: + resolution: {integrity: sha512-B6ohK4ZmoftlUe+uvenXSbPJFo6U37BH7oO1B3nQH8f/7h27N56s85MhUtbFJAziz5dcmuR3i8ovUl35zp8pFA==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.7 + gopd: 1.2.0 has-tostringtag: 1.0.2 + hasown: 2.0.2 /is-set/2.0.3: resolution: {integrity: sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==} @@ -8206,23 +8177,26 @@ packages: resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} engines: {node: '>=8'} - /is-string/1.0.7: - resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} + /is-string/1.1.0: + resolution: {integrity: sha512-PlfzajuF9vSo5wErv3MJAKD/nqf9ngAs1NFQYm16nUYFO2IzxJ2hcm+IOCg+EEopdykNNUhVq5cz35cAUxU8+g==} engines: {node: '>= 0.4'} dependencies: + call-bind: 1.0.7 has-tostringtag: 1.0.2 - /is-symbol/1.0.4: - resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} + /is-symbol/1.1.0: + resolution: {integrity: sha512-qS8KkNNXUZ/I+nX6QT8ZS1/Yx0A444yhzdTKxCzKkNjQ9sHErBxJnJAgh+f5YhusYECEcjo4XcyH87hn6+ks0A==} engines: {node: '>= 0.4'} dependencies: - has-symbols: 1.0.3 + call-bind: 1.0.7 + has-symbols: 1.1.0 + safe-regex-test: 1.0.3 /is-typed-array/1.1.13: resolution: {integrity: sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==} engines: {node: '>= 0.4'} dependencies: - which-typed-array: 1.1.15 + which-typed-array: 1.1.16 /is-typedarray/1.0.0: resolution: {integrity: sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==} @@ -8433,7 +8407,7 @@ packages: xmlbuilder: 15.1.1 yargs: 16.2.0 - /jsii-pacmak/1.105.0_jsii-rosetta@5.6.0: + /jsii-pacmak/1.105.0_jsii-rosetta@5.7.1: resolution: {integrity: sha512-oTQSoCfBite5cb+gwu2N6SWoJY/vteQSiCI24flo9UqR+PdGBlFDIJGPciPS6ZEC2v20et4YSJYyHFXFGfMQsQ==} engines: {node: '>= 14.17.0'} hasBin: true @@ -8448,7 +8422,7 @@ packages: escape-string-regexp: 4.0.0 fs-extra: 10.1.0 jsii-reflect: 1.105.0 - jsii-rosetta: 5.6.0 + jsii-rosetta: 5.7.1 semver: 7.6.3 spdx-license-list: 6.9.0 xmlbuilder: 15.1.1 @@ -8466,46 +8440,46 @@ packages: oo-ascii-tree: 1.105.0 yargs: 16.2.0 - /jsii-rosetta/5.6.0: - resolution: {integrity: sha512-PSt2PFK1ssLcRAiGnK+k0On61Idh8uTCJcofC+vPr3dOgbVNbtIVI70z9Uw2bOwByrJ+ApHewubi7cWhybEcrA==} + /jsii-rosetta/5.7.1: + resolution: {integrity: sha512-joxTYrpaYYUFpDYwNhf0lHyp1i6ZfXjpl2AkSCEd6vd0FvmK00tKbWu8UnY/dA7ryI1hvDkm1MTi6f4s36ZzZg==} engines: {node: '>= 18.12.0'} hasBin: true dependencies: - '@jsii/check-node': 1.104.0 + '@jsii/check-node': 1.105.0 '@jsii/spec': 1.105.0 '@xmldom/xmldom': 0.9.5 chalk: 4.1.2 commonmark: 0.31.2 fast-glob: 3.3.2 - jsii: 5.6.0 + jsii: 5.7.1 semver: 7.6.3 semver-intersect: 1.5.0 stream-json: 1.9.1 - typescript: 5.6.3 + typescript: 5.7.2 workerpool: 6.5.1 yargs: 17.7.2 transitivePeerDependencies: - supports-color - /jsii-srcmak/0.1.1304: - resolution: {integrity: sha512-vqnTfGrT2thnetvtgu+BqidbUcPOShSf5VweCBhDApMDSZFtVJEjj/SxKuiG9iu9VNcYjlC5bpxwqcgY5aAbog==} + /jsii-srcmak/0.1.1307: + resolution: {integrity: sha512-XUCy2Bmg1N6XKE/QgwOoh7y5jk2jG90PhHRsXeznRfuruUZviy/9oceBZH99yMs9FOYWXGeozg+LIUBx4H/uXg==} hasBin: true dependencies: fs-extra: 9.1.0 - jsii: 5.6.0 - jsii-pacmak: 1.105.0_jsii-rosetta@5.6.0 - jsii-rosetta: 5.6.0 + jsii: 5.7.1 + jsii-pacmak: 1.105.0_jsii-rosetta@5.7.1 + jsii-rosetta: 5.7.1 ncp: 2.0.0 yargs: 17.7.2 transitivePeerDependencies: - supports-color - /jsii/5.6.0: - resolution: {integrity: sha512-XBXAF9a4UF2HE+LMSa+WDuYRNpmZlBxHrXaTVIFumo0oAuKb9eauPd4slwgQnCftyP5iyk8zX/Z2y4I3yQVcfA==} + /jsii/5.7.1: + resolution: {integrity: sha512-EQ9HWmzD+Xpe+yciMQUx3i3Rm1ZVVeIXADbA53KSCDDbd9tqHvZ9kTOrFXakCXcaWIOqXFro+2TLiIIx5HtJhQ==} engines: {node: '>= 18.12.0'} hasBin: true dependencies: - '@jsii/check-node': 1.104.0 + '@jsii/check-node': 1.105.0 '@jsii/spec': 1.105.0 case: 1.6.3 chalk: 4.1.2 @@ -8515,7 +8489,7 @@ packages: semver-intersect: 1.5.0 sort-json: 2.0.1 spdx-license-list: 6.9.0 - typescript: 5.6.3 + typescript: 5.7.2 yargs: 17.7.2 transitivePeerDependencies: - supports-color @@ -8897,12 +8871,6 @@ packages: /lru-cache/10.4.3: resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} - /lru-cache/4.1.5: - resolution: {integrity: sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==} - dependencies: - pseudomap: 1.0.2 - yallist: 2.1.2 - /lru-cache/5.1.1: resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} dependencies: @@ -9394,10 +9362,6 @@ packages: sorted-array-functions: 1.3.0 dev: false - /node-version/1.2.0: - resolution: {integrity: sha512-ma6oU4Sk0qOoKEAymVoTvk8EdXEobdS7m/mAGhDJ8Rouugho48crHBORAmy5BoOcv8wraPM6xumapQp5hl4iIQ==} - engines: {node: '>=6.0.0'} - /noms/0.0.0: resolution: {integrity: sha512-lNDU9VJaOPxUmXcLb+HQFeUgQQPtMI24Gt6hgfuMHRJgMRHMF/qZ4HJD3GDru4sSw9IQl2jPjAYnQrdIeLbwow==} dependencies: @@ -9519,7 +9483,7 @@ packages: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 - has-symbols: 1.0.3 + has-symbols: 1.1.0 object-keys: 1.1.1 /object.fromentries/2.0.8: @@ -9989,9 +9953,6 @@ packages: engines: {node: '>=0.4.0'} dev: true - /promise-polyfill/6.1.0: - resolution: {integrity: sha512-g0LWaH0gFsxovsU7R5LrrhHhWAWiHRnh1GPrhXnPgYsDkIqjRYUYSZEsej/wtleDrz5xVSIDbeKfidztp2XHFQ==} - /promise-queue/2.2.5: resolution: {integrity: sha512-p/iXrPSVfnqPft24ZdNNLECw/UrtLTpT3jpAAMzl/o5/rDsGCPo3/CQS2611flL6LkoEJ3oQZw7C8Q80ZISXRQ==} engines: {node: '>= 0.8.0'} @@ -10026,9 +9987,6 @@ packages: resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} dev: true - /pseudomap/1.0.2: - resolution: {integrity: sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==} - /pump/3.0.2: resolution: {integrity: sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==} dependencies: @@ -10108,7 +10066,7 @@ packages: /react-devtools-core/4.28.5: resolution: {integrity: sha512-cq/o30z9W2Wb4rzBefjv5fBalHU0rJGZCHAkf/RHSBWSSYwh8PlQTqqOJmgIIbBtpj27T6FIPXeomIjZtCNVqA==} dependencies: - shell-quote: 1.8.1 + shell-quote: 1.8.2 ws: 7.5.10 transitivePeerDependencies: - bufferutil @@ -10223,7 +10181,7 @@ packages: es-abstract: 1.23.5 es-errors: 1.3.0 get-intrinsic: 1.2.4 - gopd: 1.0.1 + gopd: 1.2.0 which-builtin-type: 1.2.0 /regenerator-runtime/0.14.1: @@ -10417,7 +10375,7 @@ packages: dependencies: call-bind: 1.0.7 get-intrinsic: 1.2.4 - has-symbols: 1.0.3 + has-symbols: 1.1.0 isarray: 2.0.5 /safe-buffer/5.1.2: @@ -10432,7 +10390,7 @@ packages: dependencies: call-bind: 1.0.7 es-errors: 1.3.0 - is-regex: 1.1.4 + is-regex: 1.2.0 /safe-regex/2.1.1: resolution: {integrity: sha512-rx+x8AMzKb5Q5lQ95Zoi6ZbJqwCLkqi3XuJXp5P3rT8OEc6sZCJG5AE5dU3lsgRr/F4Bs31jSlVN+j5KrsGu9A==} @@ -10616,7 +10574,7 @@ packages: es-errors: 1.3.0 function-bind: 1.1.2 get-intrinsic: 1.2.4 - gopd: 1.0.1 + gopd: 1.2.0 has-property-descriptors: 1.0.2 /set-function-name/2.0.2: @@ -10657,8 +10615,9 @@ packages: resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} engines: {node: '>=8'} - /shell-quote/1.8.1: - resolution: {integrity: sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==} + /shell-quote/1.8.2: + resolution: {integrity: sha512-AzqKpGKjrj7EM6rKVQEPpB288oCfnrEIuyoT9cyF4nmGa7V8Zk6f7RRqYisX8X9m+Q7bd632aZW4ky7EhbQztA==} + engines: {node: '>= 0.4'} /shortid/2.2.16: resolution: {integrity: sha512-Ugt+GIZqvGXCIItnsL+lvFJOiN7RYqlGy7QE41O3YC1xbNSeDGIRO7xg2JJXIAj1cAGnOeC1r7/T9pgrtQbv4g==} @@ -11149,8 +11108,8 @@ packages: string-width: 3.1.0 dev: true - /table/6.8.2: - resolution: {integrity: sha512-w2sfv80nrAh2VCbqR5AK27wswXhqcck2AhfnNW76beQXskGZ1V12GwS//yYVa3d3fcvAip2OUnbDAjW2k3v9fA==} + /table/6.9.0: + resolution: {integrity: sha512-9kY+CygyYM6j02t5YFHbNz2FN5QmYGv9zAjVp4lCDjlCw7amdckXlEt/bjMhUIfj4ThGRE4gCUH5+yGnNuPo5A==} engines: {node: '>=10.0.0'} dependencies: ajv: 8.17.1 @@ -11275,9 +11234,9 @@ packages: resolution: {integrity: sha512-hN4uFRxbK+PX56DxYiGHsTn2dME3TVr9vbNqlQGcGcPhJAn+tdP126iA+TArMpI4YSgnTkMWyoLl5bf81Hi5TA==} engines: {node: '>= 0.4'} dependencies: - gopd: 1.0.1 + gopd: 1.2.0 typedarray.prototype.slice: 1.0.3 - which-typed-array: 1.1.15 + which-typed-array: 1.1.16 dev: true /tree-kill/1.2.2: @@ -11305,7 +11264,7 @@ packages: code-block-writer: 12.0.0 dev: false - /ts-node/10.9.2_jtknrvqdlvipgdxn6jbxe7dreq: + /ts-node/10.9.2_aqnvwcrfkjmhmdr6bfrmuf3scm: resolution: {integrity: sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==} hasBin: true peerDependencies: @@ -11324,7 +11283,7 @@ packages: '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.4 - '@types/node': 18.19.65 + '@types/node': 18.19.67 acorn: 8.14.0 acorn-walk: 8.3.4 arg: 4.1.3 @@ -11456,8 +11415,8 @@ packages: dependencies: call-bind: 1.0.7 for-each: 0.3.3 - gopd: 1.0.1 - has-proto: 1.0.3 + gopd: 1.2.0 + has-proto: 1.1.0 is-typed-array: 1.1.13 /typed-array-byte-offset/1.0.3: @@ -11467,8 +11426,8 @@ packages: available-typed-arrays: 1.0.7 call-bind: 1.0.7 for-each: 0.3.3 - gopd: 1.0.1 - has-proto: 1.0.3 + gopd: 1.2.0 + has-proto: 1.1.0 is-typed-array: 1.1.13 reflect.getprototypeof: 1.0.7 @@ -11478,7 +11437,7 @@ packages: dependencies: call-bind: 1.0.7 for-each: 0.3.3 - gopd: 1.0.1 + gopd: 1.2.0 is-typed-array: 1.1.13 possible-typed-array-names: 1.0.0 reflect.getprototypeof: 1.0.7 @@ -11506,8 +11465,8 @@ packages: engines: {node: '>=14.17'} hasBin: true - /typescript/5.6.3: - resolution: {integrity: sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==} + /typescript/5.7.2: + resolution: {integrity: sha512-i5t66RHxDvVN40HfDd1PsEThGNnlMCMT3jMUuoh9/0TaqWevNontacunWyN02LA9/fIbEWlcHZcgTKb9QoaLfg==} engines: {node: '>=14.17'} hasBin: true @@ -11516,8 +11475,8 @@ packages: dependencies: call-bind: 1.0.7 has-bigints: 1.0.2 - has-symbols: 1.0.3 - which-boxed-primitive: 1.0.2 + has-symbols: 1.1.0 + which-boxed-primitive: 1.1.0 /unbzip2-stream/1.4.3: resolution: {integrity: sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==} @@ -11591,7 +11550,7 @@ packages: is-arguments: 1.1.1 is-generator-function: 1.0.10 is-typed-array: 1.1.13 - which-typed-array: 1.1.15 + which-typed-array: 1.1.16 /utils-merge/1.0.1: resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==} @@ -11672,14 +11631,15 @@ packages: tr46: 0.0.3 webidl-conversions: 3.0.1 - /which-boxed-primitive/1.0.2: - resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} + /which-boxed-primitive/1.1.0: + resolution: {integrity: sha512-Ei7Miu/AXe2JJ4iNF5j/UphAgRoma4trE6PtisM09bPygb3egMH3YLW/befsWb1A1AxvNSFidOFTB18XtnIIng==} + engines: {node: '>= 0.4'} dependencies: - is-bigint: 1.0.4 - is-boolean-object: 1.1.2 - is-number-object: 1.0.7 - is-string: 1.0.7 - is-symbol: 1.0.4 + is-bigint: 1.1.0 + is-boolean-object: 1.2.0 + is-number-object: 1.1.0 + is-string: 1.1.0 + is-symbol: 1.1.0 /which-builtin-type/1.2.0: resolution: {integrity: sha512-I+qLGQ/vucCby4tf5HsLmGueEla4ZhwTBSqaooS+Y0BuxN4Cp+okmGuV+8mXZ84KDI9BA+oklo+RzKg0ONdSUA==} @@ -11692,12 +11652,12 @@ packages: is-date-object: 1.0.5 is-finalizationregistry: 1.1.0 is-generator-function: 1.0.10 - is-regex: 1.1.4 + is-regex: 1.2.0 is-weakref: 1.0.2 isarray: 2.0.5 - which-boxed-primitive: 1.0.2 + which-boxed-primitive: 1.1.0 which-collection: 1.0.2 - which-typed-array: 1.1.15 + which-typed-array: 1.1.16 /which-collection/1.0.2: resolution: {integrity: sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==} @@ -11712,14 +11672,14 @@ packages: resolution: {integrity: sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==} dev: true - /which-typed-array/1.1.15: - resolution: {integrity: sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==} + /which-typed-array/1.1.16: + resolution: {integrity: sha512-g+N+GAWiRj66DngFwHvISJd+ITsyphZvD1vChfVg6cEdnzy53GzB3oy0fUNlvhz7H7+MiqhYr26qxQShCpKTTQ==} engines: {node: '>= 0.4'} dependencies: available-typed-arrays: 1.0.7 call-bind: 1.0.7 for-each: 0.3.3 - gopd: 1.0.1 + gopd: 1.2.0 has-tostringtag: 1.0.2 /which/1.3.1: @@ -11727,6 +11687,7 @@ packages: hasBin: true dependencies: isexe: 2.0.0 + dev: true /which/2.0.2: resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} @@ -11886,9 +11847,6 @@ packages: resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} engines: {node: '>=10'} - /yallist/2.1.2: - resolution: {integrity: sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==} - /yallist/3.1.1: resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} dev: true @@ -11937,6 +11895,11 @@ packages: /yargs-parser/20.2.4: resolution: {integrity: sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==} engines: {node: '>=10'} + dev: true + + /yargs-parser/20.2.9: + resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==} + engines: {node: '>=10'} /yargs-parser/21.1.1: resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} @@ -11994,7 +11957,7 @@ packages: require-directory: 2.1.1 string-width: 4.2.3 y18n: 5.0.8 - yargs-parser: 20.2.4 + yargs-parser: 20.2.9 /yargs/17.7.2: resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} diff --git a/packages/cli/package.json b/packages/cli/package.json index 9d5a0a572..d343d6daf 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -17,7 +17,6 @@ "@oclif/core": "3.15.0", "@oclif/plugin-help": "^5", "chalk": "^2.4.2", - "child-process-promise": "^2.2.1", "execa": "^2.0.3", "fp-ts": "^2.11.0", "fs-extra": "^8.1.0", @@ -35,7 +34,6 @@ "@oclif/test": "^3.0.3", "@types/chai": "4.2.18", "@types/chai-as-promised": "7.1.4", - "@types/child-process-promise": "^2.2.1", "@types/faker": "5.1.5", "@types/fs-extra": "^9.0.13", "@types/inflected": "1.1.29", diff --git a/packages/cli/src/services/process/live.impl.ts b/packages/cli/src/services/process/live.impl.ts index 94a4e506f..084a8baec 100644 --- a/packages/cli/src/services/process/live.impl.ts +++ b/packages/cli/src/services/process/live.impl.ts @@ -1,4 +1,4 @@ -import * as childProcess from 'child-process-promise' +import * as execa from 'execa' import * as process from 'process' import { ProcessError, ProcessService } from '.' import { Layer, tryCatch, tryCatchPromise } from '@boostercloud/framework-types/dist/effect' @@ -7,7 +7,7 @@ import { unknownToError } from '../../common/errors' const exec = (command: string, cwd?: string) => tryCatchPromise( async () => { - const { stdout, stderr } = await childProcess.exec(command, { cwd }) + const { stdout, stderr } = await execa.command(command, { cwd }) const result = ` ${stderr ? `There were some issues running the command: ${stderr}\n` : ''} ${stdout} diff --git a/packages/cli/src/services/project-initializer.ts b/packages/cli/src/services/project-initializer.ts index b848f3be8..79ea3fd97 100644 --- a/packages/cli/src/services/project-initializer.ts +++ b/packages/cli/src/services/project-initializer.ts @@ -1,5 +1,5 @@ import * as fs from 'fs-extra' -import { exec } from 'child-process-promise' +import { command } from 'execa' import * as Mustache from 'mustache' import * as path from 'path' import * as tsConfig from '../templates/project/tsconfig-json' @@ -59,7 +59,7 @@ export async function generateRootDirectory(config: ProjectInitializerConfig): P export async function initializeGit(config: ProjectInitializerConfig): Promise { try { - await exec('git init && git add -A && git commit -m "Initial commit"', { cwd: projectDir(config) }) + await command('git init && git add -A && git commit -m "Initial commit"', { cwd: projectDir(config), shell: true }) } catch (e) { throw wrapExecError(e, 'Could not initialize git repository') } diff --git a/packages/cli/test/services/process/live.test.ts b/packages/cli/test/services/process/live.test.ts index df10e361c..9f7f214c9 100644 --- a/packages/cli/test/services/process/live.test.ts +++ b/packages/cli/test/services/process/live.test.ts @@ -1,5 +1,5 @@ import * as process from 'process' -import * as childProcessPromise from 'child-process-promise' +import * as execa from 'execa' import { fake, replace, restore } from 'sinon' import { Effect, gen, mapError, pipe, unsafeRunEffect } from '@boostercloud/framework-types/dist/effect' import { LiveProcess } from '../../../src/services/process/live.impl' @@ -10,7 +10,7 @@ import { ProcessService } from '../../../src/services/process' describe('Process - Live Implementation', () => { beforeEach(() => { replace(process, 'cwd', fake.returns('')) - replace(childProcessPromise, 'exec', fake.resolves({})) + replace(execa, 'command', fake.resolves({ stdout: '', stderr: '' })) }) afterEach(() => { @@ -35,7 +35,7 @@ describe('Process - Live Implementation', () => { expect(process.cwd).to.have.been.called }) - it('uses child-process-promise.exec', async () => { + it('uses execa.command', async () => { const command = 'command' const cwd = 'cwd' @@ -48,6 +48,6 @@ describe('Process - Live Implementation', () => { layer: LiveProcess, onError: guardError('An error ocurred'), }) - expect(childProcessPromise.exec).to.have.been.calledWith(command, { cwd }) + expect(execa.command).to.have.been.calledWith(command, { cwd }) }) }) diff --git a/packages/cli/test/services/project-initializer.test.ts b/packages/cli/test/services/project-initializer.test.ts index 37fe91130..9d680d165 100644 --- a/packages/cli/test/services/project-initializer.test.ts +++ b/packages/cli/test/services/project-initializer.test.ts @@ -1,13 +1,13 @@ import * as fs from 'fs-extra' -import * as childProcessPromise from 'child-process-promise' +import * as execa from 'execa' import { generateConfigFiles, - installDependencies, generateRootDirectory, initializeGit, + installDependencies, ProjectInitializerConfig, } from '../../src/services/project-initializer' -import { restore, replace, fake } from 'sinon' +import { fake, replace, restore } from 'sinon' import { expect } from '../expect' import { makeTestPackageManager } from './package-manager/test.impl' import * as PackageManager from '../../src/services/package-manager/live.impl' @@ -16,7 +16,7 @@ describe('project initializer', (): void => { beforeEach(() => { replace(fs, 'mkdirs', fake.resolves({})) replace(fs, 'outputFile', fake.resolves({})) - replace(childProcessPromise, 'exec', fake.resolves({})) + replace(execa, 'command', fake.resolves({ stdout: '', stderr: '' })) }) afterEach(() => { @@ -42,9 +42,7 @@ describe('project initializer', (): void => { it('initialize Git', async () => { await initializeGit(defaultProjectInitializerConfig) - expect(childProcessPromise.exec).to.have.been.calledWithMatch( - 'git init && git add -A && git commit -m "Initial commit"' - ) + expect(execa.command).to.have.been.calledWithMatch('git init && git add -A && git commit -m "Initial commit"') }) it('Generate root directory', async () => { diff --git a/packages/framework-common-helpers/package.json b/packages/framework-common-helpers/package.json index 7a90181f8..a567379a0 100644 --- a/packages/framework-common-helpers/package.json +++ b/packages/framework-common-helpers/package.json @@ -37,16 +37,15 @@ }, "dependencies": { "@boostercloud/framework-types": "workspace:^2.18.6", - "child-process-promise": "^2.2.1", "tslib": "^2.4.0", "@effect-ts/core": "^0.60.4", - "class-transformer": "~0.5.1" + "class-transformer": "~0.5.1", + "execa": "^2.0.3" }, "devDependencies": { "@boostercloud/eslint-config": "workspace:^2.18.6", "@types/chai": "4.2.18", "@types/chai-as-promised": "7.1.4", - "@types/child-process-promise": "^2.2.1", "@types/mocha": "10.0.1", "@types/node": "^18.18.2", "@types/rewire": "^2.5.28", diff --git a/packages/framework-integration-tests/integration/helper/deps-helper.ts b/packages/framework-integration-tests/integration/helper/deps-helper.ts index 6cef41163..51006d5c7 100644 --- a/packages/framework-integration-tests/integration/helper/deps-helper.ts +++ b/packages/framework-integration-tests/integration/helper/deps-helper.ts @@ -1,4 +1,4 @@ -import { exec } from 'child-process-promise' +import { command } from 'execa' import * as path from 'path' import * as fs from 'fs' @@ -35,5 +35,5 @@ function overrideWithLocalDeps(dependencies: Record): void { } export async function forceRepoRebuild(): Promise { - await exec('rush update && rush rebuild') + await command('rush update && rush rebuild') } diff --git a/packages/framework-integration-tests/integration/provider-unaware/cli/cli.build.integration.ts b/packages/framework-integration-tests/integration/provider-unaware/cli/cli.build.integration.ts index 5ef1e36a6..ee6094d73 100644 --- a/packages/framework-integration-tests/integration/provider-unaware/cli/cli.build.integration.ts +++ b/packages/framework-integration-tests/integration/provider-unaware/cli/cli.build.integration.ts @@ -1,7 +1,7 @@ import * as path from 'path' import { expect } from 'chai' -import { sandboxPathFor, removeFolders, fileExists } from '../../helper/file-helper' -import { exec } from 'child-process-promise' +import { fileExists, removeFolders, sandboxPathFor } from '../../helper/file-helper' +import { command } from 'execa' // Imported from another package to avoid duplication // It is OK-ish, since integration tests are always run in the context of the whole monorepo import { createSandboxProject } from '../../../../cli/src/common/sandbox' @@ -26,7 +26,7 @@ describe('Build', () => { ['boost build', 'Checking project structure', 'Building project', 'Build complete'].join('(.|\n)*') ) - const { stdout } = await exec(`${cliPath} build`, { cwd: buildSandboxDir }) + const { stdout } = await command(`${cliPath} build`, { cwd: buildSandboxDir }) expect(stdout).to.match(expectedOutputRegex) expect(fileExists(path.join(buildSandboxDir, 'dist', 'index.js'))).to.be.true @@ -64,7 +64,7 @@ describe('Compile fallback', () => { ['boost build', 'Checking project structure', 'Building project', 'Build complete'].join('(.|\n)*') ) - const { stdout } = await exec(`${cliPath} build`, { cwd: compileSandboxDir }) + const { stdout } = await command(`${cliPath} build`, { cwd: compileSandboxDir }) expect(stdout).to.match(expectedOutputRegex) expect(fileExists(path.join(compileSandboxDir, 'eureka'))).to.be.true diff --git a/packages/framework-integration-tests/integration/provider-unaware/cli/cli.clean.integration.ts b/packages/framework-integration-tests/integration/provider-unaware/cli/cli.clean.integration.ts index 82d1c22b6..22977ffb7 100644 --- a/packages/framework-integration-tests/integration/provider-unaware/cli/cli.clean.integration.ts +++ b/packages/framework-integration-tests/integration/provider-unaware/cli/cli.clean.integration.ts @@ -1,7 +1,7 @@ import * as path from 'path' import { expect } from 'chai' -import { sandboxPathFor, removeFolders, fileExists } from '../../helper/file-helper' -import { exec } from 'child-process-promise' +import { fileExists, removeFolders, sandboxPathFor } from '../../helper/file-helper' +import { command } from 'execa' // Imported from another package to avoid duplication // It is OK-ish, since integration tests are always run in the context of the whole monorepo import { createSandboxProject } from '../../../../cli/src/common/sandbox' @@ -21,19 +21,18 @@ describe('Clean', () => { context('Valid clean', () => { it('should clean the project after build', async () => { - - await exec(`${cliPath} build`, { cwd: cleanSandboxDir }) - - expect(fileExists(path.join(cleanSandboxDir,'dist'))).to.be.true - + await command(`${cliPath} build`, { cwd: cleanSandboxDir }) + + expect(fileExists(path.join(cleanSandboxDir, 'dist'))).to.be.true + const expectedCleanOutputRegex = new RegExp( ['boost clean', 'Checking project structure', 'Cleaning project', 'Clean complete'].join('(.|\n)*') ) - const { stdout } = await exec(`${cliPath} clean`, { cwd: cleanSandboxDir }) + const { stdout } = await command(`${cliPath} clean`, { cwd: cleanSandboxDir }) expect(stdout).to.match(expectedCleanOutputRegex) - expect(fileExists(path.join(cleanSandboxDir,'dist'))).to.be.false + expect(fileExists(path.join(cleanSandboxDir, 'dist'))).to.be.false }) }) -}) \ No newline at end of file +}) diff --git a/packages/framework-integration-tests/integration/provider-unaware/cli/cli.command.integration.ts b/packages/framework-integration-tests/integration/provider-unaware/cli/cli.command.integration.ts index 8838a62da..96de3c754 100644 --- a/packages/framework-integration-tests/integration/provider-unaware/cli/cli.command.integration.ts +++ b/packages/framework-integration-tests/integration/provider-unaware/cli/cli.command.integration.ts @@ -1,7 +1,7 @@ import * as path from 'path' import { expect } from 'chai' import { loadFixture, readFileContent, removeFolders, sandboxPathFor, writeFileContent } from '../../helper/file-helper' -import { exec } from 'child-process-promise' +import { command } from 'execa' // Imported from another package to avoid duplication // It is OK-ish, since integration tests are always run in the context of the whole monorepo import { createSandboxProject } from '../../../../cli/src/common/sandbox' @@ -29,7 +29,7 @@ describe('Command', () => { ['boost new:command', 'Verifying project', 'Creating new command', 'Command generated'].join('(.|\n)*') ) - const { stdout } = await exec(`${cliPath} new:command ChangeCart`, { cwd: commandSandboxDir }) + const { stdout } = await command(`${cliPath} new:command ChangeCart`, { cwd: commandSandboxDir }) expect(stdout).to.match(expectedOutputRegex) const expectedCommandContent = loadFixture('commands/change-cart.ts') @@ -46,7 +46,7 @@ describe('Command', () => { it('should create a new command with fields', async () => { const changeCartWithFieldsCommandPath = `${commandSandboxDir}/src/commands/change-cart-with-fields.ts` - await exec(`${cliPath} new:command ChangeCartWithFields --fields cartId:UUID sku:string quantity:number`, { + await command(`${cliPath} new:command ChangeCartWithFields --fields cartId:UUID sku:string quantity:number`, { cwd: commandSandboxDir, }) @@ -65,7 +65,7 @@ describe('Command', () => { context('Invalid command', () => { describe('missing command name', () => { it('should fail', async () => { - const { stderr } = await exec(`${cliPath} new:command`, { cwd: commandSandboxDir }) + const { stderr } = await command(`${cliPath} new:command`, { cwd: commandSandboxDir }) expect(stderr).to.match(/You haven't provided a command name, but it is required, run with --help for usage/) }) diff --git a/packages/framework-integration-tests/integration/provider-unaware/cli/cli.entity.integration.ts b/packages/framework-integration-tests/integration/provider-unaware/cli/cli.entity.integration.ts index 90f67d7cc..55592d3a5 100644 --- a/packages/framework-integration-tests/integration/provider-unaware/cli/cli.entity.integration.ts +++ b/packages/framework-integration-tests/integration/provider-unaware/cli/cli.entity.integration.ts @@ -1,7 +1,7 @@ import { expect } from 'chai' -import { readFileContent, writeFileContent, loadFixture, removeFolders, sandboxPathFor } from '../../helper/file-helper' +import { loadFixture, readFileContent, removeFolders, sandboxPathFor, writeFileContent } from '../../helper/file-helper' import * as path from 'path' -import { exec } from 'child-process-promise' +import { command } from 'execa' // Imported from another package to avoid duplication // It is OK-ish, since integration tests are always run in the context of the whole monorepo import { createSandboxProject } from '../../../../cli/src/common/sandbox' @@ -29,7 +29,7 @@ describe('Entity', () => { ['boost new:entity', 'Verifying project', 'Creating new entity', 'Entity generated'].join('(.|\n)*'), 'm' ) - const { stdout } = await exec(`${cliPath} new:entity Post`, { cwd: entitySandboxDir }) + const { stdout } = await command(`${cliPath} new:entity Post`, { cwd: entitySandboxDir }) expect(stdout).to.match(expectedOutputRegex) const expectedEntityContent = readFileContent('integration/fixtures/entities/post.ts') @@ -44,7 +44,7 @@ describe('Entity', () => { ['boost new:entity', 'Verifying project', 'Creating new entity', 'Entity generated'].join('(.|\n)*'), 'm' ) - const { stdout } = await exec(`${cliPath} new:entity PostWithFields --fields title:string body:string`, { + const { stdout } = await command(`${cliPath} new:entity PostWithFields --fields title:string body:string`, { cwd: entitySandboxDir, }) expect(stdout).to.match(expectedOutputRegex) @@ -61,7 +61,7 @@ describe('Entity', () => { const FILE_POST_CREATED_EVENT = `${entitySandboxDir}/src/events/post-created.ts` // Create event - await exec(`${cliPath} new:event PostCreated --fields postId:UUID title:string body:string`, { + await command(`${cliPath} new:event PostCreated --fields postId:UUID title:string body:string`, { cwd: entitySandboxDir, }) @@ -75,7 +75,7 @@ describe('Entity', () => { writeFileContent(FILE_POST_CREATED_EVENT, updatedEventContent) // Create entity - await exec(`${cliPath} new:entity PostWithReducer --fields title:string body:string --reduces PostCreated`, { + await command(`${cliPath} new:entity PostWithReducer --fields title:string body:string --reduces PostCreated`, { cwd: entitySandboxDir, }) const expectedEntityContent = loadFixture('entities/post-with-reducer.ts') @@ -96,7 +96,7 @@ describe('Entity', () => { context('invalid entity', () => { describe('missing entity name', () => { it('should fail', async () => { - const { stderr } = await exec(`${cliPath} new:entity`, { cwd: entitySandboxDir }) + const { stderr } = await command(`${cliPath} new:entity`, { cwd: entitySandboxDir }) expect(stderr).to.match(/You haven't provided an entity name, but it is required, run with --help for usage/m) }) diff --git a/packages/framework-integration-tests/integration/provider-unaware/cli/cli.event-handler.integration.ts b/packages/framework-integration-tests/integration/provider-unaware/cli/cli.event-handler.integration.ts index 2108e3063..78acb156d 100644 --- a/packages/framework-integration-tests/integration/provider-unaware/cli/cli.event-handler.integration.ts +++ b/packages/framework-integration-tests/integration/provider-unaware/cli/cli.event-handler.integration.ts @@ -1,7 +1,7 @@ import * as path from 'path' import { expect } from 'chai' import { loadFixture, readFileContent, removeFolders, sandboxPathFor } from '../../helper/file-helper' -import { exec } from 'child-process-promise' +import { command } from 'execa' // Imported from another package to avoid duplication // It is OK-ish, since integration tests are always run in the context of the whole monorepo import { createSandboxProject } from '../../../../cli/src/common/sandbox' @@ -27,7 +27,7 @@ describe('Event handler', () => { ) ) - const { stdout } = await exec(`${cliPath} new:event-handler HandleCartChange -e CartItemChanged`, { + const { stdout } = await command(`${cliPath} new:event-handler HandleCartChange -e CartItemChanged`, { cwd: eventHandlerSandboxDir, }) expect(stdout).to.match(expectedOutputRegex) @@ -42,7 +42,7 @@ describe('Event handler', () => { describe('Invalid event handler', () => { context('without name and event', () => { it('should fail', async () => { - const { stderr } = await exec(`${cliPath} new:event-handler`, { cwd: eventHandlerSandboxDir }) + const { stderr } = await command(`${cliPath} new:event-handler`, { cwd: eventHandlerSandboxDir }) expect(stderr).to.match( /You haven't provided an event handler name, but it is required, run with --help for usage/ @@ -52,7 +52,7 @@ describe('Event handler', () => { context('Without name', () => { it('should fail', async () => { - const { stderr } = await exec(`${cliPath} new:event-handler -e CartPaid`, { cwd: eventHandlerSandboxDir }) + const { stderr } = await command(`${cliPath} new:event-handler -e CartPaid`, { cwd: eventHandlerSandboxDir }) expect(stderr).to.match( /You haven't provided an event handler name, but it is required, run with --help for usage/ @@ -62,7 +62,7 @@ describe('Event handler', () => { context('Without event', () => { it('should fail', async () => { - const { stderr } = await exec(`${cliPath} new:event-handler CartPaid`, { cwd: eventHandlerSandboxDir }) + const { stderr } = await command(`${cliPath} new:event-handler CartPaid`, { cwd: eventHandlerSandboxDir }) expect(stderr).to.match(/You haven't provided an event, but it is required, run with --help for usage/) }) diff --git a/packages/framework-integration-tests/integration/provider-unaware/cli/cli.event.integration.ts b/packages/framework-integration-tests/integration/provider-unaware/cli/cli.event.integration.ts index a2ef1adf6..688626dc5 100644 --- a/packages/framework-integration-tests/integration/provider-unaware/cli/cli.event.integration.ts +++ b/packages/framework-integration-tests/integration/provider-unaware/cli/cli.event.integration.ts @@ -8,7 +8,7 @@ import { sandboxPathFor, writeFileContent, } from '../../helper/file-helper' -import { exec } from 'child-process-promise' +import { command } from 'execa' // Imported from another package to avoid duplication // It is OK-ish, since integration tests are always run in the context of the whole monorepo import { createSandboxProject } from '../../../../cli/src/common/sandbox' @@ -34,7 +34,7 @@ describe('Event', () => { ['boost new:event', 'Verifying project', 'Creating new event', 'Event generated'].join('(.|\n)*') ) - const { stdout } = await exec(`${cliPath} new:event CartChanged`, { cwd: eventSandboxDir }) + const { stdout } = await command(`${cliPath} new:event CartChanged`, { cwd: eventSandboxDir }) expect(stdout).to.match(expectedOutputRegex) }) @@ -43,7 +43,7 @@ describe('Event', () => { const FILE_CART_CHANGED_EVENT = `${eventSandboxDir}/src/events/cart-changed.ts` removeFiles([FILE_CART_CHANGED_EVENT]) - await exec(`${cliPath} new:event CartChanged`, { cwd: eventSandboxDir }) + await command(`${cliPath} new:event CartChanged`, { cwd: eventSandboxDir }) const expectedEventContent = loadFixture('events/cart-changed.ts') const eventContent = readFileContent(FILE_CART_CHANGED_EVENT) @@ -60,7 +60,7 @@ describe('Event', () => { it('should create new event', async () => { const FILE_CART_CHANGED_WITH_FIELDS_EVENT = `${eventSandboxDir}/src/events/cart-changed-with-fields.ts` - await exec(`${cliPath} new:event CartChangedWithFields --fields cartId:UUID sku:string quantity:number`, { + await command(`${cliPath} new:event CartChangedWithFields --fields cartId:UUID sku:string quantity:number`, { cwd: eventSandboxDir, }) @@ -79,7 +79,7 @@ describe('Event', () => { context('Invalid event', () => { describe('missing event name', () => { it('should fail', async () => { - const { stderr } = await exec(`${cliPath} new:event`, { cwd: eventSandboxDir }) + const { stderr } = await command(`${cliPath} new:event`, { cwd: eventSandboxDir }) expect(stderr).to.match(/You haven't provided an event name, but it is required, run with --help for usage/) }) diff --git a/packages/framework-integration-tests/integration/provider-unaware/cli/cli.project.integration.ts b/packages/framework-integration-tests/integration/provider-unaware/cli/cli.project.integration.ts index 45c4b2ef8..baeeed760 100644 --- a/packages/framework-integration-tests/integration/provider-unaware/cli/cli.project.integration.ts +++ b/packages/framework-integration-tests/integration/provider-unaware/cli/cli.project.integration.ts @@ -1,5 +1,5 @@ import * as path from 'path' -import { exec } from 'child-process-promise' +import { command } from 'execa' import { createFolder, dirContents, @@ -8,9 +8,9 @@ import { readFileContent, removeFolders, } from '../../helper/file-helper' -import { ChildProcess } from 'child_process' import { overrideWithBoosterLocalDependencies } from '../../helper/deps-helper' import { expect } from '../../helper/expect' +import { ChildProcess, exec as cpExec } from 'child_process' // The Booster CLI version used should match the integration tests' version const BOOSTER_VERSION = require('../../../package.json').version @@ -29,8 +29,10 @@ describe('Project', () => { before(async () => { // Required by Github actions CI/CD, because it doesn't have git configured - await exec('git config --global user.name || git config --global user.name "Booster Test"') - await exec('git config --global user.email || git config --global user.email "test@booster.cloud"') + await command('git config --global user.name || git config --global user.name "Booster Test"', { shell: true }) + await command('git config --global user.email || git config --global user.email "test@booster.cloud"', { + shell: true, + }) createFolder(SANDBOX_INTEGRATION_DIR) }) @@ -93,8 +95,21 @@ describe('Project', () => { }) cliProcess.stdout.on('end', () => { - cliProcess.stdin?.end() resolve() + // + // if (cliProcess.stdin) { + // console.log('Attempting to end stdin') + // try { + // cliProcess.stdin.end() + // console.log('stdin ended') + // } catch (error) { + // console.error('Error ending stdin:', error) + // } + // } else { + // resolve() + // } + // cliProcess.stdin?.end() + // resolve() }) cliProcess.stdout.on('error', () => { @@ -112,16 +127,22 @@ describe('Project', () => { flags: Array = [], promptAnswers?: PromptAnswers ): Promise<{ stdout: string; stderr: string }> => { - const cliProcess = exec(`${cliPath} new:project ${projectName} ${flags.join(' ')}`, { - cwd: SANDBOX_INTEGRATION_DIR, - }) - - if (promptAnswers) { - await handlePrompt(cliProcess.childProcess, promptAnswers) - } + return new Promise((resolve, reject) => { + const cliProcess = cpExec( + `${cliPath} new:project ${projectName} ${flags.join(' ')}`, + { + cwd: SANDBOX_INTEGRATION_DIR, + }, + (error, stdout, stderr) => { + if (error) reject(error) + else resolve({ stdout, stderr }) + } + ) - const { stdout, stderr } = await cliProcess - return { stdout, stderr } + if (promptAnswers) { + handlePrompt(cliProcess, promptAnswers).catch(reject) + } + }) } const packageJsonAssertions = ( @@ -240,13 +261,20 @@ describe('Project', () => { it('should create a new project using short flags to configure it', async () => { const projectName = 'cart-demo-short-flags' const flags = [ - `-a "${AUTHOR}"`, - `-d "${DESCRIPTION}"`, - `-H "${HOMEPAGE}"`, - `-l "${LICENSE}"`, - `-p "${PROVIDER}"`, - `-r "${REPO_URL}"`, - `-v "${VERSION}"`, + '-a', + `"${AUTHOR}"`, + '-d', + `"${DESCRIPTION}"`, + '-H', + `"${HOMEPAGE}"`, + '-l', + `"${LICENSE}"`, + '-p', + `"${PROVIDER}"`, + '-r', + `"${REPO_URL}"`, + '-v', + `"${VERSION}"`, // We skip dependencies and git installation to make this test faster '--skipInstall', '--skipGit', @@ -259,13 +287,20 @@ describe('Project', () => { it('should create a new project using long flags to configure it', async () => { const projectName = 'cart-demo-long-flags' const flags = [ - `--author "${AUTHOR}"`, - `--description "${DESCRIPTION}"`, - `--homepage "${HOMEPAGE}"`, - `--license "${LICENSE}"`, - `--providerPackageName "${PROVIDER}"`, - `--repository "${REPO_URL}"`, - `--version "${VERSION}"`, + '--author', + `"${AUTHOR}"`, + '--description', + `"${DESCRIPTION}"`, + '--homepage', + `"${HOMEPAGE}"`, + '--license', + `"${LICENSE}"`, + '--providerPackageName', + `"${PROVIDER}"`, + '--repository', + `"${REPO_URL}"`, + '--version', + `"${VERSION}"`, // We skip dependencies and git installation to make this test faster '--skipInstall', '--skipGit', @@ -297,8 +332,11 @@ describe('Project', () => { }) it('passes linter', async () => { - await expect(exec('npm run lint:check', { cwd: projectPath(projectName), capture: ['stderr', 'stdout'] })).to - .be.eventually.fulfilled + await expect( + command('npm run lint:check', { + cwd: projectPath(projectName), + }) + ).to.be.eventually.fulfilled }).timeout(TEST_TIMEOUT) // TODO: Remove the skip when there is at leas one version published of framework-common-helpers @@ -307,9 +345,9 @@ describe('Project', () => { // Rewrite dependencies to use local versions await overrideWithBoosterLocalDependencies(fullProjectPath) // Install those dependencies - await exec('npm install --omit=dev --omit=optional --no-bin-links', { cwd: fullProjectPath }) + await command('npm install --omit=dev --omit=optional --no-bin-links', { cwd: fullProjectPath }) - await expect(exec('npm run build', { cwd: fullProjectPath })).to.be.eventually.fulfilled + await expect(command('npm run build', { cwd: fullProjectPath })).to.be.eventually.fulfilled }) }) @@ -369,8 +407,10 @@ describe('Project', () => { license: LICENSE, } const flags = [ - `--providerPackageName "${PROVIDER}"`, - `--repository "${REPO_URL}"`, + '--providerPackageName', + `"${PROVIDER}"`, + '--repository', + `"${REPO_URL}"`, // We skip dependencies and git installation to make this test faster '--skipInstall', '--skipGit', @@ -385,7 +425,7 @@ describe('Project', () => { context('Invalid project', () => { describe('missing project name', () => { it('should fail', async () => { - const { stderr } = await exec(`${cliPath} new:project`, { cwd: SANDBOX_INTEGRATION_DIR }) + const { stderr } = await command(`${cliPath} new:project`, { cwd: SANDBOX_INTEGRATION_DIR }) expect(stderr).to.match(/You haven't provided a project name, but it is required, run with --help for usage/) }) @@ -398,13 +438,20 @@ describe('Project', () => { ) const flags = [ - `--author "${AUTHOR}"`, - `--description "${DESCRIPTION}"`, - `--homepage "${HOMEPAGE}"`, - `--license "${LICENSE}"`, - '--providerPackageName "invalid-provider"', - `--repository "${REPO_URL}"`, - `--version "${VERSION}"`, + '--author', + `"${AUTHOR}"`, + '--description', + `"${DESCRIPTION}"`, + '--homepage', + `"${HOMEPAGE}"`, + '--license', + `"${LICENSE}"`, + '--providerPackageName', + '"invalid-provider"', + '--repository', + `"${REPO_URL}"`, + '--version', + `"${VERSION}"`, // We skip dependencies and git installation to make this test faster '--skipInstall', '--skipGit', diff --git a/packages/framework-integration-tests/integration/provider-unaware/cli/cli.readmodel.integration.ts b/packages/framework-integration-tests/integration/provider-unaware/cli/cli.readmodel.integration.ts index cbb85190e..e539f328e 100644 --- a/packages/framework-integration-tests/integration/provider-unaware/cli/cli.readmodel.integration.ts +++ b/packages/framework-integration-tests/integration/provider-unaware/cli/cli.readmodel.integration.ts @@ -8,7 +8,7 @@ import { sandboxPathFor, writeFileContent, } from '../../helper/file-helper' -import { exec } from 'child-process-promise' +import { command } from 'execa' // Imported from another package to avoid duplication // It is OK-ish, since integration tests are always run in the context of the whole monorepo import { createSandboxProject } from '../../../../cli/src/common/sandbox' @@ -38,7 +38,7 @@ describe('Read model', () => { const FILE_CART_READ_MODEL = `${readModelSandboxDir}/src/read-models/cart-read-model.ts` removeFiles([FILE_CART_READ_MODEL]) - const { stdout } = await exec(`${cliPath} new:read-model CartReadModel`, { cwd: readModelSandboxDir }) + const { stdout } = await command(`${cliPath} new:read-model CartReadModel`, { cwd: readModelSandboxDir }) expect(stdout).to.match(EXPECTED_OUTPUT_REGEX) const expectedEntityContent = loadFixture('read-models/cart-read-model.ts') @@ -56,9 +56,9 @@ describe('Read model', () => { it('should create new read model', async () => { const FILE_CART_WITH_FIELDS_READ_MODEL = `${readModelSandboxDir}/src/read-models/cart-with-fields-read-model.ts` - const { stdout } = await exec( + const { stdout } = await command( cliPath + " new:read-model CartWithFieldsReadModel --fields 'items:Array'", - { cwd: readModelSandboxDir } + { cwd: readModelSandboxDir, shell: true } ) expect(stdout).to.match(EXPECTED_OUTPUT_REGEX) @@ -80,9 +80,9 @@ describe('Read model', () => { it('should create new read model', async () => { const FILE_CART_WITH_PROJECTION_READ_MODEL = `${readModelSandboxDir}/src/read-models/cart-with-projection-read-model.ts` - const { stdout } = await exec( + const { stdout } = await command( cliPath + " new:read-model CartWithProjectionReadModel --fields 'items:Array' --projects Cart:id", - { cwd: readModelSandboxDir } + { cwd: readModelSandboxDir, shell: true } ) expect(stdout).to.match(EXPECTED_OUTPUT_REGEX) @@ -110,7 +110,7 @@ describe('Read model', () => { context('invalid read model', () => { describe('missing read model name', () => { it('should fail', async () => { - const { stderr } = await exec(`${cliPath} new:read-model`, { cwd: readModelSandboxDir }) + const { stderr } = await command(`${cliPath} new:read-model`, { cwd: readModelSandboxDir }) expect(stderr).to.match(/You haven't provided a read model name, but it is required, run with --help for usage/) }) diff --git a/packages/framework-integration-tests/integration/provider-unaware/cli/cli.scheduled-command.integration.ts b/packages/framework-integration-tests/integration/provider-unaware/cli/cli.scheduled-command.integration.ts index c9e7d2c5d..2e3291ae6 100644 --- a/packages/framework-integration-tests/integration/provider-unaware/cli/cli.scheduled-command.integration.ts +++ b/packages/framework-integration-tests/integration/provider-unaware/cli/cli.scheduled-command.integration.ts @@ -1,7 +1,7 @@ import * as path from 'path' import { expect } from 'chai' import { loadFixture, readFileContent, removeFolders, sandboxPathFor } from '../../helper/file-helper' -import { exec } from 'child-process-promise' +import { command } from 'execa' // Imported from another package to avoid duplication // It is OK-ish, since integration tests are always run in the context of the whole monorepo import { createSandboxProject } from '../../../../cli/src/common/sandbox' @@ -30,7 +30,9 @@ describe('Scheduled Command', () => { ].join('(.|\n)*') ) - const { stdout } = await exec(`${cliPath} new:scheduled-command CheckCart`, { cwd: scheduledCommandSandboxDir }) + const { stdout } = await command(`${cliPath} new:scheduled-command CheckCart`, { + cwd: scheduledCommandSandboxDir, + }) expect(stdout).to.match(expectedOutputRegex) const expectedCommandContent = loadFixture('scheduled-commands/check-cart.ts') @@ -44,7 +46,7 @@ describe('Scheduled Command', () => { context('Invalid scheduled command', () => { describe('missing scheduled command name', () => { it('should fail', async () => { - const { stderr } = await exec(`${cliPath} new:scheduled-command`, { cwd: scheduledCommandSandboxDir }) + const { stderr } = await command(`${cliPath} new:scheduled-command`, { cwd: scheduledCommandSandboxDir }) expect(stderr).to.match( /You haven't provided a scheduled command name, but it is required, run with --help for usage/ diff --git a/packages/framework-integration-tests/integration/provider-unaware/cli/cli.type.integration.ts b/packages/framework-integration-tests/integration/provider-unaware/cli/cli.type.integration.ts index 844041791..d3b121208 100644 --- a/packages/framework-integration-tests/integration/provider-unaware/cli/cli.type.integration.ts +++ b/packages/framework-integration-tests/integration/provider-unaware/cli/cli.type.integration.ts @@ -1,7 +1,7 @@ import * as path from 'path' import { expect } from 'chai' import { loadFixture, readFileContent, removeFolders, sandboxPathFor } from '../../helper/file-helper' -import { exec } from 'child-process-promise' +import { command } from 'execa' // Imported from another package to avoid duplication // It is OK-ish, since integration tests are always run in the context of the whole monorepo import { createSandboxProject } from '../../../../cli/src/common/sandbox' @@ -25,7 +25,7 @@ describe('Type', () => { ['boost new:type', 'Verifying project', 'Creating new type', 'Type generated'].join('(.|\n)*') ) - const { stdout } = await exec(`${cliPath} new:type Item`, { cwd: typeSandboxDir }) + const { stdout } = await command(`${cliPath} new:type Item`, { cwd: typeSandboxDir }) expect(stdout).to.match(expectedOutputRegex) const expectedTypeContent = loadFixture('common/item.ts') @@ -35,7 +35,7 @@ describe('Type', () => { describe('with fields', () => { it('should create a new type with fields', async () => { - await exec(`${cliPath} new:type ItemWithFields --fields sku:string quantity:number`, { + await command(`${cliPath} new:type ItemWithFields --fields sku:string quantity:number`, { cwd: typeSandboxDir, }) @@ -49,7 +49,7 @@ describe('Type', () => { context('Invalid type', () => { describe('missing type name', () => { it('should fail', async () => { - const { stderr } = await exec(`${cliPath} new:type`, { cwd: typeSandboxDir }) + const { stderr } = await command(`${cliPath} new:type`, { cwd: typeSandboxDir }) expect(stderr).to.match(/You haven't provided a type name, but it is required, run with --help for usage/) }) diff --git a/packages/framework-integration-tests/package.json b/packages/framework-integration-tests/package.json index ecbb1e59d..6c2189549 100644 --- a/packages/framework-integration-tests/package.json +++ b/packages/framework-integration-tests/package.json @@ -30,7 +30,8 @@ "@effect/printer-ansi": "0.32.26", "@effect/platform-node": "0.45.26", "fast-check": "^3.13.2", - "ws": "8.17.1" + "ws": "8.17.1", + "execa": "^2.0.3" }, "devDependencies": { "@boostercloud/eslint-config": "workspace:^2.18.6", @@ -44,7 +45,6 @@ "@types/chai": "4.2.18", "@types/chai-arrays": "2.0.0", "@types/chai-as-promised": "7.1.4", - "@types/child-process-promise": "^2.2.1", "@types/faker": "5.1.5", "@types/jsonwebtoken": "9.0.1", "@types/mocha": "10.0.1", @@ -62,7 +62,6 @@ "constructs": "^10.0.0", "chai": "4.2.0", "chai-as-promised": "7.1.1", - "child-process-promise": "^2.2.1", "cross-fetch": "3.1.5", "eslint": "^8.23.1", "eslint-config-prettier": "8.3.0",